Transformační funkce v Power Query pro transformaci dat
PLATÍ PRO: Azure Data Factory
Azure Synapse Analytics
Tip
Vyzkoušejte si službu Data Factory v Microsoft Fabric, řešení pro analýzy typu all-in-one pro podniky. Microsoft Fabric zahrnuje všechno od přesunu dat až po datové vědy, analýzy v reálném čase, business intelligence a vytváření sestav. Přečtěte si, jak začít používat novou zkušební verzi zdarma.
Transformace dat ve službě Azure Data Factory umožňuje provádět agilní přípravu a transformaci dat bez kódu v cloudovém měřítku překladem skriptů Power Query M
do Tok dat skriptu. ADF se integruje s Power Query Online a zpřístupňuje funkce Power Query M
pro transformaci dat prostřednictvím spouštění Sparku pomocí infrastruktury Sparku toku dat.
V současné době nejsou podporované všechny funkce Power Query M pro transformaci dat, i když jsou během vytváření dostupné. Při sestavování mash-ups se zobrazí výzva s následující chybovou zprávou, pokud funkce není podporovaná:
UserQuery : Expression.Error: The transformation logic is not supported as it requires dynamic access to rows of data, which cannot be scaled out.
Níže je seznam podporovaných funkcí Power Query M.
Správa sloupců
- Výběr: Table.SelectColumns
- Odebrání: Table.RemoveColumns
- Přejmenování: Table.RenameColumns, Table.PrefixColumns, Table.TransformColumnNames
- Změna pořadí: Table.ReorderColumns
Filtrování řádků
K filtrování následujících podmínek použijte M function Table.SelectRows :
- Rovnost a nerovnost
- Porovnání čísel, textu a kalendářních dat (ale ne DateTime)
- Číselné informace, jako je Číslo.IsEven Lichý/
- Zahrnutí textu pomocí Text.Contains, Text.StartsWith nebo Text.EndsWith
- Rozsahy kalendářních dat včetně všech funkcí IsIn Date)
- Kombinace těchto podmínek použití nebo nebo ne
Přidání a transformace sloupců
Následující funkce jazyka M přidávají nebo transformují sloupce: Table.AddColumn, Table.TransformColumns, Table.ReplaceValue, Table.DuplicateColumn. Níže jsou uvedené podporované transformační funkce.
- Číselná aritmetika
- Zřetězení textu
- Aritmetika data a času (Aritmetické operátory, Date.AddDays, Date.AddMonths, Date.AddQuarters, Date.AddWeeks, Date.AddYears)
- Doba trvání se dá použít pro aritmetickou aritmetickou hodnotu data a času, ale před zápisem do jímky (Aritmetické operátory, #duration, Duration.Days, Duration.Hours, Duration.Minutes, Duration.Seconds, Duration.TotalDays, Duration.Duration.TotalHours, Duration.TotalMinutes, Duration.TotalSeconds)
- Většina standardních, vědeckých a trigonometrických číselných funkcí (Všechny funkce v rámci operací, zaokrouhlování a trigonometries výjimkou Number.Factorial, Number.Permutations a Number.Combinations)
- Nahrazení (Replacer.ReplaceText, Replacer.ReplaceValue, Text.Replace, Text.Remove)
- Extrakce pozičního textu (Text.PositionOf, Text.Length, Text.Start, Text.End, Text.Middle, Text.ReplaceRange, Text.RemoveRange)
- Základní formátování textu (Text.Lower, Text.Upper, Text.Trim/Start/End, Text.PadStart/End, Text.Reverse)
- Funkce data a času (Date.Day, Date.Month, Date.YearTime.Hour, Time.Minute, Time.Second, Date.DayOfWeek, Date.DayOfYear, Date.DaysInMonth)
- Pokud výrazy (ale větve musí mít odpovídající typy)
- Filtry řádků jako logický sloupec
- Konstanty number, text, logical, date a datetime
Slučování/spojování tabulek
- Power Query vygeneruje vnořené spojení (Table.NestedJoin; uživatelé můžou také ručně zapisovat Table.AddJoinColumn). Uživatelé pak musí sloupec vnořeného spojení rozbalit do nevnořeného spojení (Table.ExpandTableColumn, nepodporuje se v žádném jiném kontextu).
- Funkce M function Table.Join se dá zapsat přímo, aby se zabránilo nutnosti dalšího rozšiřovacího kroku, ale uživatel musí zajistit, aby mezi připojenými tabulkami nebyly žádné duplicitní názvy sloupců.
- Podporované druhy spojení: inner, leftouter, rightouter, fullouter
- Hodnoty.Equals i Value.NullableEquals se podporují jako porovnávače rovnosti klíčů.
Seskupit podle
K agregaci hodnot použijte Table.Group .
- Musí se používat s agregační funkcí.
- Podporované agregační funkce: List.Sum, List.Count, List.Average, List.Min, List.Max, List.StandardDeviation, List.First, List.Last
Třídění
K řazení hodnot použijte Table.Sort .
Zmenšení řádků
Keep and Remove Top, Keep Range (odpovídající M functions, only supporting counts, not conditions: Table.FirstN, Table.Skip, Table.RemoveFirstN, Table.Range, Table.MinN, Table.MaxN)
Známé nepodporované funkce
Function | Stav |
---|---|
Table.PromoteHeaders | Nepodporováno Stejný výsledek lze dosáhnout nastavením prvního řádku jako záhlaví v datové sadě. |
Table.CombineColumns | Jedná se o běžný scénář, který není přímo podporovaný, ale dá se dosáhnout přidáním nového sloupce, který zřetězí dva sloupce. Například Table.AddColumn(RemoveEmailColumn, "Name", each [FirstName] & " " & [LastName]) |
Table.TransformColumnTypes | Tato funkce je ve většině případů podporovaná. Následující scénáře nejsou podporovány: transformace řetězce na typ měny, transformace řetězce na typ času, transformace řetězce na typ procent a transformace pomocí národního prostředí. |
Table.NestedJoin | Při pouhém spojení dojde k chybě ověření. Aby sloupce fungovaly, musí být rozbalené. |
Table.RemoveLastN | Odebrání dolních řádků se nepodporuje. |
Table.RowCount | Nepodporuje se, ale můžete toho dosáhnout přidáním vlastního sloupce obsahujícího hodnotu 1 a agregací tohoto sloupce pomocí List.Sum. Tabulka.Group je podporovaná. |
Zpracování chyb na úrovni řádků | Zpracování chyb na úrovni řádků se v současné době nepodporuje. Pokud chcete například vyfiltrovat nečíselné hodnoty ze sloupce, je jedním z přístupů transformace textového sloupce na číslo. Každá buňka, která se nepodaří transformovat, bude v chybovém stavu a musí být filtrovaná. Tento scénář není možné v M s horizontálním navýšením kapacity. |
Table.Transpone | Nepodporováno |
Alternativní řešení skriptů M
SplitColumn
Alternativní rozdělení podle délky a pozice je uvedeno níže.
- Table.AddColumn(Source; "First characters", each Text.Start([Email], 7); type text)
- Table.AddColumn(#"Vložené první znaky"; "Rozsah textu", každý Text.Middle([E-mail], 4, 9), text typu)
Tato možnost je přístupná z možnosti Extrahovat na pásu karet.
Table.CombineColumns
- Table.AddColumn(RemoveEmailColumn; "Name", each [FirstName] & " " & [LastName])
Čepy
- Výběr transformace kontingenční tabulky z editoru PQ a výběru sloupce kontingenční tabulky
- Dále vyberte sloupec hodnot a agregační funkci.
- Když kliknete na OK, zobrazí se data v editoru aktualizovaná o kontingenční hodnoty.
- Zobrazí se také zpráva s upozorněním, že transformace nemusí být podporována.
- Pokud chcete toto upozornění opravit, rozbalte kontingenční seznam ručně pomocí editoru PQ.
- Výběr možnosti Rozšířený editor na pásu karet
- Ruční rozbalení seznamu kontingenčních hodnot
- Nahraďte List.Distinct() seznamem hodnot, jako je tento:
#"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"
Formátování sloupců data a času
Pokud chcete nastavit formát data a času při použití ADF Power Query, nastavte formát podle těchto sad.
- Vyberte sloupec v uživatelském rozhraní Power Query a zvolte Změnit typ > data a času.
- Zobrazí se zpráva s upozorněním
- Otevřete Rozšířený editor a přejděte
TransformColumnTypes
naTransformColumns
. Zadejte formát a jazykovou verzi na základě vstupních dat.
#"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}})