نماذج طلبات البحث لسجلّات إعداد التقارير في 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 في 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).

يمكن تعريف طلب البحث هذا على أنّه طلب بحث مجدول أو يمكن مثلاً استدعاؤه بشكل دوري باستخدام واجهة برمجة التطبيقات.

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 غيغابايت: 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

  • يمكنك إجراء طلب البحث للبيانات التي تحتاجها فقط. تمتلك هذه النماذج حدًا يبلغ 1000 مطابقة، ولكن يمكنك تحديد الحد الأقصى المسموح به التابع لك.
  • يمكنك تحديد إطارٍ زمنيٍّ لطلبات بحثك. يعتبر الإطار الزمني العادي هو يوم واحد.

مطابقة الموضوع
عرض ملخّص الرسالة لما يصل إلى 1000 سجلّ يطابق موضوعًا محدّدًا

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")

مطابقة المستلم والتنظيم

عرض ملخص الرسالة لما يصل إلى 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
         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

تم تفعيل وصف القاعدة
عرض ملخّص الرسالة لما يصل إلى 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
        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) خلال آخر يوم:

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;

Groups

إعدادات المستخدم والتغييرات في عضوية "مجموعات 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

المستخدمون النشطون يوميًا

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

القواعد

قواعد منع فقدان البيانات التي تم تشغيلها حسب الاسم والتطبيق المُتوافِق والإجراءات

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;

محاولات تسجيل الدخول إلى "وحدة تحكّم المشرف"

معلومات تفصيلية عن عمليات تسجيل الدخول المتعذِّرة إلى "وحدة تحكّم المشرف في 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.

الفلترة حسب التاريخ

يمكنك الفلترة حسب التاريخ عند طلب البحث عن جداول النشاط أو جداول الاستخدام. ويختلف الجدولان في طريقة تنسيق التاريخ:

  • يخزّن جدول النشاط الطوابع الزمنية باستخدام بنية Unix Microseconds. وهي قيمة من عدد صحيح (رقم) يمكن تحويله إلى تاريخ باستخدام الدالة 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. وجميع أسماء الشركات والمنتجات الأخرى هي علامات تجارية تملكها الشركات ذات الصلة بها.