Power Query - 复杂的自定义列

Posted

技术标签:

【中文标题】Power Query - 复杂的自定义列【英文标题】:Power Query - complicated custom column 【发布时间】:2019-07-03 14:36:01 【问题描述】:

我需要创建一个自定义列,它查看 1 列 a,并基于 a,从 b 中修剪一个值并将该值放入 c

B 部分:现在如果 a 中的值不符合我的条件,那么它会查看列 d 以查找它是否与前一行相同,如果是,则输入 c 的值从上一行到新行。

我现在有一部分:

if Text.End ([SAP segment name],3) = "K09"
then Text.Trim (Text.Start([Application data],35)) else ""

我需要 B 部分的帮助

【问题讨论】:

【参考方案1】:

您的公式 [B3=IF(RIGHT(R3,3)="K09",TRIM(LEFT(W3,35)), B2) ] 将为每一行返回一个错误,直到 R 第一次以 K09 结束。但是,如果那是您想要的,那么

let Source = Table.FromList(
[SAP segment name="L04K29", Application data ="ABCDEFGHIJKLMNOP12345VWXYZabcdefghijklmnopqrstuvwxyz"] ,  
[SAP segment name="R03L09", Application data ="abcdefghijklmnop67890qrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"] ,  
[SAP segment name="L04K09", Application data ="ABCDEFGHIJKLMNOP987654QRSTUVWXYZabcdefghijklmnopqrstuvwxyz"] ,  
[SAP segment name="L04K09", Application data ="ABCDEFGHIJKLMNOPQR321254STUVWXYZabcdefghijklmnopqrstuvwxyz"] ,  
[SAP segment name="R03G09", Application data ="abcdefghijklmnopqrst87562uvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"] ,  
[SAP segment name="L04K09", Application data ="ABCDEFGHIJKLMNOPQRSTU45265VWXYZabcdefghijklmnopqrstuvwxyz"] 
, Record.FieldValues, "SAP segment name", "Application data"),
#"Added Custom" = Table.AddColumn(Source, "Custom", each if Text.End ([SAP segment name],3) = "K09" then Text.Trim(Text.Start([Application data],35)) else null),
#"Filled Down" = Table.FillDown(#"Added Custom","Custom")
in
#"Filled Down"

【讨论】:

我收到错误:Expression.Error:无法识别名称“PreviousStep”。确保拼写正确。 因为您应该使用上一步的名称,而不是字面上使用文本“PreviousStep” 我正在尝试将excel这个公式转换为幂查询公式:B3=IF(RIGHT(R3,3)="K09",TRIM(LEFT(W3,35)), B2) 我确实理解了错误并更正了它,但它并没有达到我想要的效果 更改了上面的答案

以上是关于Power Query - 复杂的自定义列的主要内容,如果未能解决你的问题,请参考以下文章

powerquery的sum公式

Power Query,刷新时保持输出表相同大小

Power BI - LinkedIn广告连接器

Power Query 自定义列查找和替换

Power Query初识

【OFFICE 365】Power Query 多工作簿合并