设计事件表的最佳方式是什么,每次更新事件时都提供不同的事件项

问题描述 投票:0回答:1

我有一个正在使用的原始事件表。它有两列

date
metadata
。元数据具有所有事件属性的原始 json 转储。但我想明确的是,每次发送的属性都是不同的。然后我需要将这些数据提取到 Looker 中。

原始表:

时间戳 元数据
2024-04-1 {"type":"已创建","title":"test1","due":"2024-04-02","id":12345}
2024-04-1 {"类型":"已确认","id":12345}
2024-04-1 {"type":"已完成","id":12345, "completedby":"johndoe"}

现在我需要将其标准化

选项A:

时间戳 类型 标题 截止日期 id 完成者
2024-04-1 已创建 测试1 2024-04-02 12345
2024-04-1 已确认 12345
2024-04-1 已完成 约翰多

选项B:

时间戳 类型 标题 截止日期 id 完成者
2024-04-1 已创建 测试1 2024-04-02 12345 约翰多
2024-04-1 已确认 测试1 2024-04-02 12345 约翰多
2024-04-1 已完成 测试1 2024-04-02 12345 约翰多

我应该如何设计表格,我应该用各自的信息填充所有行(选项 B)还是应该将它们保留为空(选项 A)?

database database-design dbt looker
1个回答
0
投票

选项 B 是我的目标,特别是因为它包含所有行的相关信息,这将使报告更容易。

此外,考虑到您想要将不同的操作(

created
confirmed
completed
)视为“子事件”,您可以在选项 B 之上做的一件事是还添加基于代理键在
id
type
timestamp
上。请参阅下面使用 dbt_utils 包的示例:

{{ dbt_utils.generate_surrogate_key(['id', 'type', 'timestamp']) }} as sub_event

通过这种方式,您可以在模型中使用主键来定义粒度,以及例如轻松计算每个用户的“子事件”。

© www.soinside.com 2019 - 2024. All rights reserved.