天天看點

Table.FirstN 按組顯示項目名稱案例

作者:可樂之濱

本期案例前後轉換效果如下:

Table.FirstN 按組顯示項目名稱案例

解題套路

1.Table.FirstN

解題思路:添加新列,對項目類型進行判斷填列。

當為數字的時候,先擷取目前行在源表中的位置n,删除n+1行,這樣就獲得了除目前行以後的行。接着隻要擷取下一個數字之前的行,深化合并,就是所需要的結果。

Table.FirstN 按組顯示項目名稱案例
Table.AddColumn(源,"result",each if [item] is number then Text.Combine(Table.FirstN(Table.Skip(源,Table.PositionOf(源,_)+1),each [item] is text)[item],"-") else "")           

2.List.FirstN

解題思路:改思路同上,差別在于,前一個是擷取後再深化,後一個則是先深化再擷取。

Table.FirstN 按組顯示項目名稱案例
Table.AddColumn(源,"result",each if [item] is number then Text.Combine(List.FirstN(Table.Skip(源,Table.PositionOf(源,_)+1)[item],each _ is text),"-") else "")           

3.Table.Group

解題思路:使用分組函數的第五參數進行分組,對分組後的子表添加新列,對首行進行指派即可,值為項目列直接深化,去除首項後合并。

Table.FirstN 按組顯示項目名稱案例
Table.Combine(Table.Group(源,"item",{"a",each Table.AddColumn(_,"result",(x)=>if x[item] is number then Text.Combine(List.Skip([item]),"-") else "")},0,(x,y)=>Number.From(y is number))[a])           

4.List.Accumulate

解題思路:考慮到需要合并後續的資料,可以先對轉換後的清單進行逆序排列,這樣對于不符合要求的就可以直接進行合并處理,最後對結果再進行逆序排列即可。

Table.FirstN 按組顯示項目名稱案例
Table.FromRows(List.Reverse(List.Accumulate(List.Reverse(Table.ToRows(源)),{{},{}},(x,y)=>if y{0} is number then {x{0}&{y&{Text.Combine(List.Reverse(x{1}),"-")}},{}} else {x{0}&{y&{""}},x{1}&y}){0}),{"item","result"})           

以上是本期内容。

繼續閱讀