odoo pivot中去掉求和_进一步的了解下Power Pivot中的筛选及关系
发布日期:2021-06-24 13:00:04 浏览次数:2 分类:技术文章

本文共 1390 字,大约阅读时间需要 4 分钟。

1. TREATAS

A. 语法

TREATAS ( , [, [, … ] ] )

B. 返回

C. 注意事项

第1参数必须是表表达式

D. 作用

只筛选对应关联值的数据

E. 案例

表1

1). 单个筛选:

筛选姓名为张三的数据

Fiter('表1', '表1'[姓名]="张三")

单个筛选

筛选成绩大85的数据

Fiter('表1', '表1'[成绩]>85)

单个筛选1

2). 多个条件筛选

筛选学科为数学,成绩大于85的。

Fiter('表1', '表1'[学科]="数学" &&

'表1'[成绩]>85

)

多条件的我们可以用&&来链接实现。

3). 多个恒等条件的筛选

筛选姓名等于张三,李四,王五并求总成绩。

Calculate(Sum('表1'[成绩]),Filter('表1','表1'[姓名]="张三" ||

'表1'[姓名]="李四" ||

'表1'[姓名]="王五"

)

)

通过||来表达”或”的意思,也就是3个人的姓名是平行的。

不用filter函数是否也能计算出如上效果呢?

4). 使用TREATAS链接关系函数进行平行筛选

Calculate(Sum('表1'[成绩]),Treatas({"张三","李四","王五"},

'表1'[姓名]

)

)

通过treatas函数把指定表的表达式对应到关系列上,然后通过关系筛选出关系列对应的值得数据来进行计算。{“张三”,”李四”,”王五”}实际上是一个列表,这个关系是并列的。

5). 使用TREATAS链接关系函数进行叠加筛选

Calculate(Sum('表1'[成绩]),Treatas({("数学",90),

("英语",85)

},

'表1'[学科],'表1'[成绩]

)

)

我们可以看到这里{(),()}的结构实际上是构成了2行2列的表。列的顺序对应了列字段的关系。也就是计算条件为:学科=数学,成绩=90以及学科=英语,成绩=85的成绩之和。

我们知道了,在筛选的时候可以通过列,也可以通过表来进行筛选,那是否可以有替代性的方案呢?

6). 使用现有条件列或者条件表来进行筛选

同理我们现在有一个条件表

表2

条件表2

那我们需要根据条件表的列或者条件表的整体来进行求和。

根据表条件求和

我们可以直接在上面那个公式的基础上使用替换方式。

Calculate(Sum('表1'[成绩]),Treatas('表2',

'表1'[学科],'表1'[成绩]

)

)

表2实际上就代表{(“数学”,100),(“语文”,90),(“英语”,80)}

返回的结果是360,因为语文有2个90分。

根据列条件求和

如果只需要单列条件的话,通过Values或者SelectColumns都可以实现:

Calculate(Sum('表1'[成绩]),Treatas(SelectColumns('表2',"a",'表2'[成绩]),

'表1'[成绩]

)

)

返回的结果是530。这里通过SelectColumns来实现成绩等于100,90和80的求和。因为这里100的有1个,90的有3个,80的也有2个,加起来是530。

Calculate(Sum('表1'[成绩]),Treatas(Values('表2'[成绩]),

'表1'[成绩]

)

)

这里则使用的是values取单列的值。

转载地址:https://blog.csdn.net/weixin_32875295/article/details/112893715 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:card如何添加复选框 vant_vue vant checkbox
下一篇:python居中打印_Python:使用matplotlib在图纸上居中打印和图例

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年04月23日 10时43分42秒