בדף הזה מפורטות דוגמאות לשאילתות של נתונים על שירותים בערוצים שונים שיוצאו למערך נתונים ב-BigQuery.
מידע נוסף על ייצוא נתונים של Channel Services מופיע במאמר בנושא הגדרת ייצוא נתונים של Channel Services ל-BigQuery. טיפים נוספים לפתרון בעיות מפורטים במאמר פתרון בעיות בייצוא ל-BigQuery.
זיהוי הטבלה ב-BigQuery וגישה אליה
הגדרת הייצוא של Channel Services מתבצעת באמצעות Partner Sales Console.
שם הטבלה מופיע בפורמט: PROJECT_ID.DATASET_NAME.reseller_billing_detailed_export_v1
כדי לאפשר למשתמשים אחרים לצפות בייצוא של שירותי הערוץ, צריך להחיל את ההרשאות הנכונות. לדוגמה, אפשר להקצות את התפקיד bigquery.dataViewer לפרטי הכניסה שלכם בפרויקט, במערך הנתונים או בטבלה עצמה.
דוגמאות לשאילתות
בדוגמאות הבאות מופיעה שאילתה לדוגמה והסבר בסיסי על אופן פירוש התוצאות. התוצאות כוללות את עלויות השימוש של כל לקוח או שותף בערוץ שהוגדרו במסוף תוכנית המכירות של שותפי YouTube. Google Cloud
סיכום העלויות של השותף לפי חשבון לחיוב
אפשר להשתמש בשאילתה הזו כדי לאמת חשבונית שמתקבלת מ-Google. הערכים
cost ו-credit.amount הם הסכומים של כל השורות. העלויות האלה כוללות עלויות שימוש, מיסים, התאמות ושגיאות עיגול.
SELECT
payer_billing_account_id,
currency,
invoice.month,
SUM(cost)
+ SUM(
IFNULL(
(SELECT SUM(c.amount) FROM UNNEST(credits) AS c), 0))
AS total
FROM `PROJECT_ID.DATASET_NAME.reseller_billing_detailed_export_v1`
WHERE
export_time BETWEEN TIMESTAMP(START_DATE)
AND TIMESTAMP(END_DATE)
GROUP BY
payer_billing_account_id,
currency,
invoice.month
ORDER BY
payer_billing_account_id,
currency,
invoice.month;
סכום העלויות של הלקוח לפי חשבון משני לחיוב ב-Cloud
אפשר להשתמש בשאילתה הזו כדי לסכם את השימוש שניתן לחיוב לכל לקוח. הערכים customer_cost ו-credit.customer_amount מייצגים את הסכומים של כל השורות שמייצגות עלויות שימוש. בשורות שמייצגות מיסים, התאמות ועיגולים מוצג ערך של null.
בקרדיטים שבהם הערך של type הוא RESELLER_MARGIN, הערך של customer_amount הוא אפס כדי לוודא שהשוליים לא יוצגו בחיוב הלקוח.
הערכים customer_cost ו-credit.customer_amount מציגים את הגדרות התמחור מחדש. לדוגמה, אם הערך RebillingBasis של זכאותGoogle Cloud של לקוח מסוים מוגדר כ-Direct Customer Cost minus 5%, הערך customer_cost הוא 0.95 כפול cost. העמודה הזו משקפת את ההפחתה שהוגדרה בעלות.
התוצאות של השאילתה הזו כוללות כל חשבון משנה לחיוב ב-Cloud, את שם המשאב המשויך של הלקוח של תוכנית המכירות של שותפי YouTube, את חודש החשבונית ואת סך השימוש שניתן לחיוב.
SELECT
customer_name,
billing_account_id,
payer_billing_account_id,
currency,
invoice.month,
SUM(customer_cost)
+ SUM(
IFNULL(
(SELECT SUM(c.customer_amount) FROM UNNEST(credits) AS c), 0))
AS total
FROM `PROJECT_ID.DATASET_NAME.reseller_billing_detailed_export_v1`
WHERE
export_time BETWEEN TIMESTAMP(START_DATE)
AND TIMESTAMP(END_DATE)
GROUP BY
customer_name,
billing_account_id,
payer_billing_account_id,
currency,
invoice.month
ORDER BY
customer_name,
billing_account_id,
payer_billing_account_id,
currency,
invoice.month;
סכום העלויות של הלקוח לפי חשבון משנה לחיוב ב-Cloud, כפי שמוצג לבעלים של חשבון המשנה
השאילתה הזו מראה איך נתוני העלויות תואמים למה שלקוח שרוכש דרך שותף (או השותף עצמו) רואה כשהוא פותח את מסוף Google Cloud עבור חשבון המשנה שלו.
- בזיכויים שבהם הערך של
typeהוא RESELLER_MARGIN, העמודה הזו מוסתרת בתצוגת SBA. - אם העלות היא
cost_typetax, היא מוסתרת בתצוגת SBA. המשווק אמור להוסיף את המיסים הרלוונטיים בנפרד לחשבוניות של המוצרים שהוא מוכר.
לפעמים, הערך של cost_at_list יכול להיות null בחלק מהרשומות, ולכן התוצאה הזו תהיה שונה מהתוצאה שמוצגת במסוף Google Cloud . אם זה קורה, צריך להשתמש ב-IFNULL(cost_at_list, cost) במקום זאת. מידע נוסף זמין במאמר בנושא חיובים ללא עלויות מחירון.
SELECT
customer_name,
currency,
SUM(cost_at_list) AS list_cost,
SUM(cost - cost_at_list) AS negotiated_savings,
SUM(cost)
+ SUM(
IFNULL(
(
SELECT
SUM(c.amount)
FROM
UNNEST(credits) AS c
WHERE
c.type != 'RESELLER_MARGIN'
),
0)) AS total
FROM
`PROJECT_ID.DATASET_NAME.reseller_billing_detailed_export_v1`
WHERE
cost_type != 'tax'
AND billing_account_id = 'BILLING_SUBACCOUNT_ID'
AND invoice.month = 'YYYYMM'
GROUP BY
customer_name,
currency
ORDER BY
customer_name,
currency;
סיכום העלויות של השותף הראשי לפי חשבון לחיוב
אם אתם מפיצים, אתם יכולים להשתמש בשאילתה הזו כדי לסכם את השימוש שחויב עבור כל שותף ערוץ. הערכים channel_partner_cost ו-credit.channel_partner_amount מייצגים את סכום כל השורות שמייצגות עלויות שימוש. בשורות שמייצגות מיסים, התאמות ועיגולים מוצג ערך של null.
בזיכויים שבהם הערך של type הוא RESELLER_MARGIN, הערך של channel_partner_amount הוא אפס כדי לוודא שהשוליים לא יוצגו בחיוב של שותף הערוץ.
הערכים channel_partner_cost ו-credit.channel_partner_amount מציגים את הגדרות התמחור מחדש. לדוגמה, אם הערך של RebillingBasis עבור שותף מסוים בערוץ מוגדר כ-Direct Customer Cost minus 5%, הערך של channel_partner_cost הוא 0.95 כפול cost. העמודה הזו משקפת את ההפחתה שהוגדרה בעלות.
התוצאות של השאילתה הזו כוללות כל חשבון לחיוב, את השותף הראשי resource_name שמשויך ללקוחות בחשבון לחיוב הזה, את חודש החשבונית ואת סך השימוש שניתן לחיוב.
SELECT
channel_partner_name,
payer_billing_account_id,
currency,
invoice.month,
SUM(channel_partner_cost)
+ SUM(
IFNULL(
(SELECT SUM(c.channel_partner_amount) FROM UNNEST(credits) AS c), 0))
AS total
FROM `PROJECT_ID.DATASET_NAME.reseller_billing_detailed_export_v1`
WHERE
export_time BETWEEN TIMESTAMP(START_DATE)
AND TIMESTAMP(END_DATE)
GROUP BY
channel_partner_name,
payer_billing_account_id,
currency,
invoice.month
ORDER BY
channel_partner_name,
payer_billing_account_id,
currency,
invoice.month;
סכום העלויות שלא הוקצו ללקוח
אפשר להשתמש בשאילתה הזו כדי לסכם עלויות שלא מקושרות ללקוח של Channel Services, אבל יכול להיות שהן מייצגות שימוש שניתן לחייב לקוחות אחרים. הערכים
cost ו-credit.amount מציגים את הסכום של כל השורות שבהן הערכים
billing_account_id ו-payer_billing_account_id שונים. billing_account_id מייצג את החשבון המשני לחיוב ב-Cloud.
בזיכויים שבהם הערך של type הוא RESELLER_MARGIN, השאילתה הזו לא כוללת את סכום הזיכוי. סכום הקרדיט מיועד להקצאה שלכם ולא נחשב כעלות ללקוח. הסכום RESELLER_MARGIN כלול בעלויות שלכם ומופיע בחשבוניות שנשלחות מ-Google.
SELECT
billing_account_id,
payer_billing_account_id,
currency,
invoice.month,
SUM(cost)
+ SUM(
IFNULL(
(SELECT SUM(c.amount) FROM UNNEST(credits) AS c WHERE c.type != 'RESELLER_MARGIN'), 0))
AS total
FROM `PROJECT_ID.DATASET_NAME.reseller_billing_detailed_export_v1`
WHERE
export_time BETWEEN TIMESTAMP(START_DATE)
AND TIMESTAMP(END_DATE)
AND customer_name IS NULL
GROUP BY
billing_account_id,
payer_billing_account_id,
currency,
invoice.month
ORDER BY
billing_account_id,
payer_billing_account_id,
currency,
invoice.month;
תצוגת נתונים של Google Workspace דומה לקובץ CSV של חשבונית
אם אתם מפיצים של Google Workspace, יכול להיות שתראו את נתוני החיוב של Google Workspace עם עמודות דומות לאלה שבקובצי ה-CSV של החשבוניות.
SELECT
(
SELECT
ws_labels.value
FROM
UNNEST(system_labels) AS ws_labels
WHERE
ws_labels.key = 'workspace.googleapis.com/domain_name'
) AS domain_name,
billing_account_id AS customer_id,
sku.description AS sku_name,
sku.id AS sku_id,
(
SELECT
ws_labels.value
FROM
UNNEST(system_labels) AS ws_labels
WHERE
ws_labels.key = 'workspace.googleapis.com/usage_type'
) AS description,
(
SELECT
ws_labels.value
FROM
UNNEST(system_labels) AS ws_labels
WHERE
ws_labels.key = 'workspace.googleapis.com/order_id'
) AS order_name,
FORMAT_TIMESTAMP('%b %d', usage_start_time, 'America/Los_Angeles')
AS start_date,
FORMAT_TIMESTAMP(
'%b %d',
TIMESTAMP_SUB(usage_end_time, INTERVAL 1 MINUTE),
'America/Los_Angeles')
AS end_date,
SUM(usage.amount_in_pricing_unit) AS quantity,
(
SELECT ws_labels.value
FROM UNNEST(system_labels) AS ws_labels
WHERE ws_labels.key = 'workspace.googleapis.com/purchase_order_id'
) AS po_number,
SUM(cost) AS amount,
SUM(cost_at_list) AS list_amount,
FROM `PROJECT_ID.DATASET_NAME.reseller_billing_detailed_export_v1`
WHERE
export_time BETWEEN TIMESTAMP(START_DATE)
AND TIMESTAMP(END_DATE)
AND payer_billing_account_id = 'EXTERNAL_BILLING_ACCOUNT_ID'
AND invoice.month = 'INVOICE_MONTH'
GROUP BY
domain_name,
customer_id,
sku_name,
sku_id,
description,
order_name,
start_date,
end_date,
po_number
HAVING amount != 0
ORDER BY
domain_name,
order_name,
start_date,
end_date;
עמודות אחרות שעשויות לעניין אתכם, שאפשר להוסיף לסעיפים SELECT ו-GROUP BY:
-
billing_account_id: מייצג את מזהה הלקוח ב-Cloud Identity. -
customer_name: מייצג את משאב הלקוח שאפשר להשתמש בו בקריאות ל-API. -
channel_partner_name: (למפיצים) מייצג את השותף הערוצי. -
entitlement_name: שם המשאב של ההרשאה בשירותי הערוצים. -
customer_correlation_id: מזהה של מערכת לניהול קשרי לקוחות (CRM) שאפשר להגדיר עבור לקוח. -
usage.amount: בשימוש ב-Google Workspace לפי מספר המשתמשים, הערך הזה מציין משתמשים בתשלום. לדוגמה, מושבים שנרכשו עבור התחייבויות או מספר המושבים שהוקצו למינויים גמישים.
תוצאת השאילתה שונה מחשבונית ה-CSV בדרכים הבאות:
- בעמודה Description ב-CSV נעשה שימוש במחרוזת קריאה לאנשים, ואילו בייצוא ל-BigQuery נעשה שימוש בערכי enum.
- הערכים בעמודות 'תאריך התחלה' ו'תאריך סיום' ב-CSV לא כוללים אפסים מובילים (למשל, 1 במאי), אבל בשאילתת BigQuery נעשה שימוש בערכים עם אפסים מובילים (למשל, 01 במאי). אפשר גם להשתמש ישירות בערכי חותמת הזמן. התג
usage_start_timeהוא כולל, אבל התגusage_end_timeהוא לא כולל. - בקובץ ה-CSV יש שורה אחת של 'מס' בסוף, ואילו בייצוא ל-BigQuery יש שורות מס ברמת המינוי, שסכום המס שלהן זהה לסכום המס בשורה 'מס' בקובץ ה-CSV.
תצוגה של נתוני חיוב בהזמנה במצב אופליין, בדומה ל-PDF של החשבונית (גרסת Preview)
מפיצים שמבצעים גם הזמנות אופליין (הזמנות שלא מתבצעות דרך Partner Sales Console) יכולים לראות נתוני חיוב עם עמודות דומות לאלה שבקובצי ה-CSV של החשבוניות.
SELECT
billing_account_id AS customer_name,
service.description AS sku_name,
sku.id AS sku_id,
FORMAT_TIMESTAMP('%b %d', usage_start_time, 'America/Los_Angeles')
AS start_date,
FORMAT_TIMESTAMP('%b %d', usage_end_time, 'America/Los_Angeles')
AS end_date,
SUM(usage.amount_in_pricing_unit) AS quantity,
SUM(cost) AS amount,
FROM `PROJECT_ID.DATASET_NAME.reseller_billing_offline_orders_detailed_export_v0`
WHERE
export_time BETWEEN TIMESTAMP(START_DATE)
AND TIMESTAMP(END_DATE)
AND payer_billing_account_id = 'EXTERNAL_BILLING_ACCOUNT_ID'
AND invoice.month = 'INVOICE_MONTH'
GROUP BY
customer_name,
sku_name,
sku_id,
start_date,
end_date
HAVING amount != 0
ORDER BY
customer_name,
start_date,
end_date,
sku_id;
תוצאת השאילתה שונה מחשבונית ה-PDF בדרכים הבאות:
- אפשר להמיר את ערך חותמת הזמן לערך תאריך באזור הזמן America/Los_Angeles. התכונות
usage_start_timeוגםusage_end_timeהן בלעדיות. - ב-PDF יש פירוט מס מפורט של מס מכירות מקומי לעומת מס מכירות מדינתי, ואילו בייצוא ל-BigQuery יש שורות מס ברמת המינוי, שסכומן הוא סכום המס לכל המינוי.