این مقاله شامل مثالهایی از پرسوجوها برای گزارشهای رایجی است که میتوانید از BigQuery دریافت کنید. این مثالهای پرسوجو فرض را بر SQL قدیمی میگذارند. به جای api_project_name.dataset_name نام پروژه و نام مجموعه داده خود را قرار دهید.
درباره کوئری کردن دادههای BigQuery بیشتر بدانید.
برای فیلدهای لاگ جیمیل و معانی آنها، به Schema for Gmail activity logs در 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;تعداد مدیران ارشد (super admins) را در یک دامنه مشخص پیدا کنید
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 استاندارد
نسبت کاربران فعال روزانه به کاربران فعال ۳۰ روزه در تقویم گوگل. این مثال، پرسوجوهایی را در چندین جدول انجام میدهد.
کاربران فعال روزانه
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کاربران فعال ۳۰ روزه
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;همه رویدادهای مربوط به یک کاربر منبع خاص در مهاجرت سازمانی جیمیل
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;رانندگی
تعداد موارد به اشتراک گذاشته شده در گوگل درایو، گروه بندی شده بر اساس روش اشتراک گذاری
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 مصرف میکنند، با یک آستانهی تعیینشده (که با عبارت 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;یادداشتها:
- این مقدار را میتوان برای مطابقت با فیلتری که مشتری تنظیم میکند، تغییر داد. برای مثال، بیش از ۱۵ گیگابایت:
AND accounts.drive_used_quota_in_mb > 15000 - مقایسه تاریخ با استفاده از
CAST(DATE_SUB(CURRENT_DATE(), INTERVAL x DAY) AS STRING)امکان مقایسه تاریخ با فرمت موجود از مقدار تاریخ را فراهم میکند. این کوئری برای جیمیل هم قابل استفاده است، جایی که میتوانیم مقدار مشابهی پیدا کنیم:
accounts.gmail_used_quota_in_mb
جیمیل
بهترین شیوهها برای Gmail با BigQuery
- فقط برای دادههایی که نیاز دارید جستجو کنید. این مثالها محدودیت ۱۰۰۰ مورد مطابقت دارند، اما شما میتوانید محدودیت خودتان را تعیین کنید.
- برای سوالات خود یک بازه زمانی تعیین کنید. یک روز یک بازه زمانی معمول است.
تطابق موضوع
نمایش خلاصه پیام تا ۱۰۰۰ رکورد منطبق با موضوع مشخص شده
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")تطابق وضعیت و گیرنده
نمایش خلاصه پیام برای حداکثر ۱۰۰۰ رکورد مطابق با هر دو مورد زیر:
- یک وضعیت مشخص (اصلاح، رد، قرنطینه)
- گیرنده مشخص شده
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شرح قانون فعال شد
نمایش خلاصه پیام برای حداکثر ۱۰۰۰ رکورد، که باعث فعال شدن شرح قانون مشخص شده شده است
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به عنوان هرزنامه علامتگذاری شده است
نمایش خلاصه پیام تا سقف ۱۰۰۰ رکورد:
- به عنوان هرزنامه علامتگذاری شده است
- برای یک گیرنده مشخص
- به همه دلایل
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ده دامنهی برتری که حساب من در ۳۰ روز گذشته ایمیل رد و بدل کرده است را فهرست کنید:
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نسبت کاربران فعال روزانه به کاربران فعال ۳۰ روزه در جیمیل
کاربران فعال روزانه:
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;کاربران فعال ۷ روزه:
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;کاربران فعال ۳۰ روزه:
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;۱۰۰ رویداد اخیر ثبتشده در جیمیل با حداقل یک برچسب طبقهبندی مرتبط با پیام ایمیل
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;گروهها
تغییرات عضویت در گروه گوگل و رفتار کاربران
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
1000گوگل میت
تعداد تماسهای ویدیویی و کل دقایق تماس بر اساس تاریخ
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کاربران فعال ۳۰ روزه
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;توکنها
تعداد دفعاتی که یک برنامه شخص ثالث برای دسترسی به گوگل درایو فعال شده است
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;تلاشهای ورود به سیستم کنسول مدیریت
اطلاعات دقیق در مورد ورودهای ناموفق به کنسول مدیریت گوگل
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 مشاهده کنید.
فیلتر بر اساس تاریخ
شما میتوانید هنگام جستجوی جداول فعالیت یا استفاده ، بر اساس تاریخ فیلتر کنید. هر دو هنگام ارائه تاریخ، قالبهای متمایزی دارند:
- جدول فعالیت ، مهرهای زمانی را بر حسب میکروثانیه یونیکس ذخیره میکند. این یک مقدار صحیح (عدد) است که میتواند با تابع 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() با تاریخی که به عنوان پارامتر رشتهای اضافه شده است، میباشد. این روش از استانداردهای توابع 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 اعمال کنید و از کاراکترهای wildcards (%) برای فیلتر کردن دامنهها استفاده کنید.
نحوه استفاده از عبارات 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;موضوع مرتبط
گوگل، گوگل ورکاسپیس و علامتها و لوگوهای مرتبط، علائم تجاری شرکت گوگل هستند. سایر نامهای شرکتها و محصولات، علائم تجاری شرکتهایی هستند که با آنها مرتبط هستند.