首页 > 解决方案 > Power Query / Power BI 在每次出现时以特定范围递增数据

问题描述

我正在尝试将来自两个不同工作簿的工作表与 Power Query 结合起来,但我无法做到这一点。

考虑到另一个工作簿中出现的值,我不想从一个工作簿中增加“ID”列。

ID 列有带有字母标签的行:AB 或 BE。在这些字母之后,将关联特定的数字范围。对于 AB 和 BE,数字范围首先从 0000 到 3000,从 3000 到 6000,然后从 6001 到 8000 和 8001 到 9999。

因此,我有以下可能性:

每个类别都与我的地理专栏中的特定项目匹配,来自另一个工作簿:

因此,我试图找到与第一个 AB 类别、第二个 AB 类别、第一个 BE 类别和第二个相关联的最高数字。

然后,我想在另一个查询中“带入”这个数字,并在每次在另一个工作簿中找到匹配的国家时递增它。例如 :

AB356 是第一本工作簿中最高的数字。

一旦找到第一个“ItalyB”,该列除写“AB357”。一旦找到第二个是“ItalyB”,该列除了写“AB358”。

可以说,在我得到的第一个文件中,我有以下数据:

  |---------------------|    
  |       Test          |          
  |---------------------|
  |      AB0000         |          
  |---------------------|
  |      AB0001         |            
  |---------------------|
  |      AB3034         |    
  |---------------------|
  |     AB3035          |    
  |---------------------|
  |      AB6005         |    
  |---------------------|
  |      AB6006         |    
  |---------------------|
  |        AB8011       |    
  |---------------------|
  |       AB8012        |    
  |---------------------|
  |       BE0000        |    
  |---------------------|
  |      BE0001         |    
  |---------------------|
  |      BE3091         |    
  |---------------------|
  |      BE3092         |    
  |---------------------|
  |      BE6001         |    
  |---------------------|
  |        BE6002       |    
  |---------------------|
  |      BE6003         |    
  |---------------------|
  |       BE8104        |    
  |---------------------|
  |       BE8105        |    
  |---------------------|
 

第二个文件如下:

  |---------------------|
  |     ItalyZ ABC      |    
  |---------------------|
  |      ItalyZ ABC     |    
  |---------------------|
  |      ItalyB BDE     |    
  |---------------------|
  |        ItalyZ ABC   |    
  |---------------------|
  |       ItalyB BDE    |    
  |---------------------|
  |      UKM ABC        |    
  |---------------------|
  |      UKY BDE        |    
  |---------------------|
  |     UKM ABC         |    
  |---------------------|
  |       UKY BDE       |    
  |---------------------|
  |       UKY BDE       |    
  |---------------------|
  |        UKY BDE      |    
  |---------------------|
  |       UKY BDE       |    
  |---------------------|

那么我的结果如下:

      |---------------------|    
      |       Test          |          
      |---------------------|
      |      AB0002         |          
      |---------------------|
      |      AB0003         |            
      |---------------------|
      |      AB3036         |    
      |---------------------|
      |      AB6007         |    
      |---------------------|
      |        AB8013       |    
      |---------------------|
      |      BE0002         |    
      |---------------------|
      |      BE3091         |    
      |---------------------|
      |      BE3093         |    
      |---------------------|
      |      BE6004         |    
      |---------------------|
      |       BE8105        |    
      |---------------------|
      |       BE8106        |    
      |---------------------|
      |       BE8107        |    
      |---------------------|
      |       BE8108        |    
      |---------------------|

我试图通过添加类别来调整其范围更有限的查询,因此我有如下查询:

let
    Source = #table({"Prefix", "Seq_Start", "Seq_End","Zone"},
{{"AB",0,2999,"UKM BDE"}, {"AB",3000,4999,"UKM ABC"}, {"AB",5000,7999,"UKY BDE"}, {"AB",8000,9999,"UKY ABC"},{"BE",0,2999,"ITALYZ BDE"},{"BE",3000,4999,"ITALYZ ABC"}, {"BE",5000,7999,"ITALYB BDE"}, {"BE",8000,9999,"ITALYB ABC"}}),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Seq_Start", Int64.Type}, {"Seq_End", Int64.Type}}),
    #"Merged Queries" = Table.NestedJoin(#"Changed Type", {"Prefix"}, #"Source data with occurence", {"Unique key Prefix"}, "Source data with occurence", JoinKind.LeftOuter),
    #"Expanded Source data with occurence " = Table.ExpandTableColumn(#"Merged Queries", "Source data with occurence", {"Number"}, {"Number"}),
    #"Filtered Rows" = Table.SelectRows(#"Expanded Source data with occurence ", each [Number] >= [Seq_Start] and [Number] <= [Seq_End]), 
    #"Grouped Rows" = Table.Group(#"Filtered Rows", {"Prefix", "Seq_Start", "Seq_End", "Zone"}, {{"NextSeq", each List.Max([Number]) + 1, type number}})
in
    #"Grouped Rows"

标签: indexingpowerbiincrementpowerquerym

解决方案


您的查询显示“Table.Group”

您是否尝试合并这两个表?我更喜欢“结合并创造新的”。

表 1 和表 2 的标题不同,首先我将它们均衡。如图中所示。然后合并并创建新表。这是代码部分;

let
    Kaynak = Table.Combine({#"Puantaj CkrEng", #"Puantaj Genel"}),
    #"Filtrelenen Satırlar" = Table.SelectRows(Kaynak, each ([Firma] <> null)),
    #"Yeniden Sıralanan Sütunlar" = Table.ReorderColumns(#"Filtrelenen Satırlar",{"Firma", "Resource ID", "Görev", "Tarih", "Yevmiye", "HaftaBasi"})
in
    #"Yeniden Sıralanan Sütunlar"

在此处输入图像描述


推荐阅读