Uso
explore: explore_name {
always_join: [
view_name,
view_name,
...
]
}
|
Hierarquia
always_join |
Valor padrão
Nenhum
Aceita
Colchetes contendo uma lista de nomes de visualizações separados por vírgulas
Regras especiais
É necessário associar uma visualização ao explore antes de usá-lo em always_join
|
Definição
always_join força a inclusão de uma ou mais junções no SQL gerado pelo Looker, mesmo que o usuário não tenha selecionado um campo dessa visualização unida. É possível usar várias junções com uma lista separada por vírgulas, como [view_name_a, view_name_b, etc].
Quando o Looker gera SQL para uma consulta, ele tenta criar o SQL mais limpo possível e usa apenas as junções necessárias para os campos selecionados por um usuário. Ao usar always_join, você pode forçar a ocorrência de junções, não importa o que aconteça.
always_join pode ser útil quando uma junção é executada com o parâmetro type e não é um LEFT JOIN. Nesse caso, a junção pode ser fundamental para limitar corretamente as linhas retornadas.
Exemplos
Verifique se member está sempre associado a event, mesmo que o usuário não escolha um campo de member. Isso limita os resultados para analisar apenas eventos gerados por membros:
explore: event {
always_join: [member]
join: member {
sql_on: ${event.member_id} = ${member.id} ;;
type: inner
}
}
Verifique se member e payment estão sempre unidos a event, mesmo que o usuário não escolha um campo de nenhuma dessas visualizações. Isso limita os resultados a eventos gerados por membros que já pagaram:
explore: event {
always_join: [member, payment]
join: member {
sql_on: ${event.member_id} = ${member.id} ;;
type: inner
}
join: payment {
sql_on: ${member.payment_id} = ${payment.id} ;;
type: inner
}
}
Desafios comuns
Uma visualização precisa ser associada a uma análise detalhada antes de ser referenciada em always_join.
Para colocar uma visualização em always_join, verifique se ela está associada à Análise detalhada em que always_join está sendo usado. Por exemplo, isso não vai funcionar:
explore: event {
always_join: [member]
}
Aqui, a visualização member não foi unida a event e, portanto, não está disponível para uso em always_join.
Informações importantes
Não aplique lógica de negócios em junções, se possível
A abordagem padrão do Looker para junção é usar um LEFT JOIN sempre que possível. Nos exemplos anteriores, evitamos um LEFT JOIN para que a lógica de negócios possa ser aplicada na própria junção. Em um dos exemplos, criamos uma análise que incluía apenas os eventos associados a membros:
explore: event {
always_join: [member]
join: member {
sql_on: ${event.member_id} = ${member.id} ;;
type: inner
}
}
A maneira preferida de executar isso no Looker é usar um LEFT JOIN para reunir dados de eventos e de membros:
explore: event {
join: member {
sql_on: ${event.member_id} = ${member.id} ;;
}
}
Em seguida, crie uma dimensão que pode ser definida como "sim" ou "não" para analisar apenas eventos de membros:
dimension: is_member_event {
type: yesno
sql: ${member.id} IS NOT NULL ;;
}
Essa abordagem oferece aos usuários a flexibilidade de analisar todos os eventos ou apenas os de membros. Você não forçou os usuários a analisar apenas eventos de membros usando a junção.
Quando uma análise detalhada inclui always_join, o valor padrão de full_suggestions muda para yes
Quando uma análise detalhada inclui o parâmetro always_join, o valor padrão de full_suggestions muda para yes. Isso faz com que a consulta de sugestões seja executada usando a lógica da Análise detalhada, o que significa que always_join será aplicado para restringir as sugestões retornadas, limitando a lista apenas aos dados que o usuário deve ter acesso.
Se você definir manualmente full_suggestions como no, a consulta de sugestão de filtro não será executada.