传奇公司Snowflake(2):半结构化数据,细微之处见真功

2022-03-10 00:00:00 数据 分析 类型 多维 小计

按照重要程度来说,也许我应该讲一下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
    }

相关文章