דוגמאות לשאילתות לדיווח על יומנים ב-BigQuery

התכונה הזו נתמכת במהדורות הבאות: Frontline Standard ו-Frontline Plus,‏ Enterprise Standard ו-Enterprise Plus,‏ Education Standard ו-Education Plus,‏ Enterprise Essentials Plus. השוואה בין המהדורות

המאמר הזה כולל דוגמאות לשאילתות של דוחות נפוצים שאפשר לקבל מ-BigQuery. השאילתות לדוגמה האלה מבוססות על SQL מדור קודם. מחליפים את api_project_name.dataset_name בשם הפרויקט ובשם מערך הנתונים שלכם.

מידע נוסף על שליחת שאילתות לנתונים ב-BigQuery

כדי לקרוא על השדות של יומני Gmail והמשמעות שלהם, אפשר לעבור למאמר סכימה ליומני פעילות ב-Gmail ב-BigQuery.

שאילתות לדוגמה

חשבונות

מספר חשבונות האדמין והחשבונות שהוקצו, ומספר החשבונות שהושבתו, ננעלו והושעו לפי תאריך

SELECT date,
    accounts.num_locked_users,
    accounts.num_disabled_accounts,
    accounts.num_delegated_admins,
    accounts.num_super_admins,
    accounts.num_suspended_users,
    accounts.num_users
    FROM api_project_name.dataset_name.usage
    WHERE accounts.num_users IS NOT NULL
    ORDER BY date ASC;

אדמינים

האירועים הכי נפוצים שבוצעו על ידי אדמין

SELECT count(*) as admin_actions, event_name
    FROM api_project_name.dataset_name.activity
    WHERE email IN (
      SELECT user_email
      FROM api_project_name.dataset_name.usage
      WHERE accounts.is_super_admin = TRUE
    )
    GROUP BY 2
    ORDER BY 1 DESC;

איך למצוא את מספר הסופר-אדמינים בדומיין מסוים

SELECT COUNT(DISTINCT user_email) as number_of_super_admins, date
    FROM api_project_name.dataset_name.usage
    WHERE accounts.is_super_admin = TRUE
    GROUP BY 2
    ORDER BY 2 DESC;

יומן Google

רק SQL סטנדרטי

היחס בין משתמשים פעילים ביום לבין משתמשים פעילים ב-30 ימים ביומן Google. בדוגמה הזו, השאילתה מורצת על כמה טבלאות.

משתמשים פעילים ביום (DAU)

SELECT date, calendar.num_1day_active_users
    FROM api_project_name.dataset_name.usage
    WHERE calendar.num_1day_active_users IS NOT NULL
    ORDER BY date DESC

משתמשים פעילים ל-30 ימים

SELECT date, calendar.num_30day_active_users
    FROM api_project_name.dataset_name.usage
    WHERE calendar.num_30day_active_users IS NOT NULL
    ORDER BY date DESC;

מספר האירועים ביומן לפי סוג

SELECT COUNT(DISTINCT calendar.calendar_id) AS count, event_name
    FROM api_project_name.dataset_name.activity
    WHERE calendar.calendar_id IS NOT NULL
    GROUP BY 2 ORDER BY 1 DESC;

העברת נתונים

האירועים ביומן של העברת נתונים יושקו בהדרגה החל מ-26 במאי 2025. יכול להיות שנתוני האירועים ביומן לפני התאריך הזה לא מדויקים.

כל פעולות ההגדרה והקונפיגורציה שבוצעו על ידי אדמין

SELECT TIMESTAMP_MICROS(time_usec) as timestamp, email, status.*, event_type, event_name, data_migration.* FROM api_project_name.dataset_name.activity WHERE record_type = 'data_migration' AND event_type = 'MIGRATION_SETUP' AND email = 'admin@example.com' ORDER BY timestamp desc LIMIT 1000;

כל האירועים שקשורים להעברה של מזהה ביצוע מסוים

SELECT TIMESTAMP_MICROS(time_usec) as timestamp, email, event_type, status.*, event_name, data_migration.* FROM api_project_name.dataset_name.activity WHERE record_type = 'data_migration' AND event_type = 'MIGRATION' AND data_migration.execution_id =  'execution_id' ORDER BY timestamp desc LIMIT 1000;

כל הכשלים של מזהה הפעלה מסוים

SELECT TIMESTAMP_MICROS(time_usec) as timestamp, email, event_type, status.*, event_name, data_migration.* FROM api_project_name.dataset_name.activity WHERE record_type = 'data_migration' AND event_type = 'MIGRATION' AND data_migration.execution_id =  'execution_id' AND status.event_status = 'FAILED' ORDER BY timestamp desc LIMIT 1000;

כל האירועים מסוג מקור מסוים, כמו Microsoft Exchange Online

SELECT TIMESTAMP_MICROS(time_usec) as timestamp, email, event_type, status.*, event_name, data_migration.* FROM api_project_name.dataset_name.activity WHERE record_type = 'data_migration' AND data_migration.migration_type = 'Exchange Online Migration' ORDER BY timestamp desc LIMIT 1000;

כל האירועים של משתמש מקור מסוים בהעברה מ-Gmail במהדורת Enterprise

SELECT TIMESTAMP_MICROS(time_usec) as timestamp, email, event_type, status.*, event_name, data_migration.* FROM api_project_name.dataset_name.activity WHERE record_type = 'data_migration' AND data_migration.migration_type = 'Enterprise Gmail Migration' AND data_migration.source_identifier like '%user@example.com%' ORDER BY timestamp desc LIMIT 1000;

כל האירועים של הודעה מסוימת עם מזהה URI נתון של מקור, כמו מזהה RFC

SELECT TIMESTAMP_MICROS(time_usec) as timestamp, email, event_type, status.*, event_name, data_migration.* FROM api_project_name.dataset_name.activity WHERE record_type = 'data_migration' AND data_migration.source_uri = 'rfc822Id' ORDER BY timestamp desc LIMIT 1000;

כל האירועים של סוג נתונים מסוים במקור, כמו תיקיית אימייל ב-Exchange Online

SELECT TIMESTAMP_MICROS(time_usec) as timestamp, email, event_type, status.*, event_name, data_migration.* FROM api_project_name.dataset_name.activity WHERE record_type = 'data_migration' AND data_migration.source_type = 'Exchange Online Email Folder' ORDER BY timestamp desc LIMIT 1000;

מספר האירועים מקובצים לפי סטטוס ושם האירוע

SELECT status.event_status as status, event_name, count(*) AS count FROM api_project_name.dataset_name.activity WHERE record_type = 'data_migration' GROUP BY 1,2 ORDER BY 1,2 limit 1000;

מספר יומי של כל האירועים, מקובצים לפי סטטוס וסוג אובייקט

SELECT EXTRACT(DATE FROM TIMESTAMP_MICROS(time_usec)) AS date, status.event_status as status, data_migration.source_type, count(*) AS count FROM api_project_name.dataset_name.activity WHERE record_type = 'data_migration' GROUP BY 1,2,3 ORDER BY 1,2,3 limit 1000;

Drive

מספר הפריטים ב-Google Drive ששותפו, מקובצים לפי שיטת השיתוף

SELECT COUNT(DISTINCT drive.doc_id) AS count, drive.visibility
    FROM api_project_name.dataset_name.activity
    WHERE drive.doc_id IS NOT NULL
    GROUP BY 2 ORDER BY 1 DESC;

מזהה הקובץ, השם, הבעלים והסוג. קבצים ששותפו עם גורמים מחוץ לארגון בחלון הזמן.

SELECT TIMESTAMP_MICROS(time_usec) AS date, drive.doc_id, drive.doc_title,
    drive.owner, drive.doc_type
    FROM api_project_name.dataset_name.activity
    WHERE drive.visibility = "shared_externally"
    ORDER BY 1 DESC
    LIMIT 100;

שינויים בהרשאות השיתוף והתוצאה שלהם. מאפשרת לכם להבין אילו שינויים בהרשאות גרמו לשינוי בהרשאות הגישה לקובץ.

SELECT TIMESTAMP_MICROS(time_usec) AS date, drive.doc_title,
    drive.visibility_change,drive.old_visibility, drive.visibility,
    FROM api_project_name.dataset_name.activity
    WHERE record_type = "drive"
    AND drive.old_visibility IS NOT NULL
    AND drive.old_visibility != "unknown";

סוגי אירועים לפי סוג קובץ. המידע הזה שימושי לדוח על שיעורי השימוש לפי סוג קובץ.

SELECT drive.doc_type, event_type, count(*)
    FROM  api_project_name.dataset_name.activity
    WHERE record_type = "DRIVE"
    GROUP by 1,2 ORDER BY 3 desc;

סוג האירוע והשם של כל אחסון שיתופי

SELECT drive.shared_drive_id, event_type, event_name, record_type,
    count(distinct drive.doc_id) AS count
    FROM api_project_name.dataset_name.activity
    WHERE record_type = "drive"
    AND drive.shared_drive_id IS NOT NULL
    GROUP BY 1,2,3,4 ORDER BY 5 DESC;

מידע על משתמשים מחוץ לדומיין שלכם

SELECT email, event_name, count(*) AS count
    FROM api_project_name.dataset_name.activity
    WHERE email != ""
    AND email NOT LIKE "%mydomain.com%"
    GROUP BY 1,2 ORDER BY 3 DESC;

אילו שינויים בהרשאות ניתנו למשתמשים חיצוניים ומתי

SELECT drive.target_user, event_name, count(*) AS count
    FROM api_project_name.dataset_name.activity
    WHERE drive.target_user IS NOT NULL
    AND drive.target_user NOT LIKE "%mydomain.com%"
    GROUP BY 1,2 ORDER BY 3 DESC;

מידע על מעקב אחרי נפח האחסון

השאילתה הזו שימושית ליצירת דוחות על משתמשים שצורכים יותר מנפח אחסון מסוים ב-Drive, עם סף מוגדר (שמוגדר באמצעות הסעיף AND accounts.drive_used_quota_in_mb > 0).

אפשר להגדיר את השאילתה הזו כשאילתה מתוזמנת או, למשל, להפעיל אותה מדי פעם באמצעות API.

SELECT date,
    user_email,
    accounts.drive_used_quota_in_mb,
    FROM api_project_name.dataset_name.usage
    WHERE accounts.drive_used_quota_in_mb IS NOT NULL
    AND accounts.drive_used_quota_in_mb > 0
    AND user_email != ""
    AND date = CAST(DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY) AS STRING)
    ORDER BY 3,1 DESC;

הערות:

  • אפשר לשנות את הערך הזה בהתאם למסנן שהלקוח מגדיר. לדוגמה, מעל 15GB: AND accounts.drive_used_quota_in_mb > 15000
  • השוואת התאריכים עם CAST(DATE_SUB(CURRENT_DATE(), INTERVAL x DAY) AS STRING) מאפשרת להשוות תאריכים בפורמט שזמין מהערך date.
  • השאילתה הזו רלוונטית גם ל-Gmail, שבו אפשר למצוא ערך דומה: accounts.gmail_used_quota_in_mb

Gmail

שיטות מומלצות לשימוש ב-Gmail עם BigQuery

  • שלחו שאילתות רק לגבי הנתונים שאתם צריכים. בדוגמאות האלה יש מגבלה של 1,000 התאמות, אבל אתם יכולים להגדיר מגבלה משלכם.
  • מגדירים מסגרת זמן לשאילתות. יום אחד הוא מסגרת זמן אופיינית.

התאמה לנושא
תצוגת סיכום של הודעות עם עד 1,000 רשומות שתואמות לנושא שצוין

SELECT TIMESTAMP_MICROS(gmail.event_info.timestamp_usec) as timestamp,
         gmail.message_info.subject,
         gmail.message_info.source.address,
         gmail.message_info.rfc2822_message_id
    FROM your_dataset_id.activity
    WHERE gmail.message_info.subject LIKE "%test%"
    LIMIT 1000

התאמת נמען
ספירת מספר ההודעות המובחנות לנמען ספציפי

SELECT COUNT(DISTINCT gmail.message_info.rfc2822_message_id)
    FROM your_dataset_id.activity d
    WHERE
      EXISTS(
       SELECT 1 FROM d.gmail.message_info.destination WHERE destination.address = "recipient@example.com")

התאמה בין הטיפול לנמען

תצוגת סיכום ההודעות של עד 1,000 רשומות שתואמות לשני התנאים הבאים:

  • החלטה שצוינה (שינוי, דחייה, הסגר)
  • נמען ספציפי
SELECT TIMESTAMP_MICROS(gmail.event_info.timestamp_usec) as timestamp,
         gmail.message_info.subject,
         gmail.message_info.source.address as source,
         destination.address as destination,
         gmail.message_info.rfc2822_message_id
    FROM your_dataset_id.activity d, d.gmail.message_info.destination
    WHERE
         destination.address = "recipient@example.com" AND
         EXISTS(SELECT 1 FROM d.gmail.message_info.triggered_rule_info ri, ri.consequence
              WHERE consequence.action = 17)
    LIMIT 1000

תיאור הכלל שהופעל
תצוגת סיכום של עד 1,000 הודעות שהפעילו את תיאור הכלל שצוין

SELECT TIMESTAMP_MICROS(gmail.event_info.timestamp_usec) as timestamp,
         gmail.message_info.subject,
         gmail.message_info.source.address as source,
         destination.address as destination,
         gmail.message_info.rfc2822_message_id
    FROM your_dataset_id.activity d, d.gmail.message_info.destination
    WHERE
        EXISTS(SELECT 1 FROM d.gmail.message_info.triggered_rule_info ri, ri.consequence
           WHERE consequence.reason LIKE '%description%')
    LIMIT 1000

סומנו כספאם
תצוגת סיכום ההודעות של עד 1,000 רשומות:

  • סומנה כספאם
  • לנמען ספציפי
  • מכל הסיבות
SELECT TIMESTAMP_MICROS(gmail.event_info.timestamp_usec) as timestamp,
         gmail.message_info.subject,
         gmail.message_info.source.address as source,
         destination.address as destination,
         gmail.message_info.rfc2822_message_id
    FROM your_dataset_id.activity d, d.gmail.message_info.destination
    WHERE gmail.message_info.is_spam AND
              destination.address = "recipient@example.com"
    LIMIT 1000

פרוטוקול הצפנה – לא מוצפן
תצוגת סיכום של הודעות לפי פרוטוקול הצפנה – לא מוצפן

SELECT TIMESTAMP_MICROS(gmail.event_info.timestamp_usec) as timestamp,
         gmail.message_info.subject,
         gmail.message_info.source.address as source,
         destination.address as destination,
         gmail.message_info.rfc2822_message_id
    FROM your_dataset_id.activity d, d.gmail.message_info.destination
    WHERE gmail.message_info.connection_info.smtp_tls_state = 0
    LIMIT 1000

פרוטוקול הצפנה – TLS בלבד
תצוגת סיכום של ההודעות לפי פרוטוקול הצפנה – TLS בלבד

SELECT TIMESTAMP_MICROS(gmail.event_info.timestamp_usec) as timestamp,
         gmail.message_info.subject,
         gmail.message_info.source.address as source,
         destination.address as destination,
         gmail.message_info.rfc2822_message_id
    FROM your_dataset_id.activity d, d.gmail.message_info.destination
    WHERE gmail.message_info.connection_info.smtp_tls_state = 1
    LIMIT 1000

התאמה למזהה הודעה
תצוגת פרטי ההודעה של מזהה הודעה נתון (צריך לכלול את התווים "<>" לפני ואחרי מזהה ההודעה)

SELECT TIMESTAMP_MICROS(gmail.event_info.timestamp_usec) as timestamp,
         gmail.event_info.success,
         gmail.event_info.elapsed_time_usec,
         gmail.message_info.subject,
         gmail.message_info.source.address as source,
         gmail.message_info.source.service as source_service,
         gmail.message_info.source.selector as source_selector,
         destination.address as destination,
         destination.service,
         destination.selector as destination_selector,
         gmail.message_info.rfc2822_message_id,
         gmail.message_info.payload_size,
         gmail.message_info.num_message_attachments,
         gmail.message_info.connection_info.smtp_tls_state,
         gmail.message_info.description
    FROM your_dataset_id.activity d, d.gmail.message_info.destination
    WHERE gmail.message_info.rfc2822_message_id = "<message id>"
    LIMIT 1000

החלטה – דחיית ההודעה
דחיית ההודעה:

  • איזה כלל גרם לדחייה?
SELECT TIMESTAMP_MICROS(gmail.event_info.timestamp_usec) as timestamp,
         gmail.message_info.subject,
         gmail.message_info.source.address as source,
         destination.address as destination,
         gmail.message_info.rfc2822_message_id,
         (SELECT ARRAY_AGG(consequence.reason)
         FROM d.gmail.message_info.triggered_rule_info ri, ri.consequence)
    FROM your_dataset_id.activity d, d.gmail.message_info.destination
    WHERE gmail.message_info.rfc2822_message_id = "<message id>" AND
         EXISTS(SELECT 1 FROM d.gmail.message_info.triggered_rule_info ri, ri.consequence
            WHERE consequence.action = 17)
    LIMIT 1000

Disposition—Modify message
Modify message:

  • איזה כלל גרם לשינוי?
  • מהי קטגוריית המשנה של השינוי (לדוגמה, כותרות או נושא)?
SELECT TIMESTAMP_MICROS(gmail.event_info.timestamp_usec) as timestamp,
         gmail.message_info.subject,
         gmail.message_info.source.address as source,
         destination.address as destination,
         gmail.message_info.rfc2822_message_id,
         (SELECT ARRAY_AGG((consequence.action, consequence.reason))
         FROM d.gmail.message_info.triggered_rule_info ri, ri.consequence)
    FROM your_dataset_id.activity d, d.gmail.message_info.destination
    WHERE gmail.message_info.rfc2822_message_id = "<message id>" AND
       EXISTS(SELECT 1 FROM d.gmail.message_info.triggered_rule_info ri, ri.consequence
           WHERE consequence.action NOT IN (0, 17, 3))
    LIMIT 1000

העברת ההודעה להסגר
איזה כלל הכניס הודעה להסגר?

SELECT TIMESTAMP_MICROS(gmail.event_info.timestamp_usec) as timestamp,
         gmail.message_info.subject,
         gmail.message_info.source.address as source,
         destination.address as destination,
         gmail.message_info.rfc2822_message_id,
         (SELECT ARRAY_AGG(consequence.reason)
         FROM d.gmail.message_info.triggered_rule_info ri, ri.consequence)
    FROM your_dataset_id.activity d, d.gmail.message_info.destination
    WHERE gmail.message_info.rfc2822_message_id = "<message id>" AND
         EXISTS(SELECT 1 FROM d.gmail.message_info.triggered_rule_info ri, ri.consequence
            WHERE consequence.action = 3)
    LIMIT 1000

שאילתות מורכבות
ספירת כל ההודעות שנתפסו על ידי כלל ספציפי (בשם "תיאור הכלל") ב-30 הימים האחרונים:

SELECT
      COUNT(gmail.message_info.rfc2822_message_id) AS message_cnt
    FROM
      `your_dataset_id.activity`,
    UNNEST (gmail.message_info.triggered_rule_info) AS triggered_rule
    WHERE
      _PARTITIONTIME >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY)
      AND triggered_rule.rule_name LIKE "rule description"

רשימה של כל ההודעות שהתקבלו בלי הצפנת TLS ביום האחרון:

SELECT gmail.message_info.subject,
        gmail.message_info.rfc2822_message_id
    FROM `your_dataset_id.activity`
    WHERE
        _PARTITIONTIME >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY) AND
        gmail.message_info.connection_info.smtp_tls_state = 0

רשימה של 10 הדומיינים המובילים שהחשבון שלי החליף איתם אימיילים ב-30 הימים האחרונים:

SELECT
      COUNT(DISTINCT gmail.message_info.rfc2822_message_id) as message_cnt,
      IF(gmail.message_info.is_policy_check_for_sender,
           REGEXP_EXTRACT(gmail.message_info.source.address , "(@.*)"),
           REGEXP_EXTRACT(destination.address , "(@.*)")) AS domain
    FROM `your_dataset_id.activity` d, d.gmail.message_info.destination
    WHERE
        _PARTITIONTIME >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY)
    GROUP BY domain
    ORDER BY message_cnt desc
    LIMIT 10

היחס בין משתמשים פעילים ביום לבין משתמשים פעילים ב-30 ימים ב-Gmail

משתמשים פעילים ביום:

SELECT date,
    gmail.num_1day_active_users
    FROM api_project_name.dataset_name.usage
    WHERE gmail.num_1day_active_users > 0
    ORDER BY 1 DESC;

משתמשים פעילים ל-7 ימים:

SELECT date,
    gmail.num_7day_active_users
    FROM api_project_name.dataset_name.usage
    WHERE gmail.num_7day_active_users > 0
    ORDER BY 1 DESC;

משתמשים פעילים ל-30 ימים:

SELECT date,
    gmail.num_30day_active_users
    FROM api_project_name.dataset_name.usage
    WHERE gmail.num_30day_active_users > 0
    ORDER BY 1 DESC;

‫100 האירועים האחרונים ביומן של Gmail עם לפחות תווית סיווג אחת שמשויכת להודעת האימייל

SELECT
      resource_details[OFFSET(0)].id AS MESSAGE_ID,
      gmail.message_info.subject AS SUBJECT,
      gmail.event_info.mail_event_type AS MAIL_EVENT_TYPE,
      gmail.message_info.source.address AS SENDER,
      resource_details[OFFSET(0)].applied_labels AS LABELS
    FROM workspace_audit_logs.activity
    WHERE gmail.event_info.mail_event_type > 0 and ARRAY_LENGTH(resource_details) > 0
    ORDER by time_usec desc
    LIMIT 100;

כל האירועים הזמינים ביומן של הודעת אימייל ספציפית

SELECT
      gmail.event_info,
      gmail.message_info,
      resource_details
    FROM workspace_audit_logs.activity
    WHERE gmail.message_info.rfc2822_message_id = "<XYZ>"
    ORDER by time_usec desc;

קבוצות Google

שינויים בחברות בקבוצות Google והתנהגות המשתמשים

SELECT TIMESTAMP_MICROS(time_usec) AS date,
      event_name,
      admin.group_email,
      event_type,
      email,
      record_type,
      admin.user_email,
      admin.new_value,
      admin.old_value,
      admin.setting_name
    FROM project_name.dataset_name.activity
    WHERE `admin`.group_email IS NOT NULL
    AND CONCAT(TIMESTAMP_MICROS(time_usec)) LIKE "%YYYY-MM-DD%"
    ORDER BY 1 DESC
    LIMIT
      1000

אם רוצים חותמת זמן בפורמט YYYY-MM-DD, אפשר להחליף את הרכיב הראשון של משפט ה-SELECT ב:
EXTRACT(DATE FROM TIMESTAMP_MICROS(time_usec)) AS date,

אפשר לסנן את התאריכים בסעיף WHERE באחת מהדרכים הבאות:

SELECT TIMESTAMP_MICROS(time_usec) AS date,
      event_name,
      admin.group_email,
      event_type,
      email,
      record_type,
      admin.user_email,
      admin.new_value,
      admin.old_value,
      admin.setting_name
    FROM project_name.dataset_name.activity
    WHERE `admin`.group_email IS NOT NULL
    AND EXTRACT(DATE FROM TIMESTAMP_MICROS(time_usec)) > "2020-06-30"
    AND EXTRACT(DATE FROM TIMESTAMP_MICROS(time_usec)) < "2020-08-31"
    ORDER BY 1 DESC
    LIMIT
      1000
SELECT TIMESTAMP_MICROS(time_usec) AS date,
      event_name,
      admin.group_email,
      event_type,
      email,
      record_type,
      admin.user_email,
      admin.new_value,
      admin.old_value,
      admin.setting_name
    FROM project_name.dataset_name.activity
    WHERE `admin`.group_email IS NOT NULL
    AND TIMESTAMP_MICROS(time_usec) > TIMESTAMP("2020-07-21")
    AND TIMESTAMP_MICROS(time_usec) < TIMESTAMP("2020-07-23")
    ORDER BY 1 DESC
    LIMIT
      1000

Google Meet

מספר שיחות הווידאו וסך כל דקות השיחה לפי תאריך

SELECT date, meet.num_calls, meet.total_call_minutes
    FROM `api_project_name.dataset_name.usage`
    WHERE meet.num_calls IS NOT NULL
    ORDER BY date ASC

משתמשים פעילים ביום (DAU)

SELECT date, meet.num_1day_active_users
    FROM `api_project_name.dataset_name.usage`
    WHERE meet.num_1day_active_users IS NOT NULL
    ORDER BY date DESC

משתמשים פעילים ל-30 ימים

SELECT date, meet.num_30day_active_users
    FROM `api_project_name.dataset_name.usage`
    WHERE meet.num_30day_active_users IS NOT NULL
    ORDER BY date DESC

כללים

כללי DLP שהופעלו לפי שם, אפליקציה תואמת ופעולות

SELECT TIMESTAMP_MICROS(time_usec) AS date, rules.rule_name, rules.application,
    rules.resource_title, rules.actions, rules.resource_owner_email,
    rules.data_source, rules.matched_trigger
    FROM api_project_name.dataset_name.activity
    WHERE rules.rule_name IS NOT NULL
    ORDER BY 1 DESC LIMIT 1000;

טוקנים

מספר הפעמים שאפליקציית צד שלישי קיבלה גישה ל-Google Drive

SELECT token.client_id, scope, token.app_name, count(*) AS count
    FROM api_project_name.dataset_name.activity
    LEFT JOIN UNNEST(token.scope) AS scope
    WHERE scope LIKE "%drive%"
    GROUP BY 1,2,3 ORDER BY 4 DESC;

ניסיונות כניסה למסוף Admin

מידע מפורט על כניסות שנכשלו למסוף Google Admin

SELECT TIMESTAMP_MICROS(time_usec) AS date, email, ip_address,
    event_name, login.login_type, login.login_failure_type
    FROM api_project_name.dataset_name.activity
    WHERE login.login_type IS NOT NULL
    AND login.login_failure_type IS NOT NULL
    AND event_type = "login"
    ORDER BY date DESC;

סכימה לטבלאות שימוש

הסכימה יכולה להשתנות. רשימה מעודכנת ומלאה של פרמטרים ושדות מופיעה במאמרי העזרה של ה-API של Reports.

סינון לפי תאריך

אפשר לסנן לפי תאריך כששולחים שאילתות לטבלאות הפעילות או השימוש. לכל אחד מהם יש פורמט שונה להצגת התאריך:

  • בטבלה activity, חותמות הזמן מאוחסנות במיקרו-שניות של Unix. זהו ערך של מספר שלם (מספר) שאפשר להמיר לתאריך באמצעות הפונקציה TIMESTAMP_MICROS()‎.
  • בטבלה usage, הערכים של date מוצגים בפורמט של תאריך, ולכן אין צורך בהמרה הזו.

בשתי הטבלאות, אתם יכולים לסנן לפי תאריך (או טווח תאריכים) ספציפי באחת מהשיטות הבאות.

טבלת הפעילות

כדי לסנן לפי תאריך ספציפי במבנה Unix Micros (הטבלה activity), אפשר להגדיר את הסעיף WHERE ואת הפונקציה TIMESTAMP()‎ כדי לבצע השוואה פשוטה עם האופרטורים "גדול מ-" (>) ו"קטן מ-" (<):

SELECT TIMESTAMP_MICROS(time_usec) as date, record_type
    FROM api_project_name.dataset_name.activity
    WHERE TIMESTAMP_MICROS(time_usec) > TIMESTAMP("2020-07-01")
    AND TIMESTAMP_MICROS(time_usec) < TIMESTAMP("2020-07-07")
    ORDER BY 1 DESC LIMIT 1000

הרעיון כאן הוא להגביל את ערך הקלט time_usec על ידי השוואה בין הערך המוחזר מהפונקציה TIMESTAMP_MICROS()‎ לבין הערך המוחזר מהפונקציה TIMESTAMP()‎, עם תאריך שנוסף כפרמטר מסוג מחרוזת. הדוגמה הזו תואמת לסטנדרטים של פונקציות של חותמות זמן ב-SQL סטנדרטי, ומשתמשת באופרטורים פשוטים של השוואה (>) ו-(<), יחד עם התוסף AND של משפט WHERE כדי לסגור חלון זמן מסוים.

טבלת השימוש

SELECT date, meet.num_calls,
    FROM api_project_name.dataset_name.usage
    WHERE meet.num_calls IS NOT NULL
    AND TIMESTAMP(date) > TIMESTAMP("2020-07-01")
    AND TIMESTAMP(date) < TIMESTAMP("2020-07-07")
    ORDER BY date DESC;

אנחנו יכולים להעביר את הערך date מסוג מחרוזת שמופיע בטבלה לפונקציה TIMESTAMP()‎ ולהשתמש באופרטורים להשוואה (>) ו-(<) באותו אופן כמו בדוגמה הראשונה.

סינון לפי דומיינים חלופיים ותת-דומיינים: החרגה והכללה

כדי להחריג או לכלול דומיינים מסוימים בתוצאות השאילתה, צריך להחיל מסנן על כתובת האימייל בסעיף WHERE, באמצעות תווים כלליים לחיפוש (%) כדי לסנן את הדומיינים.

השימוש בהצהרה AND או בהצהרה OR תלוי בשאלה אם אתם מסננים (מחריגים) או כוללים רק תוצאות מסוימות.

החרגה של דומיינים מסוימים מהתוצאות

WHERE email NOT LIKE ("%@sub.%")
    AND email NOT LIKE ("%@test.%")

הכללת דומיינים מסוימים בלבד בתוצאות

WHERE email LIKE ("%@sub.%")
    OR email LIKE ("%@test.%")

יומני ביקורת של כללים

איך משתמשים בשאילתה הזו כדי לעקוב אחרי ניסיונות של המשתמשים לשתף מידע אישי רגיש

SELECT TIMESTAMP_MICROS(time_usec) AS Date,
    rules.resource_owner_email AS User,
    rules.rule_name AS ruleName,
    rules.rule_type AS ruleType,
    rules.rule_resource_name AS ruleResourceName,
    rules.resource_id AS resourceId,
    rules.resource_title AS resourceTitle,
    rules.resource_type AS resourceType,
    rules.resource_owner_email AS resourceOwner,
    CAST(recipients AS STRING) AS Recipients,
    rules.data_source AS dataSource,
    rules.actor_ip_address AS actorIpAddress,
    rules.severity AS severity,
    rules.scan_type AS scanType,
    rules.matched_trigger AS matchedTriggers,
    detect.display_name AS matchedDetectorsName,
    detect.detector_id AS matchedDetectorsId,
    detect.detector_type AS matchedDetectorsType,
    triggers.action_type AS triggeredActions,
    suppressors.action_type AS suppressedActions,
    FROM api_project_name.dataset_name.activity
    LEFT JOIN UNNEST(rules.resource_recipients) as recipients
    LEFT JOIN UNNEST(rules.matched_detectors) as detect
    LEFT JOIN UNNEST(rules.triggered_actions) as triggers
    LEFT JOIN UNNEST(rules.suppressed_actions) as suppressors
    WHERE rules.rule_name IS NOT NULL
    AND triggers.action_type != "ALERT"
    ORDER BY 1 DESC
    LIMIT 1000;


‫Google‏, Google Workspace וסימנים וסמלי לוגו קשורים הם סימנים מסחריים של Google LLC. כל שמות החברות והמוצרים האחרים הם סימנים מסחריים של החברות שאליהן הם משויכים.