【问题标题】:Running Sum of Filtered Rows in Tableau在 Tableau 中运行筛选行的总和
【发布时间】:2020-11-08 10:05:34
【问题描述】:

我有一个挑战提交表(记录了不同玩家在比赛中提交挑战的时间,以及提交是否正确)-

还有另一个表,其中包含与每个挑战相关的分数 -

如何绘制比赛中排名前 3 名的玩家在一段时间内获得的积分总和(仅限过去 24 小时)?这里的问题是,我只需要考虑第一次成功提交,以防比赛中有多个成功提交的挑战(例如,玩家 A 的挑战 #17)。

编辑:

Dummy Data

所需的输出:

【问题讨论】:

  • 您能否在此处上传一个 csv 示例作为代码?看来是可以搞定的
  • @AnilGoyal 为问题添加了虚拟数据和所需的输出
  • 我提出了一个答案/演练,看看有没有帮助

标签: filter tableau-api calculated-field rolling-computation level-of-detail


【解决方案1】:

我提出了一个解决方案/答案,假设有几件事-

  • 挑战接受时间每天17:00结束
  • 不同的线条代表不同的挑战

步骤 1 创建一个 CF 以按日历日期调整日期/时间 - adjusted date as

DATEADD('hour', 7, [Date])

请注意,我已经增加了 7 小时,以将提交的最后一个日历日期/时间设置为次日上午 00 点。

第 2 步创建另一个 CF win_loss

If [Success]='W' then 1 ELSE 0 end 

第 3 步创建另一个 CF game points

[win_loss]*[Points (Points)]

Step-4 创建另一个CF first win or loss as(这里不用担心丢失)

{FIXED [Player], [Challenge], [success] : MIN([Date])} = [Date]

第 5 步使用此公式(选择前 3 名)在 TOP-3 的“玩家”字段上创建一个集合

sum(
IF [first win or loss]= TRUE
then [game points] END)

第 6 步通过拖动构建视图

  • set, MDY(adjusted date) & first win or loss 在过滤器架子/卡片上
  • mdy 过滤器添加到上下文中
  • [date]exact datediscreet 到列
  • sum(game points) 到行
  • 在度量上添加表格计算 - 运行总计
  • 右键 sum(game points) 点击edit in shelf 并用这个替换现有的计算-
RUNNING_SUM(ZN(SUM([game points])))

(请注意,这将确保您的行始终从 f(x)=0 开始)

  • challenge 关于标记卡中的颜色
  • sum(game points) 标记卡片中的文字。

注意 - (i) Set 上的过滤器将确保仅显示前 3 名玩家 (ii) adjusted date 将确保在 24 小时挑战提交时间内查看 (iii) first win or loss 将消除同一玩家在同一挑战中的第二次和后续胜利

我希望这也能让你明白。

你应该得到你想要的视图

或将日期字段更改为秒以获得这样的视图

【讨论】:

  • 嗨@AnilGoyal,关于第5步,如果我按总和(游戏点数)排序,那不也计算重复的获胜点数吗?
  • 另外,如果我们只显示最后 24 小时,是否有办法在 Y 轴 (X=0) 开始行,但玩家在该时间段之前也有一些提交。 .
  • 参考上面我想要的输出图片。
  • 我已经解决了这两个问题,请查看修改后的答案
猜你喜欢
  • 2020-02-16
  • 2019-06-29
  • 1970-01-01
  • 1970-01-01
  • 2021-05-18
  • 1970-01-01
  • 2020-06-14
  • 2020-06-28
  • 1970-01-01
相关资源
最近更新 更多