【发布时间】:2017-08-08 17:43:47
【问题描述】:
跟进此事-Bigquery multiple unnest in a single select
我们使用 bigquery 作为我们的仓储解决方案,并试图通过整合来突破极限。一个简单的例子是客户跟踪。客户产生收入,在我们的网站上有多个接触点,并在我们这里独立维护多个帐户。对于想要对客户进行行为分析的业务用户,他们想要跟踪访问量、产生的收入以及他们的帐户如何影响留存率,我们正在尝试评估嵌套结构是否适合我们
下面是一个例子。我有 3 张桌子。
客户 (C)
C_Key| C_Name
-----|------
1 | ABC
2 |防御
帐户 (A)
A_Key | C_Key
11 | 1
12 | 1
21 | 2
22 | 2
23 | 2
收入 (R)
R_Key | C_Key |收入
-------|---------|----------
11 | 1 | $10
12 | 1 | $20
21 | 2 | $10
我使用 array_agg 将这三个组合成一个嵌套表,如下所示:
{Client,
Accounts:
[{
}],
Revenue:
[{
}]
}
我希望能够在单个查询中使用多个取消嵌套,如下所示
Select client, Count Distinct(Accounts) and SUM(Revenue) from <single nested
table>, unnest accounts, unnest revenue
预期输出为 2 行,
1,2,30 美元
2,3,10 美元
但是,在同一个查询中有多个未嵌套会导致交叉连接。
实际输出为
1,2,60 美元
2,3,30 美元
【问题讨论】:
-
抱歉,不清楚您在问什么。你能提供一个你想要的具体例子吗? stackoverflow.com/help/how-to-ask我不知道这个问题是关于权限、查询还是数据建模。
-
对不起,这里是。问题主要是在 bigquery 中对嵌套结构进行建模。例如3张桌子。客户 (C)、账户 (A)、收入 (R)。 (C) 与 (A) 和 (R) 具有一对多的关系。我最初的假设是我可以使用嵌套模型来存储所有上述信息,并根据需要使用单个选择取消嵌套它们。当我尝试
Select client, Count Distinct(Accounts) and SUM(Revenue) from <single nested table>, unnest accounts, unnest revenue时,1:M 关系会导致重复我得到重复。我想构建一个通用结构来允许临时查询。 -
请编辑您的问题(不要为此使用 cmets!)以显示您遇到问题的代码的Minimal, Complete, and Verifiable example,然后我们可以尝试帮助解决具体问题。也提供数据示例。所以我们实际上可以帮助你!
标签: google-bigquery