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

前言

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
IF  MIN(细分)=MAX(细分) then SUM(销售额) 
ELSE AVG({INCLUDE:SUM(销售额)}) END

在这里插入图片描述
在这里插入图片描述

(3)方法:用countd[细分] 聚合计算

A区域:countd([细分])=1 ,因为对于A区域来说每一行只用一个值
B区域:countd([细分])不等于1,或者说此区域有四个不同的三个不同的细分
看下图:
在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

拓展

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

拓展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

在这里插入图片描述

如下图:

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

posted @ 2021-06-18 15:28  zhangxin9711  阅读(114)  评论(0编辑  收藏  举报