Compartilhar via


Problemas comuns

Power Query

Como preservar a classificação

Você pode supor que, se classificar seus dados, quaisquer operações downstream preservarão 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, talvez seja de se esperar que fazer uma operação "Remover duplicatas" retorne apenas a venda principal de cada loja. E essa operação pode, de fato, parecer que funciona. No entanto, esse comportamento não é garantido.

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

Há diversas maneiras de contornar esse problema. Aqui estão 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 novas etapas. Este é um código M de exemplo que demonstra essa abordagem: Table.Group(Sales_SalesPerson, {"TerritoryID"}, {{"SortedRows", each Table.Sort(_, {"SalesYTD", Order.Descending})}})
  • Execute o buffer dos dados (usando Table.Buffer), antes de aplicar a operação downstream. 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, em seguida, filtrar para manter apenas as linhas de classificação 1.

Inferência de tipos 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 os 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 pode 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 o tipo de dados da coluna como Número Inteiro (Int64.Type). Essa inferência resulta em partes decimais de quaisquer números não inteiros sendo truncados.

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

Como a detecção de tipo funciona nas primeiras 200 linhas, mas a Criação de Perfil de Dados pode operar em todo o conjunto de dados, você pode usar a funcionalidade Criação de Perfil de Dados para obter uma indicação antecipada no Editor de Consultas sobre os Erros (na detecção de tipo ou em diversos outros motivos), além das N linhas principais.

Conexões encerradas à 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. Em geral, 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 são eles que estão encerrando a conexão, é possível que algo no meio do caminho esteja (por exemplo, um servidor proxy, roteadores/gateways intermediários e assim por diante).

Quer isso seja reproduzido apenas com quaisquer dados ou apenas com dados maiores, é provável que haja um tempo limite de rede em algum lugar da rota. Se for apenas com dados maiores, os clientes devem consultar o proprietário da fonte de dados, para ver se as APIs permitem a paginação, para que possam dividir as solicitações em partes menores. Caso contrário, maneiras alternativas de extrair os dados da API (de acordo com as melhores práticas de 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 mostra 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 pacotes de criptografia com os quais o servidor a que você se conecta deve ser compatível para se conectar no Power Query Online ou no Power BI.

No Power Query Desktop (Power BI, Excel), não controlamos os pacotes de criptografia. Se você estiver tentando se conectar ao Power Platform (por exemplo, Power Platform Dataflows) ou ao Serviço do Power BI, precisará de um desses conjuntos de codificação habilitados em seu 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 TLS e criptografia 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 algum certificado na cadeia SSL não tem status de revogação de certificado. Essa é uma alteração no 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 em servidores proxy corporativos, forneceremos outra opção para ignorar certificados que não têm informações de revogação. Essa opção permite que situações em que as informações de revogação são removidas em certos casos, mas você não deseja reduzir totalmente a segurança, continuem trabalhando.

Não é recomendado, mas os usuários podem continuar a 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 está 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 às linhas na tabela

Há muitas razões pelas 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. As razões pelas 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 o Personal Cloud Connections. Esse erro pode acontecer, por exemplo, quando a fonte de dados é uma fonte de dados na 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 ingressado no domínio para computadores de gateway ao usar a autenticação do Windows

Usar a autenticação do Windows com um gateway local exige que o computador de gateway seja ingressado no domínio. Isso se aplica a quaisquer conexões configuradas com "Autenticação do Windows por meio do 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: não há suporte para a atualização do OAuth2 entre locatários 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 deve 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 OAuth2.

Limitação: não há suporte para o ponto de extremidade de autenticação personalizada do AD FS no serviço do Power BI

Não há suporte para a capacidade de usar um ponto de extremidade de autenticação dos Serviços de Federação do Active Directory (AD FS) personalizados 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 que usam conectores do Power Query.

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

Erros de excedente de pilha podem ser causados por um bug em seu código M. Por exemplo, a função a seguir gera um excedente de pilha porque ela chama repetidamente de volta para si mesma sem qualquer tipo de condição final. Uma função que se autodenomina assim é conhecida como função "recursiva".

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

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

  • Verifique se as funções recursivas realmente terminam quando a condição final esperada é atingida.
  • Substitua a recursão pela 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 "falta de memória" (ou OOMs) podem ser causados por muitas operações com uso intensivo de memória em tabelas muito grandes. Por exemplo, o código M a seguir gera uma falta de memória porque tenta carregar um bilhão de linhas na memória de uma só vez.

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

Para resolver erros de falta de memória, otimize as operações com uso intensivo de memória, como classificações, junções, agrupamentos e distinções, garantindo que elas se dobrem para a origem ou removendo-as completamente sempre que possível. As classificações, por exemplo, muitas vezes são desnecessárias.

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 esperar até que a atualização seja concluída. No momento, não há suporte para interromper uma atualização no meio do caminho, pois o processo já está trabalhando para obter os dados e atualizar as tabelas em seu espaço de trabalho ou ambiente.

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