Power Pivot信息函数中的判断

2020-03-24 15:39:41 浏览数 (1)

信息判断函数

比较显著的逻辑判断函数我们这里就省略了,例如IsBlank,IsText,IsError等。 我们先来看下其他不怎么常用的逻辑判断函数

(一) IsOnOrAfter

A. 语法
代码语言:javascript复制
IsOnOrAfter ( <Value1>, <Value2> [, [<Order>] [, <Value1>, <Value2> [, [<Order>] [, … ] ] ] ] )

位置

参数

描述

第1参数

Value1

需要和第2参数比较的值

第2参数

Value2

需要和第1参数比较的值

第3可选参数

Order

应用的规则,0代表降序,1代表升序。默认1升序

B. 返回

标量——逻辑值(True or False)

C. 注意事项
  • 如果第3参数省略或者是1,则用value1参数>=value2参数来比较。
  • 如果第3参数是0,则用value1参数<=value2参数来比较。
  • 一般来说,value1为引用列或字符串,value2参数为一个标量比较值。
  • 请注意不同属性的判断依据。
D. 作用

针对每一行进行判断并返回逻辑值。

E. 案例

需要筛选出找出日期为5/21日及之前的,同时等级为B级之前的内容。 表格的筛选我们使用Filter函数。

代码语言:javascript复制
Filter('表1','表1'[日期]<=Date(2019,5,21) && 
             '表1'[等级]<="B")

如果我们用IsOnOrAfter函数来表示的话格式如下:

代码语言:javascript复制
Filter('表1',IsOnOrAfter('表1'[日期],
                         Date(2019,5,21),0,
                         '表1'[等级],"B"))

解释: IsOnOrAfter因为第3参数是0,所以代表了是用<=来比较,日期<=2019.5.21,等级<=B级这两个条件。我们可以看到最终的结果是品牌为华为,等级为A和B的产品。而googl产品,因为日期不符合要求被排除在外了。

(二) CONTAINS

1. 语法

代码语言:javascript复制
Contains ( <Table>, <ColumnName>, <Value> [, <ColumnName>, <Value> [, … ] ] )

位置

参数

描述

第1参数

Table

数据所在的表

第2参数

ColumnName

需要查找的列

第3参数

Value

包含的值

2. 返回

标量——逻辑值(True or False)

3. 注意事项

  • 查找的列和需要查找的值必须成对出现
  • 查找的列必须是表里的列或者是关联表的列
  • 如果是引用相关表的列,则相关表必须是多对1关系中处于1的表。

4. 作用

是否每一列都能找到所对应的值,找到返回Ture,未找到返回False

5. 案例

要求:我们需要判断在数据表例是否有品牌为华为的同时产地是中国的数据。

代码语言:javascript复制
Contains('表1','表1'[品牌],"华为",'表1'[产地],"中国")

或者

代码语言:javascript复制
Contains('表1','表4'[品牌],"华为",'表1'[产地],"中国")

返回的结果是True。

解释: 表1代表数据表,表4代表品牌表。后面个判断公式引用给了多对1关系中的1表中的列。

(三) CONTAINSROW

1. 语法

代码语言:javascript复制
ContainsRow ( <tableExpr>, <scalarExpr>[, <scalarExpr>, …])

位置

参数

描述

第1参数

TableExpr

表表达式,用{}表示,{}里面填写需要查找的值

第2参数

scalarExpr

需要查找的列

2. 返回

标量——逻辑值(True or False)

3. 注意事项

  • 值是绝对匹配,不是相对匹配查找。
  • 表表达式需要用{}表示需要查找的值
  • 如果要查找多个列对饮给的值,需要在{}里再使用()表示
  • 可用于行上下文

4. 作用

如果列里有匹配的则返回Ture,未找到则返回False。类似多条件完全匹配

5. 案例

要求:我们需要筛选在数据表例是否有品牌为华为的同时产地是中国的数据。

代码语言:javascript复制
'表1'[等级]="A" &&'表1'[品牌]="华为"
CONTAINSROW({("A","华为")},'表1'[等级],'表1'[品牌])

以上2个表达式相等。请注意,如果是对应多个列查找,需要在{}里添加()。 如果是单列多个关键词查找,例如:

代码语言:javascript复制
'表1'[品牌]="华为" || '表1'[品牌]="google"
Containsrow({"google","华为"},'表1'[品牌])

请注意,如果是单个字段查找多个值,则需要去掉()。

请点个赞,转发分享给更多的人。

0 人点赞