تحتوي هذه المقالة على نماذج طلبات التقارير الشائعة التي يمكنك الحصول عليها من 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;نقل البيانات
جميع إجراءات الإعداد والضبط التي ينفّذها مشرف
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
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المستخدمون النشطون يوميًا
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. وجميع أسماء الشركات والمنتجات الأخرى هي علامات تجارية تملكها الشركات ذات الصلة بها.