版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lituo20/article/details/52013229
好久没有更新了,今天主要分享一下在tableau中如何计算growth,也就是当前年跟去年或者上一个月份的差值。
当然每个人采取的方式不同,个人习惯在view中将PY及PM的值计算好,直接在tableau中去使用,首先我们说说在tableau中如何计算grw:
1.在tableau计算:
当然在tableau中根据不同的展示方式我们采用不同的方法,可以用表计算,tableau中的函数公式获取增长的值, 以下示例计算计算sales 增长,
如果我以这样的Trend去显示每年的销售,我们直接采用表计算,非常方便,具体如下:
选择Quick table caculation--> Diffrence. 这样就自动计算每年的增长,或者增长率,同理如果我们也可以看每个月的增长。
这种方式当然简单,但是有时候需求往往不止这样,如果要显示去年的sales值或者上个月的Sales怎么办?并且不需要这样显示?
例如:只要比较两年的sales及增长,当然在tableau中用函数计算公式可以获取去年的值,但是比较麻烦,我个人一般采用在view中提前计算好PY的值。
2.view中计算PY:
SELECT
YEARMONTH
, BRAND
, Product
, Provice,
, City,
, Type_name
, SUM(Sales) AS Sales
, SUM(Sales_py) AS Sales_py
FROM(
YEARMONTH
, BRAND
, Product
, Provice,
, City,
, Type_name
, Sales
, NULL AS Sales_py
FROM Sales_tab
UNION ALL
add_months(YEARMONTH,12) as YEARMONTH
, BRAND
, Product
, Provice,
, City,
, Type_name
, NULL AS Sales
, Sales AS Sales_py
FROM Sales_tab) A
GROUP BY YEARMONTH
, BRAND
, Product
, Provice,
, City,
, Type_name
当然可能有人好奇为什么要用union, join 不就可以了,其实,饶了一大圈我就想说这个问题,不能用join,因为会丢失数据,例如2016年中的某一个Product 不一定在2015年的销售中,这样导致数据没有关联上,数据丢失。如果力度只是到年,当然没问题的,但是如果更细力度的数据j'oin,就会导致数据丢失