作为背景,我一直在研究将 Google BigQuery 用作 BI 类型工具的后端平台。我想指出我还没有使用过 BigQuery,所以我的问题是关于我在文档中看到的内容。
高级计划是——也许——将 Big Query 作为构建在 Tableau 之上的仪表板的“实时”源。
显然,加载数据的最佳方式是使用 JSON 的非规范化结构(支持嵌套)
我看到我的 JSON 看起来像这样:
{
FirstName: 'John',
LastName: 'Doe',
Orders: {
orderNo: 12345,
orderDate: '2013-01-01'
orderlines: {
lineNo: 1,
qty: 1,
price: 12,
productId: 1234
productName: 'Learning System',
productSubsystem: 'SUB'
}
},
LeadScores: {
{
scoreName: 'Learning Tech',
scoreValue: 123,
scoreDate: '2013-01-01'
},
{
scoreName: 'ScoreB',
scoreValue: 15,
scoreDate: '2013-01-01'
}
},
Activities {
** email opens, email clicks, page view, etc. (all here) **
{
activityType: 'email',
activityAction: 'open',
activityDescription 'message-1234'
}
}
}
现在我的问题:
我可以将记录附加到“内部”集合(比如我想每天附加更多活动)吗?还是它需要是另一个实体?(就像洞 JSON 是一个单一的实体)
这种结构是否有意义或者最好有“3”个左右的实体(活动、订单、人口统计、分数)并使用 JOIN?我读到 BigQuery 不喜欢使用 JOIN。
一个潜在的结构可能是
对于分数:
{
date: '2013-01-01',
scoreName: 'Score A',
scoreValue: '1234',
customerId: '123456'
}
对于活动:
{
date: '2013-01-01',
activityType: 'email',
activityAction: 'open',
extra: '',
customerId: '123456'
}
人口统计
{
customerId: '123456',
firstName: 'A',
lastName: 'B', etc..
}
哪种方法更有意义?
谢谢!