Skip to content

Instantly share code, notes, and snippets.

@lcorbasson
Last active March 17, 2025 15:57
Show Gist options
  • Select an option

  • Save lcorbasson/eb7595175d4d19e5bd0120c7e9a99267 to your computer and use it in GitHub Desktop.

Select an option

Save lcorbasson/eb7595175d4d19e5bd0120c7e9a99267 to your computer and use it in GitHub Desktop.
let
fullyExpandTableColumn = (source_table as table, column_name as text, optional prefix as nullable text, optional overwrite_existing_columns as logical) as table =>
let
calculatedPrefix = if prefix <> null then prefix else column_name,
calculatedOverwrite = if overwrite_existing_columns <> null then overwrite_existing_columns else false,
prefixAndDot = if calculatedPrefix <> "" then calculatedPrefix & "." else calculatedPrefix,
combinedTable = Table.Combine(List.Select(Table.Column(source_table, column_name), each _ <> null)),
columnNames = Table.ColumnNames(combinedTable),
sortedColumnNames = List.Sort(columnNames),
prefixedSortedColumnNames = List.Transform(sortedColumnNames, each prefixAndDot & _),
keptColumnsTable = if calculatedOverwrite then Table.RemoveColumns(source_table, prefixedSortedColumnNames, MissingField.Ignore) else source_table,
expandedTablesTable = Table.ExpandTableColumn(keptColumnsTable, column_name, sortedColumnNames, prefixedSortedColumnNames)
in
expandedTablesTable
in
fullyExpandTableColumn
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment