模糊匹配null数据_SEM数据分析之模糊匹配(power BI)

65cc15302e8c252e2a78005f1e76fa24.png

各位打杂小弟在初次使用BI的时候对于一些模糊匹配的应用是比较依赖的,因为我们在Excel当中也是经常用到模糊匹配一类的东西(就那个包含匹配的那个),特别是在处理URL的时候对这个特别依赖,如果要用合并查询进行匹配那数据清洗的难度就会呈指数上升,这对刚接触BI的新手来说不太友好,那今天就给大家分享一下BI中的模糊匹配

我们先来看一下整体的代码:

let
    源= 商务通数据,
    源2= 项目参数,
    源3= 账户参数,
    Fx= (x) => Table.SelectRows(源2, each Text.Contains(x,[标识])){0}[项目],
        项目 = Table.AddColumn(源, "项目", each try Fx([初次访问网址]) otherwise null),
    Fx1= (x1) => Table.SelectRows(源3, each Text.Contains(x1,[标识])){0}[账户],
        账户 = Table.AddColumn(项目, "账户", each try Fx1([初次访问网址]) otherwise null)
in
    账户

下面为大家详细讲解一下代码

    源= 商务通数据,
    源2= 项目参数,
    源3= 账户参数,

这里呢,是把商务通数据和我们的各种标识(我这里写的是参数)引用到同一个查询

    Fx= (x) => Table.SelectRows(源2, each Text.Contains(x,[标识])){0}[项目],
        项目 = Table.AddColumn(源, "项目", each try Fx([初次访问网址]) otherwise null),
    Fx1= (x1) => Table.SelectRows(源3, each Text.Contains(x1,[标识])){0}[账户],
        账户 = Table.AddColumn(项目, "账户", each try Fx1([初次访问网址]) otherwise null)

这里是定义了两个函数,分别是Fx,Fx1。Fx对应的是项目参数。Fx1对应账户参数。两个函数的本质是一样的 ,就用Fx来给大家做一个详细的讲解

    Fx= (x) => Table.SelectRows(源2, each Text.Contains(x,[标识])){0}[项目],

其中Fx是我们对函数定义的名称;

(x)为参数名称,即函数作用于的对象;(你可以理解为X是我们命名的变量,也就是不确定的值,这个值也是嵌套Fx这个函数里面的)

误区:这里有两个命名一个是Fx就相当于对整个函数起了个名字,还有一个是X,是在Fx这个函数中命名了一个参数的名称

Table.SelectRows(源2, each Text.Contains(x,[标识])){0}[项目])

解读:

表示 在 源2中,被X所包含的[标识]字段(也可以说列)中的行,取第一行项目字段的值

翻译成大白话也就是,在 源2 这张表的 标识列 筛选 被X包含 的行,取这一行的项目列

函数定义完成之后,我们就可以调用这个函数

项目 = Table.AddColumn(源, "项目", each try Fx([初次访问网址]) otherwise null)

表示,新建一列,命名为项目,然后将刚刚定义的函数引用于[初次访问网址]这一列,也就是刚才的X=[初次访问网址],返回Fx的运行结果。

也就是说这一行代码有的作用是新建一个项目列然后让

Fx= (x) => Table.SelectRows(源2, each Text.Contains(x,[标识])){0}[项目],

这一行代码中的X等于初次访问网址。并且将运行结果放在刚才新建的这一列中。

Fx1也是这个道理如法炮制

思维误区:

我们通常在Excel中的逻辑是,以初次访问网址为准,在初次访问网址这一列中包含某个标识,然后返回这个标识对应的项目。

但是在这里的逻辑是不一样的,以初次访问网址为准,在标识表中筛选被初次访问网址包含的行,然后返回第一行对应的项目列。

这里的处理方式与我们常用的Excel函数的思维是不一样的,实现方法和原理也是不一样的,所以不要习惯性的代入Excel函数的思维,一不小心就翻车

前期我们的各种URL规格都不一样,所以对于模糊匹配的需求还是挺高的,后期可以将所有信息编码进URL,这样子对这种模糊匹配依赖就变小了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值