我们使用Python连接到BigQuery来下载每日事件_YYYYMMDD.csv文件。这些文件包含一个逗号分隔的列列表,其中一些列包含.json数据(其中一些还包含嵌入式.json)。
这些日常文件中的每一个都包含大约100万条记录。
使用Google GA4事件模式,我们正在SQL server中构建与GA4相关的表。
- 事件
- 用户
- 设备
- geo
- app_info
- 流量来源
- 溪流和平台
- 电子商务
- 项目
在SQL server中将.csv文件(可以包含多个级别的嵌入式.json)解析为适当的表(上面列出)时,建议采用什么方法?
我们开始创建一个SSIS包,将.csv文件导入临时表,然后创建一个解析行的脚本。然而,在这样做的时候,我们意识到我们需要创建一个非常复杂的查询,其中包含多个交叉应用语句,并且关心性能。
最佳实践是在导出BQ GA4导出之前将其压平。您可以在网上找到各种方法来压平它,但主要思想是在事件属性/自定义维度列中去掉json。典型的解决方案是为每个ep/cd制作一个不同的列。
在这之后,人们通常只是将数据按原样移动到他们喜欢的数据存储中。ETL在这一点上的任何突变都将是特定于公司的。通常情况下,ETL逻辑会随着时间的推移而变得臃肿,总是旨在改进数据。