Partilhar via


Funções de transformação no Power Query para organização de dados

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Gorjeta

Data Factory em Microsoft Fabric é a próxima geração de Azure Data Factory, com uma arquitetura mais simples, IA incorporada e novas funcionalidades. Se és novo na integração de dados, começa pelo Fabric Data Factory. As cargas de trabalho existentes do ADF podem atualizar para o Fabric para aceder a novas capacidades em ciência de dados, análise em tempo real e relatórios.

O Data Wrangling em Azure Data Factory permite fazer preparação e wrangling ágil de dados sem código à escala cloud, traduzindo scripts Power Query M para Fluxo de Dados script. O ADF integra-se com Power Query Online e disponibiliza funções Power Query M para manipulação de dados via execução Spark usando a infraestrutura de fluxo de dados Spark.

Atualmente, nem todas as funções do Power Query M são suportadas para manipulação de dados, apesar de estarem disponíveis durante a autoria. Ao criar seus mash-ups, você receberá a seguinte mensagem de erro se uma função não for suportada:

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

Abaixo está uma lista das funções suportadas do Power Query M.

Gestão 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 /
  • Contenção de texto usando Text.Contains, Text.StartsWith ou Text.EndsWith
  • Intervalos de datas, incluindo todas as funções de data 'IsIn')
  • Combinações destas condições de utilização e, ou não

Adicionando e transformando 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 suportadas.

Mesclagem/junção de tabelas

  • Power Query gera uma junção aninhada (Table.NestedJoin; os utilizadores também podem escrever manualmente Table.AddJoinColumn). Os usuários devem então expandir a coluna de junção aninhada em uma associação não aninhada (Table.ExpandTableColumn, sem suporte em nenhum outro contexto).
  • A função M Table.Join pode ser escrita diretamente para evitar a necessidade de uma etapa de expansão adicional, mas o usuário deve garantir que não haja nomes de colunas duplicados entre as tabelas unidas
  • Tipos de junção suportados: Inner, LeftOuter, RightOuter, FullOuter
  • Value.Equals e Value.NullableEquals são suportados como comparadores de igualdade de chave

Agrupar por

Use Table.Group para agregar valores.

Ordenar

Use Table.Sort para classificar valores.

Redução de linhas

Manter e Remover Topo, Manter Intervalo (funções M correspondentes, suportando apenas contagens, não condições: Table.FirstN, Table.Skip, Table.RemoveFirstN, Table.Range, Table.MinN, Table.MaxN)

Funções conhecidas não suportadas

Function Status
Table.PromoteHeaders Não suportado. O mesmo resultado pode ser alcançado definindo "Primeira linha como cabeçalho" no conjunto de dados.
Table.CombineColumns Este é um cenário comum que não é suportado diretamente, mas pode ser alcançado adicionando uma nova coluna que concatena duas colunas específicas. Por exemplo, Table.AddColumn(RemoveEmailColumn, "Name", cada [FirstName] & " " & [LastName])
Table.TransformColumnTypes Isso é suportado na maioria dos casos. Não há suporte para os seguintes cenários: transformar cadeia de caracteres em tipo de moeda, transformar cadeia de caracteres em tipo de tempo, transformar cadeia de caracteres em tipo de porcentagem e transformar com localidade.
Table.NestedJoin Apenas fazer uma junção resultará em um erro de validação. As colunas devem ser expandidas para que funcione.
Table.RemoveLastN Não há suporte para remover linhas inferiores.
Table.RowCount Não há suporte, mas pode ser obtido adicionando uma coluna personalizada contendo o valor 1 e, em seguida, agregando essa coluna com List.Sum. Table.Group é suportado.
Tratamento de erros ao nível da linha Atualmente, 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 seria transformar a coluna de texto em um número. Todas as células que não conseguirem se transformar estarão em um estado de erro e precisarão ser filtradas. Este cenário não é possível em M escalonado.
Tabela.Transpor Não suportado

Soluções alternativas de script M

SplitColumn

Uma alternativa para dividir por comprimento e por posição está listada abaixo

  • Table.AddColumn(Fonte, "Primeiros caracteres", cada Text.Start([Email], 7), digite texto)
  • Table.AddColumn(#"Inseridos primeiros caracteres", "Intervalo de texto", cada Text.Middle([Email], 4, 9), digite texto)

Esta opção pode ser acessada a partir da opção Extrair na faixa de opções

Power Query Adicionar Coluna

Table.CombineColumns

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

Pivôs

  • Selecione Transformação de pivô no editor PQ e selecione sua coluna de pivô

Power Query Pivot Comum

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

Power Query Seletor de Pivô

  • Ao clicar em OK, você verá os dados no editor atualizados com os valores dinâmicos
  • Você também verá uma mensagem de aviso informando que a transformação pode não ser suportada
  • Para corrigir esse aviso, expanda a lista dinâmica manualmente usando o editor PQ
  • Selecione a opção Editor Avançado na fita
  • Expandir a lista de valores dinâmicos manualmente
  • Substitua List.Distinct() pela lista de valores como esta:
#"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"

Formatação de colunas de data/hora

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

Power Query Alterar Tipo

  1. Selecione a coluna na interface Power Query e escolha Alterar Tipo > Data/Hora
  2. Você verá uma mensagem de aviso
  3. Abre Editor Avançado e muda 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}})

Aprenda a criar um Power Query de gestão de dados no ADF.