Tableau api 使用table calculation计算Tableau中分区的中值和平均值

Tableau api 使用table calculation计算Tableau中分区的中值和平均值,tableau-api,Tableau Api,我有一个从论坛中挖掘出来的帖子和主题的详细列表。行是单个主题(即postID和subjectIS是表的主键),然后我在主题级别和post级别有一些度量。例如: +---------+-------------+--------------+------------+--------------+--------+ | post.ID | post.Author | post.Replies | subject.ID | subject.Rank | year | +-

我有一个从论坛中挖掘出来的帖子和主题的详细列表。行是单个主题(即postID和subjectIS是表的主键),然后我在主题级别和post级别有一些度量。例如:

    +---------+-------------+--------------+------------+--------------+--------+
    | post.ID | post.Author | post.Replies | subject.ID | subject.Rank | year   |
    +---------+-------------+--------------+------------+--------------+--------+
    |   1     |   mike      |     10       |    movie   |     4        |  1990  |
    |   1     |   mike      |     10       |    comics  |     6        |  1990  |
    |   2     |   sarah     |      0       |    tv      |    10        |  2001  |
    |   3     |   tom       |      4       |    tv      |    10        |  2003  |
    |   3     |   tom       |      4       |    comics  |     6        |  2003  |
    |   4     |   mike      |      1       |    movie   |     4        |  2008  |
    +---------+-------------+--------------+------------+--------------+--------+
我想按年份研究帖子和主题的趋势,并按
subject.Rank
给它上色

将COUNTD(post.ID)和COUNTD(subject.ID)放在行中,将'year'放在列中,很容易衡量第一名。 但若我拖动颜色中位数(subject.Rank),我得到了一个错误的结果:它不是在distinct subject.ID级别计算的,而是在行级别计算的


我想我可以使用表格计算功能来完成它,但我不知道如何继续。

听起来你好像想把Subject.Rank当作一个维度,而不是一个度量。如果是这样,只需右键单击该字段并选择“维度”,将其转换为相关工作表上的维度即可。还可以通过将字段从“度量”部分向上拖动到“维度”部分,将其转换为数据窗格中的维度。这将告诉Tableau在将来默认情况下将该字段视为维度

在某些情况下,可以将字段视为维度,在其他情况下可以将其视为度量。这取决于你想要达到的目标。如果您熟悉SQL,则使用GROUPBY子句将维度用于对数据行进行分区以进行聚合


最后,在大型数据集上,countdistinct(COUNTD)可能会很昂贵。通常,您可以通过另一种方式获得相同的结果。因此,试着想想其他方法,并在真正需要时保存COUNTD。

尝试使用{fixed[1st LEVEL],[2nd LEVEL]:median()} 或 表计算方法
当你放入中值时,有一个编辑表在预先计算中使用Pube字段在那里计算(确保它按你想要的方式计算你选择它的方式),然后点击OK选择在哪个级别并重新启动每个

问题,你可能有很多相同主题的“重复”,并且只考虑每一次。也许有一种方法可以直接从那个数据源计算出来,但我现在想不出任何方法。我要做的是创建一个新表,非常简单,带有subject.ID和subject.Rank,没有重复项。然后连接到该表(并连接,或使用数据混合),并使用它来计算中位数。Tnx@Inox用于您的评论;我知道我可以从后端处理它,有许多不同的方法可以通过简单的ETL(例如使用PL/SQL窗口)甚至更简单的Excel文件来完成。但这次我想知道一个纯Tableau解决方案。好吧,你可以做我在Tableau=D上说的一切。只需创建一个带有subject.ID和subject.Rank的视图,将其导出到Excel或mdb或csv,连接到它,然后在subject.ID上混合。不是最优的,不是聪明的,而是可行的。问题是您有“重复”的值,并且您想要使用的聚合是中值。如果是总和或平均值,我可以想出一些方法来加权这些值以获得正确的贡献,但中位数的作用不同。顺便说一下,排名中位数是一个相当奇怪的概念。但是如果它对你有效的话,我不相信它会帮助OP解决“重复值”的问题。将subject.rank作为维度将数据按subject进行分区,并允许他根据subject.rank将他请求的任何度量值分成不同的块。这样他就可以根据每个主题来着色。按要求排列。count distinct是否是必要的,或者是否对他的措施有意义,这是一个不同的问题——并且很难从问题文本中分辨出来。