我如何启用“小组”聚合维度作为在BigQuery中创建的函数的输入
例如,我需要在bigquery中以多个不同级别的多个不同级别创建一个表:
SELECT
dimension_a,
dimension_b,
SUM(value) AS value
FROM mydataset.table
GROUP BY dimension_a, dimension_b
UNION ALL
SELECT
dimension_a,
NULL AS dimension_b,
SUM(value) AS value
FROM mydataset.table
GROUP BY dimension_a
UNION ALL
SELECT
NULL AS dimension_a,
dimension_b,
SUM(value) AS value
FROM mydataset.table
GROUP BY dimension_b
我想这不是最优雅的代码...例如,我有18个不同的聚合维度代码与Union All
的代码块18次,我想知道是否有一个函数可以使我可以将聚合维度作为输入?
例如,类似:
CREATE OR REPLACE TABLE FUNCTION mydataset.aggregation_dimension(X type, Y type)
AS
SELECT
X as dimension_a, Y as dimension_b,
SUM(value) AS value
FROM mydataset.table
GROUP BY X, Y;
SELECT * FROM mydataset.aggregation_dimension(dimension_a, dimension_b)
UNION ALL
SELECT * FROM mydataset.aggregation_dimension(dimension_a, NULL)
UNION ALL
SELECT * FROM mydataset.aggregation_dimension(NULL, dimension_b)
其中x,y应该是表mydataset.table.table
...但是,我不知道如何定义这种输入的类型。我也不知道是否有可能有这样的设置...
谢谢您的帮助!
I need to create a table with the same aggregations at multiple different levels in BigQuery, for example:
SELECT
dimension_a,
dimension_b,
SUM(value) AS value
FROM mydataset.table
GROUP BY dimension_a, dimension_b
UNION ALL
SELECT
dimension_a,
NULL AS dimension_b,
SUM(value) AS value
FROM mydataset.table
GROUP BY dimension_a
UNION ALL
SELECT
NULL AS dimension_a,
dimension_b,
SUM(value) AS value
FROM mydataset.table
GROUP BY dimension_b
I guess it is not the most elegant codes... for example, I have 18 different aggregation dimensions, that means I need to stack those similar code blocks 18 times with UNION ALL
, I am wondering if there could be a function that allows me to have the aggregation dimension as the input?
For example, something like:
CREATE OR REPLACE TABLE FUNCTION mydataset.aggregation_dimension(X type, Y type)
AS
SELECT
X as dimension_a, Y as dimension_b,
SUM(value) AS value
FROM mydataset.table
GROUP BY X, Y;
SELECT * FROM mydataset.aggregation_dimension(dimension_a, dimension_b)
UNION ALL
SELECT * FROM mydataset.aggregation_dimension(dimension_a, NULL)
UNION ALL
SELECT * FROM mydataset.aggregation_dimension(NULL, dimension_b)
Where X, Y should be a column in the table mydataset.table
... However, I have no idea how to define the type of this kind of inputs. I also don't know if it is possible to have such a setting...
Thank you in advance for your help!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论