我正在尝试从bigquery数据集中的多个表中进行计算和检索一些指标。我想在navigatedFunc
上调用嵌套,这是我暂时不能做的一列字符串,即它可以有值或为null。因此,目标是将该列转换为数组/记录...这就是我想到的主意,我也不知道如何去做。
navigatedFunc: function(args) {
// what would I do here or check against? How would you check against a specific screen title you navigated from?
}
和sfam
按product
,cart
,key_web
,dat_log
,univ
和{{ 1}}。
数据被分解为称为suniv
的宇宙,该宇宙由称为fam
的子宇宙组成。子宇宙包含被称为“家族”的家族,该子家族可能有也可能没有被称为sfam
的子家族。我想在univ
上调用嵌套以减少结果列。
数据是从Google Analytics(分析)收集的,用于深入了解网站流量和用户活动。
我正在尝试获取有关每个访问者的信息和指标,他/她在特定页面上花费的时间,所采取的措施等。结果表为我提供了在这些页面上花费的时间总和,一天的总访问次数以及该分类所属的细分的总和,因此,suniv
,sfam
,{{1 }}和prd.sfam
属于字符串类型的列(sfam可以为null,因为某些子宇宙suniv仅具有家族univ
,而不会下降到子家族级别{{1} }。
suniv
:指日期
fam
:产品页面的观看次数
sfam
:在所述页面上花费的总时间
我尝试了在网上找到的各种方法,但是没有用,所以我发布了代码和问题,希望找到指导和解决方案!
一个更简单的查询是:
fam
这是查询文本和图像中最后6列的示例结果:
同样,我想获得一列数组为sfam
,其中所有dat_log
的字符串值都为空。
我将输出限制为仅最后6列,前3列是行nrb_fp
和tps_fp
。每个 select
prd.key_web
, dat_log
, prd.nrb_fp
, prd.tps_fp
, prd.univ
, prd.suniv
, prd.fam
, prd.sfam
from product as prd
left join cart as cart
on prd.key_web = cart.key_web
and prd.dat_log = cart.dat_log
and prd.univ = cart.univ
and prd.suniv = cart.suniv
and prd.fam = cart.fam
and prd.sfam = cart.sfam
都由几个sfam
或一个都不组成(空),我希望能够在sfam
或key_web
上嵌套。
答案 0 :(得分:2)
我想获得一列
sfam
数组,其中所有sfam
的字符串值都为空。
这在BigQuery中是不可能的。如文档所述:
目前,BigQuery对于NULL和ARRAY具有以下两个限制:
如果查询结果中的ARRAY包含NULL元素,则BigQuery会引发错误,尽管可以在查询内部使用此类ARRAY。
也就是说,您的结果集不能包含包含NULL
个元素的数组。
答案 1 :(得分:1)
很明显,在BigQuery中,您无法输出保存NULL的数组,但是如果出于某种原因您需要以某种方式保留它们-解决方法是创建结构数组,而不是单个元素的数组
例如(BigQuery标准SQL),如果您尝试在下面执行
SELECT ['a', 'b', NULL] arr1, ['x', NULL, NULL] arr2
您将收到错误:Array cannot have a null element; error in writing field arr1
虽然您可以尝试以下操作
SELECT ARRAY_AGG(STRUCT(val1, val2)) arr
FROM UNNEST(['a', 'b', NULL]) val1 WITH OFFSET
JOIN UNNEST(['x', NULL, NULL]) val2 WITH OFFSET
USING(OFFSET)
您获得结果
Row arr.val1 arr.val2
1 a x
b null
null null
如您所见-通过这种方式-您甚至可以将两个元素都设置为NULL