如何在Tableau中创建计算字段,按列条件筛选最新记录并计算总值
Tableau计算字段实现指定规则的总值计算
需求说明
基于以下数据集:
| Date | RefNum | Value | TxnType |
|---|---|---|---|
| Mar-23 | SS | 20 | BillDoc |
| Apr-23 | G4 | 40 | BillDoc |
| May-23 | HT | 85 | BillDoc |
| Jan-23 | R3 | 3 | Credit |
| Feb-23 | R3 | 5 | Credit |
| Aug-23 | D7 | 10 | Credit |
| Sep-23 | D7 | 15 | Credit |
需要实现:
- 对
TxnType = 'BillDoc'的记录,直接求和Value - 对
TxnType = 'Credit'的记录,按RefNum筛选对应最新日期的记录并取其Value - 最终总值为
20+40+85+5+15=165
实现方案
可以通过两种方式完成,分步骤或合并为单个计算字段:
方式1:分步创建计算字段
创建
[最新Credit日期]计算字段
作用:获取每个RefNum下,TxnType为Credit的最新日期{FIXED [RefNum]: MAX(IF [TxnType] = 'Credit' THEN [Date] END)}创建
[符合条件的Value]计算字段
作用:筛选出符合规则的Value值(BillDoc直接取,Credit取最新日期对应值)IF [TxnType] = 'BillDoc' THEN [Value] ELSEIF [TxnType] = 'Credit' AND [Date] = [最新Credit日期] THEN [Value] END计算总值
将[符合条件的Value]拖到视图中,选择聚合方式为SUM即可得到目标总值。
方式2:合并为单个计算字段
直接创建[总值计算]字段,把逻辑整合在一起:
SUM( IF [TxnType] = 'BillDoc' THEN [Value] ELSEIF [TxnType] = 'Credit' AND [Date] = {FIXED [RefNum]: MAX(IF [TxnType] = 'Credit' THEN [Date] END)} THEN [Value] END )
将该字段拖到视图中即可直接显示结果。
结果验证
两种方式最终都会得到总和165,完全符合需求。
内容的提问来源于stack exchange,提问作者lil chill
相关产品推荐
相关产品推荐

