इस लेख में, BigQuery से मिलने वाली सामान्य रिपोर्ट के लिए क्वेरी के उदाहरण दिए गए हैं. क्वेरी के इन उदाहरणों में, लेगसी एसक्यूएल का इस्तेमाल किया गया है. api_project_name.dataset_name की जगह अपने प्रोजेक्ट और डेटासेट का नाम डालें.
BigQuery डेटा को क्वेरी करने के बारे में ज़्यादा जानें.
Gmail लॉग फ़ील्ड और उनके मतलब जानने के लिए, BigQuery में Gmail गतिविधि के लॉग का स्कीमा पर जाएं.
क्वेरी के उदाहरण
खाते
एडमिन और सौंपे गए खातों की संख्या. साथ ही, तारीख के हिसाब से बंद किए गए, लॉक किए गए, और निलंबित किए गए खातों की संख्या
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;Calendar
सिर्फ़ स्टैंडर्ड एसक्यूएल
Google Calendar में, हर दिन के सक्रिय उपयोगकर्ताओं और 30 दिनों के सक्रिय उपयोगकर्ताओं का अनुपात. इस उदाहरण में, एक से ज़्यादा टेबल पर क्वेरी की गई है.
हर दिन के सक्रिय उपयोगकर्ता
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 DESC30 दिन के लिए सक्रिय रहने वाले उपयोगकर्ता
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;Enterprise Gmail Migration में, किसी सोर्स उपयोगकर्ता के सभी इवेंट
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;दिए गए सोर्स यूआरआई वाले किसी मैसेज के सभी इवेंट, जैसे कि आरएफ़सी आईडी
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;स्टोरेज की निगरानी करने के बारे में जानकारी
इसका इस्तेमाल उन उपयोगकर्ताओं की रिपोर्ट बनाने के लिए किया जा सकता है जो Drive के X से ज़्यादा स्टोरेज का इस्तेमाल करते हैं. इसके लिए, थ्रेशोल्ड का एक सेट (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)की मदद से तारीख की तुलना की जा सकती है. इससे date वैल्यू के उपलब्ध फ़ॉर्मैट के साथ तारीख की तुलना की जा सकती है.-
यह क्वेरी Gmail पर भी लागू होती है. यहां हमें इसी तरह की वैल्यू मिल सकती है:
accounts.gmail_used_quota_in_mb
Gmail
BigQuery के साथ Gmail इस्तेमाल करने के सबसे सही तरीके
- सिर्फ़ उस डेटा के लिए क्वेरी करें जिसकी आपको ज़रूरत है. इन उदाहरणों में, ज़्यादा से ज़्यादा 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एन्क्रिप्शन प्रोटोकॉल—सिर्फ़ टीएलएस
एन्क्रिप्शन प्रोटोकॉल के हिसाब से मैसेज की खास जानकारी देखने की सुविधा—सिर्फ़ टीएलएस
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"पिछले एक दिन में, टीएलएस एन्क्रिप्शन के बिना मिले सभी मैसेज की सूची बनाएं:
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मेरे खाते से पिछले 30 दिनों में जिन 10 डोमेन के साथ सबसे ज़्यादा ईमेल का लेन-देन हुआ है उनकी सूची बनाओ:
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 10Gmail में हर दिन और 30 दिनों में सक्रिय रहने वाले उपयोगकर्ताओं की संख्या का अनुपात
हर दिन के सक्रिय उपयोगकर्ता:
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;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 लॉग इवेंट. इनमें से कम से कम एक इवेंट, ईमेल मैसेज से जुड़ा होना चाहिए
SELECT
resource_details[OFFSET(0)].id AS MESSAGE_ID,
gmail.message_info.subject AS SUBJECT,
gmail.event_info.mail_event_type AS MAIL_EVENT_TYPE,
gmail.message_info.source.address AS SENDER,
resource_details[OFFSET(0)].applied_labels AS LABELS
FROM workspace_audit_logs.activity
WHERE gmail.event_info.mail_event_type > 0 and ARRAY_LENGTH(resource_details) > 0
ORDER by time_usec desc
LIMIT 100;किसी ईमेल मैसेज के लिए उपलब्ध सभी लॉग इवेंट
SELECT
gmail.event_info,
gmail.message_info,
resource_details
FROM workspace_audit_logs.activity
WHERE gmail.message_info.rfc2822_message_id = "<XYZ>"
ORDER by time_usec desc;ग्रुप
Google ग्रुप की सदस्यता में बदलाव और उपयोगकर्ता का व्यवहार
SELECT TIMESTAMP_MICROS(time_usec) AS date,
event_name,
admin.group_email,
event_type,
email,
record_type,
admin.user_email,
admin.new_value,
admin.old_value,
admin.setting_name
FROM project_name.dataset_name.activity
WHERE `admin`.group_email IS NOT NULL
AND CONCAT(TIMESTAMP_MICROS(time_usec)) LIKE "%YYYY-MM-DD%"
ORDER BY 1 DESC
LIMIT
1000अगर आपको YYYY-MM-DD टाइमस्टैंप चाहिए, तो पहले SELECT स्टेटमेंट एलिमेंट को इससे बदला जा सकता है:
EXTRACT(DATE FROM TIMESTAMP_MICROS(time_usec)) AS date,
तारीखों को WHERE क्लॉज़ में, इनमें से किसी भी तरीके से फ़िल्टर किया जा सकता है:
SELECT TIMESTAMP_MICROS(time_usec) AS date,
event_name,
admin.group_email,
event_type,
email,
record_type,
admin.user_email,
admin.new_value,
admin.old_value,
admin.setting_name
FROM project_name.dataset_name.activity
WHERE `admin`.group_email IS NOT NULL
AND EXTRACT(DATE FROM TIMESTAMP_MICROS(time_usec)) > "2020-06-30"
AND EXTRACT(DATE FROM TIMESTAMP_MICROS(time_usec)) < "2020-08-31"
ORDER BY 1 DESC
LIMIT
1000SELECT TIMESTAMP_MICROS(time_usec) AS date,
event_name,
admin.group_email,
event_type,
email,
record_type,
admin.user_email,
admin.new_value,
admin.old_value,
admin.setting_name
FROM project_name.dataset_name.activity
WHERE `admin`.group_email IS NOT NULL
AND TIMESTAMP_MICROS(time_usec) > TIMESTAMP("2020-07-21")
AND TIMESTAMP_MICROS(time_usec) < TIMESTAMP("2020-07-23")
ORDER BY 1 DESC
LIMIT
1000Google Meet
तारीख के हिसाब से वीडियो कॉल की संख्या और कॉल की कुल अवधि
SELECT date, meet.num_calls, meet.total_call_minutes
FROM `api_project_name.dataset_name.usage`
WHERE meet.num_calls IS NOT NULL
ORDER BY date ASCहर दिन के सक्रिय उपयोगकर्ता
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 DESC30 दिन के लिए सक्रिय रहने वाले उपयोगकर्ता
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;Admin console में साइन इन करने की कोशिशें
Google Admin console में साइन इन न हो पाने के बारे में ज़्यादा जानकारी
SELECT TIMESTAMP_MICROS(time_usec) AS date, email, ip_address,
event_name, login.login_type, login.login_failure_type
FROM api_project_name.dataset_name.activity
WHERE login.login_type IS NOT NULL
AND login.login_failure_type IS NOT NULL
AND event_type = "login"
ORDER BY date DESC;इस्तेमाल की जानकारी वाली टेबल के लिए स्कीमा
स्कीमा में बदलाव किया जा सकता है. Reports API के दस्तावेज़ में, पैरामीटर और फ़ील्ड की अपडेट की गई पूरी सूची देखी जा सकती है.
तारीख के हिसाब से फ़िल्टर करना
गतिविधि या इस्तेमाल टेबल से क्वेरी करते समय, तारीख के हिसाब से फ़िल्टर किया जा सकता है. दोनों में तारीख दिखाने का फ़ॉर्मैट अलग-अलग होता है:
- activity टेबल में टाइमस्टैंप, यूनिक्स माइक्रोसेकंड में सेव किए जाते हैं. यह एक पूर्णांक वैल्यू (संख्या) है. इसे TIMESTAMP_MICROS() फ़ंक्शन की मदद से तारीख में बदला जा सकता है.
- इस्तेमाल टेबल में, तारीख की वैल्यू को तारीख के फ़ॉर्मैट में दिखाया जाता है. इसलिए, इस कन्वर्ज़न की ज़रूरत नहीं है.
इनमें से किसी भी टेबल के लिए, यहां दिए गए तरीकों में से किसी एक का इस्तेमाल करके, किसी तारीख (या तारीख की सीमा) के हिसाब से फ़िल्टर किया जा सकता है.
गतिविधि की टेबल
Unix Micros (activity टेबल) स्ट्रक्चर का इस्तेमाल करके, किसी तारीख के हिसाब से फ़िल्टर करने के लिए, WHERE क्लॉज़ और TIMESTAMP() फ़ंक्शन को तय किया जा सकता है. इससे, ग्रेटर दैन (>) और लेसर दैन (<) ऑपरेटर का इस्तेमाल करके, आसानी से तुलना की जा सकती है:
SELECT TIMESTAMP_MICROS(time_usec) as date, record_type
FROM api_project_name.dataset_name.activity
WHERE TIMESTAMP_MICROS(time_usec) > TIMESTAMP("2020-07-01")
AND TIMESTAMP_MICROS(time_usec) < TIMESTAMP("2020-07-07")
ORDER BY 1 DESC LIMIT 1000यहां यह कॉन्सेप्ट इस्तेमाल किया गया है कि time_usec इनपुट वैल्यू पर सीमाएं तय की जाएं. इसके लिए, TIMESTAMP_MICROS() फ़ंक्शन से मिली रिटर्न वैल्यू की तुलना, TIMESTAMP() फ़ंक्शन से मिली रिटर्न वैल्यू से की जाती है. इस फ़ंक्शन में, तारीख को स्ट्रिंग-टाइप पैरामीटर के तौर पर जोड़ा जाता है. यह स्टैंडर्ड एसक्यूएल में टाइमस्टैंप फ़ंक्शन में दिए गए मानकों के मुताबिक है. इसमें तुलना करने वाले सामान्य ऑपरेटर (>) और (<) के साथ-साथ, WHERE क्लॉज़ के AND एक्सटेंशन का इस्तेमाल किया जाता है, ताकि किसी खास समय विंडो को बंद किया जा सके.
इस्तेमाल की जानकारी देने वाली टेबल
SELECT date, meet.num_calls,
FROM api_project_name.dataset_name.usage
WHERE meet.num_calls IS NOT NULL
AND TIMESTAMP(date) > TIMESTAMP("2020-07-01")
AND TIMESTAMP(date) < TIMESTAMP("2020-07-07")
ORDER BY date DESC;टेबल में मौजूद स्ट्रिंग टाइप की date वैल्यू को TIMESTAMP() फ़ंक्शन में पास किया जा सकता है. साथ ही, तुलना करने वाले ऑपरेटर (>) और (<) का इस्तेमाल उसी तरह किया जा सकता है जैसा कि पहले उदाहरण में किया गया था.
डोमेन के अन्य नाम और सबडोमेन के हिसाब से फ़िल्टर करना: बाहर रखें और शामिल करें
अपनी क्वेरी के नतीजों में कुछ डोमेन शामिल न करने या शामिल करने के लिए, WHERE क्लॉज़ पर ईमेल पते के लिए फ़िल्टर लागू करें. इसके लिए, डोमेन को फ़िल्टर करने के लिए वाइल्डकार्ड (%) का इस्तेमाल करें.
AND या OR स्टेटमेंट का इस्तेमाल कैसे किया जाता है, यह इस बात पर निर्भर करता है कि आपको कुछ नतीजों को फ़िल्टर करके हटाना है (शामिल नहीं करना है) या सिर्फ़ शामिल करना है.
नतीजों में कुछ डोमेन शामिल न करना
WHERE email NOT LIKE ("%@sub.%")
AND email NOT LIKE ("%@test.%")नतीजों में सिर्फ़ कुछ डोमेन शामिल करना
WHERE email LIKE ("%@sub.%")
OR email LIKE ("%@test.%")नियमों के ऑडिट लॉग
इस क्वेरी का इस्तेमाल करके, उन उपयोगकर्ताओं को ट्रैक करें जो संवेदनशील डेटा शेयर करने की कोशिश करते हैं
SELECT TIMESTAMP_MICROS(time_usec) AS Date,
rules.resource_owner_email AS User,
rules.rule_name AS ruleName,
rules.rule_type AS ruleType,
rules.rule_resource_name AS ruleResourceName,
rules.resource_id AS resourceId,
rules.resource_title AS resourceTitle,
rules.resource_type AS resourceType,
rules.resource_owner_email AS resourceOwner,
CAST(recipients AS STRING) AS Recipients,
rules.data_source AS dataSource,
rules.actor_ip_address AS actorIpAddress,
rules.severity AS severity,
rules.scan_type AS scanType,
rules.matched_trigger AS matchedTriggers,
detect.display_name AS matchedDetectorsName,
detect.detector_id AS matchedDetectorsId,
detect.detector_type AS matchedDetectorsType,
triggers.action_type AS triggeredActions,
suppressors.action_type AS suppressedActions,
FROM api_project_name.dataset_name.activity
LEFT JOIN UNNEST(rules.resource_recipients) as recipients
LEFT JOIN UNNEST(rules.matched_detectors) as detect
LEFT JOIN UNNEST(rules.triggered_actions) as triggers
LEFT JOIN UNNEST(rules.suppressed_actions) as suppressors
WHERE rules.rule_name IS NOT NULL
AND triggers.action_type != "ALERT"
ORDER BY 1 DESC
LIMIT 1000;संबंधित विषय
Google, Google Workspace, और इनसे जुड़े चिह्न और लोगो Google LLC के ट्रेडमार्क हैं. अन्य सभी कंपनी और प्रॉडक्ट के नाम, उन कंपनियों के ट्रेडमार्क हैं जिनसे वे जुड़े हैं.