Compartilhar via


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

Ao conectar-se a uma fonte de dados usando DirectQuery, você pode usar a opção Assumir integridade referencial para habilitar a execução de consultas mais eficientes na 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.

Captura de tela de uma caixa de diálogo Editar Relacionamento para selecionar Pressupor Integridade Referencial.

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. Dessa forma, Assumir integridade referencial deve ser configurado para obter consultas mais eficientes. Usar essa configuração não altera os valores mostrados nos visuais.

    Captura de tela da tabela Pedidos e da tabela Produtos.

  • Na próxima imagem, observe que nenhuma integridade referencial existe entre Orders [DepotID] e Depots[DepotID] , pois o DepotID é nulo para alguns Orders. Dessa forma, Assumir integridade referencial não deve ser definido.

    Captura de tela das tabelas Pedidos e Depósitos.

  • Por fim, não existe nenhuma integridade referencial entre Orders[CustomerID] e Customers[CustID] nas tabelas a seguir. A CustomerID contém um valor, CustX, que não existe na tabela Clientes. Dessa forma, Assumir integridade referencial não deve ser definido.

    Captura de tela da tabela Pedidos e da tabela Clientes.

Configuração Pressupor integridade referencial

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

Captura de tela de uma caixa de diálogo Editar Relacionamento que permite que você selecione Presumir Integridade Referencial.

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ê configurar Assumir 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 de Quantidade de Ordens mostraria 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.