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
- Seleção: Table.SelectColumns
- Remoção: Table.RemoveColumns
- Renomeando: Table.RenameColumns, Table.PrefixColumns, Table.TransformColumnNames
- Reordenando: Table.ReorderColumns
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
- 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.
- Aritmética numérica
- Concatenação de texto
- Aritmética de Data e Hora (operadores aritméticos, Date.AddDays, Date.AddMonths, Date.AddQuarters, Date.AddWeeks, Date.AddYears)
- As durações podem ser usadas para aritmética de data e hora, mas devem ser transformadas em outro tipo antes de serem gravadas em um coletor (operadores aritméticos, #duration, Duration.Days, Duration.Hours, Duration.Minutes, Duration.Seconds, Duration.TotalDays, Duration.TotalHours, Duration.TotalMinutes, Duration.TotalSeconds)
- A maioria das funções numéricas padrão, científicas e trigonométricas (Todas as funções em Operações, Arredondamento e Trigonometria, exceto Número.Fatorial, Número.Permutações e Número.Combinações)
- Substituição (Replacer.ReplaceText, Replacer.ReplaceValue, Text.Replace, Text.Remove)
- Extração de texto posicional (Text.PositionOf, Text.Length, Text.Start, Text.End, Text.Middle, Text.ReplaceRange, Text.RemoveRange)
- Formatação de texto básica (Text.Lower, Text.Upper, Text.Trim/Start/End, Text.PadStart/End, Text.Reverse)
- Funções Data/Hora (Data.Dia, Data.Mês, Data.Ano Hora, Hora.Minuto, Hora.Minuto, Hora.Segundo, Data.DiadeSemana, Data.DiadeAno, Data.DiasEmMês)
- Se as expressões (mas as ramificações devem ter tipos correspondentes)
- Filtros de linha como uma coluna lógica
- Constantes de número, texto, lógica, data e data/hora
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.
- Deve ser usado com uma função de agregação
- Funções de agregação suportadas: List.Sum, List.Count, List.Average, List.Min, List.Max, List.StandardDeviation, List.First, List.Last
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
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ô
- Em seguida, selecione a coluna de valor e a função de agregação
- 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.
- Selecione a coluna na IU do Power Query e selecione Alterar Data/Hora do Tipo >
- Você verá uma mensagem de aviso
- Abra o Editor Avançado e mude
TransformColumnTypes
paraTransformColumns
. Especifique o formato e a cultura com base nos dados de entrada.
#"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}})
Conteúdos relacionados
Saiba como criar uma disputa de dados do Power Query no ADF.