给定具有模式的BigQuery表:sync
,请考虑以下子选项:
target:STRING,evName:STRING,evTime:TIMESTAMP
这会按目标将事件分组为包含两个重复字段SELECT target,
NEST(evName) AS evNames,
NEST(evTime) AS evTimes,
FROM [...]
GROUP BY target
和evNames
的行。我知道每个重复字段中的值都没有以任何可预测的方式排序,但是这两个重复字段之间的顺序是否保持一致?
换句话说,如果我从evNames中选择第N个值,从给定行中的evTimes中选择第N个值,它们是否会从原始表中形成一个合适的对?
我真正想做的是创建一个嵌套的重复记录,例如:
evTimes
但我相信目前不支持像这样创建RECORD。
顺便说一句,这个问题的动机是希望使用最近引入的BigQuery user defined functions来实现状态机,作为窗口函数技巧的替代。
注意:我意识到另一种方法是通过将多个字段序列化为单个字符串表示来模拟记录,例如:
SELECT target, NEST(RECORD(evName, evTime)) AS events FROM [...] GROUP BY target
然后反序列化"记录"在后期阶段,但如果可以,我想避免这样做。