评论

收藏

[其他] tableau一道烧脑的表计算面试题

网络安全 网络安全 发布于:2021-07-11 10:24 | 阅读数:408 | 评论:0

  
  文章目录



    • 前言
    • tableau 描述
    • 怎么做?
    • (1) 用表计算法
    • (2)方法,用min[细分] 和max[细分]
    • (3)方法:用countd[细分] 聚合计算
    • 拓展
    • 拓展2



  
前言
  tableau 学习重要的是是否有较强的逻辑思维能力,接受新知识能力以及将学到的新知识举一反三应用到实际的工作当中的能力。如何在工作当中去灵活运用这才是tableau 面试题的重点考察对象。
题目 :横向去总和,纵向去平均,角落去总值。
DSC0000.png

tableau 描述
  在合计哪里我们一般可以进行总和,和平均操作
DSC0001.png
横向纵向总和
DSC0002.png
横向纵向平均
DSC0003.png
首先,我们做一个demo测试
这里的全部汇总依据是总和
DSC0004.png

  但是我们想全部汇总的依据是总和,但是要求显示的是平均值,怎么做呢?
DSC0005.png


怎么做?
  1.区分连个区域:
DSC0006.png
说明:图中,A区域是原来的值,B是tableau 汇总的算出来的平均值。 这里需要对LOD 掌握,avg({include:sum([销售额])}),这里讲有三种方法:

(1) 用表计算法
  A区域:first()不等于last()
B区域: 相等,因为就只有一个,看下图
DSC0007.png
计算字段(字母不区分大小写,和sql相似):
biao_avg
 if FIRST()!=LAST() then SUM([销售额])
else AVG({INCLUDE :SUM([销售额])}) END
DSC0008.png
DSC0009.png


(2)方法,用min[细分] 和max[细分]
  A区域:每一行来说,min 和max 都是一样的
B区域:此区域min是fist(0) ,而min[细分]=公司,max是last(0),而max[细分]=last(0)=小型企业,所以不等
DSC00010.png
  计算字段2
biao_avg2
IF  MIN(细分)=MAX(细分) then SUM(销售额) 
ELSE AVG({INCLUDE:SUM(销售额)}) END
DSC00011.png
DSC00012.png


(3)方法:用countd[细分] 聚合计算
  A区域:countd([细分])=1 ,因为对于A区域来说每一行只用一个值
B区域:countd([细分])不等于1,或者说此区域有四个不同的三个不同的细分
看下图:
DSC00013.png
DSC00014.png
biao_avg3
IF  COUNTD([细分]) =1 then SUM([销售额]) 
else avg({include:SUM([销售额])}) END
DSC00015.png
DSC00016.png


拓展
  在这里是否会有疑问,为啥要用if 语句呢,不直接用avg({include:sum([销售额]}),但是这样只会得到纵向的平均值,而我们需要横向得到总值而非平均值,这是时候显示的区别就来了。
最终我们要的效果:
DSC00017.png

拓展2
  问题二:在横向和纵向之间有一个交叉的格子,这个格子是15个细分和地区交界的值的平均值,前提在不改变横向总和,纵向平均的情况下,改变此交叉点,呈现所有的记录销售额总和。
计算字段:
biao_avg4
IF  COUNTD([细分])!=1 and COUNTD([地区])=1 
then AVG({INCLUDE :SUM([销售额])})
ELSEIF  COUNTD([细分])!=1 and COUNTD([地区])!=1 
then SUM({SUM([销售额])})
 //这里带大括号是求得总体的销售额总和,独立于视图详细级别,相当于fixed计算,
//不加大括号会根据视图详细级别变化且会报错
ELSE SUM([销售额])
END
DSC00018.png

  如下图:
DSC00019.png
总结
记住,每次遇到难题,不要随意应付了事,一定要自己下功夫,找资料,深入研究,经过自己的努力后,这样水平才能提高,光说不做假把式,从现在开始动起来吧。

  

  
关注下面的标签,发现更多相似文章