Esta página se refere ao parâmetro
sql
que faz parte de uma tabela derivada.Também é possível usar
sql
como parte de um campo, conforme descrito na página de documentação de parâmetrossql
(para campos).
Uso
derived_table: {
sql:
SELECT *
FROM events
WHERE type NOT IN ('test', 'staff') ;;
...
Hierarquia
sql |
Valor padrão
NenhumaAceita
Um bloco SQL
|
Definição
sql
permite especificar o SQL que será usado para gerar uma tabela derivada. É possível usar qualquer consulta SQL legal 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 bancos de dados normais, também é possível referenciar visualizações ou tabelas derivadas do LookML 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, que não precisa ser substituída. Por exemplo, se você quisesse referenciar uma tabela derivada de key_customer
na tabela derivada de key_customer_order_facts
, teria algo parecido com isto:
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 líquidas com sql
Também é possível usar as variáveis líquidas com o parâmetro sql
. As variáveis líquidas permitem acessar dados, como os valores em um campo, dados sobre o campo e filtros aplicados ao campo.
As variáveis líquidas date_start
e date_end
são muito úteis para dialetos de bancos de dados que particionam dados em várias tabelas por data, como o BigQuery. Consulte este artigo da Central de Ajuda para ver uma explicação detalhada.
As variáveis Liquid _in_query
, _is_selected
e _is_filtered
, em particular, podem adicionar algumas funcionalidades interessantes às tabelas derivadas. Eles retornam verdadeiro ou falso com base na inclusão de um campo ou filtro em uma consulta. Algumas complexidades devem ser consideradas para o uso adequado desses valores verdadeiros/falsos. Consulte a página Variável líquida para mais informações.
Por exemplo, esta tabela derivada altera a tabela de banco de dados que ele consulta com base nos campos selecionados pelo usuário:
view: dynamic_order_counts {
derived_table: {
sql:
SELECT
period, number_of_orders
FROM
{% dynamic if dates.reporting_date._in_query %}
daily_orders
{% elsif dates.reporting_week._in_query %}
weekly_orders
{% dynamic else %}
monthly_orders
{% dynamic endif %}
GROUP BY 1
;;
}
}
Examples
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
;;
}
}
Considerações
As tabelas referenciadas por sql
precisam ser acessíveis pela conexão atual
Os views
que contêm uma tabela derivada são referenciados 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 de parâmetros connection
. As próprias conexões com o 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 a campos do Looker
O SQL gravado em um parâmetro sql
da tabela derivada precisa ser SQL bruto, fazendo referência às colunas e tabelas subjacentes do seu banco de dados. Ele não deve fazer referência a nomes de campos ou nomes de visualizações do Looker.
O uso de _filters['view_name.field_name']
em uma tabela derivada requer sql_quote
Ao definir uma tabela derivada baseada em SQL, se você usar a variável líquida _filters['view_name.field_name']
, em que o valor é renderizado em SQL e o filtro retorna um valor de string, é necessário adicionar aspas simples na saída. Para isso, inclua o filtro sql_quote
líquido.
Caso contrário, você receberá o seguinte alerta 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 referência de variáveis líquidas para mais informações.