cancel_grouping_fields

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.