在Tableau中如何基于日期与字符串列标记数值列的最大值行?
分组内最大值标记方案(Access + Tableau)
Access SQL实现
直接用子查询先算出每个分组的最大值,再关联原表做判断:
SELECT t.日期列, t.数值列, t.字符串列 AS 州, IIF(t.数值列 = g.分组最大值, 1, 0) AS 是否最大值标记 FROM 你的表名 t INNER JOIN ( -- 子查询:按年份+州分组,取每组数值最大值 SELECT YEAR(日期列) AS 年份, 字符串列 AS 州, MAX(数值列) AS 分组最大值 FROM 你的表名 GROUP BY YEAR(日期列), 字符串列 ) g ON YEAR(t.日期列) = g.年份 AND t.字符串列 = g.州;
如果你的日期分组不是年份(比如季度/月份),把YEAR(日期列)换成对应的日期函数即可(比如DATEPART("q", 日期列)取季度)。
Tableau替代FIXED的实现方法
因为Access数据源不支持FIXED LOD,用以下两种方法替代:
方法1:INCLUDE LOD表达式
创建计算字段是否最大值标记:
IF [数值列] = {INCLUDE YEAR([日期列]), [字符串列]: MAX([数值列])} THEN 1 ELSE 0 END
INCLUDE会基于指定的维度(年份+州)计算最大值,同时保留视图中已有的其他维度,适配你的需求。
方法2:表计算排名法
- 先创建计算字段
数值排名:
RANK_UNIQUE([数值列])
- 编辑这个字段的计算依据:选择「高级」,设置分区为
年份和字符串列(州),排序为数值列降序。 - 再创建标记字段:
IF [数值排名] = 1 THEN 1 ELSE 0 END
排名为1的行就是分组内的最大值,直接标记为1。
内容的提问来源于stack exchange,提问作者Ross Coleman
相关产品推荐
相关产品推荐

