Uso
explore: explore_name {
cancel_grouping_fields: [
fully_scoped_field,
fully_scoped_field,
...
]
}
|
Hierarquia
cancel_grouping_fields |
Valor padrão
Nenhum
Aceita
Colchetes contendo uma lista separada por vírgulas de nomes de campos totalmente qualificados
Regras especiais
|
Definição
O cancel_grouping_fields impede que o Looker adicione uma cláusula GROUP BY ao SQL gerado. Se algum dos campos especificados for incluído pelo usuário, o Looker não vai agrupar. Essa funcionalidade é usada normalmente para melhorar o desempenho de consultas em tabelas muito grandes. Exceto em circunstâncias raras e únicas, inclua apenas campos exclusivos de cada linha na tabela, como a chave primária.
Como as medidas do Looker representam funções de agregação SQL, que exigem uma cláusula GROUP BY para funcionar, observe que cancel_grouping_fields não funciona com consultas que incluem medidas. Além disso, cancel_grouping_fields não funciona quando relationship: one_to_many ou relationship: many_to_many é usado.
Por fim, observe que os campos listados precisam estar totalmente no escopo. Em outras palavras, eles precisam ser escritos como view_name.field_name, e não apenas como field_name.
Exemplos
Não agrupe os resultados se o usuário escolher ID do pedido no seletor de campos:
explore: order {
cancel_grouping_fields: [order.id]
}
Não agrupe os resultados se o usuário escolher ID do pedido ou Hash do pedido no seletor de campos:
explore: order {
cancel_grouping_fields: [order.id, order.hash]
}
Não agrupe os resultados se o usuário escolher ID da pessoa ou ID do DNA no seletor de campos:
explore: person {
cancel_grouping_fields: [person.id, dna.id]
join: dna {
sql_on: ${person.dna_id} = ${dna.id} ;;
relationship: one_to_one
}
}
Desafios comuns
cancel_grouping_fields exige nomes de campos totalmente qualificados
A maioria dos parâmetros no Looker vai assumir um nome de visualização, com base no local em que o parâmetro é usado, se você escrever um nome de campo por conta própria. O cancel_grouping_fields não funciona assim e exige que você escreva o nome da visualização e do campo.
Por exemplo, você pode achar que isso funcionaria e que id seria interpretado como o ID do pedido que aparece no seletor de campos:
explore: order {
cancel_grouping_fields: [id]
}
No entanto, esse não é o caso, e você vai receber um erro. Em vez disso, escreva:
explore: order {
cancel_grouping_fields: [order.id]
}
cancel_grouping_fields é acionado quando qualquer campo especificado é escolhido, não é necessário que todos os campos sejam escolhidos.
Se você especificar mais de um campo em cancel_grouping_fields, o agrupamento será cancelado se um usuário selecionar qualquer campo na lista. O usuário não precisa selecionar todos os campos da lista. Por isso, chaves primárias de várias colunas não funcionam com cancel_grouping_fields.
Informações importantes
O cancel_grouping_fields não é necessário para que o Looker funcione corretamente. É para melhorar consultas em tabelas grandes
Ao escrever SQL manualmente, a maioria das pessoas não inclui uma cláusula GROUP BY, a menos que seja absolutamente necessário. O Looker também evita cláusulas GROUP BY desnecessárias em alguns casos. Se uma das dimensões na sua consulta tiver sido definida como a chave primária (usando o parâmetro primary_key) da Análise que você está usando, a cláusula GROUP BY será descartada.
No entanto, há casos em que outra dimensão, que não é a chave primária, ainda define uma linha exclusiva. Nesses casos, o Looker pode gerar um GROUP BY desnecessário, porque o agrupamento por dimensões é uma parte fundamental do funcionamento do Looker. Na maioria dos casos, isso não causa problemas. Os resultados vão aparecer da maneira que você espera e serão rápidos.
No entanto, em algumas tabelas muito grandes, cláusulas GROUP BY desnecessárias podem aumentar o tempo de consulta. Essa é a situação ideal para usar cancel_grouping_fields.