简体中文 | English
母婴用品是淘宝的热门购物类目。随着国家二胎、三胎政策的推进,母婴类商品的销量将进一步增加。与此同时,年轻一代父母的育儿观念也发生了显著变化,推动了中国母婴电商市场的多样化发展。各大母婴品牌因此展开了更加激烈的竞争,越来越多的品牌看到了行业中的潜在商机,纷纷加入母婴电商领域,使得行业竞争愈发激烈。基于此,本项目将对“淘宝母婴购物”数据集进行可视化分析,以更好地挖掘数据洞察。
本次分析数据来源于淘宝母婴购物行为数据集,并在原始数据的基础上进行了字段调整,包括如下两张表:
字段 | 字段说明 | 说明 |
---|---|---|
user_id | 用户标识 | 抽样 & 字段脱敏 |
birthday | 婴儿出生日期 | 由 user_id 填写,有可能不真实,格式:YYYYMMDD |
gender | 婴儿性别 | (0 男孩,1 女孩,2 性别不明),由 user_id 填写,有可能不真实 |
字段 | 字段说明 | 说明 |
---|---|---|
user_id | 用户标识 | |
auction_id | 交易 ID | |
category_1 | 商品一级类目 ID | |
category_2 | 商品二级类目 ID | |
buy_amount | 购买数量 | |
auction_id | 订单 ID |
借助 KDP 平台的开源组件 Airbyte
、ClickHouse
、Superset
完成如下简单的商业分析任务,通过数据分析和可视化展示,充分挖掘数据的价值,让数据更好地为业务服务。
在 KDP 页面安装如下组件并完成组件的 QuickStart:
通常在真实的项目中我们需要对作业进行调度,这里我们使用 Airflow 来实现作业调度。
我们通过平台的 Airbyte 组件,将数据从原始数据源(CSV 文件)同步到 ClickHouse 中。
在 Airbyte 中添加一个 file 类型 source,读取 tianchi_mum_baby
tianchi_mum_baby
tianchi_mum_baby
(请勿修改)https://gitee.com/linktime-cloud/example-datasets/raw/main/airbyte/tianchi_mum_baby.csv
在 Airbyte 中添加一个 file 类型 source,读取 tianchi_mum_baby_trade_history
。
tianchi_mum_baby_trade_history
tianchi_mum_baby_trade_history
(请勿修改)https://gitee.com/linktime-cloud/example-datasets/raw/main/airbyte/tianchi_mum_baby_trade_history.csv
在 Airbyte 中添加一个 ClickHouse 类型 destination。
clickhouse
8123
default
default
ckdba.123
在 Airbyte 中添加一个 connection。source 选择 tianchi_mum_baby
,destination 选择 ClickHouse,使用默认配置下一步,Schedule type 配置为 Manual
,然后保存。手动点击同步按钮,同步数据。
在 Airbyte 中添加一个 connection。source 选择 tianchi_mum_baby_trade_history
,destination 选择 ClickHouse,使用默认配置下一步,Schedule type 配置为 Manual
,然后保存。手动点击同步按钮,同步数据。
查看 Airbyte 的 job 状态,如果成功,则说明数据已经成功导入到 ClickHouse 中。
完成上述操作后数据已经成功导入到 ClickHouse 中。接下来我们利用 ClickHouse 进行数据 ETL 处理。
将数据从 CSV 文件导入到 ClickHouse 后,对数据进行 ETL 处理,供 Superset 进行可视化分析。 Airflow 中相关的代码如下,具体代码参考 Github 或者 Gitee。
@task
def clickhouse_upsert_userinfo():
...
@task
def clickhouse_upsert_user_purchases():
...
@task
def clickhouse_upsert_dws_user_purchases():
...
注意:通常在数仓建模中有一定的命名规范和数据分层,这里简单处理。
通常在真实的项目中数据是随时间变化的,因此需要通过作业调度来更新数据。关于 Airflow 的基本使用可以参考应用的 QuickStart。
在数据开发章节中编写了 Airflow DAG,里面主要涉及两种作业的调度:
Airbyte 本身是可以配置调度的,但是为了统一管理作业和处理作业之间的依赖关系,这里统一使用 Airflow 来调度。下面主要介绍如何通过 Airflow 来调度 Airbyte 作业。
在 Airflow 中添加一个 HTTP 类型 connection。
airbyte
(后续 DAG 中会用到该连接)HTTP
airbyte-airbyte-server-svc
8001
Airbyte 作业 Task 代码如下:
user_info_to_clickhouse = AirbyteTriggerSyncOperator(
task_id='user_info_to_clickhouse',
airbyte_conn_id='airbyte',
connection_id='dd5ebac2-2827-460a-bc5b-d96b68eb5e8a', # 请使用您的 Airbyte connection id
asynchronous=False,
timeout=3600,
wait_seconds=3
)
user_purchases_to_clickhouse = AirbyteTriggerSyncOperator(
task_id='user_purchases_to_clickhouse',
airbyte_conn_id='airbyte',
connection_id='1f37ca26-b381-4fb9-8b68-fa1e633cc505', # 请使用您的 Airbyte connection id
asynchronous=False,
timeout=3600,
wait_seconds=3
)
airbyte_conn_id
即添加的 HTTP 类型 connection 的 IDconnection_id
即 Airbyte 中的 connection 的 ID,可以通过 URL 获取,如某个 connection 的 URL 为 http://airbyte-kdp-data.kdp-e2e.io/workspaces/xyz/connections/abc
,则 connection_id 为 abc
请 Fork 代码后,在 KDP 上更新 Airgflow 的
dags
的 gitSync 的配置,使用您自己的 git 仓库。
关于 Airbyte 作业的调度可以参考:Using the Airbyte Operator to orchestrate Airbyte OSS
在 Airflow 中启用名称为 taobao_user_purchases_example
的 DAG,作业是每天调度,第一次启用会补跑昨天的调度。也可以手动触发。点击 DAG 名称可以查看作业运行状态。
DAG 列表
DAG 运行状态
Superset 支持 ClickHouse 数据源,我们可以通过 Superset 来可视化分析数据。建议用户先完成 KDP Superset App 的 QuickStart。
使用账号 admin
密码 admin
登录 Superset http://superset-kdp-data.kdp-e2e.io
(注意添加本地 Host 解析) 页面。
default
的默认密码 ckdba.123
添加数据链接
依次点页面右 Settings
- Databases Connections
- + Database
添加 ClickHouse 数据源。
填写如下参数:
HOST: clickhouse
PORT: 8123
DATABASE NAME: default
USERNAME: default
PASSWORD: ckdba.123
添加 DATASET
依次点击页面上方的导航 DATASETS
- 右上方 + Dataset
添加数据集。
然后参考 Superset 官方文档,制作图表
50022520
; 男宝在品类 50014815
的购买量远超女宝,且购买量超过女宝的 2 倍。50014815
中的二级品类 50018831
的销量占整个此品类 64%机器学习 另外我们也可以通过机器学习来预测用户的购买行为,对用户进行推荐,对于没有按照预期购买的用户,我们可以推送优惠券来吸引用户购买。To Be Continue...