Skip to content

Instantly share code, notes, and snippets.

@bjulius
bjulius / gist:483330cdcbdec6920159cb2533e9de3d
Created January 14, 2023 05:28
Excel BI Power Query Challenge 43 – Brian Julius Solution
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
AddIndex = Table.AddIndexColumn(Source, "Index", 1, 1, Int64.Type),
UnpivotOther = Table.UnpivotOtherColumns(AddIndex, {"Name", "Date", "Hours", "Index"}, "Attribute", "Value"),
Group = Table.Group(UnpivotOther, {"Index"}, {{"Count", each Table.RowCount(_), Int64.Type}, {"All", each _, type table [Name=text, Date=datetime, Hours=number, Index=number, Attribute=text, Value=text]}}),
Expand = Table.ExpandTableColumn(Group, "All", {"Name", "Date", "Hours", "Attribute", "Value"}, {"Name", "Date", "HoursX", "Attribute", "Value"}),
AddHours = Table.AddColumn(Expand, "Hours", each [HoursX]/[Count]),
RemoveCols = Table.RemoveColumns(AddHours,{"Index", "Count", "HoursX"}),
ReType = Table.TransformColumnTypes(RemoveCols,{{"Date", type date}}),
AddIndex0 = Table.AddIndexColumn(ReType, "Index", 0, 1, Int64.Type),
@bjulius
bjulius / gist:8e71fde3e82574d278b9b06093583905
Created February 1, 2023 03:05
C# Script to Automatically Create MIN, MAX, AVERAGE, MEDIAN and SUM DAX Measures for all Selected Columns
// Creates a MIN, MAX, SUM, AVERAGE and MEDIAN measure for every currently selected column
foreach(var c in Selected.Columns)
{
var newMeasure = c.Table.AddMeasure(
"Min of " + c.Name, // Name
"MIN(" + c.DaxObjectFullName + ")", // DAX expression
c.DisplayFolder); // Display Folder
var newMeasure2 = c.Table.AddMeasure(
"Max of " + c.Name, // Name
@bjulius
bjulius / gist:971d8d386183a48d3c6132986704d7f4
Created February 4, 2023 02:53
C# Script to Automatically Create COUNTROWS Measures on Selected Tables
/*
* Title: Auto-generate COUNTROWS measures from tables
*
* Author: Edgar Walther, twitter.com/edgarwalther
*
* This script, when executed, will loop through the currently selected tables,
* creating one COUNTROWS measure for each table.
*/
// Loop through all currently selected tables:
@bjulius
bjulius / gist:d3ed910f121d83462eb793e54f5df0d7
Last active February 6, 2023 08:47
Excel BI Power Query Challenge #50 – Brian Julius Solution
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
Retype = Table.TransformColumnTypes(Source,{{"Date", type date}}),
Group = Table.Group(Retype, {"Store"}, {"All", each [Date]}),
AddDateLisit = Table.AddColumn(Group, "DateList", each [
a = List.Min( [All] ),
b = List.Max ( [All] ),
c = Number.From( b ) - Number.From( a ) + 1,
d = List.Dates( a, c, #duration(1,0,0,0))
][d]),
@bjulius
bjulius / gist:a29d0bb981e5f038b748a43e55c50bbe
Created February 7, 2023 05:23
Excel BI Excel/Power Query Challenge 125 - Brian Julius Solution
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
MorseTable =
[
Source = Table.ToColumns( Excel.CurrentWorkbook(){[Name="Table3"]}[Content]),
Letters = List.Union( {Source{0}, Source{2}, Source{4}}),
Code = List.Union({ Source{1}, Source{3}, Source{5}}),
TabFromCols = Table.FromColumns({Letters, Code}, {"Letters", "Code"}),
Replace = Table.ReplaceValue(TabFromCols,null," ",Replacer.ReplaceValue,{"Letters"}),
Replace2 = Table.ReplaceValue(Replace,null,"/",Replacer.ReplaceValue,{"Code"}),
@bjulius
bjulius / gist:52f74c7229e2684923358ae7854c2de6
Created February 12, 2023 15:33
Excel BI Excel/Power Query Challenge 127 - Brian Julius Solution
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
AddToList = Table.RemoveColumns( Table.DuplicateColumn( Table.AddColumn(Source, "StripList", each Text.ToList([LSTRIP Chars])), "Input String", "OriginalString"), "LSTRIP Chars"),
AddOrigToList = Table.AddColumn(AddToList, "OrigToList", each Text.ToList([OriginalString] )),
Expand = Table.ExpandListColumn(AddOrigToList, "OrigToList"),
AddInStriplist = Table.AddColumn(Expand, "InStripList", each if List.Contains( [StripList], [OrigToList]) then "Strip" else "Keep"),
Remove = Table.SelectColumns(AddInStriplist,{"InStripList", "Input String"}),
Reorder = Table.ReorderColumns(Remove,{"Input String", "InStripList"}),
GroupKindLocal = Table.Group(Reorder, {"Input String", "InStripList"}, {{"Remove", each Table.RowCount(_), Int64.Type}}, GroupKind.Local),
Regroup = Table.Group(GroupKindLocal, {"Input String"}, {{"All", each _, type table [Input String=text, InStripList=text, Remove=number]}}),
@bjulius
bjulius / gist:a82af9134a2ec6d714422f94c1c214d7
Created February 15, 2023 06:35
Excel BI Challenge 131 - Brian Julius Solution
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
StringTable = [
StrTable = Table.AddColumn( Table.SelectColumns( Source, "Masked String"), "Chars", each Text.ToList( [#"Masked String"] )),
AddPositions = Table.AddColumn(StrTable, "Position", each List.Positions([Chars])),
AddZipPositions = Table.RemoveColumns( Table.AddColumn(AddPositions, "AsteriskPositions", each List.Zip( {[Chars], [Position] })), {"Chars", "Position"}),
Expand = Table.ExpandListColumn(AddZipPositions, "AsteriskPositions"),
Extract = Table.TransformColumns(Expand, {"AsteriskPositions", each Text.Combine(List.Transform(_, Text.From), ", "), type text}),
Split = Table.SplitColumn(Extract, "AsteriskPositions", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), {"AsteriskPositions.1", "AsteriskPositions.2"}),
@bjulius
bjulius / gist:d7cac165aeabc3df6ea65365622ac168
Last active February 20, 2023 05:20
Excel BI Power Query Challenge 54 Brian Julius Solution
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
ExtractDate = Table.TransformColumns(Source,{{"Date", DateTime.Date, type date}}),
CreateCrossProd = Table.AddColumn(ExtractDate, "Custom", each
[
ProductList = List.Distinct( ExtractDate[Product] ),
ActionList = List.Distinct( ExtractDate[Action]),
MinDate = List.Min( ExtractDate[Date] ),
MaxDate = List.Max( ExtractDate[Date] ),
Products = {"Fruit", "Vegetable", "Meat"},
@bjulius
bjulius / gist:07e55d7079cd8c4a33f9df124e88550c
Created February 20, 2023 05:56
Excel BI Excel/PQ Challenge 134 - Brian Julius Solution
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
DupeCol = Table.DuplicateColumn(Source, "Animals", "Animals2"),
Split = Table.ExpandListColumn(Table.TransformColumns(DupeCol, {{"Animals2", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Animals2"),
#"Added Index" = Table.AddIndexColumn(Split, "SortOrder", 1, 1, Int64.Type),
Trim = Table.TransformColumns(#"Added Index",{{"Animals2", Text.Trim, type text}}),
Group = Table.Group(Trim, {"Animals", "Animals2"}, {{"All", each _, type table [Animals=text, Animals2=text]}, {"Count", each Table.RowCount(_), Int64.Type}}),
AddIdx = Table.AddColumn(Group, "AddIdx", each Table.AddIndexColumn( [All], "Index", 1, 1)),
Expand = Table.ExpandTableColumn(AddIdx, "AddIdx", {"Animals2", "Index", "SortOrder"}, {"Animals2.1", "Index", "SortOrder"}),
Sort = Table.Sort(Expand,{{"SortOrder", Order.Ascending}}),
@bjulius
bjulius / gist:4d70cbf13f976499995d2cd1fb3fba47
Created February 21, 2023 08:37
Excel BI Challenge 135 – Brian Julius Solution
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
Dupe = Table.DuplicateColumn(Source, "String", "String2"),
#"SplitBy-" = Table.ExpandListColumn(Table.TransformColumns(Dupe, {{"String2", Splitter.SplitTextByDelimiter("-", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "String2"),
SplitByCharTrans = Table.SplitColumn(#"SplitBy-", "String2", Splitter.SplitTextByCharacterTransition({"0".."9"}, (c) => not List.Contains({"0".."9"}, c))),
Add1stPosCheck = Table.AddColumn(SplitByCharTrans, "FirstPos", each if Text.StartsWith( [String], [String2.1]) then 0 else 1),
Filter = Table.SelectRows(Add1stPosCheck, each ([FirstPos] = 1)),
ReType = Table.TransformColumnTypes(Filter,{{"String2.1", Int64.Type}}),
#"Multiply-1" = Table.AddColumn(ReType, "Multiplication", each [String2.1] * -1, type number),
GroupSum = Table.Group(#"Multiply-1", {"String"}, {{"Answer", each List.Sum([Multiplication]), type number}}),