Esta página se refere ao parâmetro
sql, que faz parte de uma tabela derivada.Você também pode usar
sqlcomo parte de um campo, conforme descrito na página de documentação do parâmetrosql(para campos).
Uso
view: my_derived_table {
derived_table: {
sql:
SELECT *
FROM events
WHERE type NOT IN ('test', 'staff')
;;
...
}
}
|
Hierarquia
sql |
Valor padrão
Nenhum
Aceita
Um bloco SQL
|
Definição
sql permite especificar o SQL que será usado para gerar uma tabela derivada. É possível usar qualquer consulta SQL válida no parâmetro sql, desde que ela seja escrita em SQL bruto e não faça referência a campos do Looker. Para entender melhor as tabelas derivadas, consulte a página de documentação Tabelas derivadas no Looker.
Além de referenciar tabelas de banco de dados normais, também é possível referenciar visualizações do LookML ou tabelas derivadas em sql. Para fazer isso, use:
${view_or_derived_table_name.SQL_TABLE_NAME} AS view_or_derived_table_name
O SQL_TABLE_NAME nesta referência é uma string literal. Não é necessário substituir por nada. Por exemplo, se você quiser fazer referência a uma tabela derivada chamada key_customer na sua tabela derivada key_customer_order_facts, poderá ter algo assim:
view: key_customer_order_facts {
derived_table: {
sql:
SELECT
customer_id,
COUNT( * ) AS lifetime_orders
FROM
order
INNER JOIN
${key_customer.SQL_TABLE_NAME} AS key_customer
ON
order.customer_id = key_customer.id
GROUP BY 1
;;
}
}
Variáveis do Liquid com sql
Também é possível usar variáveis Liquid com o parâmetro sql. Com as variáveis Liquid, é possível acessar dados como os valores em um campo, informações sobre o campo e filtros aplicados a ele.
As variáveis Liquid date_start e date_end são muito úteis para dialetos de banco de dados que particionam dados em várias tabelas por data, como o BigQuery. Consulte a página de práticas recomendadas Usar date_start e date_end com filtros de data para uma explicação detalhada.
As variáveis do Liquid _in_query, _is_selected e _is_filtered, em particular, podem adicionar funcionalidades interessantes às tabelas derivadas. Eles retornam verdadeiro ou falso com base na inclusão de um campo ou filtro em uma consulta. Há algumas complexidades que precisam ser consideradas para usar corretamente esses valores verdadeiro/falso. Consulte a página de variáveis do Liquid para mais informações.
Por exemplo, esta tabela derivada muda a tabela do banco de dados que consulta com base nos campos selecionados pelo usuário:
view: dynamic_order_counts {
derived_table: {
sql:
SELECT
period, number_of_orders
FROM
{% if dates.reporting_date._in_query %}
daily_orders
{% elsif dates.reporting_week._in_query %}
weekly_orders
{% else %}
monthly_orders
{% endif %}
GROUP BY 1
;;
}
}
Exemplos
Crie uma tabela derivada customer_order_facts:
view: customer_order_facts {
derived_table: {
sql:
SELECT
customer_id,
COUNT( * ) AS lifetime_orders
FROM
order
GROUP BY 1
;;
}
}
Informações importantes
As tabelas referenciadas por sql precisam estar acessíveis na conexão atual.
As views que contêm uma tabela derivada são referenciadas por um parâmetro explore ou join, que, por sua vez, é referenciado por um modelo. O modelo determina qual conexão de banco de dados é usada. Consulte a página de documentação do parâmetro connection. As conexões de banco de dados são definidas na seção Administrador do Looker. Quando você faz referência a uma tabela no parâmetro sql, ela precisa estar acessível na conexão associada.
Use SQL bruto com sql, não referências de campo do Looker
O SQL que você escreve em um parâmetro sql de tabela derivada precisa ser SQL bruto, referenciando as colunas e tabelas subjacentes do seu banco de dados. Não pode fazer referência a nomes de campos ou visualizações do Looker.
Usar _filters['view_name.field_name'] em uma tabela derivada exige sql_quote
Ao definir uma tabela derivada baseada em SQL, se você usar a variável _filters['view_name.field_name'] do Liquid em que o valor é renderizado em SQL e o filtro retorna um valor de string, adicione aspas simples ao redor da saída. Para isso, inclua o filtro sql_quote do Liquid.
Caso contrário, você vai receber o seguinte aviso do LookML se não anexar a variável Liquid com | sql_quote:
Using "_filters[]" in Derived Table SQL without "sql_quote" is discouraged.
Consulte a página de documentação Referência de variáveis do Liquid para mais informações.