Do SQL para o DAX: Unindo tabelas | Infointelligence
22 de março de 2018 22 de março de 2018 Giovani StefaniDAX, Power BI, Tutoriais
A linguagem SQL, oferece varios tipos de JOIN, entre eles:
O resultado de um JOIN não depende da presença de um relacionamento no modelo de dados. Você pode usar qualquer coluna de uma tabela em uma condição JOIN.
No DAX, existem duas maneiras de obter um comportamento de JOIN. Primeiro, você pode aproveitar os relacionamentos existentes no modelo de dados para consultar dados incluídos em tabelas diferentes, da mesma maneira que escreve as condições de JOIN correspondentes na consulta DAX. Segundo, você pode escrever expressões DAX produzindo um resultado equivalente a certos tipos de JOIN.
Em qualquer caso, nem todas as operações de JOIN disponíveis no SQL são suportadas no DAX.
Usando relacionamentos em um modelo de dados
A abordagem comum para obter um comportamento de JOIN no DAX é implicitamente usando os relacionamentos existentes. Por exemplo, considere um modelo simples com as tabelas Sales, Product e Date. Existe uma relação entre Vendas e cada uma das outras três tabelas. Se você quiser ver a quantidade de vendas dividida por ano e cor do produto, você pode escrever:
As três tabelas são unidas automaticamente usando uma LEFT JOIN entre a tabela Sales (usada na expressão para a coluna Total Quantity) e as outras duas tabelas, Date e Product.
SELECT d.Year, p.Color, SUM ( s.Quantity ) AS [Total Quantity]
GROUP BY d.Year, p.Color
Observe que a direção do LEFT JOIN é entre Sales e Date, portanto, todas as linhas incluídas na tabela Sales que não possuem uma linha correspondente em Date ou em Product são agrupadas em um valor BLANK (que corresponde ao conceito de NULL no SQL).
Se você não deseja agregar linhas, pode simplesmente usar RELATED para acessar as colunas nas tabelas de consulta (no lado "um" do relacionamento). Por exemplo, considere a seguinte sintaxe no SQL:
Você obtém o mesmo comportamento usando a seguinte consulta DAX:
Você pode obter um comportamento semelhante a um INNER JOIN aplicando um filtro ao resultado dos ADDCOLUMNS que você viu até agora, removendo as linhas que possuem um valor em branco na tabela de consulta – supondo que o espaço em branco não seja um valor que você possa ter encontrado nessa coluna.
Você não pode obter um comportamento CROSS JOIN no DAX apenas aproveitando os relacionamentos no modelo de dados.