Uso
view: view_name {
measure: field_name {
type: sum_distinct
sql_distinct_key: ${my_field_name} ;;
}
}
|
Hierarquia
sql_distinct_key |
Tipos de campo possíveis
Medida
Aceita
Uma expressão SQL
|
Definição
O parâmetro sql_distinct_key é usado com tipos de medidas que realizam agregações em valores não repetidos, especificamente medidas do tipo average_distinct, median_distinct, percentile_distinct e sum_distinct. sql_distinct_key informa ao Looker qual campo usar como base para determinar valores exclusivos, evitando assim erros de cálculo no caso de um fanout.
Por exemplo, type: sum_distinct soma os valores não repetidos em um determinado campo, com base nos valores exclusivos definidos pelo parâmetro sql_distinct_key.
Considere uma tabela como esta:
| ID do item do pedido | Código do pedido | Frete do pedido |
|---|---|---|
| 1 | 1 | 10.00 |
| 2 | 1 | 10.00 |
| 3 | 2 | 20.00 |
| 4 | 2 | 20.00 |
| 5 | 2 | 20.00 |
Nessa situação, há várias linhas para cada pedido. Se você adicionasse uma medida básica de type: sum para a coluna order_shipping, receberia um total de 80,00, mesmo que o frete total coletado seja de 30,00.
# Will NOT calculate the correct shipping amount
measure: total_shipping {
type: sum
sql: ${order_shipping} ;;
}
Para ter um resultado preciso, explique ao Looker como ele deve identificar cada entidade exclusiva (nesse caso, cada pedido exclusivo) usando o parâmetro sql_distinct_key. Isso vai calcular o valor correto de 30,00:
# Will calculate the correct shipping amount
measure: total_shipping {
type: sum_distinct
sql_distinct_key: ${order_id} ;;
sql: ${order_shipping} ;;
}
Cada valor exclusivo de sql_distinct_key precisa ter apenas um valor correspondente em sql. Este exemplo funciona porque cada linha com um order_id de 1 tem o mesmo order_shipping de 10,00, cada linha com um order_id de 2 tem o mesmo order_shipping de 20,00 e assim por diante.