传奇公司Snowflake(2):半结构化数据,细微之处见真功
按照重要程度来说,也许我应该讲一下Snowflake如何做数据分发和共享。但是,在写这部分前,我需要自己真正上传一些数据到Snowflake中,这样才能去体验如何共享数据。
那本文我们先真正上传并分析一些数据吧。
我们知道,随着JSON的流行,半结构化(Semi-Structured)数据对于数据分析也越来越重要,那我们就先来看看Snowflake对于半结构化数据的处理吧。
场景
近恰好了解了一下“易观第四届OLAP算法大赛”(在 Apache DolphinScheduler 社区中熟识了好几位来自易观的朋友),参见
《算法大赛评委亲授通关秘籍,报名倒计时!》
本次大赛的主题是:“事件分析”。“事件分析”功能的使用频次极高。事件分析模型主要用于分析用户打开 APP、注册、支付订单等在应用上的行为,通过触发用户数、触发次数等基础指标度量用户行为,也支持指标运算、构建复杂的指标衡量业务过程。
一共有三道测试题,让我们来分别用Snowflake解决:
- 场景1:多指标多维度分析;
- 场景2:多指标多维度分析,并计算任意维度小计、合计值;
- 场景3:多指标多维度分析,计算任意维度小计、合计值,并支持关联用户属性数据。
了解数据
首先,我们先看看测试数据是什么样子的。
测试数据解压后,一共两个文本文件,分别为:
- olap_2020_profile_test.dat: 用户 profile 数据, 大小为: 161M
- olap_2020_event_test.dat: event数据,大小为: 3G
对于profile数据,其有2列:
- 1、用户ID(distinct_id),Long类型 与event表的对应
- 2、内容明细,json格式,其内容类似于
{
"age": 39,
"fq15": 1,
"fq16": 1,
"fq17": 1,
"fq2": 1,
"fq5": 1,
"fq6": 1,
"total_amount": 10019.16,
"total_visit_days": 184
}
相关文章