Página 1 de 1

Combinando campos antes de relacionar tabelas

Enviado: 27 Jan 2022 às 08:38
por fagnerdireito
Prezados,

A fim de colaborar com os colegas, eu estava com um problema aqui em duas grandes tabelas, e precisava fazer um relacionamento. Sei que o exemplo é simples mas pode contribuir.

Acontece que eu tinha a seguinte situação na tabela A:
  • Tabela A
    • Cidade
    • Zona
    • Local
Na tabela B:
  • Tabela B
    • Cidade
    • Zona
    • Local

Prezados,
A fim de colaborar com os colegas, eu estava com um problema aqui em duas grandes tabelas, e precisava fazer um relacionamento. Sei que o exemplo é simples mas pode contribuir.

Acontece que eu tinha a seguinte situação na tabela A:
  • Tabela A
    • Cidade
    • Zona
    • Local
Na tabela B:
  • Tabela B
    • Cidade
    • Zona
    • Local
No entanto o local se repete dentro da zona, por exemplo, eu tenho o local 215 na zona 10, mas também tenho 215 na zona 30, então eu tinha problemas de muitos códigos de local repetidos na tabela, e há muitos repetidos dentro de uma cidade, ou seja, as vezes eu tinha 20 locais com codigo 215 na mesma cidade e impedia que eu avançava.

Sendo assim, antes de relacionar as tabelas eu criei um campo em cada tabela:

Tabela A:
Código: Selecionar todos
filtro_local_TABELA_A = COMBINEVALUES(
        "-",
        tabelaA[CIDADE],
        tabelaA[ZONA],
        tabelaA[LOCAL]
)

Tabela B:
Código: Selecionar todos
filtro_local_TABELA_B = COMBINEVALUES(
        "-",
        tabelaB[CIDADE],
        tabelaB[ZONA],
        tabelaB[LOCAL]
)

Feito isso, depois bastou fazer o relacionamento da coluna "filtro_local_TABELA_A" com a coluna "filtro_local_TABELA_B", de muitos para muitos, e tudo deu certo.

Essa foi a maneira rápida e sem muitos estudos que eu encontrei, mas se alguém tiver alguma dica seria ótimo a contribuição.

Até mais!

Re: Combinando campos antes de relacionar tabelas

Enviado: 27 Jan 2022 às 14:35
por GustavoAlbani
Boa tarde,
Nesse seu exemplo, pode ocorrer que uma tabela tenha uma combinação que não tenha na outra, e não haverá ligação nesse registro, dependendo de que qual tabela está sendo usada para filtro.
Imagino que o ideal é que você tivesse três tabelas a mais, sendo uma cidade, outra zona e outra local, onde essas tabelas contenham registros distintos portanto únicos, e a estas ligadas as suas duas tabelas, sendo que todo o filtro de cidade seria pela tabela cidade, todo o filtro de zona e local também. Relação de um para n.
Outra opção seria unir a tabela A e B, em uma única tabela, visto que elas possuem os mesmos campos, e todo o filtro necessário seria direto nessa tabela unificada.
Ainda uma outra opção, pegando parte dessa sua solução seria criar esses campos como você fez, e também uma tabela nova, com a união distinta dessas duas colunas em uma coluna, criando uma tabela "pai" usando esse campo, que filtraria sua tabela A e B.
O Power BI ainda não trabalha bem a relação de muitos para muitos, e também não é recomendado, já tive casos de cálculos errados com tabelas grandes, com esse tipo de ligação, então é um ponto a ficar atento.
Espero ter contribuído para as ideias.
Att.
Gustavo