התצוגה 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.

קבלת מדדי שימוש לגבי חילופי הנתונים

אם המרכז לנתונים ומערך הנתונים המקורי נמצאים בפרויקטים שונים, צריך לפעול לפי השלבים הבאים כדי לראות את מדדי השימוש במרכז לנתונים:

  1. למצוא את כל הדפים העסקיים שמשויכים לחילופי הנתונים.
  2. מאחזרים את מערך הנתונים של המקור שמצורף לכרטיס המוצר.
  3. כדי לראות את מדדי השימוש של חילופי הנתונים, משתמשים בשאילתה הבאה:
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"}]           |
+---------------------+----------------+----------+--------------------+-----------------------+--------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------+