盛夏的果实 发表于 2021-7-11 10:24:20

tableau一道烧脑的表计算面试题

  
  文章目录

[*]

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



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


tableau 描述
  在合计哪里我们一般可以进行总和,和平均操作

横向纵向总和

横向纵向平均

首先,我们做一个demo测试
这里的全部汇总依据是总和

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


怎么做?
  1.区分连个区域:

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

(1) 用表计算法
  A区域:first()不等于last()
B区域: 相等,因为就只有一个,看下图

计算字段(字母不区分大小写,和sql相似):
biao_avg
if FIRST()!=LAST() then SUM([销售额])
else AVG({INCLUDE :SUM([销售额])}) END



(2)方法,用min[细分] 和max[细分]
  A区域:每一行来说,min 和max 都是一样的
B区域:此区域min是fist(0) ,而min[细分]=公司,max是last(0),而max[细分]=last(0)=小型企业,所以不等

  计算字段2
biao_avg2
IFMIN(细分)=MAX(细分) then SUM(销售额)
ELSE AVG({INCLUDE:SUM(销售额)}) END



(3)方法:用countd[细分] 聚合计算
  A区域:countd([细分])=1 ,因为对于A区域来说每一行只用一个值
B区域:countd([细分])不等于1,或者说此区域有四个不同的三个不同的细分
看下图:


biao_avg3
IFCOUNTD([细分]) =1 then SUM([销售额])
else avg({include:SUM([销售额])}) END



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


拓展2
  问题二:在横向和纵向之间有一个交叉的格子,这个格子是15个细分和地区交界的值的平均值,前提在不改变横向总和,纵向平均的情况下,改变此交叉点,呈现所有的记录销售额总和。
计算字段:
biao_avg4
IFCOUNTD([细分])!=1 and COUNTD([地区])=1
then AVG({INCLUDE :SUM([销售额])})

ELSEIFCOUNTD([细分])!=1 and COUNTD([地区])!=1
then SUM({SUM([销售额])})
//这里带大括号是求得总体的销售额总和,独立于视图详细级别,相当于fixed计算,
//不加大括号会根据视图详细级别变化且会报错
ELSE SUM([销售额])
END

  如下图:

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

  
文档来源:51CTO技术博客https://blog.51cto.com/u_15298458/3032197
页: [1]
查看完整版本: tableau一道烧脑的表计算面试题