Eu já falei sobre Weak Relationships no post sobre Relationships, mas quero falar sobre iso aqui novamente pra reforçar meu entendimento, mas principalmente pra anotar aqui todas as diferenças que eu conseguir encontrar na documentação da Microsoft entre esses Strong vs Weak Relationships.

Weak Relationships (vou chamar de WR daqui pra frente) são esses relacionamentos aí destacados na imagem acima.
Então toda vez que você tem um relacionamento N:N (independente da direção single ou both) ou um relacionamento de qualquer tipo entre uma fonte de dados DirectQuery e outra Import, vc tem uma WR.
Esse conceito do que são dados “import” e o que são dados “directQuery”, ou, como na imagem acima, “vertipaq” para Import e “DirectQuery source” para DirectQuery, são consideradas ILHAS.
Então vertipaq é uma ilha e directQuery é outra, então sempre que se tem um relacionamento entre diferentes ilhas vc tem uma WR. Agora, dentro da mesma ilha, se for um N:N também é uma WR.
Table Expansion (WR não faz Table Expansion)
Fonte: https://docs.microsoft.com/en-us/power-bi/transform-model/desktop-relationships-understand
A expansão da tabela resulta na criação de uma tabela virtual, incluindo as colunas nativas da tabela base e expandindo para as tabelas relacionadas. Para tabelas de importação, isso é feito no mecanismo de consulta; para tabelas do DirectQuery, isso é feito na consulta nativa enviada ao banco de dados de origem (desde que a propriedade “Assumir integridade referencial” não esteja ativada). O mecanismo de consulta atua na tabela expandida, aplicando filtros e agrupando pelos valores nas colunas da tabela expandida.

A imagem acima é o que acontece numa Table Expansion, então perceba que as informações da tabela SALES estão preenchidas, mas as outras colunas estão BLANK porque não existem nas outras tabelas (Product e Category).
Então, lembrando, esse comportamento não acontece em WR.
A expansão da tabela nunca ocorre para WR. As junções de tabela são obtidas usando a semântica INNER JOIN e, por esse motivo, linhas virtuais em branco não são adicionadas para compensar violações de integridade referencial.
Weak Relationships
Um modelo WR não tem lado ONE garantido, ou seja, em um relacionamento tipo WR o mecanismo do Power BI não consegue identificar um lado ONE, e isso pode acontecer pelos dois motivos que já falamos aqui, mas vou repetir:
- É WR por ser um relacionamento N:N
- É WR por ser um relacionamento entre diferentes ilhas (cross-island em inglês)
Então, se não é possível determinar um lado ONE, logo não é possível usar nada que requer um lado ONE, como por exemplo, a função DAX RELATED().
WR também não consegue garantir integridade referencial porque as junções WR entre tabelas funcionam na base do INNER JOIN, logo, como registros blanks não podem ser criados pra garantir integridade referencial então também não dá pra garantir todo uso de RLS em cima desses relacionamentos (existem restrições para uso de RLS em relacionamentos WR).
Dual Mode
Fonte: https://docs.microsoft.com/en-us/power-bi/transform-model/desktop-storage-mode
Você pode definir tabelas como Dual para reduzir o número de WR no conjunto de dados e melhorar o desempenho. Os WR normalmente envolvem pelo menos uma tabela do DirectQuery, na qual a lógica de junção não pode ser enviada aos sistemas de origem. Como as tabelas Dual podem atuar como tabelas do DirectQuery ou Import, essa situação é evitada.
Tipos de Relacionamentos
Fonte: https://www.sqlbi.com/articles/relationships-in-power-bi-and-tabular-models/
A tabela a seguir resume os diferentes tipos de relacionamentos com as direções de filtro cruzado disponíveis, seus efeitos na propagação do contexto do filtro e as opções de relacionamento fraco / forte.

SMR: single to many, 1:N
SSR: single to single, 1:1
MMR, many to many, N:N
Importante:
- WR acontece sempre que temos um relacionamento N:N
- WR acontece sempre que temos relacionamentos entre diferentes ilhas
- WR não fazem Table Expansion (porque em WR as junções são do tipo INNER JOIN)
- WR não suporta “Referential Integrity” (integridade referencial)
- WR eliminam linhas quando os valores das colunas relacionadas não coincidem (integridade referencial)
- WR tem restrições de uso de RLS
- WR não suporta função DAX RELATED
- WR não suporta função DAX SUMMARIZE
- O único caso em que um relacionamento de origem cruzada (cross-source) é considerado STRONG é se ambas as tabelas são definidas como IMPORT.
4 thoughts on “Power BI Weak Relationships”