首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在power查询中,展开上面或下面所有类似列的值。

在power查询中,展开上面或下面所有类似列的值。
EN

Stack Overflow用户
提问于 2020-08-02 18:35:47
回答 3查看 150关注 0票数 2

我有一张桌子如下。

代码语言:javascript
运行
复制
      |---------------------|---------------------|    
      |       Name          |         VEC         |          
      |---------------------|---------------------|
      |         A           |        null         |              
      |---------------------|---------------------|
      |         A           |         null        |                
      |---------------------|---------------------|
      |         B           |         null        |                 
      |---------------------|---------------------|
      |         B           |         null        |                
      |---------------------|---------------------|
      |         B_1         |         54          |               
      |---------------------|---------------------|
      |         D           |         null        |                
      |---------------------|---------------------|
      |         D_1         |         null        |               
      |---------------------|---------------------|
      |         E           |         null        |                
      |---------------------|---------------------|
      |         E_1         |         454         |               
      |---------------------|---------------------|
      |         E_2         |         454444      |               
      |---------------------|---------------------|

我试图得出以下结果:

代码语言:javascript
运行
复制
  |---------------------|---------------------|---------------------|    
  |       Name          |         VEC         |     Costum          |      
  |---------------------|---------------------|---------------------|
  |         A           |        null         |          REF        |        
  |---------------------|---------------------|---------------------|
  |         A           |         null        |            REF      |      
  |---------------------|---------------------|---------------------|
  |         B           |         null        |           REF       |      
  |---------------------|---------------------|---------------------|
  |         B           |         null        |           RUP       |      
  |---------------------|---------------------|---------------------|
  |         B_1         |         54          |            RUP      |      
  |---------------------|---------------------|---------------------|
  |         D           |         null        |        REF          |                   
  |---------------------|---------------------|---------------------|
  |         D_1         |         null        |         REF         |              
  |---------------------|---------------------|---------------------|
  |         E           |         null        |          RUP        |              
  |---------------------|---------------------|---------------------|
  |         E_1         |         454         |         RUP         |             
  |---------------------|---------------------|---------------------|
  |         E_2         |         454444      |          RUP        |               
  |---------------------|---------------------|---------------------| 

在某些情况下,字母在"VEC“中有值,因此使用条件列很容易解决,条件列检查"VEC”并完成。

然而,在某些情况下,字母重复,如B后面的"_“。在这种情况下,"_1“(或"_2",”_3“.)将是唯一有价值的。

在这里,条件列不起作用,因为我需要字母的第一次出现,即只有"A“或"B”才能在"costum“列中得到具有REF或RUP的行。

代码语言:javascript
运行
复制
#"Promoted Headers" = Table.PromoteHeaders(Table1_Sheet, [PromoteAllScalars=true]),
    #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"Name", type text}, {"VEC", Int64.Type}}),
    #"Added Conditional Column" = Table.AddColumn(#"Changed Type", "Custom", each if [VEC] = null then "REF" else "RUP")
in
    #"Added Conditional Column"
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-09-15 06:39:44

您获得所需输出的方式是可以的。我只是在这里添加另一个选项,使用下面的Power Query

步骤-1向基表中添加自定义列,如下所示-

代码语言:javascript
运行
复制
if Text.PositionOf([Name],"_") = -1
    then [Name]
else
    Text.Start([Name],Text.PositionOf([Name],"_"))

这是输出-

步骤2:现在复制基表,并在列、自定义和列VEC上应用组。您可以右键单击自定义列,然后从列表中选择Group选项,并配置如下-

Step-3:在应用Group之后添加自定义列如下所示,最终结果如下-

代码语言:javascript
运行
复制
if [sum] = null then "REF" else "RUP"

步骤4:现在使用自定义列将基表与新表合并,在展开和保持colum 定制1之后,您将得到以下的最终输出-

票数 1
EN

Stack Overflow用户

发布于 2020-09-14 17:11:10

您还可以使用自定义列度量值实现您的需求,如下所示(让您的VEC列数据类型为Integer)

首先使用以下代码创建一个自定义列-

代码语言:javascript
运行
复制
group_name = 

VAR current_row_name = ref_rup[Name]

VAR current_row_group = 
IF(
    FIND("_",current_row_name,1,0) = 0,
    current_row_name,
    LEFT(
        current_row_name,
        FIND("_",current_row_name,1,0) - 1
    )
)

RETURN current_row_group

现在使用下面的代码创建度量值-

代码语言:javascript
运行
复制
ref or rup = 

VAR current_row_name = min(ref_rup[Name])
VAR current_row_group = min(ref_rup[group_name])

VAR current_row_group_sum = 
CALCULATE(
    SUM(ref_rup[VEC]),
    FILTER(
        ALL(ref_rup),
        ref_rup[group_name] = current_row_group
    )
)

RETURN IF(current_row_group_sum > 0, "RUP", "REF")

这是你的最后输出-

票数 1
EN

Stack Overflow用户

发布于 2020-09-14 14:58:07

我找到了以下解决方案,我认为这可能会有帮助。

这对我来说有点过头了,所以如果有人有更好、更简单、更直截了当的东西,我会很高兴看到它是如何做到的。

我使用下面的power查询,首先为VEC添加一个列,然后在"_“处拆分名称,最后使用"Record.Field”来复制或多或少相当于查找的内容。

代码语言:javascript
运行
复制
#"Changed Type" = Table.TransformColumnTypes(#"Renamed Columns",{{"Name", type text}, {"VEC", Int64.Type}, {"          ", type text}}),
    #"Removed Columns" = Table.RemoveColumns(#"Changed Type",{"          "}), 
    #"Added Custom1" = Table.AddColumn(#"Removed Columns", "NUM", each if [VEC] <> null then 1 else 0),
    #"Added Custom2" = Table.AddColumn(#"Added Custom1", "Split Name", each Text.Split ([Name], "_"){0}),
    #"Grouped Rows1" = Table.Group(#"Added Custom2", {"Split Name"}, {{"Name_SUM", each List.Sum([NUM]), type number}}),
   #"Added Custom3" = Table.AddColumn(#"Added Custom2", "REF or RUP", each Record.Field(#"Grouped Rows1"{[Split Name=[Split Name]]}, "Name_SUM")),
    #"Added Custom" = Table.AddColumn(#"Added Custom3", "Custom", each if [REF or RUP] <> 0 then "RUP" else "REF")
   in
    #"Added Custom"

因此,我有以下结果:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63219725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档