cancel_grouping_fields

Utilizzo

explore: explore_name {
  cancel_grouping_fields: [
    fully_scoped_field,
    fully_scoped_field,
    ...
  ]
}
Gerarchia
cancel_grouping_fields
Valore predefinito
Nessuno

Accetta
Parentesi quadre contenenti un elenco separato da virgole di nomi di campi con ambito completo

Regole speciali

Definizione

cancel_grouping_fields ti consente di impedire a Looker di aggiungere una clausola GROUP BY all'SQL che genera. Se uno dei campi specificati è incluso dall'utente, Looker non raggrupperà i dati. Questa funzionalità viene in genere utilizzata per migliorare le prestazioni delle query su tabelle molto grandi. Salvo rare e uniche circostanze, devi includere solo i campi univoci per ogni riga della tabella, ad esempio la chiave primaria.

Poiché le misure di Looker rappresentano funzioni di aggregazione SQL, che richiedono una clausola GROUP BY per funzionare, tieni presente che cancel_grouping_fields non funzionerà con le query che includono misure. Inoltre, cancel_grouping_fields non funziona quando viene utilizzato relationship: one_to_many o relationship: many_to_many.

Infine, tieni presente che i campi che elenchi devono essere completamente definiti. In altre parole, devono essere scritte come view_name.field_name e non semplicemente come field_name.

Esempi

Non raggruppare i risultati se l'utente sceglie ID ordine nel selettore di campi:

explore: order {
  cancel_grouping_fields: [order.id]
}

Non raggruppare i risultati se l'utente sceglie ID ordine o Hash ordine nel selettore di campi:

explore: order {
  cancel_grouping_fields: [order.id, order.hash]
}

Non raggruppare i risultati se l'utente sceglie ID persona o ID DNA nel selettore di campi:

explore: person {
  cancel_grouping_fields: [person.id, dna.id]
  join: dna {
    sql_on: ${person.dna_id} = ${dna.id} ;;
    relationship: one_to_one
  }
}

Sfide comuni

cancel_grouping_fields richiede nomi di campi con ambito completo

La maggior parte dei parametri in Looker presuppone un nome di visualizzazione, in base alla posizione in cui viene utilizzato il parametro, se scrivi un nome di campo da solo. cancel_grouping_fields non funziona in questo modo e richiede di scrivere sia il nome della visualizzazione sia il nome del campo.

Ad esempio, potresti pensare che questo funzioni e che id venga interpretato come l'ID ordine visualizzato nel selettore di campi:

explore: order {
  cancel_grouping_fields: [id]
}

Tuttavia, non è così e riceverai un errore. Devi invece scrivere:

explore: order {
  cancel_grouping_fields: [order.id]
}

cancel_grouping_fields viene attivato quando viene scelto uno dei campi specificati, non richiede che vengano scelti tutti i campi

Se specifichi più di un campo in cancel_grouping_fields, il raggruppamento verrà annullato se un utente seleziona qualsiasi campo nell'elenco. L'utente non è tenuto a selezionare tutti i campi dell'elenco. Per questo motivo, le chiavi primarie a più colonne non funzionano con cancel_grouping_fields.

Cose da sapere

cancel_grouping_fields non è necessario per il corretto funzionamento di Looker. Serve per migliorare le query su tabelle di grandi dimensioni

Quando scrivono SQL a mano, la maggior parte delle persone non include una clausola GROUP BY, a meno che non sia assolutamente necessario. In alcuni casi, Looker evita anche clausole GROUP BY non necessarie. Se una delle dimensioni nella query è stata definita come chiave primaria (utilizzando il parametro primary_key) dell'esplorazione che stai utilizzando, la clausola GROUP BY verrà eliminata.

Tuttavia, in alcuni casi un'altra dimensione, che non è la chiave primaria, definisce comunque una riga univoca. In questi casi, Looker potrebbe generare un GROUP BY non necessario, perché il raggruppamento per dimensioni è una parte fondamentale del funzionamento di Looker. Nella maggior parte dei casi, questo non causerà problemi. I risultati verranno visualizzati nel modo previsto e saranno rapidi.

Tuttavia, in alcune tabelle molto grandi, le clausole GROUP BY non necessarie possono allungare i tempi di esecuzione delle query. Questa è la situazione ideale in cui utilizzare cancel_grouping_fields.