每个类别的动态每周平均值
Dynamic weekly average per category
我有一个数据集如下:
DATE | AMOUNT | CATEGORY
20.12.2015 | 100.00 | Drinks
22.12.2015 | 50.00 | Food
20.12.2015 | 70.00 | Transport
07.12.2015 | 50.00 | Transport
...
有几条记录每周和每天花费的金额。
我想要一个条形图,左侧是类别,条形长度表示每周平均值,即。在过滤后的时间范围内平均每周花费多少
如果我使用正常 AVG([AMOUNT])
,它会计算每日平均值,而不是每周平均值。
我发现了这个问题:
Tableau - weekly average from daily data
然而,其中一个答案不是动态的,另一个列出了连续几周的平均值,而不是每个类别的平均值,我想不出一种方法来对我的问题应用相同的技术。
- 添加一个新的维度,这是针对周的
- 然后您可以创建一个变量来计算特定一周的平均金额,如下所示:
{FIXED [日期(周数)],[类别]:平均([金额])}
- 那么当你想平均的时候你可以对上面的公式进行平均
AVG({FIXED [日期(周数)], [类别]: avg([金额]) })
首先确保名为 DATE 的字段的数据类型是日期类型而不是字符串类型。如果不是,请从鼠标右键菜单更改数据类型,或者在最坏的情况下使用计算字段中的日期解析功能。
其次,将 DATE 字段放到架子上后,将日期粒度级别设置为“周”。再次 ],使用鼠标右键上下文菜单。从第二批选项中选择将日期截断到周级别。该菜单上的第一批选项是日期部分,而不是日期。然后,您可能希望根据您的预期视图将字段更改为离散。
根据 Mark Andersen 的解决方案,我发现了以下内容:
创建计算字段WeekNumber
:
DATETRUNC('week', [Date])
创建计算字段WeekTotal
:
{FIXED [WeekNumber], [Main Category]: SUM([Amount Person]) }
创建计算字段WeekDiff
:
DATEDIFF('week',#2015-08-01#,TODAY())
创建计算字段WeekAvg
:
[WeekTotal] / [WeekDiff]
使用 WeekAvg
作为条形的度量,就完成了。
对此有几点说明:
马克的解决方案朝着正确的方向发展。我不得不将 avg([Amount])
替换为 sum([Amount])
,因为我想获得每周的总数并在之后取平均值。
但是,它并没有准确计算出我想要的结果,因为 Tableau 仅根据有支出的周数计算平均值。
如果我有
40$ in week 1
20$ in week 2
30$ in week 4
然后它计算 (40+20+30)/3 = 30
而我想要 (40+20+30)/4 = 20.25
在我的用例中,我的解决方案是有效的,因为我有一个固定的时间范围,直到 TODAY()
,但是如果我在两个任意日期之间使用过滤器,那么如果能自动计算它会很方便。
我有一个数据集如下:
DATE | AMOUNT | CATEGORY
20.12.2015 | 100.00 | Drinks
22.12.2015 | 50.00 | Food
20.12.2015 | 70.00 | Transport
07.12.2015 | 50.00 | Transport
...
有几条记录每周和每天花费的金额。
我想要一个条形图,左侧是类别,条形长度表示每周平均值,即。在过滤后的时间范围内平均每周花费多少
如果我使用正常 AVG([AMOUNT])
,它会计算每日平均值,而不是每周平均值。
我发现了这个问题: Tableau - weekly average from daily data
然而,其中一个答案不是动态的,另一个列出了连续几周的平均值,而不是每个类别的平均值,我想不出一种方法来对我的问题应用相同的技术。
- 添加一个新的维度,这是针对周的
- 然后您可以创建一个变量来计算特定一周的平均金额,如下所示: {FIXED [日期(周数)],[类别]:平均([金额])}
- 那么当你想平均的时候你可以对上面的公式进行平均 AVG({FIXED [日期(周数)], [类别]: avg([金额]) })
首先确保名为 DATE 的字段的数据类型是日期类型而不是字符串类型。如果不是,请从鼠标右键菜单更改数据类型,或者在最坏的情况下使用计算字段中的日期解析功能。
其次,将 DATE 字段放到架子上后,将日期粒度级别设置为“周”。再次 ],使用鼠标右键上下文菜单。从第二批选项中选择将日期截断到周级别。该菜单上的第一批选项是日期部分,而不是日期。然后,您可能希望根据您的预期视图将字段更改为离散。
根据 Mark Andersen 的解决方案,我发现了以下内容:
创建计算字段
WeekNumber
:DATETRUNC('week', [Date])
创建计算字段
WeekTotal
:{FIXED [WeekNumber], [Main Category]: SUM([Amount Person]) }
创建计算字段
WeekDiff
:DATEDIFF('week',#2015-08-01#,TODAY())
创建计算字段
WeekAvg
:[WeekTotal] / [WeekDiff]
使用WeekAvg
作为条形的度量,就完成了。
对此有几点说明:
马克的解决方案朝着正确的方向发展。我不得不将 avg([Amount])
替换为 sum([Amount])
,因为我想获得每周的总数并在之后取平均值。
但是,它并没有准确计算出我想要的结果,因为 Tableau 仅根据有支出的周数计算平均值。
如果我有
40$ in week 1 20$ in week 2 30$ in week 4
然后它计算 (40+20+30)/3 = 30
而我想要 (40+20+30)/4 = 20.25
在我的用例中,我的解决方案是有效的,因为我有一个固定的时间范围,直到 TODAY()
,但是如果我在两个任意日期之间使用过滤器,那么如果能自动计算它会很方便。