שליחת שאילתות ב-BigQuery

במדריך הזה מוסבר איך לשלוח שאילתות לנתונים ב-BigQuery כדי לפתור תרחישי שימוש אופייניים ב-Manufacturing Data Engine‏ (MDE).

צירוף רשומות למטא-נתונים בענן

אם השבתתם את יצירת המטא-נתונים בענן, תוכלו לגשת למופעים של מטא-נתונים בענן על ידי צירוף טבלת הרשומות הרלוונטית ל-metadata-store במטא-נתונים instance_id באמצעות שאילתת ה-SQL הבאה:

SELECT
  dnr.*,
  ms.instance
FROM
  mde_data.`RECORD_TABLE_NAME` AS dnr
LEFT JOIN
  mde_dimension.`metadata-store` AS ms
ON
  ms.instance_id = JSON_VALUE(cloud_metadata_ref, "$.BUCKET_NAME.instance_id")
WHERE
  DATE(event_timestamp) = 'EVENT_TIMESTAMP'
LIMIT 100

מחליפים את מה שכתוב בשדות הבאים:

  • ‫RECORD_TABLE_NAME: שם טבלת הרשומות.
  • ‫BUCKET_NAME: השם של קטגוריית המטא-נתונים בענן.
  • ‫EVENT_TIMESTAMP: חותמת הזמן של האירוע.

כדי לשפר את ביצועי השאילתות, ומכיוון ש-metadata-store מחולק למחיצות לפי מספר הדלי, אפשר לציין את מספר הדלי בסעיף ON, כמו בשאילתת ה-SQL הבאה:

SELECT
  dnr.*,
  ms.instance
FROM
  mde_data.`<RECORD_TABLE_NAME>` AS dnr
LEFT JOIN
  mde_dimension.`metadata-store` AS ms
ON
  ms.instance_id = JSON_VALUE(cloud_metadata_ref, "$.BUCKET_NAME.instance_id")
  AND ms.bucket_number = <BUCKET_NUMBER>
WHERE
  DATE(event_timestamp) = 'EVENT_TIMESTAMP'
LIMIT 100

מחליפים את מה שכתוב בשדות הבאים:

  • ‫BUCKET_NAME: השם של קטגוריית המטא-נתונים בענן.
  • ‫EVENT_TIMESTAMP: חותמת הזמן של האירוע.

גישה למאפיינים של מופע מטא-נתונים בענן

אפשר לגשת למאפייני מטא-נתונים של מופע באמצעות סימון נקודות ב-JSON, שתמיד מחזיר אובייקט JSON, או באמצעות אחת מפונקציות ה-JSON של BigQuery, כמו JSON_VALUE, כדי לחלץ מחרוזות או סוגי נתונים אחרים. דוגמה:

SELECT
  dnr.*,
  ms.instance.deviceName                    -- this returns a double quoted JSON string
  JSON_VALUE(ms.instance, '$.deviceName')   -- this returns a string
FROM
  mde_data.`example-record-tbl` AS dnr
LEFT JOIN
  mde_dimension.`metadata-store` AS ms
ON
  ms.instance_id = JSON_VALUE(cloud_metadata_ref, "$.bucket.instance_id")
WHERE
  DATE(event_timestamp) = '2023-01-01'
LIMIT 100

באופן דומה, אם הפעלתם את האפשרות ליצירת מטא-נתונים ב-Cloud, תוכלו לגשת ישירות לתכונות של מופע המטא-נתונים מהרשומה. מקרה לדוגמה:

SELECT
  *   (EXCEPT materialized_cloud_metadata),
  materialized_cloud_metadata.device.deviceName                     -- this returns a double quoted JSON string
  JSON_VALUE(materialized_cloud_metadata., '$.device.deviceName')   -- this returns a string
FROM
  mde_data.`example-record-tbl`
WHERE
  DATE(event_timestamp) = '2023-01-01'
LIMIT 100

קבלת רשימה של כל מזהי המופעים שכלולים ב-cloud_metadata_ref

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

  1. יוצרים את הפונקציה בהגדרת המשתמש (UDF) באמצעות שאילתת ה-SQL הבאה:

    CREATE OR REPLACE FUNCTION `mde_data.get_instance_ids`(input JSON) RETURNS ARRAY<STRING> LANGUAGE js AS R"""
    return input ? Object.keys(input).map(bucketName => input[bucketName].instance_id).filter(instance_id => instance_id != null) : [];
    """;
    
  2. מריצים את הפונקציה בשאילתה:

    SELECT
     mde_data.get_instance_ids(cloud_metadata_ref) as metadata_instance_ids,
     *,
    FROM
     mde_data.`RECORD_TABLE_NAME`
    WHERE
    DATE(event_timestamp) = 'EVENT_TIMESTAMP'
    LIMIT 100
    

    מחליפים את מה שכתוב בשדות הבאים:

  • ‫RECORD_TABLE_NAME: שם טבלת הרשומות.
  • ‫EVENT_TIMESTAMP: חותמת הזמן של האירוע.