sql (para tabelas derivadas)

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âmetros sql (para campos).

Uso

view: my_derived_table {
derived_table: {
sql:
SELECT *
FROM events
WHERE type NOT IN ('test', 'staff') ;;
...
Hierarquia
sql
Valor padrão
Nenhuma

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 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.