התצוגה INFORMATION_SCHEMA.SHARED_DATASET_USAGE
התצוגה INFORMATION_SCHEMA.SHARED_DATASET_USAGE מכילה מטא-נתונים כמעט בזמן אמת על הצריכה של הטבלאות של מערך הנתונים המשותף. כדי להתחיל לשתף את הנתונים בין ארגונים, אפשר לעיין במאמר בנושא BigQuery sharing (לשעבר Analytics Hub).
התפקידים הנדרשים
כדי לקבל את ההרשאה שנדרשת לשליחת שאילתה לתצוגה המפורטת INFORMATION_SCHEMA.SHARED_DATASET_USAGE, צריך לבקש מהאדמין להקצות לכם את תפקיד ה-IAM BigQuery Data Owner (הבעלים של נתוני BigQuery) (roles/bigquery.dataOwner) בפרויקט המקור.
להסבר על מתן תפקידים, קראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
התפקיד שמוגדר מראש מכיל את ההרשאה bigquery.datasets.listSharedDatasetUsage, שנדרשת כדי לבצע שאילתות בתצוגה INFORMATION_SCHEMA.SHARED_DATASET_USAGE.
יכול להיות שתוכלו לקבל את ההרשאה הזו גם בתפקידים בהתאמה אישית או בתפקידים אחרים שמוגדרים מראש.
סכימה
נתוני הבסיס מחולקים למחיצות לפי העמודהjob_start_time ומקובצים לפי project_id ו-dataset_id.
ל-INFORMATION_SCHEMA.SHARED_DATASET_USAGE יש את הסכימה הבאה:
| שם העמודה | סוג הנתונים | ערך |
|---|---|---|
project_id
|
STRING
|
(Clustering column) מזהה הפרויקט שמכיל את מערך הנתונים המשותף. |
dataset_id
|
STRING
|
(Clustering column) המזהה של מערך הנתונים המשותף. |
table_id
|
STRING
|
המזהה של הטבלה שאליה מתבצעת גישה. |
data_exchange_id
|
STRING
|
נתיב המשאב של חילופי הנתונים. |
listing_id
|
STRING
|
נתיב המשאב של כרטיס המוצר. |
job_start_time
|
TIMESTAMP
|
(Partitioning column) שעת ההתחלה של העבודה הזו. |
job_end_time
|
TIMESTAMP
|
שעת הסיום של המשרה. |
job_id
|
STRING
|
מזהה המשרה. לדוגמה, bquxjob_1234. |
job_project_number
|
INTEGER
|
מספר הפרויקט שהעבודה שייכת אליו. |
job_location
|
STRING
|
מיקום המשרה. |
linked_project_number
|
INTEGER
|
מספר הפרויקט של המינוי. |
linked_dataset_id
|
STRING
|
המזהה של מערך הנתונים המקושר של מערך הנתונים של המנוי. |
subscriber_org_number
|
INTEGER
|
מספר הארגון שבו העבודה הופעלה. זהו מספר הארגון של המנוי. השדה הזה ריק בפרויקטים שלא משויכים לארגון. |
subscriber_org_display_name
|
STRING
|
מחרוזת שמתייחסת לארגון שבו הופעלה העבודה, בפורמט שקריא לבני אדם. זהו מספר הארגון של המנוי. השדה הזה ריק בפרויקטים שלא משויכים לארגון. |
job_principal_subject
|
STRING
|
המזהה של החשבון הראשי (מזהה האימייל של המשתמש, חשבון השירות, מזהה האימייל של הקבוצה, הדומיין) של משתמשים שמריצים משימות ושאילתות מול מערכי נתונים מקושרים. |
num_rows_processed
|
INTEGER
|
המספר הכולל של השורות שעובדו על ידי טבלאות הבסיס שאליהן מתייחס המשאב שנשלחה לגביו שאילתה. |
total_bytes_processed
|
INTEGER
|
המספר הכולל של בייטים שעובדו על ידי טבלאות הבסיס שאליהן מתייחס המשאב שנשלחה לגביו שאילתה. |
shared_resource_id
|
STRING
|
המזהה של המשאב שנשלחה לגביו שאילתה (טבלה, תצוגה או שגרה). |
shared_resource_type
|
STRING
|
סוג המשאב שנשלחה לגביו שאילתה. לדוגמה, TABLE, EXTERNAL_TABLE, VIEW, MATERIALIZED_VIEW, TABLE_VALUED_FUNCTION או SCALAR_FUNCTION.
|
referenced_tables
|
RECORD REPEATED
|
מכיל את השדות project_id, dataset_id, table_id ו-processed_bytes של טבלת הבסיס.
|
כדי לשמור על יציבות, מומלץ לציין במפורש את העמודות בשאילתות של סכימת המידע, במקום להשתמש בתו כל כללי (SELECT *). ציון מפורש של העמודות מונע את השבירה של השאילתות אם הסכימה הבסיסית משתנה.
שמירת נתונים
התצוגה INFORMATION_SCHEMA.SHARED_DATASET_USAGE כוללת את המשימות הפעילות ואת היסטוריית המשימות מ-180 הימים האחרונים.
היקף ותחביר
שאילתות שמופעלות על התצוגה הזו חייבות לכלול מסנן אזור. אם לא מציינים מסווג אזורי, המטא-נתונים מאוחזרים מהאזור בארה"ב. בטבלה הבאה מוסבר היקף האזור בתצוגה הזו:
| שם התצוגה המפורטת | היקף המשאבים | היקף האזור |
|---|---|---|
[PROJECT_ID.]INFORMATION_SCHEMA.SHARED_DATASET_USAGE |
ברמת הפרויקט | אזור בארה"ב |
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.SHARED_DATASET_USAGE |
ברמת הפרויקט | REGION |
-
אופציונלי:
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . אם לא מציינים פרויקט, המערכת משתמשת בפרויקט שמוגדר כברירת מחדל. -
REGION: כל שם של אזור במערך נתונים. לדוגמה,`region-us`.
דוגמאות
כדי להריץ את השאילתה בפרויקט שאינו פרויקט ברירת המחדל, מוסיפים את מזהה הפרויקט בפורמט הבא:
PROJECT_ID.region-REGION_NAME.INFORMATION_SCHEMA.SHARED_DATASET_USAGE
לדוגמה, myproject.region-us.INFORMATION_SCHEMA.SHARED_DATASET_USAGE.
קבלת המספר הכולל של עבודות שהופעלו בכל הטבלאות המשותפות
בדוגמה הבאה מחושב מספר העבודות הכולל שהופעלו על ידי מנויים בפרויקט:
SELECT COUNT(DISTINCT job_id) AS num_jobs FROM `region-us`.INFORMATION_SCHEMA.SHARED_DATASET_USAGE
התוצאה אמורה להיראות כך:
+------------+ | num_jobs | +------------+ | 1000 | +------------+
כדי לבדוק את מספר העבודות הכולל שהופעלו על ידי מנויים, משתמשים בסעיף WHERE:
- למערכי נתונים, צריך להשתמש ב-
WHERE dataset_id = "...". - לגבי טבלאות, צריך להשתמש ב-
WHERE dataset_id = "..." AND table_id = "...".
קבלת הטבלה שהכי הרבה משתמשים משתמשים בה על סמך מספר השורות שעברו עיבוד
השאילתה הבאה מחשבת את הטבלה שהכי הרבה מנויים משתמשים בה, על סמך מספר השורות שהם מעבדים.
SELECT dataset_id, table_id, SUM(num_rows_processed) AS usage_rows FROM `region-us`.INFORMATION_SCHEMA.SHARED_DATASET_USAGE GROUP BY 1, 2 ORDER BY 3 DESC LIMIT 1
הפלט אמור להיראות כך:
+---------------+-------------+----------------+ | dataset_id | table_id | usage_rows | +---------------+-------------+----------------+ | mydataset | mytable | 15 | +---------------+-------------+----------------+
איך מוצאים את הארגונים המובילים שצורכים את הטבלאות שלכם
השאילתה הבאה מחשבת את המנויים המובילים על סמך מספר הבייטים שעברו עיבוד מהטבלאות שלכם. אפשר גם להשתמש בעמודה num_rows_processed כמדד.
SELECT subscriber_org_number, ANY_VALUE(subscriber_org_display_name) AS subscriber_org_display_name, SUM(total_bytes_processed) AS usage_bytes FROM `region-us`.INFORMATION_SCHEMA.SHARED_DATASET_USAGE GROUP BY 1
הפלט אמור להיראות כך:
+--------------------------+--------------------------------+----------------+ |subscriber_org_number | subscriber_org_display_name | usage_bytes | +-----------------------------------------------------------+----------------+ | 12345 | myorganization | 15 | +--------------------------+--------------------------------+----------------+
למנויים שאין להם ארגון, אפשר להשתמש ב-job_project_number
במקום subscriber_org_number.
קבלת מדדי שימוש לגבי חילופי הנתונים
אם המרכז לנתונים ומערך הנתונים המקורי נמצאים בפרויקטים שונים, צריך לפעול לפי השלבים הבאים כדי לראות את מדדי השימוש במרכז לנתונים:
- למצוא את כל הדפים העסקיים שמשויכים לחילופי הנתונים.
- מאחזרים את מערך הנתונים של המקור שמצורף לכרטיס המוצר.
- כדי לראות את מדדי השימוש של חילופי הנתונים, משתמשים בשאילתה הבאה:
SELECT * FROM source_project_1.`region-us`.INFORMATION_SCHEMA.SHARED_DATASET_USAGE WHERE dataset_id='source_dataset_id' AND data_exchange_id="projects/4/locations/us/dataExchanges/x1" UNION ALL SELECT * FROM source_project_2.`region-us`.INFORMATION_SCHEMA.SHARED_DATASET_USAGE WHERE dataset_id='source_dataset_id' AND data_exchange_id="projects/4/locations/us/dataExchanges/x1"
קבלת מדדי שימוש לתצוגות משותפות
השאילתה הבאה מציגה את מדדי השימוש בכל התצוגות המשותפות בפרויקט:
SELECT project_id, dataset_id, table_id, num_rows_processed, total_bytes_processed, shared_resource_id, shared_resource_type, referenced_tables FROM `myproject`.`region-us`.INFORMATION_SCHEMA.SHARED_DATASET_USAGE WHERE shared_resource_type = 'VIEW'
הפלט אמור להיראות כך:
+---------------------+----------------+----------+--------------------+-----------------------+--------------------+----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| project_id | dataset_id | table_id | num_rows_processed | total_bytes_processed | shared_resource_id | shared_resource_type | referenced_tables |
+---------------------+----------------+----------+--------------------+-----------------------+--------------------+----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| myproject | source_dataset | view1 | 6 | 38 | view1 | VIEW | [{"project_id":"myproject","dataset_id":"source_dataset","table_id":"test_table","processed_bytes":"21"},
{"project_id":"bq-dataexchange-exp","dataset_id":"other_dataset","table_id":"other_table","processed_bytes":"17"}] |
+---------------------+----------------+----------+--------------------+-----------------------+--------------------+----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
קבלת מדדי שימוש בפונקציות משותפות שמחזירות ערכים של טבלה
השאילתה הבאה מציגה את מדדי השימוש בכל הפונקציות של טבלאות משותפות שמופיעות בפרויקט:
SELECT project_id, dataset_id, table_id, num_rows_processed, total_bytes_processed, shared_resource_id, shared_resource_type, referenced_tables FROM `myproject`.`region-us`.INFORMATION_SCHEMA.SHARED_DATASET_USAGE WHERE shared_resource_type = 'TABLE_VALUED_FUNCTION'
הפלט אמור להיראות כך:
+---------------------+----------------+----------+--------------------+-----------------------+--------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------+
| project_id | dataset_id | table_id | num_rows_processed | total_bytes_processed | shared_resource_id | shared_resource_type | referenced_tables |
+---------------------+----------------+----------+--------------------+-----------------------+--------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------+
| myproject | source_dataset | | 3 | 45 | provider_exp | TABLE_VALUED_FUNCTION | [{"project_id":"myproject","dataset_id":"source_dataset","table_id":"test_table","processed_bytes":"45"}] |
+---------------------+----------------+----------+--------------------+-----------------------+--------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------+