כאן מפורטות כמה דוגמאות לשאילתות של נתוני החיוב ב-Cloud שיוצאו ואוחסנו ב-BigQuery.
למידע נוסף על ייצוא נתוני החיוב ל-BigQuery, תוכלו לקרוא את הסקירה הכללית ואת המידע בנושא מגבלות.
יצירת שאילתות SQL מדוח חיוב
כדי לכתוב מהר שאילתת SQL שמחזירה תוצאות ב-BigQuery שזהות לאלו שמוצגות בדוח החיוב, אפשר להשתמש במאפיין Generate query בדוחות החיוב שזמינים במסוף Google Cloud .
ציון שם הטבלה לשימוש בשאילתות
בדוגמאות הבאות צריך לציין את הנתיב המלא לשם הטבלה בקטע FROM
, כדי לשלוח שאילתות לגבי נתוני החיוב שיוצאו מ-Cloud ל-BigQuery. שם הטבלה נקבע לפי שלושה ערכים שמופרדים באמצעות נקודות:
project-ID.dataset_name.BQ_table_name
-
project-ID
הוא המזהה של הפרויקט שהגדרתם ב- שמכיל את מערך הנתונים שלכם ב-BigQuery. -
dataset_name
הוא השם של מערך הנתונים שהגדרתם ב-BigQuery, שנועד להכיל את הטבלאות ב-BigQuery עם נתוני החיוב ב-Cloud שיוצאו.
BQ_table_name
הוא השם של הטבלה ב-BigQuery שמכילה את נתוני החיוב שיוצאו מ-Cloud ולגביהם שולחים שאילתות.הטבלאות ב-BigQuery שמכילות את נתוני החיוב שיוצאו מ-Cloud מקבלות שם אוטומטית, בהתאם לסוג הייצוא שהפעלתם:
טבלת נתונים סטנדרטיים של עלויות שימוש: במערך הנתונים שלכם ב-BigQuery, הטבלה נקראת
gcp_billing_export_v1_<BILLING-ACCOUNT-ID>
.טבלת נתונים מפורטים של עלויות שימוש: במערך הנתונים שלכם ב-BigQuery, הטבלה נקראת
gcp_billing_export_resource_v1_<BILLING-ACCOUNT-ID>
.טבלת נתוני תמחור: במערך הנתונים של BigQuery, הטבלה נקראת
cloud_pricing_export
.
לדוגמה, נניח שיש לכם חשבון לחיוב ב-Cloud, בחרתם לייצא נתונים מפורטים של עלויות השימוש, ואלו הן הגדרות הייצוא:
project-ID
: my-billing-project
dataset_name
: my_billing_dataset
BQ_table_name
: gcp_billing_export_resource_v1_<BILLING-ACCOUNT-ID>
-
BILLING-ACCOUNT-ID
: 010101-F0FFF0-10X10X
– זה המזהה של החשבון לחיוב ב-Cloud שמכיל את נתוני החיוב שמייצאים. איך מוצאים את המזהה של החשבון לחיוב?
כך כותבים את התנאי FROM
בהתאם לערכים לדוגמה:
my-billing-project.my_billing_dataset.gcp_billing_export_resource_v1_010101-F0FFF0-10X10X
שאילתות לדוגמה לפי סוג הנתונים לחיוב ב-Cloud
כאן מופיעות דוגמאות לשאילתות על נתונים סטנדרטיים של עלויות השימוש ,נתונים מפורטים של עלויות השימוש ונתוני תמחור.
אם בחרתם לייצא נתונים מפורטים של עלויות השימוש, תוכלו להשתמש בדוגמאות לשאילתות על נתונים סטנדרטיים של עלויות השימוש וגם בדוגמאות לשאילתות על נתונים מפורטים של עלויות השימוש.
נתונים סטנדרטיים של עלויות השימוש | נתונים מפורטים של עלויות שימוש | נתוני תמחור |
---|---|---|
דוגמאות לשאילתות על נתונים סטנדרטיים של עלויות שימוש | דוגמאות לשאילתות של נתונים מפורטים של עלויות שימוש | דוגמאות לשאילתות של נתוני תמחור |
דוגמאות לשאילתות על נתונים סטנדרטיים של עלויות השימוש
בקטע הזה מפורטות דוגמאות לשאילתות על נתונים סטנדרטיים של עלויות השימוש בחיוב ב-Cloud, שיוצאו ל-BigQuery.
הדוגמאות לשאילתות מתאימות גם לנתונים מפורטים של עלויות השימוש שיוצאו ל-BigQuery, למרות שהן לא נכתבות כדי לאחזר מידע ברמת המשאב שנמסר במהלך הייצוא של נתונים מפורטים.
ערכים נפוצים שכלולים בדוגמאות לשאילתות על נתוני עלות סטנדרטיים של שימוש
בשאילתות לדוגמה בקטע הזה נעשה שימוש בערך הבא בשביל Table name:
project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX
הצגת העלויות הכוללות בחשבונית
השאילתות הבאות מדגימות שתי דרכים להצגת ערכי עלויות וזיכויים באמצעות ייצוא נתוני החיוב.
- השדה
total
מסכם באופן ישיר את ערכי העלויות והזיכויים בנקודה צפה (floating point). כתוצאה מכך עלולות להיות שגיאות של עיגול הנקודה הצפה. - השדה
total_exact
ממיר את ערכי העלויות והזיכויים לערכי מיקרו לפני חישוב הסיכום, ואז מבצע המרה בחזרה לדולר אחרי החישוב כדי להימנע משגיאה של עיגול הנקודה הצפה.
דוגמה 1: סיכום של כל העלויות, לכל חשבונית
בשאילתה הזו מוצג הסכום הכולל בחשבונית לכל חודש, כסכום של העלויות הקבועות, המיסים, ההתאמות ושגיאות העיגול.
SQL סטנדרטי
SELECT invoice.month, SUM(cost) + SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0)) AS total, (SUM(CAST(cost AS NUMERIC)) + SUM(IFNULL((SELECT SUM(CAST(c.amount AS NUMERIC)) FROM UNNEST(credits) AS c), 0))) AS total_exact FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX` GROUP BY 1 ORDER BY 1 ASC ;
לדוגמה, התוצאה של השאילתה הקודמת עשויה להיות:
Row | month | total | total_exact |
---|---|---|---|
1 | 201901 | 1005.004832999999984$ | 1005.00$ |
2 | 201902 | 992.3101739999999717$ | 992.31$ |
3 | 201903 | 1220.761089999999642$ | 1220.76$ |
דוגמה 2: הצגת פירוט לפי סוג העלות, לכל חודש חיוב בחשבונית
השאילתה הזו מציגה את הסכומים הכוללים לכל ערך בשדה cost_type
בכל חודש. סוגי העלויות כוללים עלויות קבועות, מיסים, התאמות ושגיאות עיגול.
SQL סטנדרטי
SELECT invoice.month, cost_type, SUM(cost) + SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0)) AS total, (SUM(CAST(cost AS NUMERIC)) + SUM(IFNULL((SELECT SUM(CAST(c.amount AS NUMERIC)) FROM UNNEST(credits) AS c), 0))) AS total_exact FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX` GROUP BY 1, 2 ORDER BY 1 ASC, 2 ASC ;
לדוגמה, התוצאה של השאילתה הקודמת עשויה להיות:
Row | month | cost_type | total | total_exact |
---|---|---|---|---|
1 | 201901 | regular | 1000.501209987994782$ | 1000.50$ |
2 | 201901 | rounding_error | $-0.500489920049387 | $0.50– |
3 | 201901 | tax | 10.000329958477891$ | 10.00$ |
4 | 201901 | adjustment | -5.002572999387045$ | -5.00$ |
דוגמאות לשאילתות עם תוויות
בדוגמאות הבאות מופיעות דרכים נוספות לשליחת שאילתות לגבי הנתונים באמצעות תוויות.
לגבי הדוגמאות בקטע הזה, נניח את הפרטים הבאים:
- יש לכם 2 אפליקציות (grapefruit-squeezer ו-chocolate-masher).
- לכל אפליקציה יש 2 סביבות (dev ו-prod).
- בסביבת dev יש מכונה אחת קטנה לכל אפליקציה.
- בסביבת prod יש מכונה אחת קטנה באמריקה ומכונה אחת קטנה באסיה.
- כל מכונה מסומנת בתווית שמכילה את האפליקציה והסביבה.
- יש לכם מכונה אחת בלי תוויות שמשמשת לביצוע ניסויים.
החיוב הכולל הוא 24$ לפי הפירוט הבא:
Instance | Labels | Total Cost |
---|---|---|
Small instance with 1 vCPU running in Americas | אין | 4$ |
Small instance with 1 vCPU running in Americas | app: chocolate-masher environment: dev |
2$ |
Small instance with 1 vCPU running in Americas | app: grapefruit-squeezer environment: dev |
3$ |
Small instance with 1 vCPU running in Americas | app: chocolate-masher environment: prod |
3.25$ |
Small instance with 1 vCPU running in Asia | app: chocolate-masher environment: prod |
3.75$ |
Small instance with 1 vCPU running in Americas | app: grapefruit-squeezer environment: prod |
3.50$ |
Small instance with 1 vCPU running in Asia | app: grapefruit-squeezer environment: prod |
4.50$ |
שליחת שאילתה לגבי כל שורה ללא קיבוץ
שאילתה לכל שורה ללא קיבוץ תיצור את התצוגה המפורטת ביותר של העלויות האלה. נניח שכל השדות, מלבד תוויות ותיאורי מק"ט, זהים (פרויקט, שירות וכו').
SQL סטנדרטי
SELECT sku.description, TO_JSON_STRING(labels) as labels, cost as cost FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX`;
SQL מדור קודם
TO_JSON_STRING not supported.
Row | sku.description | labels | cost |
---|---|---|---|
1 | Small instance with 1 vCPU running in Americas | [] | 4$ |
2 | Small instance with 1 vCPU running in Americas | [{"key":"app","value":"chocolate-masher"},{"key":"environment","value":"dev"}] | 2$ |
3 | Small instance with 1 vCPU running in Americas | [{"key":"app","value":"grapefruit-squeezer"},{"key":"environment","value":"dev"}] | 3$ |
4 | Small instance with 1 vCPU running in Americas | [{"key":"app","value":"chocolate-masher"},{"key":"environment","value":"prod"}] | 3.25$ |
5 | Small instance with 1 vCPU running in Asia | [{"key":"app","value":"chocolate-masher"},{"key":"environment","value":"prod"}] | 3.75$ |
6 | Small instance with 1 vCPU running in Americas | [{"key":"app","value":"grapefruit-squeezer"},{"key":"environment","value":"prod"}] | 3.50$ |
7 | Small instance with 1 vCPU running in Asia | [{"key":"app","value":"grapefruit-squeezer"},{"key":"environment","value":"prod"}] | 4.50$ |
TOTAL | 24$ |
קיבוץ לפי מפת תוויות כמחרוזת JSON
זוהי דרך בסיסית לראות את פירוט העלויות לפי כל שילוב של תוויות.
SQL סטנדרטי
SELECT TO_JSON_STRING(labels) as labels, sum(cost) as cost FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX` GROUP BY labels;
SQL מדור קודם
TO_JSON_STRING not supported.
Row | labels | cost |
---|---|---|
1 | [] | 4$ |
2 | [{"key":"app","value":"chocolate-masher"},{"key":"environment","value":"dev"}] | 2$ |
3 | [{"key":"app","value":"grapefruit-squeezer"},{"key":"environment","value":"dev"}] | 3$ |
4 | [{"key":"app","value":"chocolate-masher"},{"key":"environment","value":"prod"}] | 7$ |
5 | [{"key":"app","value":"grapefruit-squeezer"},{"key":"environment","value":"prod"}] | 8$ |
TOTAL | 24$ |
קיבוץ לפי ערך תוויות של מפתח ספציפי
פירוט העלויות לפי ערכים של מַפתח תווית ספציפי הוא תרחיש לדוגמה נפוץ. כשמשתמשים בשאילתת LEFT JOIN
ומעבירים את מסנן המַפְתח בתור התנאי של JOIN
(במקום WHERE
), אתם כוללים עלויות שלא מכילות את המַפְתח הזה וכך יכולים לראות את מלוא העלויות שלכם.
SQL סטנדרטי
SELECT labels.value as environment, SUM(cost) as cost FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX` LEFT JOIN UNNEST(labels) as labels ON labels.key = "environment" GROUP BY environment;
SQL מדור קודם
SELECT labels.value as environment, SUM(cost) as cost FROM [project-ID:dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX] WHERE labels.key = "environment" OR labels.key IS NULL GROUP BY environment;
Row | environment | cost |
---|---|---|
1 | prod | 15$ |
2 | dev | 5$ |
3 | null | 4$ |
TOTAL | 24$ |
קיבוץ לפי צמדי מפתח/ערך
חשוב להיות זהירים כשמפרשים או מייצאים את התוצאות האלה. בכל שורה מופיע הסכום הנכון ללא כפילויות בספירה, אבל לא כדאי לשלב את השורות עם שורות אחרות (אלא אם המַפְתח זהה, או אם אתם בטוחים שהמפתחות אף פעם לא מוגדרים לאותו משאב).
SQL סטנדרטי
SELECT labels.key as key, labels.value as value, SUM(cost) as cost FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX` LEFT JOIN UNNEST(labels) as labels GROUP BY key, value;
SQL מדור קודם
SELECT labels.key as key, labels.value as value, SUM(cost) FROM [project-ID:dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX] GROUP BY key, value;
Row | key | value | cost |
---|---|---|---|
1 | null | null | 4$ |
2 | app | chocolate-masher | 9$ |
3 | app | grapefruit-squeezer | 11$ |
4 | environment | dev | 5$ |
5 | environment | prod | 15$ |
TOTAL | 44$ |
שימו לב שהסכום הכולל גבוה מסכום החיוב.
שאילתות בנושא הנחה תמורת התחייבות לשימוש
בשאילתות הבאות מופיעות דרכים שונות לראות את החיובים והזיכויים שמשויכים להנחות תמורת התחייבות לשימוש (CUD) בנתוני החיוב שיוצאו. במאמר שיוך (Attribution) של הנחות תמורת התחייבות לשימוש מוסבר איך העמלות והזיכויים של ההתחייבויות משויכים לפרויקטים ולחשבון לחיוב ב-Cloud.
צפייה בעמלות על התחייבות לשימוש
כדי להציג את העמלות על הנחות תמורת התחייבות לשימוש בנתוני החיוב שיוצאו, אפשר להשתמש בשאילתה לדוגמה הבאה.
SQL סטנדרטי
SELECT invoice.month AS invoice_month, SUM(cost) as commitment_fees FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX` WHERE LOWER(sku.description) LIKE "commitment%" GROUP BY 1
צפייה בזיכויים על התחייבות לשימוש
כדי לראות את הזיכויים של ההנחות תמורת התחייבות לשימוש בנתוני החיוב שיוצאו, אפשר להשתמש בשאילתה לדוגמה הבאה.
SQL סטנדרטי
SELECT invoice.month AS invoice_month, SUM(credits.amount) as CUD_credits FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX` LEFT JOIN UNNEST(credits) AS credits WHERE credits.type = "COMMITTED_USAGE_DISCOUNT" GROUP BY 1
שימוש במסננים של היררכיית המשאבים לבדיקת ישות האב
אפשר להשתמש במסננים של היררכיית המשאבים כדי לצבור עלויות לפי רכיבים בהיררכיה, כמו פרויקטים, תיקיות וארגונים. השאילתות לדוגמה האלה מציגות רכיבי method לסיכום עלויות שמסוננות לפי רכיבים בהיררכיית משאבים, וכן להצגת ישות האב של הפרויקט.
דוגמה 1: סינון לפי שם המשאב
בדוגמה הזו מופיעות שאילתות לקיבוץ העלויות לפי ישות האב של הפרויקט, וסינון לפי עלויות שנוצרו על סמך רכיב היררכי ספציפי בלבד, שאותו מזהים לפי השם של המשאב היחסי.
String method
SELECT invoice.month AS invoice_month, TO_JSON_STRING(project.ancestors) as ancestors, SUM(cost) + SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0)) AS net_cost FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX` as bq WHERE TO_JSON_STRING(project.ancestors) like "%resource_name\":\"folders/1234" GROUP BY invoice_month, ancestors ORDER BY invoice_month, ancestors
UNNEST method
SELECT invoice.month AS invoice_month, TO_JSON_STRING(project.ancestors) as ancestors, SUM(cost) + SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0)) AS net_cost FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX` as bq, UNNEST(project.ancestors) as ancestor WHERE ancestor.resource_name = "folders/1234" GROUP BY invoice_month, ancestors ORDER BY invoice_month, ancestors
דוגמה 2: סינון לפי השם המוצג
בדוגמה הזו מופיעות שאילתות לקיבוץ של העלויות לפי ישות האב של הפרויקט, וסינון לפי עלויות שנוצרו על סמך רכיב היררכי ספציפי בלבד, שאותו מזהים לפי השם המוצג שהמשתמשים סיפקו.
String matching method
SELECT invoice.month AS invoice_month, TO_JSON_STRING(project.ancestors) as ancestors, SUM(cost) + SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0)) AS net_cost FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX` as bq WHERE TO_JSON_STRING(project.ancestors) like "%display_name\":\"MyFolderName%" GROUP BY invoice_month, ancestors ORDER BY invoice_month, ancestors
UNNEST method
SELECT invoice.month AS invoice_month, TO_JSON_STRING(project.ancestors) as ancestors, SUM(cost) + SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0)) AS net_cost FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX` as bq, UNNEST(project.ancestors) as ancestor WHERE ancestor.display_name = "MyFolderName" GROUP BY invoice_month, ancestors ORDER BY invoice_month, ancestors
דוגמאות לשאילתות עם תגים
בדוגמאות הבאות מתוארות דרכים לשליחת שאילתות לגבי הנתונים באמצעות תגים.
חישוב העלויות לפי חודש החשבונית באמצעות תגים
השאילתה הבאה היא דוגמה להחזרת העלויות לפי חודש החשבונית עם התג cost_center
.
SELECT invoice.month AS invoice_month, tag.value AS cost_center, ROUND((SUM(CAST(cost AS NUMERIC)) + SUM(IFNULL((SELECT SUM (CAST(c.amount AS NUMERIC)) FROM UNNEST(credits) AS c), 0))), 2) AS net_cost FROM `project-ID.dataset.gcp_billing_export_resource_v1_XXXXXX-XXXXXX-XXXXXX`, UNNEST(tags) AS tag WHERE tag.key = "cost_center" AND tag.namespace = "821092389413" GROUP BY invoice.month, tag.value ORDER BY invoice.month, tag.value;
לדוגמה, התוצאה של השאילתה הקודמת עשויה להיות:
Row | invoice_month | cost_center | net_cost |
---|---|---|---|
1 | 202208 | android_mobile_apps | 9.93 |
2 | 202208 | ios_mobile_apps | 9.93 |
3 | 202209 | android_mobile_apps | 25.42 |
4 | 202209 | ios_mobile_apps | 25.4 |
5 | 202209 | personalization | 16.08 |
צפייה בעלויות של משאבים ללא תגים
בשאילתה הזו מוצג הסכום הכולל בחשבונית לכל משאב ללא תגים, לפי חודש החשבונית.
SELECT invoice.month AS invoice_month, ROUND((SUM(CAST(cost AS NUMERIC)) + SUM(IFNULL((SELECT SUM(CAST(c.amount AS NUMERIC)) FROM UNNEST(credits) AS c), 0))), 2) AS net_cost FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX` WHERE "color" NOT IN (SELECT key FROM UNNEST(tags)) GROUP BY invoice_month ORDER BY invoice_month;
לדוגמה, התוצאה של השאילתה הקודמת עשויה להיות:
Row | invoice_month | net_cost |
---|---|---|
1 | 202202 | 0 |
2 | 202203 | 16.81 |
3 | 202204 | 54.09 |
4 | 202205 | 55.82 |
5 | 202206 | 54.09 |
6 | 202207 | 55.83 |
7 | 202208 | 31.49 |
דוגמאות נוספות לשאילתות
שאילתות לפי פרויקט על עלויות וזיכויים בחודש חשבונית ספציפי
אם בחודש של החשבונית מציינים את החודש הספציפי יוני 2020 (בפורמט YYYYMM), השאילתה הזו תחזיר את העלויות והזיכויים כשהם מקובצים לפי פרויקט יחד עם התוויות של הפרויקט.
SQL סטנדרטי
SELECT project.name, TO_JSON_STRING(project.labels) as project_labels, sum(cost) as total_cost, SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0)) as total_credits FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX` WHERE invoice.month = "202006" GROUP BY 1, 2 ORDER BY 1;
Row | name | project_labels | total_cost | total_credits |
---|---|---|---|---|
1 | CTG - Dev | [{"key":"ctg_p_env","value":"dev"}] | 79.140979 | -4.763796 |
2 | CTG - Prod | [{"key":"ctg_p_env","value":"prod"},{"key":"ctg_team","value":"eng"}] | 32.466272 | -3.073356 |
3 | CTG - Sandbox | [{"key":"ctg_p_env","value":"dev"}] | 0 | 0 |
4 | CTG - Storage | [{"key":"ctg_p_env","value":"prod"},{"key":"ctg_team","value":"data"}] | 7.645793 | -0.003761 |
שאילתות על עלויות כדי לראות תיקונים או עלויות שימוש שחויבו באיחור בחשבונית של חודש ספציפי
כדי לראות את סך כל התיקונים או עלויות שימוש שחויבו באיחור (חיובים שהיו אמורים להופיע בחשבונית הקודמת), אפשר לציין בשאילתה את חודש החשבונית ולסנן את הנתונים לפי תאריך שימוש שהיה לפני חודש החשבונית.
SQL סטנדרטי
SELECT SUM(cost) + SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0)) AS total FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX` WHERE invoice.month = '202403' AND DATE(TIMESTAMP_TRUNC(usage_start_time, Day, 'US/Pacific')) < '2024-03-01';
לדוגמה, התוצאה של השאילתה הקודמת עשויה להיות:
Row | total |
---|---|
1 | 3.531752 |
שאילתות על פרטי עלויות כדי לראות תיקונים או עלויות שימוש שחויבו באיחור לפי שירות בחשבונית של חודש ספציפי
בדוגמה הזו מופיעה שאילתה שבה רואים את סך כל העלויות והזיכויים לפי שירות בחיובים לפי חשבונית, כשתאריך השימוש היה לפני חודש החשבונית. כך אפשר לראות את התיקונים ואת עלויות השימוש שחויבו באיחור (חיובים שהיו אמורים להופיע בחשבונית הקודמת) לפי שירות.
בדוגמה הזו לשאילתה, תנאי השימוש WHERE
משמש להצגת כל החיובים שבהם חודש החשבונית הוא מרץ 2024 (בפורמט YYYYMM), אבל שתאריך השימוש היה לפני 1 במרץ 2024.
SELECT DATE(TIMESTAMP_TRUNC(usage_start_time, Day, 'US/Pacific')) AS `Day`, service.description AS `Service Description`, SUM(CAST(cost_at_list AS NUMERIC)) AS `List cost`, SUM(CAST(cost AS NUMERIC)) - SUM(CAST(cost_at_list AS NUMERIC)) AS `Negotiated savings`, SUM(IFNULL((SELECT SUM(CAST(c.amount AS numeric)) FROM UNNEST(credits) c WHERE c.type IN ('SUSTAINED_USAGE_DISCOUNT', 'DISCOUNT', 'SPENDING_BASED_DISCOUNT', 'COMMITTED_USAGE_DISCOUNT', 'FREE_TIER', 'COMMITTED_USAGE_DISCOUNT_DOLLAR_BASE', 'SUBSCRIPTION_BENEFIT', 'RESELLER_MARGIN')), 0)) AS `Discounts`, SUM(IFNULL((SELECT SUM(CAST(c.amount AS numeric)) FROM UNNEST(credits) c WHERE c.type IN ('CREDIT_TYPE_UNSPECIFIED', 'PROMOTION')), 0)) AS `Promotions and others`, SUM(CAST(cost_at_list AS NUMERIC)) + SUM(IFNULL((SELECT SUM(CAST(c.amount AS numeric)) FROM UNNEST(credits) c WHERE c.type IN ('SUSTAINED_USAGE_DISCOUNT', 'DISCOUNT', 'SPENDING_BASED_DISCOUNT', 'COMMITTED_USAGE_DISCOUNT', 'FREE_TIER', 'COMMITTED_USAGE_DISCOUNT_DOLLAR_BASE', 'SUBSCRIPTION_BENEFIT', 'RESELLER_MARGIN')), 0)) + SUM(CAST(cost AS NUMERIC)) - SUM(CAST(cost_at_list AS NUMERIC))+ SUM(IFNULL((SELECT SUM(CAST(c.amount AS numeric)) FROM UNNEST(credits) c WHERE c.type IN ('CREDIT_TYPE_UNSPECIFIED', 'PROMOTION')), 0)) AS `Subtotal` FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX` WHERE invoice.month = '202403' AND DATE(TIMESTAMP_TRUNC(usage_start_time, Day, 'US/Pacific')) < '2024-03-01' GROUP BY Day, service.description ORDER BY Day DESC, Subtotal DESC;
לדוגמה, התוצאה של השאילתה הקודמת עשויה להיות:
Row | Day | Service Description | List cost | Negotiated savings | Discounts | Promotions and others | Subtotal |
---|---|---|---|---|---|---|---|
1 | 2024-02-29 | Compute Engine | 4.39916 | 0 | -1.00916 | 0 | 3.39000 |
2 | 2024-02-29 | Support | 0.131969 | 0 | 0 | 0 | 0.131969 |
3 | 2024-02-29 | BigQuery | 0.005502 | 0 | 0 | 0 | 0.005502 |
4 | 2024-02-29 | Networking | 0.010972 | 0 | -0.006691 | 0 | 0.004281 |
דוגמאות לשאילתות של נתוני עלות מפורטים של שימוש
בקטע הזה מפורטות דוגמאות לשאילתות על נתונים מפורטים של עלויות השימוש בחיוב ב-Cloud, שיוצאו ל-BigQuery.
מכיוון שהסכימה המפורטת של עלות השימוש כוללת גם את כל השדות מהסכימה הסטנדרטית של עלות השימוש, הדוגמאות לשאילתות שסופקו לנתונים הסטנדרטיים שמיוצאים ל-BigQuery מתאימות גם לנתונים המפורטים שמיוצאים. השאילתות לדוגמה על הנתונים הסטנדרטיים לא מחזירות נתונים ברמת המשאב. כדי לקבל אותם צריך שאילתה על הנתונים המפורטים של עלויות השימוש. כשיוצרים שאילתות על נתונים מפורטים, אפשר להשתמש בשאילתה על הנתונים הסטנדרטיים בתור תבנית, ולאחר מכן לעדכן את שם הטבלה (Table name) ולהוסיף את כל השדות הזמינים בסכימה המפורטת של עלויות השימוש.
מידע נוסף על הדרישות והמגבלות על הנתונים המפורטים שיוצאו, מופיע במאמר סכימת הנתונים המפורטים של עלויות השימוש.
ערכים נפוצים שכלולים בדוגמאות לשאילתות של נתוני עלות מפורטים
בדוגמאות של השאילתות בקטע הזה נעשה שימוש בערך הבא ל-Table name:
project-ID.dataset.gcp_billing_export_resource_v1_XXXXXX-XXXXXX-XXXXXX
החזרת העלויות ברמת המשאב בחשבונית
השאילתות הבאות מדגימות שתי דרכים שבהן אפשר לצפות בערכי עלויות וזיכויים ברמת המשאב בחשבונית, באמצעות נתוני חיוב מיוצאים.
- השדה
total
מסכם באופן ישיר את ערכי העלויות והזיכויים בנקודה צפה (floating point). כתוצאה מכך עלולות להיות שגיאות של עיגול הנקודה הצפה. - השדה
total_exact
ממיר את ערכי העלויות והזיכויים לערכי מיקרו לפני חישוב הסיכום, ואז מבצע המרה בחזרה לדולר אחרי החישוב כדי להימנע משגיאה של עיגול הנקודה הצפה.
סיכום העלויות לכל משאב, לכל חשבונית
בשאילתה הזו מוצג הסכום הכולל בחשבונית לכל משאב resource.name
לחודש, כסכום של העלויות הקבועות, המיסים, ההתאמות והשגיאות בעיגול. העלויות שלא משויכות לאף פריט ברמת המשאב נצברות בשם null
לאותו החודש.
SQL סטנדרטי
SELECT invoice.month, resource.name, SUM(cost) + SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0)) AS total, (SUM(CAST(cost AS NUMERIC)) + SUM(IFNULL((SELECT SUM(CAST(c.amount AS NUMERIC)) FROM UNNEST(credits) AS c), 0))) AS total_exact FROM `project-ID.dataset.gcp_billing_export_resource_v1_XXXXXX-XXXXXX-XXXXXX` GROUP BY 1, 2 ORDER BY 1 ASC, 2 ASC ;
לדוגמה, התוצאה של השאילתה הקודמת עשויה להיות:
Row | month | name | total | total_exact |
---|---|---|---|---|
1 | 201901 | null | 1005.004832999999984$ | 1005.00$ |
2 | 201901 | backend1 | 781.8499760000028$ | 781.85$ |
3 | 201902 | null | 953.0034923645475983$ | 953.03$ |
4 | 201902 | backend1 | 992.3101739999999717$ | 992.31$ |
5 | 201902 | bitnami-launchpad-wordpress-1-wordpress | 1.2817819999999998$ | 1.28$ |
החזרת פירוט לפי סוג העלות לכל משאב, לכל חודש חיוב בחשבונית
השאילתה הזו מציגה את הסכומים הכוללים לכל cost_type
לכל resource.name
לחודש. סוגי העלויות כוללים עלויות קבועות, מיסים, התאמות ושגיאות עיגול. העלויות שלא משויכות לאף פריט ברמת המשאב נצברות בשם null
לאותו החודש.
SQL סטנדרטי
SELECT invoice.month, cost_type, resource.name, SUM(cost) + SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0)) AS total, (SUM(CAST(cost AS NUMERIC)) + SUM(IFNULL((SELECT SUM(CAST(c.amount AS NUMERIC)) FROM UNNEST(credits) AS c), 0))) AS total_exact FROM `project-ID.dataset.gcp_billing_export_resource_v1_XXXXXX-XXXXXX-XXXXXX` GROUP BY 1, 2, 3 ORDER BY 1 ASC, 2 ASC, 3 ASC ;
לדוגמה, התוצאה של השאילתה הקודמת עשויה להיות:
Row | month | cost_type | name | total | total_exact |
---|---|---|---|---|---|
1 | 201901 | regular | null | 1000.501209987994782$ | 1000.50$ |
2 | 201901 | rounding_error | null | $0.500489920049387– | $0.50– |
3 | 201901 | tax | null | 10.000329958477891$ | 10.00$ |
4 | 201901 | adjustment | null | $5.002572999387045– | $5.00– |
5 | 201901 | regular | backend1 | 410.998795012082947$ | 411.00$ |
2 | 201901 | rounding_error | backend1 | $0.2404900489920378– | $0.24– |
3 | 201901 | tax | backend1 | 4.105840329977189$ | 4.11$ |
פירוט העלויות של אשכולות Google Kubernetes Engine (GKE)
בקטע הזה מובאות דוגמאות לסינון העלויות של אשכול GKE בדוחות הייצוא של BigQuery. למידע נוסף על העלויות של אשכול GKE, אפשר לקרוא את המאמר צפייה בפירוט של עלויות אשכול.
סינון העלויות ב-GKE
בדוגמאות הבאות מופיעות שאילתות שמאפשרות לסנן ולקבץ את העלויות של GKE לפי סוגי המשאבים הנתמכים, שם האשכול, מרחב השמות והתווית.
עלויות של אשכול GKE לפני זיכויים
SELECT SUM(cost) AS cost_before_credits, labels.value AS cluster_name FROM `project-ID.dataset.gcp_billing_export_resource_v1_XXXXXX-XXXXXX-XXXXXX` LEFT JOIN UNNEST(labels) as labels ON labels.key = "goog-k8s-cluster-name" GROUP BY labels.value ;
עלויות GKE אחרי זיכויים לפי מרחב שמות
SELECT labels.value as namespace, SUM(cost) + SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0)) AS cost_after_credits, FROM `project-ID.dataset.gcp_billing_export_resource_v1_XXXXXX-XXXXXX-XXXXXX` LEFT JOIN UNNEST(labels) as labels ON labels.key = "k8s-namespace" GROUP BY namespace ;
עלויות GKE לפי מק"טים
SELECT project.id AS project_id, labels.value AS cluster_name, sku.id AS sku_id, sku.description AS sku_description, SUM(cost) AS cost FROM `project-ID.dataset.gcp_billing_export_resource_v1_XXXXXX-XXXXXX-XXXXXX` JOIN UNNEST(labels) AS labels ON labels.key = "goog-k8s-cluster-name" GROUP BY cluster_name, project_id, sku_description, sku_id ;
דוגמאות לשאילתות של נתוני תמחור
בקטע הזה מוצגות דוגמאות שונות לשאילתות של נתוני תמחור בחיוב ב-Cloud שיוצאו ל-BigQuery.
ערכים נפוצים שכלולים בדוגמאות לשאילתות של תמחור
בדוגמאות לשאילתות בקטע הזה נעשה שימוש בערכים הבאים:
- Table name:
project-ID.dataset.cloud_pricing_export
- SKU ID:
2DA5-55D3-E679
(Cloud Run – Requests)
הצגת מחירי מחירון למק"ט ספציפי
בדוגמה הזו מופיעה שאילתה בסיסית להצגת הערך בשדה list_price
של כל רמת תמחור למק"ט מסוים.
SQL סטנדרטי
SELECT sku.id, sku.description, list_price.* FROM `project-ID.dataset.cloud_pricing_export` WHERE DATE(_PARTITIONTIME) = "2020-07-20" AND sku.id = "2DA5-55D3-E679" ;
השדה _PARTITIONTIME
נוצר באופן אוטומטי על ידי BigQuery ומייצג את התאריך שאליו שייכים הנתונים. במקום השדה _PARTITIONTIME
, אפשר להשתמש בשדה שנוצר באופן מפורש על ידי הייצוא בחיוב ב-Cloud, למשל pricing_as_of_time
.
לפניכם אותה שאילתה שהוגדרה להשתמש בשדה pricing_as_of_time
:
SELECT sku.id, sku.description, list_price.* FROM `project-ID.dataset.cloud_pricing_export` WHERE DATE(pricing_as_of_time) = "2020-07-20" AND sku.id = "2DA5-55D3-E679" ;
תוצאות השאילתה
Row | id | description | pricing_unit | aggregation_info. aggregation_level |
aggregation_info. aggregation_interval |
tiered_rates. pricing_unit_quantity |
tiered_rates. start_usage_amount |
tiered_rates. usd_amount |
tiered_rates. account_currency_amount |
---|---|---|---|---|---|---|---|---|---|
1 | 2DA5-55D3-E679 | Requests | COUNT | ACCOUNT | MONTHLY | 1000000 | 0 | 0 | 0 |
1000000 | 2000000 | 0.4 | 0.4 |
הצגת מחירי המחירון למק"ט ספציפי, כולל תיאור של השירות
בשתי הדוגמאות בקטע הזה מופיעות שאילתות להצגת הערך list_price
לכל רמת תמחור למק"ט מסוים, והן כוללות את תיאור המק"ט ואת תיאור השירות.
- בדוגמה 1 מוצג מק"ט אחד לכל שורה, ורמות התמחור מופיעות כנתונים בתצוגת עץ.
- בדוגמה 2 הנתונים מופיעים שלא בטבלת עץ, כדי להציג שורה אחת לכל מק"ט בכל רמת תמחור.
דוגמה 1: הצגת נתונים בתצוגת עץ
בדוגמה הזו מופיעה שאילתה למק"ט יחיד שנועדה להציג את הנתונים של השדה list_price
. למק"ט הזה יש כמה רמות תמחור.
הערכים בשדה list price מופיעים בשורות נפרדות, שמוצגות בתצוגת עץ מתחת לשורת מזהה המק"ט.
SQL סטנדרטי
SELECT sku.id AS sku_id, sku.description AS sku_description, service.id AS service_id, service.description as service_description, list_price.* FROM project-ID.dataset.cloud_pricing_export WHERE DATE(_PARTITIONTIME) = "2020-07-20" AND sku.id = "2DA5-55D3-E679" ;
תוצאות השאילתה:
Row | sku_id | sku_description | service_id | service_description | aggregation_info. aggregation_level |
aggregation_info. aggregation_interval |
tiered_rates. pricing_unit_quantity |
tiered_rates. start_usage_amount |
tiered_rates. usd_amount |
tiered_rates. account_currency_amount |
---|---|---|---|---|---|---|---|---|---|---|
1 | 2DA5-55D3-E679 | Requests | 152E-C115-5142 | Cloud Run | ACCOUNT | MONTHLY | 1000000 | 0 | 0 | 0 |
1000000 | 2000000 | 0.4 | 0.4 |
דוגמה 2: הצגת נתונים שלא בתצוגת עץ, שמאוחדים באותה טבלה
בדוגמה הזו מופיעה שאילתה למק"ט יחיד שנועדה להציג את הערך בשדה list price
. למק"ט יש כמה רמות תמחור.
השאילתה מדגימה איך להשתמש באופרטור UNNEST
כדי לשטח את המערך tiered_rates
ולאחד את השדות לאותה טבלה, כך שכל רמת תמחור תופיע בשורה אחת.
SQL סטנדרטי
SELECT sku.id AS sku_id, sku.description AS sku_description, service.id AS service_id, service.description as service_description, tier.* FROM `project-ID.dataset.cloud_pricing_export` as sku_pricing, UNNEST (sku_pricing.list_price.tiered_rates) as tier WHERE DATE(_PARTITIONTIME) = "2020-07-20" AND sku.id = "2DA5-55D3-E679" ;
תוצאות השאילתה:
Row | sku_id | sku_description | service_id | service_description | pricing_unit_quantity | start_usage_amount | usd_amount | account_currency_amount |
---|---|---|---|---|---|---|---|---|
1 | 2DA5-55D3-E679 | Requests | 152E-C115-5142 | Cloud Run | 1000000.0 | 0.0 | 0.0 | 0.0 |
2 | 2DA5-55D3-E679 | Requests | 152E-C115-5142 | Cloud Run | 1000000.0 | 2000000.0 | 0.4 | 0.4 |
שימוש בטקסונומיית מוצרים ובטקסונומיה גיאוגרפית לשליחת שאילתות לגבי מק"טים
- טקסונומיית מוצרים היא רשימה של קטגוריות מוצרים שחלות על המק"ט, למשל Serverless, Cloud Run ו-VMs On Demand.
- טקסונומיה גיאוגרפית היא המטא-נתונים הגיאוגרפיים שחלים על מק"ט ומכילים ערכים של סוג ואזור.
הצגת טקסונומיית המוצרים של מק"ט
בדוגמה הזו מופיעה שאילתה שמציגה את הרשימה product_taxonomy
למק"ט מסוים, שבו מזהה המק"ט (SKU ID) = 2DA5-55D3-E679
(Cloud Run – Requests).
SQL סטנדרטי
SELECT sku.id AS sku_id, sku.description AS sku_description, service.id AS service_id, service.description as service_description, product_taxonomy FROM `project-ID.dataset.cloud_pricing_export` WHERE DATE(_PARTITIONTIME) = "2020-07-20" AND sku.id = "2DA5-55D3-E679" ;
תוצאות השאילתה:
Row | sku_id | sku_description | service_id | service_description | product_taxonomy |
---|---|---|---|---|---|
1 | 2DA5-55D3-E679 | Requests | 152E-C115-5142 | Cloud Run | GCP |
Serverless | |||||
Cloud Run | |||||
Other |
הצגת כל המק"טים בטקסונומיית מוצרים ספציפית
בדוגמה הזו מופיעה שאילתה שמציגה את כל המק"טים שתואמים לערך product_taxonomy
מסוים.
בשאילתה הזו, הערך Serverless מוגדר בשדה product taxonomy
.
SQL סטנדרטי
SELECT sku.id AS sku_id, sku.description AS sku_description, service.id AS service_id, service.description as service_description, product_taxonomy FROM `project-ID.dataset.cloud_pricing_export` WHERE DATE(_PARTITIONTIME) = "2020-07-20" AND "Serverless" in UNNEST(product_taxonomy) LIMIT 10 ;
תוצאות השאילתה:
Row | sku_id | sku_description | service_id | service_description | product_taxonomy |
---|---|---|---|---|---|
1 | 0160-BD7B-4C40 | Cloud Tasks Network Intra Region Egress | F3A6-D7B7-9BDA | Cloud Tasks | GCP |
Serverless | |||||
Cloud Tasks | |||||
Other | |||||
2 | FE08-0A74-7AFD | Cloud Tasks GOOGLE-API Egress | F3A6-D7B7-9BDA | Cloud Tasks | GCP |
Serverless | |||||
Cloud Tasks | |||||
Other | |||||
3 | A81A-32A2-B46D | Task Queue Storage Salt Lake City | F17B-412E-CB64 | App Engine | GCP |
Serverless | |||||
GAE | |||||
Other | |||||
TaskQueue |
הצגת כל המק"טים בטקסונומיה גיאוגרפית ספציפית ובטקסונומיית מוצרים ספציפית
בדוגמה הזו מופיעה שאילתה שמציגה את כל המק"טים שתואמים לאזור geo_taxonomy
מסוים ולערך product_taxonomy
מסוים, שבהם region
= us-east4 וגם product_taxonomy
= VMs On Demand.
SQL סטנדרטי
SELECT sku.id AS sku_id, sku.description AS sku_description, service.id AS service_id, service.description as service_description, geo_taxonomy, product_taxonomy FROM `project-ID.dataset.cloud_pricing_export` WHERE DATE(_PARTITIONTIME) = "2020-07-20" AND "VMs On Demand" in UNNEST(product_taxonomy) AND geo_taxonomy.type = "REGIONAL" AND "us-east4" in UNNEST (geo_taxonomy.regions) ;
תוצאות השאילתה:
Row | sku_id | sku_description | service_id | service_description | geo_taxonomy.type | geo_taxonomy.regions | product_taxonomy |
---|---|---|---|---|---|---|---|
1 | 9174-81EE-425B | Sole Tenancy Premium for Sole Tenancy Instance Ram running in Virginia | 6F81-5844-456A | Compute Engine | REGIONAL | us-east4 | GCP |
Compute | |||||||
GCE | |||||||
VMs On Demand | |||||||
Memory: Per GB | |||||||
2 | C3B9-E891-85ED | Sole Tenancy Instance Ram running in Virginia | 6F81-5844-456A | Compute Engine | REGIONAL | us-east4 | GCP |
Compute | |||||||
GCE | |||||||
VMs On Demand | |||||||
Memory: Per GB | |||||||
3 | 6E2A-DCD9-87ED | N1 Predefined Instance Ram running in Virginia | 6F81-5844-456A | Compute Engine | REGIONAL | us-east4 | GCP |
Compute | |||||||
GCE | |||||||
VMs On Demand | |||||||
Memory: Per GB |
שילוב נתוני התמחור עם נתונים מפורטים של עלויות השימוש
השאילתה הזו מדגימה איך לחבר בין נתוני העלויות ונתוני המחירים שמייצאים, כדי לראות את פרטי התמחור בהתאם לעלויות. אפשר להגדיר את השאילתה הזו כדי לשלוף את הנתונים המפורטים של עלויות השימוש שיוצאו (בתור Exports
), ולשלב אותם עם נתוני התמחור שיוצאו (בתור Prices
).
משתמשים בשם הטבלה של הנתונים המפורטים של עלויות השימוש כדי לשלוף את הנתונים של Exports
:
gcp_billing_export_resource_v1_<BILLING_ACCOUNT_ID>
משתמשים בשם הטבלה של נתוני התמחור של Prices
:
project-ID.dataset.cloud_pricing_export
WITH Exports AS ( SELECT * FROM `project-ID.dataset.gcp_billing_export_resource_v1_XXXXXX-XXXXXX-XXXXXX` ), Prices AS ( SELECT * FROM `project-ID.dataset.cloud_pricing_export` ) SELECT Exports.sku.description AS sku_description, Exports.cost, Exports.usage, FlattenedPrices.pricing_unit_description, FlattenedPrices.account_currency_amount, FlattenedPrices.account_currency_code, FROM Exports JOIN (SELECT * FROM Prices CROSS JOIN UNNEST(Prices.list_price.tiered_rates)) AS FlattenedPrices ON Exports.sku.id = FlattenedPrices.sku.id AND Exports.price.tier_start_amount = FlattenedPrices.start_usage_amount WHERE DATE(Exports.export_time) = '2023-06-30' AND DATE(FlattenedPrices.export_time) = '2023-06-30' AND cost > 0 LIMIT 1000
לדוגמה, התוצאה של השאילתה הקודמת עשויה להיות:
sku_description | cost | usage | pricing_unit_description | account_currency_amount | account_currency_code |
---|---|---|---|---|---|
Balanced PD Capacity | 0.001345 | { "usage": { "amount": "38654705664000.0", "unit": "byte-seconds", "amount_in_pricing_units": "0.01345895", "pricing_unit": "gibibyte month" } } | gibibyte month | 0.1 | USD |
Balanced PD Capacity | 0.001344 | { "usage": { "amount": "38654705664000.0", "unit": "byte-seconds", "amount_in_pricing_units": "0.01345895", "pricing_unit": "gibibyte month" } } | gibibyte month | 0.1 | USD |
Balanced PD Capacity | 0.001346 | { "usage": { "amount": "38654705664000.0", "unit": "byte-seconds", "amount_in_pricing_units": "0.01345895", "pricing_unit": "gibibyte month" } } | gibibyte month | 0.1 | USD |
נושאים קשורים
נושאים שקשורים לנתוני חיוב ב-Cloud שיוצאו
- הגדרת הייצוא של נתוני החיוב ב-Cloud ל-BigQuery
- הסבר על טבלאות נתוני החיוב ב-Cloud ב-BigQuery
- המחשה חזותית של ההוצאות לאורך זמן באמצעות Looker Studio
דוחות של עלויות ותמחור שזמינים במסוף Google Cloud
- הצגת דוחות החיוב ב-Cloud ומגמות של עלויות
- צפייה בפרטי העלויות של החשבוניות ודפי החשבון והורדה שלהם
- צפייה במחירים בשירותי הענן של Google והורדה שלהם
- בדיקת החיסכון בחשבון בעזרת דוחות עם פירוט העלויות
- ניתוח היעילות של ההנחות תמורת התחייבות לשימוש
- צפייה בהיסטוריית התשלומים והעלויות