Trasferimenti dei rapporti di Google Ads

BigQuery Data Transfer Service per Google Ads (precedentemente noto come Google AdWords) consente di pianificare e gestire automaticamente i job di caricamento ricorrenti per i dati dei report Google Ads.

Report supportati

BigQuery Data Transfer Service per Google Ads supporta l'API Google Ads v16:

Per informazioni su come i report di Google Ads vengono trasformati in tabelle e viste di BigQuery Data Transfer Service, consulta Trasformazioni dei report di Google Ads.

Per mappare i report Google Ads a ciò che visualizzi nell'interfaccia utente di Google Ads, consulta Mappatura dei report all'interfaccia utente di Google Ads.

Opzione di segnalazione Assistenza
Versione API supportata

v16

Pianificazione

Ogni giorno, nel momento in cui viene creato per la prima volta il trasferimento (impostazione predefinita)

Puoi configurare l'ora del giorno.

Finestra di aggiornamento

Ultimi 7 giorni (impostazione predefinita)

Configurabile fino a 30 giorni

Gli snapshot delle tabelle delle corrispondenze vengono acquisiti una volta al giorno e archiviati nella partizione in base alla data dell'ultima esecuzione. Gli snapshot delle tabelle delle corrispondenze non vengono aggiornati per i backfill o per i giorni caricati tramite la finestra di aggiornamento.

Durata massima del backfill

Nessun limite

Sebbene Google Ads non abbia limiti noti di conservazione dei dati ad eccezione del report sul rendimento dei clic, BigQuery Data Transfer Service prevede dei limiti sul numero di giorni che è possibile richiedere in un singolo backfill. Per informazioni sui backfill, consulta Configurare un backfill.

Numero di ID cliente per account amministratore

8000

BigQuery Data Transfer Service supporta un massimo di 8000 ID cliente per ogni account amministratore (Centro clienti) Google Ads.

Importazione dati da trasferimenti di Google Ads

Quando trasferisci i dati da Google Ads a BigQuery, questi vengono caricati in tabelle BigQuery partizionate per data. La partizione della tabella in cui vengono caricati i dati corrisponde alla data dell'origine dati. Se pianifichi più trasferimenti per la stessa data, BigQuery Data Transfer Service sovrascrive la partizione per quella data specifica con i dati più recenti. Più trasferimenti nello stesso giorno o backfill in esecuzione non generano dati duplicati e le partizioni per altre date non sono interessate.

Limitazioni

  • La frequenza massima per cui puoi configurare un trasferimento Google Ads è una volta ogni 24 ore. Per impostazione predefinita, un trasferimento inizia nel momento in cui viene creato. Tuttavia, puoi configurare l'ora di inizio del trasferimento quando crei il trasferimento.
  • BigQuery Data Transfer Service non supporta i trasferimenti incrementali durante un trasferimento di Google Ads. Se specifichi una data per un trasferimento di dati, vengono trasferiti tutti i dati disponibili per quella data.

Prima di iniziare

Prima di creare un trasferimento Google Ads:

Autorizzazioni obbligatorie

Assicurati che la persona che crea il trasferimento disponga delle seguenti autorizzazioni obbligatorie:

  • BigQuery Data Transfer Service.

    • bigquery.transfers.update autorizzazioni per creare il trasferimento
    • Entrambe le autorizzazioni bigquery.datasets.get e bigquery.datasets.update sul set di dati di destinazione

    Il ruolo IAM predefinito di bigquery.admin include le autorizzazioni bigquery.transfers.update, bigquery.datasets.update e bigquery.datasets.get. Per ulteriori informazioni sui ruoli IAM in BigQuery Data Transfer Service, consulta Riferimento per il controllo dell'accesso.

  • Google Ads: accesso in lettura all'ID cliente o all'account amministratore (Centro clienti) Google Ads utilizzato nella configurazione del trasferimento.

Crea trasferimento dati Google Ads

Per creare un trasferimento di dati per i report Google Ads, devi disporre dell'ID cliente Google Ads o dell'account amministratore (Centro clienti). Per informazioni sul recupero del tuo ID cliente Google Ads, consulta Trovare l'ID cliente.

Per creare un trasferimento di dati per i report di Google Ads, seleziona una delle seguenti opzioni:

Console

  1. Vai alla pagina BigQuery nella console Google Cloud.

    Vai alla pagina di BigQuery

  2. Fai clic su Trasferimenti di dati.

  3. Fai clic su Crea trasferimento.

  4. Nella sezione Tipo di origine, per Origine, scegli Google Ads.

  5. Nella sezione Nome configurazione trasferimento, in Nome visualizzato, inserisci un nome per il trasferimento, ad esempio My Transfer. Il nome del trasferimento può essere qualsiasi valore che ti consenta di identificare il trasferimento se devi modificarlo in un secondo momento.

  6. Nella sezione Opzioni di pianificazione:

    • In Frequenza di ripetizione, scegli un'opzione per la frequenza di esecuzione del trasferimento. Se selezioni Giorni, fornisci un orario valido nel formato UTC.

      • Ore
      • Giorni
      • On demand
    • Se applicabile, seleziona Inizia ora o Inizia all'ora impostata e fornisci una data di inizio e un'ora di esecuzione.

  7. Nella sezione Impostazioni destinazione, per Set di dati, seleziona il set di dati che hai creato per archiviare i dati.

  8. Nella sezione Dettagli origine dati:

    1. In ID cliente, inserisci il tuo ID cliente Google Ads:

      Dettagli dell'origine Google Ads

    2. (Facoltativo) Seleziona le opzioni per escludere gli elementi rimossi o disattivati e includi le tabelle nuove in Google Ads.

    3. (Facoltativo) Inserisci un elenco di tabelle da includere separate da virgole, ad esempio Campaign, AdGroup. Aggiungi a questo elenco il prefisso - per escludere determinate tabelle, ad esempio -Campaign, AdGroup. Tutte le tabelle sono incluse per impostazione predefinita.

    4. (Facoltativo) Seleziona l'opzione per includere tabelle specifiche per i report PMax. Per ulteriori informazioni sull'assistenza di PMax, consulta Assistenza di PMax.

    5. (Facoltativo) Per Aggiorna finestra, inserisci un valore compreso tra 1 e 30.

  9. Nel menu Account di servizio, seleziona un account di servizio dagli account di servizio associati al tuo progetto Google Cloud. Puoi associare un account di servizio al trasferimento anziché utilizzare le tue credenziali utente. Per ulteriori informazioni sull'utilizzo di account di servizio con trasferimenti di dati, vedi Utilizzare account di servizio.

    • Se hai eseguito l'accesso con un'identità federata, sarà necessario un account di servizio per creare un trasferimento. Se hai eseguito l'accesso con un Account Google, un account di servizio per il trasferimento è facoltativo.
    • L'account di servizio deve disporre delle autorizzazioni richieste.
  10. (Facoltativo) Nella sezione Opzioni di notifica:

    • Fai clic sul pulsante di attivazione/disattivazione per abilitare le notifiche via email. Quando abiliti questa opzione, l'amministratore dei trasferimenti riceve una notifica via email se un trasferimento non va a buon fine.

    • Fai clic sul pulsante di attivazione/disattivazione per abilitare le notifiche Pub/Sub. Per Seleziona un argomento Cloud Pub/Sub, scegli il nome dell'argomento o fai clic su Crea un argomento. Questa opzione consente di configurare le notifiche di Pub/Sub per il trasferimento.

      Notifiche di Google Ads

  11. Fai clic su Salva.

bq

Inserisci il comando bq mk e fornisci il flag di creazione del trasferimento --transfer_config. Sono necessari anche i seguenti flag:

  • --data_source
  • --target_dataset
  • --display_name
  • --params

I seguenti flag sono facoltativi:

  • --project_id: specifica il progetto da utilizzare. Se il flag non viene specificato, viene usato il progetto predefinito.
  • --table_filter: specifica le tabelle da includere nel trasferimento. Se il flag non viene specificato, vengono incluse tutte le tabelle. Per includere solo tabelle specifiche, utilizza un elenco di valori separati da virgole (ad es. Ad, Campaign, AdGroup). Per escludere tabelle specifiche, fai precedere i valori da un trattino (-) (ad esempio, -Ad, Campaign, AdGroup).
  • --service_account_name: specifica un account di servizio da utilizzare per l'autenticazione del trasferimento di Google Ads al posto del tuo account utente.
bq mk \
--transfer_config \
--project_id=project_id \
--target_dataset=dataset \
--display_name=name \
--params='parameters' \
--data_source=data_source \
--table_filter=tables
--service_account_name=service_account_name

Dove:

  • project_id è l'ID progetto.
  • dataset è il set di dati di destinazione per la configurazione del trasferimento.
  • name è il nome visualizzato della configurazione di trasferimento. Il nome del trasferimento può essere qualsiasi valore che ti consenta di identificare il trasferimento, qualora dovessi modificarlo in un secondo momento.
  • parameters contiene i parametri per la configurazione di trasferimento creata in formato JSON. Ad esempio: --params='{"param":"param_value"}'. Per Google Ads, devi fornire il parametro customer_id. Facoltativamente, puoi impostare il parametro exclude_removed_items su true per impedire il trasferimento di entità e metriche rimosse o disattivate.
  • data_source è l'origine dati: google_ads.
  • tables è l'elenco separato da virgole di tabelle da includere o escludere dal trasferimento.
  • service_account_name è il nome dell'account di servizio utilizzato per autenticare il trasferimento. L'account di servizio deve essere di proprietà dello stesso project_id utilizzato per creare il trasferimento e deve avere tutte le autorizzazioni richieste.

Ad esempio, il seguente comando crea un trasferimento Google Ads denominato My Transfer utilizzando l'ID cliente 123-123-1234 e il set di dati di destinazione mydataset. Il trasferimento viene creato nel progetto predefinito:

bq mk \
--transfer_config \
--target_dataset=mydataset \
--display_name='My Transfer' \
--params='{"customer_id":"123-123-1234","exclude_removed_items":"true"}' \
--data_source=google_ads

La prima volta che esegui il comando, viene visualizzato un messaggio simile al seguente:

[URL omitted] Please copy and paste the above URL into your web browser and follow the instructions to retrieve an authentication code.

Segui le istruzioni nel messaggio e incolla il codice di autenticazione nella riga di comando.

API

Utilizza il metodo projects.locations.transferConfigs.create e fornisci un'istanza della risorsa TransferConfig.

Java

Prima di provare questo esempio, segui le istruzioni per la configurazione di Java nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Java di BigQuery.

Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.

import com.google.api.gax.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.CreateTransferConfigRequest;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.ProjectName;
import com.google.cloud.bigquery.datatransfer.v1.TransferConfig;
import com.google.protobuf.Struct;
import com.google.protobuf.Value;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

// Sample to create ads(formerly AdWords) transfer config
public class CreateAdsTransfer {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    final String projectId = "MY_PROJECT_ID";
    String datasetId = "MY_DATASET_ID";
    // the customer_id only allows digits and hyphen ('-').
    String customerId = "012-345-6789";
    String refreshWindow = "100";
    Map<String, Value> params = new HashMap<>();
    params.put("customer_id", Value.newBuilder().setStringValue(customerId).build());
    params.put("refreshWindow", Value.newBuilder().setStringValue(refreshWindow).build());
    TransferConfig transferConfig =
        TransferConfig.newBuilder()
            .setDestinationDatasetId(datasetId)
            .setDisplayName("Your Ads Transfer Config Name")
            .setDataSourceId("adwords")
            .setParams(Struct.newBuilder().putAllFields(params).build())
            .build();
    createAdsTransfer(projectId, transferConfig);
  }

  public static void createAdsTransfer(String projectId, TransferConfig transferConfig)
      throws IOException {
    try (DataTransferServiceClient client = DataTransferServiceClient.create()) {
      ProjectName parent = ProjectName.of(projectId);
      CreateTransferConfigRequest request =
          CreateTransferConfigRequest.newBuilder()
              .setParent(parent.toString())
              .setTransferConfig(transferConfig)
              .build();
      TransferConfig config = client.createTransferConfig(request);
      System.out.println("Ads transfer created successfully :" + config.getName());
    } catch (ApiException ex) {
      System.out.print("Ads transfer was not created." + ex.toString());
    }
  }
}

Attivare manualmente un trasferimento Google Ads

Quando attivi manualmente un trasferimento per Google Ads, gli snapshot delle tabelle delle corrispondenze vengono acquisiti una volta al giorno e archiviati nella partizione per l'ultima data di esecuzione. Quando attivi un trasferimento manuale, gli snapshot delle tabelle delle corrispondenze per le seguenti tabelle non vengono aggiornati:

  • Annuncio
  • AdGroup
  • AdGroupAudience
  • AdGroupBidModifier
  • AdGroupAdLabel
  • AdGroupCriterion
  • AdGroupCriterionLabel
  • AdGroupLabel
  • AgeRange
  • Asset
  • AssetGroup
  • AssetGroupAsset
  • AssetGroupListingGroupFilter
  • AssetGroupSignal
  • Pubblico
  • BidGoal
  • Budget
  • Campagna
  • CampaignAudience
  • CampaignCriterion
  • CampaignLabel
  • Cliente
  • Genere
  • Parola chiave
  • LocationBasedCampaignCriterion
  • ParentalStatus
  • Posizionamento
  • Video

Assistenza di Performance Max

Il connettore Google Ads ti consente di esportare i dati delle campagne PMax. Devi selezionare la casella di controllo Includi tabelle delle campagne PMax quando crei un trasferimento di dati, poiché i dati PMax non vengono esportati per impostazione predefinita.

L'inclusione dei dati PMax rimuove ad_group di campi da determinate tabelle e include nuove tabelle. Non puoi includere i campi ad_group perché l'API Google Ads filtra i dati PMax.

Le seguenti tabelle escludono ad_group colonne correlate quando è selezionata la casella di controllo Includi tabelle delle campagne PMax:

  • GeoStats
  • GeoConversionStats
  • ShoppingProductConversionStats
  • ShoppingProductStats
  • LocationsUserLocationsStats

Quando è selezionata la casella di controllo Includi tabelle delle campagne PMax, vengono aggiunte le seguenti tabelle:

  • Asset
  • AssetGroup
  • AssetGroupAsset
  • AssetGroupListingGroupFilter
  • AssetGroupSignal
  • Pubblico
  • AssetGroupProductGroupStats
  • CampaignAssetStats

Assistenza per gli account amministratore Google Ads

Consigliamo ai clienti esistenti che hanno più trasferimenti Google Ads specifici per l'ID cliente di configurare un singolo trasferimento Google Ads a livello di account amministratore (Centro clienti), pianificare un backfill e disattivare i trasferimenti Google Ads specifici per singoli ID cliente.

L'utilizzo degli account amministratore Google Ads offre diversi vantaggi rispetto all'utilizzo degli ID cliente individuali:

  • Non è più necessario gestire più trasferimenti per generare report su più ID cliente.
  • Le query tra clienti sono molto più semplici da scrivere perché tutti gli ID cliente sono archiviati nella stessa tabella.
  • L'utilizzo dei Centri clienti riduce i problemi di quota di carico di BigQuery Data Transfer Service perché più ID cliente vengono caricati nello stesso job.

Per ulteriori informazioni sugli account amministratore Google Ads (Centro clienti), consulta Utilizzo degli account gestiti e Informazioni sul collegamento degli account all'account amministratore.

Esempio

Il seguente elenco mostra gli ID cliente collegati a determinati account amministratore Google Ads:

  • 1234567890 - account amministratore radice
    • 1234 - Account amministratore secondario
      • 1111 - ID cliente
      • 2222 - ID cliente
      • 3333 - ID cliente
      • 4444 - ID cliente
      • 567 - Account amministratore secondario
        • 5555 - ID cliente
        • 6666 - ID cliente
        • 7777 - ID cliente
    • 89 - account amministratore secondario
      • 8888 - ID cliente
      • 9999 - ID cliente
    • 0000 - ID cliente

Ciascun ID cliente collegato a un account amministratore compare in ogni report. Per ulteriori informazioni sulla struttura dei report di Google Ads in BigQuery Data Transfer Service, consulta Trasformazione dei report di Google Ads.

Configurazione di trasferimento per l'ID cliente 1234567890

Una configurazione di trasferimento per l'account amministratore principale (ID cliente 1234567890) genererebbe esecuzioni di trasferimento che includono i seguenti ID cliente:

  • 1111 (tramite l'account amministratore secondario 1234)
  • 2222 (tramite l'account amministratore secondario 1234)
  • 3333 (tramite l'account amministratore secondario 1234)
  • 4444 (tramite l'account amministratore secondario 1234)
  • 5555 (tramite l'account amministratore secondario 567 e l'account amministratore secondario 1234)
  • 6666 (tramite l'account amministratore secondario 567 e l'account amministratore secondario 1234)
  • 7777 (tramite l'account amministratore secondario 567 e l'account amministratore secondario 1234)
  • 8888 (tramite account amministratore secondario 89)
  • 9999 (tramite account amministratore secondario 89)
  • 0000 (ID cliente individuale)

Configurazione di trasferimento per l'ID cliente 1234

Una configurazione di trasferimento per l'account amministratore secondario 123 (ID cliente 1234) genererebbe esecuzioni di trasferimento che includono i seguenti ID cliente:

  • 1111
  • 2222
  • 3333
  • 4444
  • 5555 (tramite l'account amministratore secondario 567)
  • 6666 (tramite l'account amministratore secondario 567)
  • 7777 (tramite l'account amministratore secondario 567)

Configurazione di trasferimento per l'ID cliente 567

Una configurazione di trasferimento per l'account amministratore secondario 567 (ID cliente 567) genererebbe esecuzioni di trasferimento che includono i seguenti ID cliente:

  • 5555
  • 6666
  • 7777

Configurazione di trasferimento per l'ID cliente 89

Una configurazione di trasferimento per l'account amministratore secondario 89 (ID cliente 89) genererebbe esecuzioni di trasferimento che includono i seguenti ID cliente:

  • 8888
  • 9999

Configurazione di trasferimento per l'ID cliente 0000

Una configurazione di trasferimento per l'ID cliente 0000 genererebbe esecuzioni di trasferimento che includono solo il singolo ID cliente:

  • 0000

Eseguire la migrazione dei dati Google Ads al Centro clienti

Per eseguire la migrazione dei dati Google Ads esistenti in BigQuery Data Transfer Service alla struttura del Centro clienti, puoi configurare un backfill per aggiungere i dati esistenti alle tabelle create dalla configurazione di trasferimento collegata all'account amministratore. Tieni presente che quando pianifichi un backfill, le tabelle delle corrispondenze non vengono aggiornate.

Risolvere i problemi relativi alla configurazione del trasferimento di Google Ads

Se hai problemi durante la configurazione del trasferimento, consulta Problemi di trasferimento di Google Ads nella sezione Risoluzione dei problemi relativi alle configurazioni di trasferimento.

Eseguire query sui dati

Quando vengono trasferiti in BigQuery Data Transfer Service, i dati vengono scritti in tabelle partizionate in fase di importazione. Per ulteriori informazioni, consulta Introduzione alle tabelle partizionate.

Se esegui una query direttamente sulle tabelle anziché utilizzare le viste generate automaticamente, devi utilizzare la pseudo-colonna _PARTITIONTIME nella query. Per maggiori informazioni, consulta Esecuzione di query su tabelle partizionate.

Query di esempio Google Ads

Per analizzare i dati trasferiti, puoi utilizzare le seguenti query di esempio di Google Ads. Puoi anche utilizzare le query in uno strumento di visualizzazione come Looker Studio. Queste query vengono fornite per aiutarti a iniziare a eseguire query sui tuoi dati Google Ads con BigQuery Data Transfer Service. Per ulteriori domande su cosa puoi fare con questi report, contatta il tuo rappresentante tecnico Google Ads.

In ciascuna delle seguenti query, sostituisci dataset con il nome del tuo set di dati. Sostituisci customer_id con il tuo ID cliente Google Ads.

Se esegui una query direttamente sulle tabelle anziché utilizzare le viste generate automaticamente, devi utilizzare la pseudo-colonna _PARTITIONTIME nella query. Per maggiori informazioni, consulta Esecuzione di query su tabelle partizionate.

Rendimento delle campagne

La seguente query di esempio analizza il rendimento della campagna Google Ads negli ultimi 30 giorni.

Console

SELECT
  c.customer_id,
  c.campaign_name,
  c.campaign_status,
  SUM(cs.metrics_impressions) AS Impressions,
  SUM(cs.metrics_interactions) AS Interactions,
  (SUM(cs.metrics_cost_micros) / 1000000) AS Cost
FROM
  `DATASET.ads_Campaign_CUSTOMER_ID` c
LEFT JOIN
  `DATASET.ads_CampaignBasicStats_CUSTOMER_ID` cs
ON
  (c.campaign_id = cs.campaign_id
  AND cs._DATA_DATE BETWEEN
  DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY) AND DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY))
WHERE
  c._DATA_DATE = c._LATEST_DATE
GROUP BY
  1, 2, 3
ORDER BY
  Impressions DESC

bq

  bq query --use_legacy_sql=false '
  SELECT
    c.customer_id,
    c.campaign_name,
    c.campaign_status,
    SUM(cs.metrics_impressions) AS Impressions,
    SUM(cs.metrics_interactions) AS Interactions,
    (SUM(cs.metrics_cost_micros) / 1000000) AS Cost
  FROM
    `DATASET.ads_Campaign_CUSTOMER_ID` c
  LEFT JOIN
    `DATASET.ads_CampaignBasicStats_CUSTOMER_ID` cs
  ON
    (c.campaign_id = cs.campaign_id
    AND cs._DATA_DATE BETWEEN
    DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY) AND DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY))
  WHERE
    c._DATA_DATE = c._LATEST_DATE
  GROUP BY
    1, 2, 3
  ORDER BY
    Impressions DESC'

Numero di parole chiave

La seguente query di esempio analizza le parole chiave in base allo stato della campagna, del gruppo di annunci e della parola chiave. Questa query utilizza la funzione KeywordMatchType. I tipi di corrispondenza delle parole chiave consentono di controllare le ricerche che attivano la pubblicazione del tuo annuncio. Per ulteriori informazioni sulle opzioni di corrispondenza delle parole chiave, consulta Informazioni sulle opzioni di corrispondenza delle parole chiave.

Console

  SELECT
    c.campaign_status AS CampaignStatus,
    a.ad_group_status AS AdGroupStatus,
    k.ad_group_criterion_status AS KeywordStatus,
    k.ad_group_criterion_keyword_match_type AS KeywordMatchType,
    COUNT(*) AS count
  FROM
    `DATASET.ads_Keyword_CUSTOMER_ID` k
    JOIN
    `DATASET.ads_Campaign_CUSTOMER_ID` c
  ON
    (k.campaign_id = c.campaign_id AND k._DATA_DATE = c._DATA_DATE)
  JOIN
    `DATASET.ads_AdGroup_CUSTOMER_ID` a
  ON
    (k.ad_group_id = a.ad_group_id AND k._DATA_DATE = a._DATA_DATE)
  WHERE
    k._DATA_DATE = k._LATEST_DATE
  GROUP BY
    1, 2, 3, 4

bq

  bq query --use_legacy_sql=false '
  SELECT
    c.campaign_status AS CampaignStatus,
    a.ad_group_status AS AdGroupStatus,
    k.ad_group_criterion_status AS KeywordStatus,
    k.ad_group_criterion_keyword_match_type AS KeywordMatchType,
    COUNT(*) AS count
  FROM
    `DATASET.ads_Keyword_CUSTOMER_ID` k
  JOIN
    `DATASET.ads_Campaign_CUSTOMER_ID` c
  ON
    (k.campaign_id = c.campaign_id AND k._DATA_DATE = c._DATA_DATE)
  JOIN
    `DATASET.ads_AdGroup_CUSTOMER_ID` a
  ON
    (k.ad_group_id = a.ad_group_id AND k._DATA_DATE = a._DATA_DATE)
  WHERE
    k._DATA_DATE = k._LATEST_DATE
  GROUP BY
    1, 2, 3, 4'