Compartilhar via


Problemas comuns

Power Query

Preservando a classificação

Você pode assumir que, se classificar seus dados, qualquer operação subsequente preservará a ordem de classificação.

Por exemplo, se você classificar uma tabela de vendas para que a maior venda de cada loja seja mostrada primeiro, você pode esperar que fazer uma operação "Remover duplicatas" retorne apenas a maior venda para cada loja. E essa operação pode, de fato, parecer funcionar. No entanto, esse comportamento não é garantido.

Devido à maneira como o Power Query otimiza determinadas operações, incluindo ignorá-las ou descarregá-las em fontes de dados (que podem ter seu próprio comportamento de ordenação exclusiva), a ordem de classificação não tem garantia de ser preservada por meio de agregações (como Table.Group), mesclagens (como Table.NestedJoin) ou remoção duplicada (como Table.Distinct).

Há várias maneiras de contornar isso. Veja algumas sugestões:

  • Execute uma classificação depois de aplicar a operação downstream. Por exemplo, ao agrupar linhas, classifique a tabela aninhada em cada grupo antes de aplicar outras etapas. Aqui está um exemplo de código M que demonstra essa abordagem: Table.Group(Sales_SalesPerson, {"TerritoryID"}, {{"SortedRows", each Table.Sort(_, {"SalesYTD", Order.Descending})}})
  • Bufferizar os dados (usando Table.Buffer) antes de aplicar a operação a jusante. Em alguns casos, essa operação faz com que a operação downstream preserve a ordem de classificação em buffer.
  • Use a classificação. Por exemplo, em vez de usar Table.Distinct, você pode ordenar pelas colunas que contêm os valores duplicados, classificar com base em uma coluna de desempate (como modified_date) e filtrar para manter apenas as linhas de classificação 1.

Inferência de tipo de dados

Às vezes, o Power Query pode detectar incorretamente o tipo de dados de uma coluna. Isso ocorre devido ao fato de que o Power Query infere tipos de dados usando apenas as primeiras 200 linhas de dados. Se os dados nas primeiras 200 linhas forem de alguma forma diferentes dos dados após a linha 200, o Power Query poderá acabar escolhendo o tipo errado. (Lembre-se de que um tipo incorreto nem sempre produzirá erros. Às vezes, os valores resultantes são simplesmente incorretos, tornando o problema mais difícil de detectar.)

Por exemplo, imagine uma coluna que contém inteiros nas primeiras 200 linhas (como todos os zeros), mas contém números decimais após a linha 200. Nesse caso, o Power Query infere que o tipo de dados da coluna seja Número Inteiro (Int64.Type). Essa inferência resulta em partes decimais de qualquer número não inteiro sendo truncado.

Ou imagine uma coluna que contenha valores de data textual nas primeiras 200 linhas e outros tipos de valores de texto após a linha 200. Nesse caso, o Power Query infere que o tipo de dados da coluna seja Date. Essa inferência faz com que os valores de texto não datados sejam tratados como erros de conversão de tipo.

Como a detecção de tipo funciona nas primeiras 200 linhas, mas o Perfil de Dados pode operar em todo o conjunto de dados, você pode considerar o uso da funcionalidade de Perfil de Dados para obter uma indicação inicial no Editor de Consultas sobre erros, seja da detecção de tipo ou de qualquer número de outros motivos, além das linhas do topo N.

Conexões fechadas à força pelo host remoto

Ao se conectar a várias APIs, você pode receber o seguinte aviso:

Data source error: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host

Se você encontrar esse erro, provavelmente será um problema de rede. Geralmente, as primeiras pessoas a verificar são os proprietários da fonte de dados à qual você está tentando se conectar. Se eles não acharem que estão fechando a conexão, é possível que algo ao longo do caminho esteja ocorrendo (como, por exemplo, um servidor proxy, roteadores ou gateways intermediários).

Se isso se reproduz apenas com qualquer dado ou apenas com maiores volumes de dados, é provável que haja um tempo limite de rede em algum ponto da rota. Se for apenas com dados maiores, os clientes deverão consultar o proprietário da fonte de dados para ver se suas APIs dão suporte à paginação, para que possam dividir suas solicitações em partes menores. Caso contrário, maneiras alternativas de extrair dados da API (seguindo as práticas recomendadas da fonte de dados) devem ser seguidas.

Os conjuntos de criptografia de TLS RSA foram descontinuados

A partir de 30 de outubro de 2020, os seguintes conjuntos de criptografia estão sendo descontinuados em nossos servidores.

  • "TLS_RSA_WITH_AES_256_GCM_SHA384"
  • "TLS_RSA_WITH_AES_128_GCM_SHA256"
  • "TLS_RSA_WITH_AES_256_CBC_SHA256"
  • "TLS_RSA_WITH_AES_128_CBC_SHA256"

A lista a seguir são os pacotes de criptografia com suporte:

  • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
  • "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384"
  • "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"
  • "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"
  • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
  • "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256"
  • "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384"

Os conjuntos de criptografia são usados para criptografar mensagens para proteger uma conexão de rede entre clientes/servidores e outros servidores. Estamos removendo a lista de conjuntos de criptografia acima para obedecer aos nossos protocolos de segurança atuais. A partir de 1º de março de 2021, os clientes só podem usar nossos conjuntos de criptografia padrão.

Esses são os conjuntos de criptografia aos quais o servidor ao qual você se conecta deve dar suporte para se conectar do Power Query Online ou do Power BI.

No Power Query Desktop (Power BI, Excel), não controlamos seus pacotes de criptografia. Se você estiver tentando se conectar ao Power Platform (por exemplo, fluxos de dados do Power Platform) ou ao Serviço do Power BI, precisará de um desses pacotes de criptografia habilitados no sistema operacional. Você pode atualizar a versão do Windows ou atualizar o registro de TLS do Windows para ter certeza de que o ponto de extremidade do servidor oferece suporte a uma dessas cifras.

Para verificar se o servidor está em conformidade com o protocolo de segurança, você pode executar um teste usando uma ferramenta de codificação e scanner do TLS. Um exemplo pode ser SSLLABS.

Os clientes devem atualizar seus servidores antes de 1º de março de 2021. Para obter mais informações sobre como configurar a ordem do conjunto de criptografia de TLS, consulte Gerenciar Transport Layer Security (TLS).

Revogação de certificado

Uma versão futura do Power BI Desktop causa falha nas conexões SSL da Área de Trabalho quando todos os certificados na cadeia SSL estão sem status de revogação de certificado. Essa é uma alteração do estado atual, em que a revogação só causou falha de conexão no caso em que o certificado foi explicitamente revogado. Outros problemas de certificado podem incluir assinaturas inválidas e expiração do certificado.

Como há configurações nas quais o status de revogação pode ser removido, como com servidores proxy corporativos, forneceremos outra opção para ignorar certificados que não têm informações de revogação. Essa opção permite situações em que as informações de revogação são removidas em determinados casos, mas você não deseja reduzir totalmente a segurança, para continuar trabalhando.

Não é recomendável, mas os usuários podem continuar a ser capazes de desativar totalmente as verificações de revogação.

Erro: a avaliação foi cancelada

O Power Query retorna a mensagem "A avaliação foi cancelada" quando a análise em segundo plano é desabilitada e o usuário alterna entre consultas ou fecha o Editor de Consultas enquanto uma consulta está em processo de atualização.

Erro: a chave não correspondeu a nenhuma linha na tabela

Há muitos motivos pelos quais o Power Query pode retornar um erro de que a chave não correspondeu a nenhuma linha na tabela. Quando esse erro acontece, o Mecanismo de Mashup não consegue localizar o nome da tabela que está procurando. Os motivos pelos quais esse erro pode acontecer incluem:

  • O nome da tabela foi alterado, por exemplo, na própria fonte de dados.
  • A conta usada para acessar a tabela não tem privilégios suficientes para ler a tabela.
  • Pode haver várias credenciais para uma única fonte de dados, que não tem suporte no Serviço do Power BI ao usar conexões de nuvem pessoal. Esse erro pode acontecer, por exemplo, quando a fonte de dados é uma fonte de dados de nuvem e várias contas estão sendo usadas para acessar a fonte de dados ao mesmo tempo com credenciais diferentes. Se a fonte de dados for local, você precisará usar o gateway de dados local.

Limitação: requisito de ingresso no domínio para máquinas de gateway ao usar a autenticação do Windows

Usar a autenticação do Windows com um gateway local requer que o equipamento de gateway seja unido ao domínio. Isso se aplica a todas as conexões configuradas com "Autenticação do Windows pelo gateway*. As contas do Windows usadas para acessar uma fonte de dados podem exigir acesso de leitura aos componentes compartilhados no diretório do Windows e na instalação do gateway.

Limitação: a revalidação do protocolo OAuth2 entre locatários não é suportada no serviço do Power BI.

Se você quiser se conectar a uma fonte de dados do serviço do Power BI usando o OAuth2, a fonte de dados deverá estar no mesmo locatário que o serviço do Power BI. Atualmente, não há suporte para cenários de conexão multilocatário com o OAuth2.

Limitação: o endpoint de autenticação personalizada do AD FS não é suportado no serviço do Power BI

Não há suporte para a capacidade de usar um ponto de extremidade personalizado dos Serviços de Federação do Active Directory (AD FS) no serviço do Power BI. Os usuários podem encontrar o seguinte erro: o serviço de token relatado pelo recurso não é confiável.

Limitação: não há suporte para contas de convidado

No momento, não há suporte para o uso de contas de convidado de um locatário para se conectar a dados usando conectores do Power Query.

Expression.Error: A avaliação resultou em um estouro de pilha e não pode continuar

Erros de estouro de pilha podem ser causados por um bug no código M. Por exemplo, a função a seguir produz um estouro de pilha porque ela chama recursivamente a si mesma sem qualquer tipo de condição de término. Uma função que se chama assim é conhecida como uma função "recursiva".

let f = (x) => @f(x + 1) in f(0)

Aqui estão algumas maneiras comuns de resolver um stack overflow em seu código M.

  • Verifique se suas funções recursivas realmente terminam quando a condição de término esperada for atingida.
  • Substitua a recursão por iteração (por exemplo, usando funções como List.Transform, List.Generate ou List.Accumulate).

Expression.Error: A avaliação ficou sem memória e não pode continuar

Erros de "memória insuficiente" (ou OOMs) podem ser causados por fazer muitas operações com uso intensivo de memória em tabelas muito grandes. Por exemplo, o código M a seguir produz um OOM porque tenta carregar um bilhão de linhas na memória ao mesmo tempo.

Table.Buffer(Table.FromList({1..1000000000}, Splitter.SplitByNothing()))

Para resolver erros de falta de memória, otimize operações intensivas em memória, como classificações, junções, agrupamentos e distintos, garantindo que se integrem à origem ou removendo-as completamente sempre que possível. As classificações, por exemplo, geralmente são desnecessárias.

O Power Query Online não pode se conectar por meio do ponto de extremidade público quando um ponto de extremidade privado é configurado para um Armazenamento

Quando um ponto de extremidade privado para uma conta de armazenamento é configurado, o Power Query Online sempre resolverá o endereço de link privado e não poderá se conectar por meio da Internet pública, mesmo se o acesso público estiver definido como "Permitido" na configuração do ponto de extremidade privado.

Esse comportamento ocorre porque o ponto de extremidade privado tem precedência sobre a conectividade pública. Como resultado, qualquer tentativa de conexão sem um gateway falhará.

Fluxos de Dados

Cancelar atualização de fluxo de dados

Às vezes, você inicia uma atualização de fluxo de dados, mas depois de iniciá-la, percebe que queria alterar mais uma coisa antes de atualizar seus dados. Nesse caso, você precisa aguardar até que a atualização seja concluída. Parar uma atualização na metade, enquanto o processo já está trabalhando no momento para obter os dados e atualizar as tabelas no seu espaço de trabalho ou ambiente, não é suportado.

Planejamos adicionar suporte para cancelar uma atualização de fluxo de dados no futuro.