Google Analytics BigQuery表的结构如下(旧式SQL表示法-仅显示相关字段):
visitId: INTEGER
hits: RECORD/REPEATED
hits.hour: INTEGER
在一个这样的表上,以下查询工作良好:
SELECT
visitId,
MIN(h.hour) AS firstHitHour
FROM
`my-table.ga_sessions_20161122`, UNNEST(hits) AS h
GROUP BY
visitId
但是使用这种替代语法:
SELECT
visitId,
(SELECT MIN(hour) FROM UNNEST(hits)) as firstHitHour
FROM
`my-table.ga_sessions_20161122`
GROUP BY
visitId
触发以下错误:
错误 :UNNEST表达式引用既未分组也未汇总的列匹配项
我知道UNNEST(hits)
必须以某种方式将其分组或聚合,但是由于此列是array (repeated)
,它的确切含义是什么?
如果我尝试hits
按要求对列进行“分组”,如下所示:
(SELECT MIN(hour) FROM UNNEST(hits) as h GROUP BY h) as firstHitHour
然后我得到一个Grouping by expressions of type STRUCT is not allowed
错误。
如何更正此替代语法以产生与第一个相同的结果?
我的第一个答案是该问题的原始版本。
当我回答时,我意识到您已将其更改为另一种:o)
因此,以下答案是您问题的最新版本:
我认为在“替代”版本中,您根本不需要GROUP
BY,因为您可以逐行对原始(未展平)的数据进行操作,并且对于每一行(visitId)都可以计算firstHitHour
SELECT
visitId,
(SELECT MIN(hour) FROM UNNEST(hits)) as firstHitHour
FROM
`my-table.ga_sessions_20161122`
在初始查询中,您需要对每一行的所有记录进行展平,这就是为什么需要将它们重新分组的原因
我试图调试一个旧的jsp站点,所以我在运行Windows7的本地机器上安装了tomcat 7和Netbean IDE 7.2.1,并设置了一切。但是当我运行它时,我得到一个错误: SEVERE: Servlet.service()为servlet jsp抛出异常org.apache.jasper.JasperExcture: /pages/caselisting.jsp(行: 133,列: 35)
我有以下用于javascript密码验证的正则表达式: 正则表达式规则是: 12-25个字符 至少有一个大写字母 至少有一个小写字母 至少有一个数字 至少有一个特殊字符:!#$%()*,-./:;=?@[]^ `{124;}~ 然而,正则表达式似乎不起作用。它匹配任何字符。我该怎么解决这个问题?
本文向大家介绍正则表达式常用用法汇总,包括了正则表达式常用用法汇总的使用技巧和注意事项,需要的朋友参考一下 在没看正文之前,先给大家介绍下正则表达式基本概念: 正则表达式,又称正规表示法、常规表示法。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则。在很多文本编辑器里,正
问题内容: 我试图以一种优雅的方式编写一个函数,该函数将字典列表进行分组并汇总(加和)like键的值。 例: 我尝试使用itertools为groupby进行此操作,并对每个相似键值对进行求和,但是这里缺少一些内容。这是我的函数当前的样子: 问题答案: 您可以使用和。 使用dict可以在中完成,而排序则需要时间。 的优点是它将自动将相似键的值相加。 例:
问题内容: 我想在程序的输出日志上进行正则表达式匹配(在Python中)。日志包含如下几行: 我想捕获在以VALUE开头的行的第一次出现之后出现的数字列表。即,我希望它返回。问题是我事先不知道会有多少个数字。 我试图将其用作正则表达式: 这与行匹配,但只捕获了最后一个值,所以我得到了(‘119’,)。 问题答案: 您要查找的是 解析器 ,而不是正则表达式匹配项。在您的情况下,我会考虑使用一个非常简
问题内容: 如何在MySQL中使用正则表达式引用组?我试过了: 但它不起作用。这个怎么做? 问题答案: 您不能,在MySql中无法引用正则表达式捕获组。