【发布时间】:2020-10-30 20:31:32
【问题描述】:
我正在尝试将来自两个不同工作簿的工作表与 Power Query 结合起来,但我遇到了麻烦。
考虑到另一个工作簿中出现的值,我不想增加一个工作簿中的“ID”列。
ID 列包含带有字母标签的行:AB 或 BE。在这些字母之后,将关联特定的数字范围。对于 AB 和 BE,数字范围首先从 0000 到 3000,从 3000 到 6000,然后从 6001 到 8000 和 8001 到 9999。
因此我有以下几种可能:
-
从 AB0000 到 AB3000
-
从 AB3001 到 AB6000
-
从 AB6001 到 AB8000
-
从 AB8001 到 AB9999
-
从BE0000到BE3000
-
从 BE3001 到 AB6000
-
从 BE6001 到 BE8000
-
从 BE8001 到 AB9999
每个类别都与我的地理专栏中的特定项目相匹配,来自其他工作簿:
-
从AB0000到AB3000,是ItalyZ ABC
-
从 AB3001 到 AB6000 是意大利 B BDE
-
从 AB6001 到 AB8000 是 ItalyZ ABC
-
从 AB8001 到 AB9999 是意大利 B BDE
-
从 BE0000 到 BE3000 是 UKM ABC
-
从 BE3001 到 AB6000 是 UKY BDE
-
从 BE6001 到 BE8000 是 UKM ABC
-
从 BE8001 到 AB9999 是 UKY BDE
因此,我试图找到与第一个 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"
【问题讨论】:
-
你能模拟一张你的最终结果应该是什么样子的表格吗?
-
嗨,我添加了元素,包括最终结果。
-
我的一个主要问题是,如果我的“记录”以零个观测值(甚至一个)开始,例如 UKY BDE,计数将从 0 或 1 开始,而不是从首次观测UKY BDE的“5000”和“5001”。
标签: indexing powerbi increment powerquery m