Compartilhar via


Funções de transformação em Power Query para estruturação de dados

APPLIES TO: Azure Data Factory Azure Synapse Analytics

Dica

Data Factory no Microsoft Fabric é a próxima geração de Azure Data Factory, com uma arquitetura mais simples, IA interna e novos recursos. Se você não estiver familiarizado com a integração de dados, comece com Fabric Data Factory. As cargas de trabalho existentes do ADF podem ser atualizadas para Fabric para acessar novos recursos em ciência de dados, análise em tempo real e relatórios.

A estruturação de dados em Azure Data Factory permite que você faça a preparação de dados agile sem código e a estruturação em escala de nuvem traduzindo scripts Power Query M em Fluxo de Dados script. O ADF integra-se ao Power Query Online e disponibiliza Power Query M funções para a estruturação de dados por meio da execução do Spark usando a infraestrutura do Spark de fluxo de dados.

Atualmente, nem todas as funções Power Query M têm suporte para estruturação de dados, apesar de estarem disponíveis durante a criação. Ao criar os mash-ups, a seguinte mensagem de erro será exibida se não houver suporte para uma função:

UserQuery : Expression.Error: The transformation logic is not supported as it requires dynamic access to rows of data, which cannot be scaled out.

Veja abaixo uma lista de funções de Power Query M com suporte.

Gerenciamento de colunas

Filtragem de linhas

Use a função M Table.SelectRows para filtrar as seguintes condições:

  • Igualdade e desigualdade
  • Comparações numéricas, de texto e de data (mas não DateTime)
  • Informações numéricas, como Number.IsEven/Odd
  • Texto que contém palavras específicas, usando Text.Contains, Text.StartsWith ou Text.EndsWith
  • Intervalos de datas incluindo todas as Funções de data 'IsIn')
  • Combinações dessas usando as condições “e”, “ou” ou “não”

Adicionar e transformar colunas

As seguintes funções M adicionam ou transformam colunas: Table.AddColumn, Table.TransformColumns, Table.replacevalue, Table.DuplicateColumn. Abaixo estão as funções de transformação com suporte.

Mesclar/unir tabelas

  • Power Query gerará uma junção aninhada (Table.NestedJoin; os usuários também podem gravar manualmente Table.AddJoinColumn). Os usuários devem expandir a coluna de junção aninhada para uma junção não aninhada (Table.ExpandTableColumn, sem suporte em nenhum outro contexto).
  • A função M Table.Join pode ser gravada diretamente para evitar a necessidade de uma etapa de expansão adicional, mas o usuário deve garantir que não haja nenhum nome de coluna duplicado entre as tabelas unidas
  • Tipos de junção com suporte: Inner, LeftOuter, RightOuter, FullOuter
  • Value.Equals e Value.NullableEquals têm suporte como comparadores principais de igualdade

Agrupar por

Use Table.Group para agregar valores.

Classificação

Use Table.Sort para classificar valores.

Reduzir linhas

Manter e remover linhas superiores, manter o intervalo (funções M correspondentes, somente contagens de suporte, não condições: Table.FirstN, Table.Skip, Table.RemoveFirstN, Table.Range, Table.MinN, Table.MaxN)

Funções conhecidas sem suporte

Função Status
Table.PromoteHeaders Não há suporte. O mesmo resultado pode ser obtido com a configuração “Primeira linha como cabeçalho” no conjunto de dados.
Table.CombineColumns Esse é um cenário comum que não tem suporte direto, mas pode ser obtido com a adição de uma nova coluna que concatena duas colunas especificadas. Por exemplo, Table.AddColumn(RemoveEmailColumn, "Name", each [FirstName] & " " & [LastName])
Table.TransformColumnTypes Isso tem suporte na maioria dos casos. Os seguintes cenários não são aceitos: transformação de cadeia de caracteres para tipo de moeda, transformação de cadeia de caracteres para tipo de hora, transformação de cadeia de caracteres para tipo de porcentagem e transformação com localidade.
Table.NestedJoin Apenas fazer uma junção resultará em um erro de validação. As colunas devem ser expandidas para que funcionem.
Table.RemoveLastN Não há suporte para a remoção de linhas inferiores.
Table.RowCount Sem suporte, mas pode ser obtido com a adição de uma coluna personalizada contendo o valor 1 e, em seguida, a agregação dessa coluna com List.Sum. Table.Group é compatível.
Tratamento de erros em nível de linha No momento, não há suporte para o tratamento de erros em nível de linha. Por exemplo, para filtrar valores não numéricos de uma coluna, uma abordagem será transformar a coluna de texto em um número. Todas as células, que não forem transformadas estarão em um estado de erro e precisarão ser filtradas. Esse cenário não é possível em M expandido.
Table.Transpose Sem suporte

Soluções alternativas de script M

SplitColumn

Vejas abaixo uma alternativa para a divisão por comprimento e por posição

  • Table.AddColumn(Source, "First characters", each Text.Start([Email], 7), type text)
  • Table.AddColumn(#"Inserted first characters", "Text range", each Text.Middle([Email], 4, 9), type text)

Essa opção pode ser acessada na opção Extrair na faixa de opções

Power Query Adicionar Coluna

Table.CombineColumns

  • Table.AddColumn(RemoveEmailColumn, "Name", each [FirstName] & " & [LastName])

Tabelas dinâmicas

  • Selecione a transformação Dinamizar no editor do PQ e selecione a coluna dinâmica

Power Query Pivot Common

  • Em seguida, selecione a coluna de valor e a função de agregação

Power Query Seletor Dinâmico

  • Ao clicar em OK, você verá os dados no editor atualizados com os valores dinâmicos
  • Você também verá uma mensagem de aviso de que a transformação pode não ter suporte
  • Para corrigir esse aviso, expanda a lista dinâmica manualmente usando o editor PQ
  • Selecione Editor Avançado opção na faixa de opções
  • Expanda manualmente a lista de valores dinâmicos
  • Substitua List.Distinct() pela lista de valores como este:
#"Pivoted column" = Table.Pivot(Table.TransformColumnTypes(#"Changed column type 1", {{"genres", type text}}), {"Drama", "Horror", "Comedy", "Musical", "Documentary"}, "genres", "Rating", List.Average)
in
  #"Pivoted column"

Formatar colunas de data/hora

Para definir o formato de data/hora ao usar Power Query ADF, siga estes conjuntos para definir o formato.

Power Query Tipo de Alteração

  1. Selecione a coluna na interface do usuário do Power Query e escolha Alterar Tipo > Data/Hora
  2. Você verá uma mensagem de aviso
  3. Abra Editor Avançado e altere TransformColumnTypes para TransformColumns. Especifique o formato e a cultura com base nos dados de entrada.

Editor do Power Query

#"Changed column type 1" = Table.TransformColumns(#"Duplicated column", {{"start - Copy", each DateTime.FromText(_, [Format = "yyyy-MM-dd HH:mm:ss", Culture = "en-us"]), type datetime}})

Saiba como criar um Power Query de estrutura de dados no ADF.