案例:搭建交互式仪表板,找出公司产品TOP N(变量)的大客户,进行精细化运营
案例使用的是Tableau Desktop10.5,这一部分主要介绍数据获取和数据清洗;

案例数据:链接: (提取码: 635y )
https://pan.baidu.com/s/1honEgzUMUcqkz5XUtjl6rQpan.baidu.com一、基于SQL和多表关联进行数据连接和数据清理:
1)数据获取:
打开Tableau连接数据库,这里的数据源是Access文件,连接本地Access数据库:

查看需要用到的3张表字段及类型:

2)数据处理:
1.订单明细表处理,计算单品总金额,需要表中的字段有‘订单ID/单价/数量/折扣’ :

在这里,看到“订单明细表”缺失‘金额’字段,可以通过SQL语句计算‘金额’字段:
单价
但是发现有订单ID有重复,我们需要计算出每个订单ID对应的单品总金额(需要使用group by 语句),这里使用Tableau里面自带的SQL功能:

使用select嵌套查询语句:
select
使用预览结果查看:

为了便于区别表名称,这里重命名表为: 订单id-单品总金额;

2.订单表处理,计算订单总金额,需要表中的字段有‘订单ID/客户ID/雇员ID’ :

在这里,看到“订单表”的字段‘客户’有重复值,且每个客户对应的雇员也是不同的,但是订单ID有重复,需要把订单作为唯一值,并计算出对应的订单金额,这里使用Tableau的SQL的查询语句
输入SQL的查询语句:
select
使用预览结果查看:

点击确定后,我们发现如图界面,这里的预览表只有字段名称,没有字段对应的值,且字段名称里都是使用SQL查询后的2个新表的所有字段,这里需要使用join联接,根据2个新表的共同字段,来把表关联起来,这里的联接和SQL的join联接是一样的,Tableau共有4种联接方式,分别是:
左联接:left join * on, 查询的结果集包括SQL语句中左表的所有行,右表中匹配的行;如果左表的某行在右表中没有匹配行,则用空值表示;如果左表数据,在右表中有多行匹配,则查询结果左表为多行显示;
右联接:right join * on,查询的结果集包括SQL语句中右表的所有行,左表中匹配的行;如果右表的某行在左表中没有匹配的行,则左表数据为空;
内联接:inner join * on, 内连接是等值连接,可以理解为交集;
外联接:full outer join * on, 取左右两表中所有的行,可以理解为并集。
这里根据共同字段‘订单ID’,使用右联接:

得到以下视图,把重复列:订单id删除,并新命名SQL查询表:订单id-客户id-雇员id-单品总金额

3.客户表处理,汇总客户总金额,需要表中的所有字段 :

查看客户表,发现客户表里的数据无缺失,无空白,且数据字段都是需要用到的,所以客户表里不使用SQL语句进行数据处理,这里直接将客户表拖至关系表,进行多表关联,这里根据共同字段‘客户id进行右联接:

至此,完成数据获取,数据处理和多表关联了。