You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power Query拆分含复合航空公司名称的无分隔符列优化方案问询

精准拆分无分隔符航司名称的优雅方案

核心思路是基于已知航司名单做精准匹配提取,彻底避免大小写拆分的误判问题,而且新增航司只需更新名单,不用改流程:

1. 准备完整的航司名称列表

可以直接在Power Query里创建,或者从Excel导入现成的名单,示例代码:

let
    航司名单 = {"American Airlines", "British Airways", "Finnair", "AlphaSky", "KLM", "ANA"}
in
    航司名单

如果航司名称存在大小写不统一的情况,后续可统一转成小写匹配,不影响最终提取的原名称

2. 编写递归拆分函数

这个函数会从拼接字符串里逐个匹配航司名称,提取后删除已匹配的部分,直到字符串拆分完成:

(待拆文本 as text, 航司列表 as list) as list =>
let
    找到的航司 = List.FindFirst(航司列表, each Text.StartsWith(待拆文本, _)),
    拆分结果 = if 找到的航司 = null then {} else {找到的航司} & @(Text.Remove(待拆文本, 找到的航司), 航司列表)
in
    拆分结果

若担心大小写差异导致匹配失败,可把Text.StartsWith(待拆文本, _)修改为Text.StartsWith(Text.Lower(待拆文本), Text.Lower(_))

3. 应用函数到目标列

在Power Query中添加自定义列,调用上述函数:

= 自定义拆分函数([你的拼接列名], 航司名单)

之后将生成的列表列展开成行或列,即可得到拆分好的单个航司名称。

额外优化

如果存在航司名称是另一个名称子串的情况(比如"Air"和"Air France"),先把航司名单按名称长度从长到短排序,优先匹配长名称,避免误拆:

排序后的航司名单 = List.Sort(航司名单, (a,b) => Text.Length(b) - Text.Length(a))

内容的提问来源于stack exchange,提问作者Chris Chapman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 00:22:43