ตัวอย่างการค้นหาบันทึกการรายงานใน 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;

ปฏิทิน

SQL มาตรฐานเท่านั้น

อัตราส่วนของผู้ที่ใช้งานรายวันเทียบกับผู้ที่ใช้งานภายใน 30 วันใน Google ปฏิทิน ตัวอย่างนี้จะค้นหาในหลายตาราง

ผู้ใช้ที่ใช้งานอยู่รายวัน

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 ขององค์กร

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;

ไดรฟ์

จำนวนรายการใน Google ไดรฟ์ ที่แชร์และจัดกลุ่มตามวิธีการแชร์

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;

ข้อมูลเกี่ยวกับการตรวจสอบพื้นที่เก็บข้อมูล

มีประโยชน์ในการจัดทำรายงานเกี่ยวกับผู้ใช้ที่ใช้พื้นที่เก็บข้อมูล Google ไดรฟ์มากกว่า X หน่วย โดยมีการตั้งเกณฑ์ไว้ (ซึ่งกำหนดด้วยคำสั่ง 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;

หมายเหตุ

  • คุณสามารถแก้ไขค่านี้เพื่อให้ตรงกับตัวกรองที่ลูกค้าตั้งค่าไว้ได้ เช่น หากมากกว่า 15 GB ให้ใช้: 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

การกำจัด - แก้ไขข้อความ
แก้ไขข้อความ

  • กฎใดนำไปสู่การแก้ไข
  • แก้ไขหมวดหมู่ย่อยใด (เช่น ส่วนหัวหรือหัวเรื่อง)
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 ในช่วง 1 วันที่ผ่านมา

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;

เหตุการณ์ในบันทึกของ Gmail 100 รายการล่าสุดที่มีป้ายกำกับการแยกประเภทอย่างน้อย 1 รายการที่เชื่อมโยงกับข้อความอีเมล

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 Groups และพฤติกรรมของผู้ใช้

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

ผู้ใช้ที่ใช้งานอยู่รายวัน

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 ไดรฟ์

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;

จำนวนครั้งที่พยายามลงชื่อเข้าใช้คอนโซลผู้ดูแลระบบ

ข้อมูลโดยละเอียดเกี่ยวกับการลงชื่อเข้าใช้ที่ล้มเหลวในคอนโซลผู้ดูแลระบบของ Google

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

กรองตามวันที่

คุณสามารถกรองตามวันที่เมื่อค้นหาตารางกิจกรรมหรือตารางการใช้งาน โดยทั้ง 2 อย่างนี้มีรูปแบบที่ต่างกันในการนําเสนอวันที่ ดังนี้

  • ตารางกิจกรรมจะจัดเก็บการประทับเวลาไว้ในรูปแบบไมโครวินาทีของ Unix ซึ่งเป็นค่าจํานวนเต็ม (ตัวเลข) ที่แปลงเป็นวันที่ได้โดยใช้ฟังก์ชัน TIMESTAMP_MICROS()
  • ตารางการใช้งานจะแสดงค่าวันที่โดยใช้รูปแบบวันที่ จึงไม่จําเป็นต้องทำการแปลงข้อมูล

ไม่ว่าจะเป็นตารางรูปแบบใด คุณก็สามารถเลือกกรองตามวันที่ (หรือช่วงวันที่) ที่ต้องการได้โดยใช้วิธีใดวิธีหนึ่งต่อไปนี้

ตารางกิจกรรม

หากต้องการกรองตามวันที่ที่ต้องการโดยใช้โครงสร้าง Unix Micros (ตารางกิจกรรม) คุณสามารถกำหนดคำสั่ง 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;

เราสามารถส่งค่าวันที่ของประเภทสตริงที่แสดงในตารางไปยังฟังก์ชัน 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 ชื่อบริษัทและชื่อผลิตภัณฑ์อื่นๆ ทั้งหมดเป็นเครื่องหมายการค้าของ บริษัทที่เกี่ยวข้อง