我知道这是一个老问题,当时我的解决方案可能行不通。但是当我在 PowerBI Desktop 中尝试时,这个 PQFL 效果很好。
let
RecordKey = (t,n) => Table.Range(t,n,1){0}[Key],
NeedsMerged = (t,n) =>
try
if RecordKey(t,n+1) = "ZZ" then true else false
otherwise false,
MergeWithNext = (t,n) =>
if NeedsMerged(t,n) then
let
thisRow = Table.Range(t, n, 1),
nextRow = Table.Range(t, n+1, 1)
in
{
true,
Table.Range(t, 0, n) &
Table.TransformColumns( thisRow, {"Data", (_) => _ & nextRow{0}[Data] } ) &
Table.Range(t, n + 2)
}
else {false,t},
DoNeededMerging = (t,n) =>
if Table.RowCount(t) < n then t
else
let
res = MergeWithNext(t,n),
resp = res{0},
tbl = res{1}
in
if resp then
@DoNeededMerging(tbl,n)
else
@DoNeededMerging(tbl,n+1),
Filename = "C:\the_data_file.csv",
DataTable = Table.FromList(Lines.FromText(Text.FromBinary(File.Contents(Filename))), Splitter.SplitTextByDelimiter(","), {"Key","Data"}, null, ExtraValues.List),
DataTable2 = DoNeededMerging( DataTable , 0)
in
DataTable2