Utilizzo
cancel_grouping_fields: [
full_Scope_field,
full_Scope_field,
...
]
}
Gerarchia
cancel_grouping_fields |
Valore predefinito
NessunaAccetta
Parentesi quadre che contengono un elenco separato da virgole di nomi dei campi con ambito completoRegole speciali
|
Definizione
cancel_grouping_fields
ti consente di impedire a Looker di aggiungere una clausola GROUP BY
all'SQL generato. Se uno dei campi specificati include l'utente, Looker non raggrupperà. Questa funzionalità viene in genere utilizzata per migliorare le prestazioni delle query su tabelle di grandi dimensioni. Tranne che in rare e uniche circostanze, devi includere solo i campi univoci per ogni riga della tabella, ad esempio la chiave principale.
Poiché le misure di Looker rappresentano funzioni aggregate di SQL, che richiedono una clausola GROUP BY
per funzionare, devi tenere presente che cancel_grouping_fields
non funzionerà con alcun report che include 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 dell'elenco devono avere un ambito completo. 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 campi:
explore: order {
cancel_grouping_fields: [order.id]
}
Non raggruppare i risultati se l'utente sceglie ID ordine o hash ordine nel selettore 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 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 campo con ambito completo
La maggior parte dei parametri in Looker presumerà un nome vista, in base alla posizione in cui viene utilizzato, se scrivi il nome di un campo da solo. cancel_grouping_fields
non funziona in questo modo e richiede la scrittura sia del nome della vista che del campo.
Ad esempio, potresti pensare che questa soluzione possa funzionare 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 scrivere:
explore: order {
cancel_grouping_fields: [order.id]
}
cancel_grouping_fields
viene attivato quando viene scelto qualsiasi campo specificato; non è necessario scegliere 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. All'utente non è richiesto di selezionare tutti i campi dell'elenco. Per questo motivo, le chiavi primarie multicolonna non funzionano con cancel_grouping_fields
.
Aspetti da tenere presenti
cancel_grouping_fields
non è necessario per il corretto funzionamento di Looker. È per il miglioramento delle query su tabelle di grandi dimensioni
Nella scrittura a mano di SQL, la maggior parte degli utenti non includerà una clausola GROUP BY
, a meno che non sia assolutamente necessario. In alcuni casi, Looker evita inoltre clausole GROUP BY
non necessarie. Se una delle dimensioni nella query è stata definita come chiave principale (utilizzando il parametro primary_key
) dell'opzione che stai utilizzando, la clausola GROUP BY
verrà eliminata.
Tuttavia, in alcuni casi, un'altra dimensione, che non è la chiave principale, 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 causa problemi. I risultati verranno visualizzati come previsto e saranno veloci.
Tuttavia, in alcune tabelle di dimensioni molto grandi, le clausole GROUP BY
non necessarie possono allungare i tempi di query. Questa è la situazione ideale per utilizzare cancel_grouping_fields
.