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 habilitar 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 Assumir 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.

Captura de tela de uma caixa de diálogo Editar relação para selecionar Assumir integridade referencial.

Requisitos para usar 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.

    Captura de ecrã da tabela Encomendas e da tabela Produtos.

  • 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.

    Captura de ecrã da tabela Encomendas e da tabela Depósitos.

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

    Captura de ecrã da tabela Encomendas e da tabela Clientes.

Configuração Assumir integridade referencial

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

Captura de ecrã de uma caixa de diálogo Editar Relação que permite selecionar Assumir Integridade Referencial.

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.