במאמר הזה מופיעות דוגמאות לשאילתות לדוחות נפוצים שאפשר לקבל מ-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;יומן
SQL סטנדרטי בלבד
היחס בין משתמשים פעילים ביום לבין משתמשים פעילים ב-30 יום ב-Google Calendar. בדוגמה הזו מורצת שאילתה על כמה טבלאות.
משתמשים פעילים ביום (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;העברת נתונים
כל פעולות ההגדרה והקביעה שבוצעו על ידי אדמין
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;מידע על מעקב אחר נפח האחסון
התנאי הזה שימושי ליצירת דוחות על משתמשים שמנצלים יותר מ-X נפח אחסון ב-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)מאפשרת להשוות תאריכים עם הפורמט הזמין של ערך התאריך. -
השאילתה הזו רלוונטית גם ל-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 1000Disposition—Reject 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.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פעולה – שינוי ההודעה
שינוי ההודעה:
- איזה כלל גרם לשינוי?
- מהי קטגוריית המשנה של השינוי (לדוגמה, כותרות או נושא)?
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
משתמשים פעילים ביום (DAU):
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 והתנהגות משתמשים
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
1000SELECT 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
1000Google 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;סכימה של טבלאות שימוש
יכול להיות שהסכימה תשתנה. רשימה מעודכנת ומלאה של הפרמטרים והשדות זמינה במסמכי העזרה של Reports API.
סינון לפי תאריך
אפשר לסנן לפי תאריך כשמבצעים שאילתה בטבלאות activity או usage. לשניהם יש פורמטים שונים להצגת התאריך:
- בטבלה activity חותמות הזמן מאוחסנות במיקרו-שניות של Unix. זהו ערך של מספר שלם שאפשר להמיר לתאריך באמצעות הפונקציה TIMESTAMP_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. כל שמות החברות והמוצרים האחרים הם סימנים מסחריים של החברות שאליהן הם משויכים.