sql (para mesclagens)

Esta página se refere ao parâmetro sql que faz parte de uma mesclagem.

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

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

Definição

sql permite que você escreva o SQL bruto que participará de uma visualização em um Explorar. No momento, ele é usado quase exclusivamente para executar RIGHT JOIN, o que não é compatível com o parâmetro type. Caso contrário, há parâmetros melhores a serem usados para executar mesclagens.

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

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

-

A partir do Looker 3.10, a mesclagem será executada com sql_on ou foreign_key, enquanto o tipo de mesclagem deverá 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 de sql era mesclar tabelas de dois bancos de dados diferentes, o que é chamado de "mesclagem 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 maneira:

# 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 ;;
}