【发布时间】:2022-09-28 19:36:24
【问题描述】:
我试图了解 Snowflake 在宽桌子方面的能力。
我有一张表格:
| userId | metricName | value | asOfDate |
|---|---|---|---|
| 1 | \'meanSessionTime\' | 30 | 2022-01-04 |
| 1 | \'meanSessionSpend\' | 20 | 2022-01-04 |
| 2 | \'meanSessionTime\' | 34 | 2022-01-05 |
| ... | ... | ... | ... |
但是,对于我的分析,我通常将该表的大部分子集拉入 Python 并导出指标名称
| userId | asOfDate | meanSessionTime | meanSessionSpend | ... |
|---|---|---|---|---|
| 1 | 2022-01-04 | 30 | 20 | ... |
| 2 | 2022-01-05 | 43 | 12 | ... |
| ... | ... | ... | ... | ... |
我正在考虑在 Snowflake 中生成这个 Pivot(通过 DBT,SQL 本身并不难),但我不确定这是好还是坏。
将数据保存为长格式有什么好的理由吗?有什么好的理由去广泛?
请注意,我不打算总是从宽表中使用SELECT * ,因此它可能是列式存储的一个很好的用例。
笔记:
这些是大表(数十亿或记录,数百个指标),所以我正在寻找一个意义检查,然后再烧掉几百美元的学分做一个实验。
-
您能否提供有关指标总数的更多详细信息?
-
此外,随着时间的推移,您是否可能不得不处理添加到数据模型中的新指标?指标是密集的还是稀疏的,有很多 NULL/默认值,您会存储 NULL/默认值行,还是在查询时估算它们?您期望的典型查询列计数有效负载是什么,因为您已经说过您并不总是选择查询中的每一列。有多少用户?同时更改给定用户的所有指标,或仅更改一小部分。
-
@Fieldy,我们有大约 600 个指标。它们很密集,并且每年都会添加新功能。历史数据未更新,因此可以将其视为仅附加数据集。可能会在任何时候选择 20-100 列。
标签: snowflake-cloud-data-platform