我需要对“设备运行记录”表进行筛选
RQ代表日期,JH代表设备编号,RCYL代表设备运行记录。
需要筛选的是:不同设备所对应不同时间段的设备记录
我做了一个表“需筛选设备及其运行时间段”
将这个表通过“从表格”的方式进入查询编辑器
查询命名为:所有设备筛选条件
新建列“筛选条件”,自定义列公式为:
=if [结束运行时间]=null
then "([JH]="""&[设备]&""""&" and [RQ]>=#date("&Text.From(Date.Year([开始运行时间]))&","&Text.From(Date.Month([开始运行时间]))&","&Text.From(Date.Day([开始运行时间]))&"))"
else "([JH]="""&[设备]&""""&" and [RQ]>=#date("&Text.From(Date.Year([开始运行时间]))&","&Text.From(Date.Month([开始运行时间]))&","&Text.From(Date.Day([开始运行时间]))&")"&" and "&"[RQ]=#date(2018,9,15))
通过在高级编辑器里添加语句:分组的行 = Table.Group(已添加自定义, {}, {{"条件", each Text.Combine([筛选条件]," or ")}}),
使用Text.Combine将所有设备所对应的筛选条件用“ or ”连接起来,形成类似:([JH]="DX02-06C" and [RQ]>=#date(2018,9,15)) or ([JH]="DX03-01C" and [RQ]>=#date(2018,9,15)) or ...的筛选条件(因为我的excel用不了textjoin()函数,所以使用了这个方法)
列重命名为:所有设备筛选条件
然后将“设备运行记录”通过“从表格”的方式进入查询编辑器
通过在高级编辑器里添加语句:筛选的行 = Table.SelectRows(更改的类型, each 所有设备筛选条件{0}[所有设备筛选条件])
出现错误:
Expression.Error: 无法将值 "([JH]="DX02-06C" and..." 转换为类型 Logical。
详细信息:
Value=http://club.excelhome.net/([JH]="DX02-06C" and [RQ]>=#date(2018,9,15)) or ([JH]="DX03-01C" and [RQ]>=#date(2018,9,15)) or ([JH]="DX03-03C" and [RQ]>=#date(2018,9,15)) or ([JH]="DX03-04" and [RQ]>=#date(2017,12,14)) or ([JH]="DX03-06"
无法实现筛选。
而通过直接将在查询“所有设备筛选条件”组合形成的筛选条件:([JH]="DX02-06C" and [RQ]>=#date(2018,9,15)) or ([JH]="DX03-01C" and [RQ]>=#date(2018,9,15)) or ([JH]="DX03-03C" and [RQ]>=#date(2018,9,15)) or ([JH]="DX03-04" and [RQ]>=#date(2017,12,14)) or...
复制到:筛选的行 = Table.SelectRows(更改的类型, each (....))语句中,可以实现筛选。
因为需要筛选的设备及其所对应的运行时间段,根据不同需要会发生变化,我想要通过仅更改“需筛选设备及其运行时间段”工作表里的设备和运行时间段,然后使用“数据”标签页里的刷新来实现“设备运行记录”的筛选,以便进行后续的数据分析工作。
我遇到的问题是
查询“所有设备筛选条件”里组合的筛选条件,通过:筛选的行 = Table.SelectRows(更改的类型, each 所有设备筛选条件{0}[所有设备筛选条件])语句不能实现筛选功能,我在网上查了好多资料,没有找到这个问题的解答,我刚学习power query没多久,一直在不断摸索中,问题描述中如有问题,请勿见笑,还望论坛大神不吝赐教,多谢。
9895012147548.zip
(100.31 KB, 下载次数: 0)
|