如何将上图“收入”列中的圈点的这三个数值去掉?
这三个值合并查询后多出来的。合并之前只有一个,在左边数据与右边的数据合并后各变成了二个。
如何将上图“收入”列中的圈点的这三个数值去掉?
这三个值合并查询后多出来的。合并之前只有一个,在左边数据与右边的数据合并后各变成了二个。
添加索引列=Table.AddIndexColumn(源, "索引". 0, 1)
转换列=Table.TransformColumns(添加索引列, {"索引", each try if 源[客户]{}=源[客户]{-1} then null else 源[收入]{_} otherwise 源[收入]{0}})
最后删除列,重命名列,重排序列,即可.
fyi...
1、向下填充的逆过程可以参考pqfans文章:https://pqfans.com/1682.html;
2、也可以试试这个。在得到表的那一步的基础上,添加一步,并把以下公式中的“表”字变成那一步的“步骤名"
= Table.FromColumns(
List.ReplaceRange( Table.ToColumns(表),2,1, //此处可以把收入对应的索引值2做成动态的List.PositionOf(Table.ColumnNames(表),"收入")
{ List.Accumulate( 表[收入], //深化出收入这一列,用acc实现filldown的反操作
{{},""},
(s,c)=>if c=s{1}
then {s{0}&{null},c}
else {s{0}&{c},c} ) {0} } )
,Table.ColumnNames(表) )
感觉还是加索引的方法好一些,如果 客户 不是两个两个成对出现,迭代的方法就会出错
二位提供的解法还是没搞出来,仍在测试中。
不过,施神的倒是很快有结果了;因为我这数据是6列,施神展示的数据是2列,中途在Table.ColumnNames(源)环节吃了一会螺丝,不过后面发现了问题所在。
其中收入全部为719且客户不是成对出现,就全部为空了
哈哈,知道了,没整到位。谢谢指正!!试试这个吧,请斧正。
先把整个表Table.ToRecords,然后根据客户和收入为判断条件进行迭代。
变 = List.Accumulate( Table.ToRecords(源),
{ {},"","" },
(s,c)=> if s{1}=c[客户] and s{2}=c[收入]
then { s{0}&{c&[客户=c[客户],收入=null]},c[客户],c[收入] }
else { s{0}&{c&[客户=c[客户],收入=c[收入]]},c[客户],c[收入] } ) {0},
果 = Table.FromRecords(变)