学习周记02# 基于mySQL构建Tableau的订单追踪仪表盘-创建计算字段并使用表计算

一些同学也许还没有学习过SQL(结构化查询语句),也不需要担心,和Excel中的公式一样,理解这些语句的核心并没有什么差别:都是基于你对数据处理的步骤进行抽象。在今天的任务中,也仅需要将这些数据看作与Excel中数据一样来使用。

首先打开一个新工作薄,在左侧选择“连接到服务器-mySQL”:

在弹出的窗口中输入服务器、端口号、用户名和密码。拓展一下python的连接代码,也是一个道理。

import MySQLdb

#创建连接,这里以本地主机为例
conn=MySQLdb.Connect(
    host='localhost', #主机名
    port=3306,        #端口号
    user='root',  #用户名
    passwd='your passport',   #密码
    db='your database',  #数据库名
    charset='utf8', #这里设置编码是为了输出中文
)

之后进入数据字段的选择窗口。我们需要连接数据库中现有的订单表单 (order table)和上架情况表单,选择产品编号(两边都有的字段作为连接字段,选择右连接。以上架情况表单为更大的产品“池子”,能够包含已经被购买的与还待售的产品。

这里我们的目的是构建一个Tableau的订单追踪仪表盘,需要在确定日期后可以看到该日上架的各品牌商品,追踪到独一无二的产品代号,希望能够显示这个商品第一次售出的时间、在当日同一批货品中第几个售出(相对热销度);该日上架的产品创建首次订单的时间,依次算出各品牌的首次转换周期

其中需要注意的问题是,产品售出的日期应该晚于“本次”上架日期。因此需要进行一个清洗——有效日期的先行筛选:

valid days = IIF([shop_at]<=[created_at (order table)],[created_at (order table)],today()+1)

之后显示该商品第一次售出的时间 :

first_order_product={ FIXED [product_id],DATE([shop_at]): MIN([valid days])}

产品第一次售出=DATE(MIN([first_order_product]))

显示该品牌第一次售出的时间 :

first_order_brand={ FIXED [brand],DATE([shop_at]): MIN([valid days])}

所属品牌首次售出=DATE(MIN([first_order_brand]))

在当日同一批货品中第几个售出(相对热销度):

RANK([所属品牌首次售出],'asc')

发生首次转换的周期

diff = DATEDIFF('day', [shop_at],[first_order_brand])

首次转换周期 = MIN([diff])

附注一个tips:在将计算好的日期字段转换为列来显示时,还可以进行转换为精确到日的字符型转换。

DATE(DATEPARSE ( "yyyy-MM-dd HH:mm:ss", STR([sale_at]) ))

下一步,进行对各品牌的下单密度的统计。使用表计算方法:

DATEIFF('day', LOOKUP(MIN([created_at (order table)]),-1)),MIN([created_at (order table)]))

这个公式的意思就是从上到下,从该品牌的第一个订单日期开始逐两行计算他们的时间差,以日为差值单位。

好啦~到此为止我们就完成了两个指标的表构建,之后在订单和上架数据更新的时候,作为连接到数据源实时更新的数据,他也能够自动刷新。

再进行这个项目的过程中,也有助于加深对tableau中所谓“聚合字段”的理解,可以将其看作一个数组/集合,因此在和其他函数组合使用时,有时需要加入中间参数协助处理。

猜你喜欢

转载自blog.csdn.net/Olivia_Linwei/article/details/88413458