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

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Gorjeta

Experimente o Data Factory no Microsoft Fabric, uma solução de análise tudo-em-um para empresas. O Microsoft Fabric abrange tudo, desde a movimentação de dados até ciência de dados, análises em tempo real, business intelligence e relatórios. Saiba como iniciar uma nova avaliação gratuitamente!

O Agrupamento de Dados no Azure Data Factory permite-lhe preparar e discutir dados ágeis sem código à escala da nuvem traduzindo scripts do Power Query M em scripts de Fluxo de Dados. O ADF integra-se com o Power Query Online e disponibiliza funções do Power Query M para disputa de dados através da execução do Spark utilizando a infraestrutura do Spark de fluxo de dados.

Atualmente, nem todas as funções do Power Query M são suportadas para disputa de dados, apesar de estarem disponíveis durante a criação. 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.

Segue-se uma lista das funções do Power Query M suportadas.

Gestão de Colunas

Filtragem de linhas

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

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

  • O Power Query gerará uma associaçã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.

Classificação

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: transformação de cadeia de caracteres em tipo de moeda, transformação de cadeia de caracteres em tipo de tempo, transformação de cadeia de caracteres em tipo de porcentagem e tranfoming 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 Add Column

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 Common

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

Power Query Pivot Selector

  • 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 faixa de opções
  • 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 de data/hora ao utilizar o Power Query ADF, siga estes conjuntos para definir o formato.

Power Query Change Type

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

Power Query Editor

#"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 uma disputa de dados do Power Query no ADF.