Partilhar via


Aplicar a configuração Assumir Integridade Referencial no Power BI Desktop

Ao se conectar a uma fonte de dados usando o DirectQuery, você pode usar a seleção Assumir integridade referencial para permitir a execução de consultas mais eficientes em sua fonte de dados. Esse recurso tem alguns requisitos dos dados subjacentes e só está disponível ao usar o DirectQuery.

A configuração Assume Integridade Referencial permite que as consultas na fonte de dados usem instruções INNER JOIN em vez de OUTER JOIN, o que melhora a eficiência da consulta.

Screenshot of an Edit Relationship dialog to select Assume Referential Integrity.

Requisitos para o uso de Assumir Integridade Referencial

Essa configuração é uma configuração avançada e só é habilitada ao se conectar a dados usando DirectQuery. Os seguintes requisitos são necessários para que o Assume Integridade Referencial funcione corretamente:

  • Os dados na coluna De na relação nunca são Nulos ou em branco
  • Para cada valor na coluna De, há um valor correspondente na coluna Para

Neste contexto, a coluna De é a Muitos numa relação um-para-muitos, ou é a coluna na primeira tabela numa relação um-para-um.

Exemplo de utilização de Assumir Integridade Referencial

O exemplo a seguir demonstra como Assume Integridade Referencial se comporta quando usado em conexões de dados. O exemplo se conecta a uma fonte de dados que inclui uma tabela Pedidos, uma tabela Produtos e uma tabela Depósitos.

  • Na imagem a seguir que mostra a tabela Pedidos e a tabela Produtos, existe integridade referencial entre Pedidos[ProductID] e Products[ProductID]. A coluna [ProductID] na tabela Pedidos nunca é Nula e todos os valores também aparecem na tabela Produtos . Como tal, Assumir Integridade Referencial deve ser definido para obter consultas mais eficientes. O uso dessa configuração não altera os valores mostrados nos elementos visuais.

    Screenshot of Orders table and Products table.

  • Na imagem seguinte, observe que não existe integridade referencial entre Orders[DepotID] e Depots[DepotID], porque o DepotID é Nulo para alguns Pedidos. Como tal, Assumir Integridade Referencial não deve ser definido.

    Screenshot of Orders table and Depots table.

  • Finalmente, não existe integridade referencial entre Orders[CustomerID] e Customers[CustID] nas tabelas a seguir. O CustomerID contém alguns valores, neste caso, CustX, que não existem na tabela Customers. Como tal, Assumir Integridade Referencial não deve ser definido.

    Screenshot of Orders table and Customers table.

Definição Assumir Integridade Referencial

Para habilitar esse recurso, selecione Assumir integridade referencial, conforme mostrado na imagem a seguir.

Screenshot of an Edit Relationship dialog that allows you to select Assume Referential Integrity.

Quando selecionada, a configuração é validada em relação aos dados para garantir que não haja linhas Nulas ou incompatíveis. No entanto, para casos com um número muito grande de valores, a validação não é uma garantia de que não há problemas de integridade referencial.

Além disso, a validação ocorre no momento da edição da relação e não reflete quaisquer alterações subsequentes aos dados.

O que acontece se você definir incorretamente Assumir Integridade Referencial?

Se você definir Assumir integridade referencial quando houver problemas de integridade referencial nos dados, essa configuração não resultará em erros. No entanto, resulta em aparentes inconsistências nos dados. Por exemplo, para a relação com a tabela Depots descrita aqui, isso resultaria no seguinte:

  • Um visual mostrando o Qty total do pedido mostraria um valor de 40
  • Um visual mostrando o total de Order Qty by Depot City mostraria um valor total de apenas 30, porque não incluiria Order ID 1, onde DepotID é Null.