按规则替换

Power Query 湛蓝碧空 ⋅ 于 2018-09-14 12:40:15 ⋅ 最后回复由 湛蓝碧空 2018-09-18 22:17:41 ⋅ 3043 阅读

file

需要按照词类将原表中 包含替换表中的文本替换为新文本 现在的问题是 迭代过程中 替换完成后 返回的表是筛选过的表 不能返回全表格 导致第二次迭代如果有不同的词类筛选 一定会出现空表。 有没有能在迭代时反馈全表的方法

https://pan.baidu.com/s/1U6n3gG510pBAR-4sC2zVMQ

By 湛蓝碧空

回复数量: 6
  • 木子-李
    2018-09-14 13:10:14

    file

    自定义1 = Table.TransformColumns(源,{"词", each 
                    Text.Replace(_,替换文本{[词类=源{[词=_]}[词类]]}[原文本],替换文本{[词类=源{[词=_]}[词类]]}[替换文本])
                        }
                            )

    不用循环

  • 大海 公众号【Excel到PowerBI】
    2018-09-14 13:41:21

    @木子-李 我没看懂为什么他要用List.Accumulate做迭代解决这个问题。

  • 木子-李
    2018-09-15 09:50:51

    @飞天篮球 他给的数据中没有体现,哈哈,简单点

  • d972024
    2018-09-16 11:14:07

    假设前提是替换文本表和数据源表是无限时怎么办,我的思路是先将数据源表和替换文本表先进行Table.Group()操作以减少循环递归的次数,再使用List.Accumulate()进行循环递归替换。

    聚合替换文本表的替换规则:

    = Table.Group(替换文本,"词类",{"数据",each Table.ToRows(Table.RemoveColumns(,{"词类"}))})

    聚合数据表:

    = Table.Group(源,"词类",{"DATA",each })

    连续替换:

    = Table.TransformColumns(Y,{"DATA",each
    List.Accumulate(repl{[词类=[词类]{0}]}[数据],,(x,y)=>Table.ReplaceValue(x,y{0},y{1},Replacer.ReplaceText,{"词"})) })
  • 湛蓝碧空 SEM从业人员
    2018-09-18 10:07:20

    [@d972024](https://pbihub.cn/users/211) 请问一下repl是什么关键词?

  • 湛蓝碧空 SEM从业人员
    2018-09-18 10:17:39

    [@d972024](https://pbihub.cn/users/211) 我大概看懂了,repl指的是替换文本的名称

暂无评论~~
  • 请务必阅读并严格遵守《社区管理规范与使用说明》
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 发送表情,可用的 Emoji 见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板粘贴上传, 格式限制 - jpg, png, gif
  • 不支持上传附件,请尽可能用文字和图片将问题描述清楚,如实在需要上传附件,可上传到 共享网盘 后分享链接
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!
Ctrl+Enter