BigQuery में रिपोर्टिंग लॉग की क्वेरी के उदाहरण

यह सुविधा इन वर्शन में उपलब्ध है: Frontline Standard और Frontline Plus; Enterprise Standard और Enterprise Plus; Education Standard और Education Plus; Enterprise Essentials Plus. अपने वर्शन की तुलना करें

इस लेख में, 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 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;

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 10

Gmail में हर दिन और 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
      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;

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 के ट्रेडमार्क हैं. अन्य सभी कंपनी और प्रॉडक्ट के नाम, उन कंपनियों के ट्रेडमार्क हैं जिनसे वे जुड़े हैं.