Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
89 views

(Power Query) - Cheatsheet

Uploaded by

bapolin598
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
89 views

(Power Query) - Cheatsheet

Uploaded by

bapolin598
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 7

[ Power Query ] #_cheatsheet />

Loading Data

● Load from CSV: =


Csv.Document(File.Contents("path/to/file.csv"),[Delimiter=",",
Columns=5, Encoding=1252, QuoteStyle=QuoteStyle.None])
● Load from Excel: =
Excel.Workbook(File.Contents("path/to/file.xlsx"), null, true)
● Load from JSON: = Json.Document(File.Contents("path/to/file.json"))
● Load from Web: = Web.Contents("http://example.com")
● Load from Folder: = Folder.Files("path/to/folder")
● Load from SQL Database: = Sql.Database("server", "database")

Data Transformation

● Remove Columns: = Table.RemoveColumns(Source,{"Column1",


"Column2"})
● Rename Columns: = Table.RenameColumns(Source,{{"oldName",
"newName"}})
● Change Data Type: = Table.TransformColumnTypes(Source,{{"Column",
Int64.Type}})
● Filter Rows: = Table.SelectRows(Source, each [Column] > 100)
● Sort Rows: = Table.Sort(Source,{{"Column", Order.Ascending}})
● Add Custom Column: = Table.AddColumn(Source, "Custom", each
[Column1] + [Column2])
● Merge Queries: =
Table.NestedJoin(Source1,{"KeyColumn"},Source2,{"KeyColumn"},"NewCo
lumnName",JoinKind.Inner)
● Append Queries: = Table.Combine({Source1, Source2})
● Group Rows: = Table.Group(Source, {"KeyColumn"}, {{"NewColumn",
each Table.RowCount(_), type number}})
● Pivot Columns: = Table.Pivot(Source,
List.Distinct(Source[ColumnToPivot]), "ColumnToPivot",
"ValueColumn")
● Unpivot Columns: = Table.UnpivotOtherColumns(Source, {"Column1",
"Column2"}, "Attribute", "Value")

By: Waleed Mousa


● Extract Text Before Delimiter: = Table.TransformColumns(Source,
{"Column", each Text.BeforeDelimiter(_, "-"), type text})
● Extract Text After Delimiter: = Table.TransformColumns(Source,
{"Column", each Text.AfterDelimiter(_, "-"), type text})
● Split Column by Delimiter: = Table.SplitColumn(Source, "Column",
Splitter.SplitTextByDelimiter("-", QuoteStyle.Csv))
● Replace Values: = Table.ReplaceValue(Source, "oldValue",
"newValue", Replacer.ReplaceText, {"Column"})
● Fill Down: = Table.FillDown(Source,{"Column"})
● Fill Up: = Table.FillUp(Source,{"Column"})
● Trim Text: = Table.TransformColumns(Source,{{"Column", Text.Trim,
type text}})
● Make Uppercase: = Table.TransformColumns(Source,{{"Column",
Text.Upper, type text}})
● Make Lowercase: = Table.TransformColumns(Source,{{"Column",
Text.Lower, type text}})
● Add Prefix: = Table.TransformColumns(Source,{{"Column", each
"Prefix_" & _, type text}})
● Add Suffix: = Table.TransformColumns(Source,{{"Column", each _ &
"_Suffix", type text}})
● Round Numbers: = Table.TransformColumns(Source,{{"Column",
Number.Round, type number}})
● Remove Duplicates: = Table.Distinct(Source, {"Column"})
● Remove Blank Rows: = Table.SelectRows(Source, each not
List.IsEmpty(List.RemoveMatchingItems(Record.FieldValues(_), {null,
""})))
● Expand Table Column: = Table.ExpandTableColumn(Source, "Column",
{"SubColumn1", "SubColumn2"})
● Aggregate Column: = Table.AggregateTableColumn(Source, "Column",
{{"Column", List.Sum, "Sum"}})
● Parse JSON Column: = Table.TransformColumns(Source,{{"Column",
Json.Document, type any}})
● Calculate Age: = Table.AddColumn(Source, "Age", each
Date.Year(DateTime.LocalNow()) - Date.Year([BirthDate]))

Date Operations

By: Waleed Mousa


● Add Days: = Table.AddColumn(Source, "NewDate", each
Date.AddDays([DateColumn], 10))
● Subtract Days: = Table.AddColumn(Source, "NewDate", each
Date.AddDays([DateColumn], -10))
● Start of Month: = Table.AddColumn(Source, "StartOfMonth", each
Date.StartOfMonth([DateColumn]))
● End of Month: = Table.AddColumn(Source, "EndOfMonth", each
Date.EndOfMonth([DateColumn]))
● Difference Between Dates: = Table.AddColumn(Source, "DaysDiff",
each Duration.Days([DateColumn2] - [DateColumn1]))
● Extract Year: = Table.AddColumn(Source, "Year", each
Date.Year([DateColumn]))
● Extract Month: = Table.AddColumn(Source, "Month", each
Date.Month([DateColumn]))
● Extract Day: = Table.AddColumn(Source, "Day", each
Date.Day([DateColumn]))
● Day of Week: = Table.AddColumn(Source, "Weekday", each
Date.DayOfWeek([DateColumn]))
● Week of Year: = Table.AddColumn(Source, "WeekOfYear", each
Date.WeekOfYear([DateColumn]))

Text Operations

● Length of Text: = Table.AddColumn(Source, "Length", each


Text.Length([TextColumn]))
● Extract Substring: = Table.AddColumn(Source, "Substring", each
Text.Middle([TextColumn], start, length))
● Find Text Position: = Table.AddColumn(Source, "Position", each
Text.PositionOf([TextColumn], "searchText", 1, -1))
● Replace Text: =
Table.ReplaceValue(Source,"oldText","newText",Replacer.ReplaceText,
{"TextColumn"})
● Split Text at Position: = Table.SplitColumn(Source, "TextColumn",
Splitter.SplitTextByPositions({start, length}), {"Text1", "Text2"})
● Combine Text: = Table.CombineColumns(Source, {"TextColumn1",
"TextColumn2"}, Combiner.CombineTextByDelimiter(" ",
QuoteStyle.None), "CombinedColumn")

By: Waleed Mousa


Logical Operations

● Conditional Columns: = Table.AddColumn(Source, "Category", each if


[Column] > 100 then "High" else "Low")
● Switch Statement: = Table.AddColumn(Source, "Category", each
switch([Condition], 1, "One", 2, "Two", "Other"))
● Logical And: = Table.SelectRows(Source, each [Column1] > 100 and
[Column2] < 50)
● Logical Or: = Table.SelectRows(Source, each [Column1] > 100 or
[Column2] < 50)
● Logical Not: = Table.SelectRows(Source, each not [Column] =
"Value")

Advanced Data Transformation

● Custom Function Call: = Table.AddColumn(Source, "CustomResult",


each MyCustomFunction([Column]))
● Iterate Over Rows: = Table.TransformRows(Source, each [Column1] +
[Column2])
● Normalize Data: = Table.TransformColumns(Source,{{"Column", each (_
- List.Min(Source[Column])) / (List.Max(Source[Column]) -
List.Min(Source[Column])), type number}})
● Standardize Data: = Table.TransformColumns(Source,{{"Column", each
(_ - List.Average(Source[Column])) /
List.StandardDeviation(Source[Column]), type number}})
● Discretize Column: = Table.TransformColumns(Source,{{"Column", each
if _ > threshold then "Above" else "Below", type text}})

Data Aggregation

● Sum Column: = Table.Sum(Source, "Column")


● Average Column: = Table.Average(Source, "Column")
● Min and Max: = Table.Min(Source, "Column"), = Table.Max(Source,
"Column")
● Count Rows: = Table.RowCount(Source)
● Count Unique Values: = Table.Group(Source, {"Column"}, {{"Count",
each Table.RowCount(_), Int64.Type}})

By: Waleed Mousa


Query Management

● Reference Other Query: = #"Other Query Name"


● Set Data Type: = Table.TransformColumnTypes(Source,{{"Column", type
type}})
● Parameter Reference: = #"Parameter Name"
● Invoke Custom Function: = MyFunction(parameters)

Data Integration

● Merge Tables (Inner Join): = Table.Join(Source1, "KeyColumn",


Source2, "KeyColumn", JoinKind.Inner)
● Merge Tables (Left Outer Join): = Table.Join(Source1, "KeyColumn",
Source2, "KeyColumn", JoinKind.LeftOuter)
● Merge Tables (Full Outer Join): = Table.Join(Source1, "KeyColumn",
Source2, "KeyColumn", JoinKind.FullOuter)
● Append Queries: = Table.Combine({Source1, Source2})

Data Cleaning

● Remove Empty Rows: = Table.SelectRows(Source, each not


List.IsEmpty(List.RemoveMatchingItems(Record.FieldValues(_), {"",
null})))
● Remove Rows With Errors: = Table.RemoveRowsWithErrors(Source,
{"Column1", "Column2"})
● Replace Errors: = Table.ReplaceErrorValues(Source, {{"Column", 0}})
● Capitalize Each Word: = Table.TransformColumns(Source,{{"Column",
Text.Proper, type text}})
● Remove Non-Printable Characters: =
Table.TransformColumns(Source,{{"Column", Text.Select, type text}},
{"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"})

Time Series Operations

● Time Series Decomposition: = Time.SeriesDecompose(Source,


"DateColumn", "ValueColumn", MissingValue.ReplacementType.None)

By: Waleed Mousa


● Moving Average: = Table.AddColumn(Source, "MovingAverage", each
List.Average(List.FirstN(List.Skip(Source[ValueColumn], _[Index] -
windowSize), windowSize)))
● Cumulative Sum: = Table.AddColumn(Source, "CumulativeSum", each
List.Sum(List.FirstN(Source[ValueColumn], _[Index] + 1)))
● Year-to-Date Sum: = Table.AddColumn(Source, "YTD", each
List.Sum(Table.SelectRows(Source, each [DateColumn] <=
_[DateColumn] and Date.Year([DateColumn]) =
Date.Year(_[DateColumn]))[ValueColumn]))

Statistical Operations

● Standard Deviation: = Table.AddColumn(Source, "StdDev", each


List.StandardDeviation(Source[Column]))
● Variance: = Table.AddColumn(Source, "Variance", each
List.Variance(Source[Column]))
● Correlation: = Table.AddColumn(Source, "Correlation", each
Table.Correl(Source[Column1], Source[Column2]))
● Linear Regression Coefficients: = Table.LinearRegression(Source,
"ValueColumn", {"Predictor1", "Predictor2"})

Data Export

● Export to CSV: =
Csv.Write(Table.TransformColumnTypes(Source,{{"Column", type
text}}), "file.csv", [Delimiter=','])
● Export to Excel: =
Excel.Workbook(Table.TransformColumnTypes(Source,{{"Column", type
text}}))
● Write to JSON: = Json.FromValue(Source)
● Export to XML: = Xml.Tables(Source)

Custom M Functions

● Define a Custom Function: = (x as number) => x * x


● Invoke a Custom Function: = Table.AddColumn(Source, "Squared", each
CustomFunction([Column]))
● Parameterized Queries: = (param as text) => ...

By: Waleed Mousa


Performance Optimization

● Buffer Table: = Table.Buffer(Source)


● Buffer List: = List.Buffer(Source[Column])
● Disable Load: Right-click on a query in the Query Editor and
select "Enable Load" to toggle off.
● Query Folding: Ensuring steps are compatible with query folding
for database sources.

Debugging and Error Handling

● View Native Query: Right-click on a step against a database source


and select "View Native Query".
● Try Otherwise: = try Source otherwise errorRecord
● Add Error Column: = Table.AddColumn(Source, "Error", each try
[Column] otherwise "Error")

Miscellaneous

● Create a Date Table: = Calendar.DateRange(Date.From("start_date"),


Date.From("end_date"))
● Dynamic Date Filters: = Table.SelectRows(Source, each [DateColumn]
>= Date.From(DateTime.LocalNow()))
● Text to List: = Text.ToList("string")
● List to Text: = Text.Combine(List.Transform(Source, each
Text.From(_)), ",")
● Index Column: = Table.AddIndexColumn(Source, "Index", 0, 1,
Int64.Type)

By: Waleed Mousa

You might also like