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

Ao se conectar a uma fonte de dados usando o DirectQuery, você poderá usar a seleção Pressupor Integridade Referencial para habilitar a execução de consultas mais eficientes em relação a sua fonte de dados. Esse recurso tem alguns requisitos dos dados subjacentes e só está disponível ao usar o DirectQuery.

A configuração Pressupor Integridade Referencial permite que as consultas na fonte de dados usem as 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 usar Pressupor Integridade Referencial

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

  • Dados na coluna From na relação nunca são nulos ou em branco
  • Para cada valor na coluna From, haverá um valor correspondente na coluna To

Nesse contexto, a coluna From é Muitos em uma relação Um-para-muitos ou é a coluna da primeira tabela em uma relação Um-para-um.

Exemplo de uso de Pressupor Integridade Referencial

O exemplo a seguir demonstra como Pressupor Integridade Referencial se comporta quando usado em conexões de dados. O exemplo conecta-se a uma fonte de dados que inclui uma tabela Orders, uma tabela Products e uma tabela Depots.

  • Na imagem a seguir que mostra a tabela Orders e a tabela Products, a integridade referencial existe entre Orders[ProductID] e Products[ProductID]. A coluna [ProductID] na tabela Orders nunca é nula e cada valor aparece também na tabela Products. Como tal, Assumir Integridade Referencial deve ser definido para obter consultas mais eficientes. Usar essa configuração não altera os valores mostrados nos visuais.

    Screenshot of Orders table and Products table.

  • Na próxima imagem, observe que nenhuma integridade referencial existe entre Orders [DepotID] e Depots[DepotID] , pois o DepotID é nulo para alguns Orders. Como tal, Pressupor integridade referencial nãodeve ser definido.

    Screenshot of Orders table and Depots table.

  • Por fim, não existe nenhuma integridade referencial entre Orders[CustomerID] e Customers[CustID] nas tabelas a seguir. O CustomerID contém alguns valores. Nesse caso, CustX, que não existe na tabela Customers. Como tal, Pressupor integridade referencial nãodeve ser definido.

    Screenshot of Orders table and Customers table.

Configuração de Pressupor Integridade Referencial

Para habilitar esse recurso, selecione Pressupor 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 nenhum nulo ou linhas incompatíveis. No entanto, para casos com um número muito grande de valores, a validação não é garantia de que não haja nenhum problema de integridade referencial.

Além disso, a validação ocorre no momento da edição da relação e não reflete nenhuma alteração subsequente nos dados.

O que acontece se você configurar incorretamente Pressupor Integridade Referencial?

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

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