gpt4 book ai didi

powerbi - Power Query - 仅删除连续的重复项

转载 作者:行者123 更新时间:2023-12-02 18:04:21 25 4
gpt4 key购买 nike

我有一个数据集(机场位置代码),例如每行都有伦敦 (LHR)、巴黎 (CDG)、罗马 (FCO) 等。

在某些行上,条目可能是 London、London、London、Paris。我计划通过清除重复项来删除它,但是在某些情况下我有真正的重复项,例如伦敦、巴黎 伦敦。我想保留伦敦的决赛,因为中间还有另一个地点。如果我们考虑机场代码,路线可能如下所示 -

LHR、LHR、CDG、FCO、FCO(更改为 LHR-CDG-FCO)-

LHR、LHR、CDG、CDG、CDG、LHR(更改为 LHR-CDG-LHR)我能够实现的是它刚刚返回 LHR-CDG 的不同列表。

代码出现的次数是动态的。

PowerQuery 中是否有可以返回此类逻辑的函数?

示例数据:

<表类=“s-表”><标题>ID路线所需结果 <正文>1LHR、LHR、CDG、CDG、FCOLHR-CDG-FCO2AMS、AMS、LHR、CDGAMS-LHR-CDG3AMS、AMS、LHR、AMS、AMSAMS-LHR-AMS4CGN-CGN-AMS-AMS-AMS-CDG-CDG-AMSCGN-AMS-CDG-AMS5CGN-CGN-CDG-CDG-CDG中广核-CDG

最佳答案

您可以使用 List.AccumulateList.Last 来执行此操作,将此公式粘贴到新的自定义列中:

Text.Combine(
List.Transform(
List.Accumulate(
Text.SplitAny([Route], ",-") /* Will split given column on any of the listed delimiters in 2nd argument */
, {}, (state,current) =>
if List.Last(state) <> Text.Trim(current)
then List.Combine({state, {Text.Trim(current)}})
else state
),
Text.From
), "-" /* Delimiter for output column */
)

该函数执行以下操作:

  • 使用 List.SplitAny 中给定的分隔符将文本列拆分为列表
  • 使用空列表作为 List.Accumulate 中的基线,它会循环遍历拆分列列表,并检查列表的最后一个元素与当前元素的比较情况(已修剪,以避免前导/尾随空格)循环值
  • 如果当前循环值与列表的最后一个元素相同,则跳过该元素
  • 如果当前循环值与最后一个元素不同,我们使用List.Combine将其添加到状态
  • 最后,循环结束后,我们使用带有设定分隔符的 Text.CombineList.Accumulate 的结果组合成文本字符串

虽然这是一项高级功能,但我对此非常满意!

关于powerbi - Power Query - 仅删除连续的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73649206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com