Dit artikel bevat voorbeeldquery's voor veelvoorkomende rapporten die u kunt genereren met BigQuery. Deze queryvoorbeelden gaan uit van de oudere SQL-standaard. Vervang api_project_name.dataset_name door uw eigen projectnaam en datasetnaam.
Leer meer over het opvragen van gegevens uit BigQuery .
Voor informatie over de velden in het Gmail-logboek en hun betekenis, raadpleegt u het schema voor Gmail-activiteitenlogboeken in BigQuery .
Voorbeeldquery's
Rekeningen
Aantal beheerders- en gedelegeerde accounts, en aantal uitgeschakelde, geblokkeerde en geschorste accounts per datum.
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;Beheerders
Meest voorkomende handelingen uitgevoerd door een beheerder
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;Bepaal het aantal superbeheerders in een bepaald domein.
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;Kalender
Standaard SQL alleen
Verhouding tussen dagelijkse actieve gebruikers en actieve gebruikers in de afgelopen 30 dagen in Google Agenda. Dit voorbeeld berekent gegevens uit meerdere tabellen.
Dagelijkse actieve gebruikers
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-daagse actieve gebruikers
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;Aantal agenda-evenementen per type
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;Gegevensmigratie
De logboekregistratie van de datamigratie zal vanaf 26 mei 2025 geleidelijk worden uitgerold. Gegevens uit logboekregistraties van vóór die datum zijn mogelijk niet nauwkeurig.
Alle installatie- en configuratiehandelingen worden uitgevoerd door een beheerder.
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;Alle migratiegerelateerde gebeurtenissen voor een specifieke uitvoerings-ID.
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;Alle mislukkingen voor een specifieke uitvoerings-ID
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;Alle gebeurtenissen voor een specifiek brontype, zoals 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;Alle gebeurtenissen voor een specifieke brongebruiker in 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;Alle gebeurtenissen voor een specifiek bericht met een bepaalde bron-URI, zoals een RFC-ID.
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;Alle gebeurtenissen voor een specifiek brongegevenstype, zoals een Exchange Online-e-mailmap.
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;Aantal gebeurtenissen gegroepeerd op status en gebeurtenisnaam
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;Dagelijks aantal van alle gebeurtenissen, gegroepeerd per status en objecttype.
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;Drijfveer
Aantal gedeelde items in Google Drive, gegroepeerd per deelmethode.
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;Bestands-ID, titel, eigenaar en type. Bestanden die binnen het aangegeven tijdsvenster extern zijn gedeeld.
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;Het delen van wijzigingen in machtigingen en het resultaat daarvan. Hiermee kunt u begrijpen welke wijzigingen in machtigingen de verandering in de zichtbaarheid van bestanden hebben veroorzaakt.
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";Gebeurtenistypen onderverdeeld naar bestandstype. Handig voor adoptierapporten per bestandstype.
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;Gebeurtenistype en naam voor elke gedeelde schijf
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;Informatie over gebruikers buiten uw domein
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;Welke en wanneer zijn er wijzigingen in de toegangsrechten aan externe gebruikers verleend?
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;Informatie over opslagbewaking
Handig voor het maken van rapporten over gebruikers die meer dan X schijfopslag verbruiken, met een ingestelde drempelwaarde (gedefinieerd met de AND accounts.drive_used_quota_in_mb > 0 clausule).
Deze query kan worden gedefinieerd als een geplande query of kan bijvoorbeeld periodiek worden aangeroepen via de 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;Opmerkingen:
- Deze waarde kan worden aangepast aan het filter dat de klant instelt. Bijvoorbeeld: meer dan 15 GB:
AND accounts.drive_used_quota_in_mb > 15000 - De datumvergelijking met
CAST(DATE_SUB(CURRENT_DATE(), INTERVAL x DAY) AS STRING)maakt het mogelijk om een datumvergelijking uit te voeren met de beschikbare opmaak van de datumwaarde . Deze query is ook van toepassing op Gmail, waar we een vergelijkbare waarde kunnen vinden:
accounts.gmail_used_quota_in_mb
Gmail
Beste werkwijzen voor Gmail met BigQuery
- Zoek alleen naar de gegevens die u nodig hebt. Deze voorbeelden hebben een limiet van 1.000 resultaten, maar u kunt uw eigen limiet instellen.
- Geef een tijdsbestek op voor uw zoekopdrachten. Een dag is een gebruikelijk tijdsbestek.
Onderwerpafstemming
Overzichtsweergave van berichten voor maximaal 1000 records die overeenkomen met een specifiek onderwerp.
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 1000Matchende ontvanger
Tel het aantal unieke berichten voor een specifieke ontvanger.
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")Afstemming van bestemming en ontvanger
Berichtoverzicht voor maximaal 1.000 records die aan beide criteria voldoen:
- Een specifieke afhandeling (Wijzigen, Afwijzen, In quarantaine plaatsen)
- Een specifieke ontvanger
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 1000Regelbeschrijving geactiveerd
Berichtoverzicht voor maximaal 1000 records die de opgegeven regelbeschrijving hebben geactiveerd.
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 1000Gemarkeerd als spam
Berichtoverzicht voor maximaal 1.000 records:
- Gemarkeerd als spam
- Voor een specifieke ontvanger
- Om alle redenen
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 1000Versleutelingsprotocol — niet versleuteld
Berichtoverzichtweergave per versleutelingsprotocol — niet versleuteld
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 1000Versleutelingsprotocol—alleen TLS
Berichtoverzicht per versleutelingsprotocol—alleen 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 1000Bericht-ID komt overeen
Detailsweergave van een bericht voor een specifiek bericht-ID (plaats "<>" rond het bericht-ID)
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 1000Afhandeling—Bericht afwijzen
Bericht afwijzen:
- Welke regel leidde tot afwijzing?
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 1000Afhandeling—Bericht wijzigen
Bericht wijzigen:
- Welke regel was de aanleiding voor de wijziging?
- Welke subcategorie van de wijziging (bijvoorbeeld kopteksten of onderwerp)?
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 1000Quarantainebericht
Welke regel heeft een bericht in quarantaine geplaatst?
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 1000Samengestelde vragen
Tel alle berichten die de afgelopen 30 dagen door een specifieke regel (genaamd "regelomschrijving") zijn onderschept:
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"Toon alle berichten die de afgelopen dag zonder TLS-versleuteling zijn ontvangen:
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 = 0Geef een lijst van de 10 domeinen waarmee mijn account de afgelopen 30 dagen e-mail heeft uitgewisseld:
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 10Verhouding tussen dagelijkse actieve gebruikers en actieve gebruikers in de afgelopen 30 dagen in Gmail
Dagelijkse actieve gebruikers:
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;Actieve gebruikers gedurende 7 dagen:
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;Actieve gebruikers gedurende 30 dagen:
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;Meest recente 100 Gmail-logboekgebeurtenissen met ten minste één classificatielabel dat aan het e-mailbericht is gekoppeld.
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;Alle beschikbare logboekgebeurtenissen voor een specifiek e-mailbericht
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;Groepen
Wijzigingen in het lidmaatschap van Google Groepen en het gedrag van gebruikers
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
1000Als u een tijdstempel in het formaat JJJJ-MM-DD wilt, kunt u het eerste element van de SELECT- instructie vervangen door:
EXTRACT(DATE FROM TIMESTAMP_MICROS(time_usec)) AS date,
De datums kunnen in de WHERE- clausule op een van de volgende manieren worden gefilterd:
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
Aantal videogesprekken en totale belminuten per datum
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 ASCDagelijkse actieve gebruikers
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-daagse actieve gebruikers
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 DESCRegels
Geactiveerde DLP-regels op basis van naam, overeenkomende toepassing en acties
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;Tokens
Het aantal keren dat een app van derden toegang heeft gekregen tot 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;Aanmeldingspogingen bij de beheerdersconsole
Gedetailleerde informatie over mislukte aanmeldingen bij de 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;Schema voor gebruikstabellen
Het schema kan veranderen. Een bijgewerkte en volledige lijst met parameters en velden vindt u in de documentatie van de Reports API .
Filteren op datum
Je kunt filteren op datum bij het opvragen van gegevens uit de activiteits- of gebruikstabellen . Beide tabellen hanteren verschillende formaten voor de weergave van de datum:
- De activiteitentabel slaat de tijdstempels op in Unix-microseconden. Dit is een integerwaarde (een getal) die met de functie TIMESTAMP_MICROS() naar een datum kan worden geconverteerd.
- De gebruikstabel geeft de datumwaarden weer in een datumformaat, dus deze conversie is niet nodig.
Voor beide tabellen kunt u filteren op een specifieke datum (of datumbereik) met behulp van een van de volgende methoden.
De activiteitentabel
Om te filteren op een specifieke datum met de Unix Micros-structuur ( activiteitentabel ), kunt u de WHERE- clausule en de TIMESTAMP()- functie definiëren om een eenvoudige vergelijking uit te voeren met de groter-dan (>) en kleiner-dan (<) operatoren:
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 1000Het concept hier is het instellen van limieten voor de invoerwaarde time_usec door de retourwaarde van de functie TIMESTAMP_MICROS() te vergelijken met de retourwaarde van de functie TIMESTAMP() waaraan een datum als parameter van het type string is toegevoegd. Dit volgt de standaarden voor Timestamp-functies in Standard SQL en maakt gebruik van eenvoudige vergelijkingsoperatoren (>) en (<), samen met de AND- uitbreiding van de WHERE- clausule om een specifiek tijdsvenster te sluiten.
De gebruikstabel
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;We kunnen de datumwaarde van het type string die in de tabel staat, doorgeven aan de TIMESTAMP()- functie en de vergelijkingsoperatoren (>) en (<) op dezelfde manier gebruiken als in het eerste voorbeeld.
Filteren op domeinaliassen en subdomeinen: Uitsluiten en opnemen
Om bepaalde domeinen uit te sluiten of juist op te nemen in uw zoekresultaten, kunt u een filter voor het e-mailadres toepassen in de WHERE- clausule, waarbij u jokertekens (%) gebruikt om de domeinen te filteren.
De manier waarop je de AND- of de OR- instructie gebruikt, hangt af van of je bepaalde resultaten wilt filteren (uitsluiten) of juist alleen wilt opnemen .
Bepaalde domeinen uitsluiten van de resultaten
WHERE email NOT LIKE ("%@sub.%")
AND email NOT LIKE ("%@test.%")Neem alleen bepaalde domeinen op in de resultaten.
WHERE email LIKE ("%@sub.%")
OR email LIKE ("%@test.%")Auditlogboeken van regels
Gebruik deze query om de pogingen van gebruikers om gevoelige gegevens te delen te volgen.
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;Gerelateerd onderwerp
Google, Google Workspace en aanverwante merken en logo's zijn handelsmerken van Google LLC. Alle andere bedrijfs- en productnamen zijn handelsmerken van de bedrijven waaraan ze zijn verbonden.