sql (para junções)

Esta página se refere ao parâmetro sql, que faz parte de uma junção.

sql também pode ser usado como parte de um campo, conforme descrito na página de documentação do parâmetro sql (para campos).

sql também pode ser usado como parte de uma tabela derivada, conforme descrito na página de documentação do parâmetro sql (para tabelas derivadas).

Definição

O sql permite escrever o SQL bruto que vai unir uma visualização a uma Análise. Atualmente, ele é usado quase exclusivamente para executar RIGHT JOIN, que não é compatível com o parâmetro type. Caso contrário, há parâmetros melhores para executar junções.

Antes do Looker 3.10, sql era o único método disponível para executar uma junção que não fosse um LEFT JOIN. Por exemplo, antes da versão 3.10, você pode ter criado um INNER JOIN entre uma análise detalhada event e uma visualização member assim:

explore: event {
  join: member {
    sql:
      INNER JOIN member
      ON member.id = event.member_id ;;
  }
}

-

No Looker 3.10, a junção precisa ser executada com sql_on ou foreign_key. O tipo de junção precisa ser definido usando type da seguinte maneira:

# Option 1 Using sql_on
explore: event {
  join: member {
    sql_on: ${member.id} = ${event.member_id} ;;
    type: inner
  }
}

# Option 2 Using foreign_key
explore: event {
  join: member {
    foreign_key: member_id
    type: inner
  }
}

-

O segundo caso de uso comum do sql era unir tabelas de dois bancos de dados diferentes, o que é chamado de "junção federada". Por exemplo, você pode ter escrito este LookML:

# Model File
explore: view_1 {
  join: view_2 {
    sql:
      LEFT JOIN other_db.other_schema.view_2 AS view_2
      ON view_1.something = view_2.something ;;
  }
}

-

Agora isso pode ser feito usando sql_table_name, da seguinte forma:

# Model File
explore: view_1 {
  join: view_2 {
    sql_on: ${view_1.something} = ${view_2.something} ;;
    type: left_outer
  }
}

# View File
view: view_2 {
  sql_table_name: other_db.other_schema.view_2 ;;
}