"t(sites)"对于presto查询意味着什么?



以下是来自 aws 站点的片段:

WITH dataset AS (
SELECT ARRAY[
CAST(
ROW('aws.amazon.com', ROW(true)) AS ROW(hostname VARCHAR, flaggedActivity ROW(isNew BOOLEAN))
),
CAST(
ROW('news.cnn.com', ROW(false)) AS ROW(hostname VARCHAR, flaggedActivity ROW(isNew BOOLEAN))
),
CAST(
ROW('netflix.com', ROW(false)) AS ROW(hostname VARCHAR, flaggedActivity ROW(isNew BOOLEAN))
)
] as items
)
SELECT sites.hostname, sites.flaggedActivity.isNew
FROM dataset, UNNEST(items) t(sites)
WHERE sites.flaggedActivity.isNew = true;

它有效!但t(sites)意味着什么?当我尝试使用真实表而不是dataset时,我得到了错误Table 'site' not found

它看起来很奇怪 - 就像用UNNEST关键字调用的函数一样。有人可以解释这是什么吗?

FROM dataset, UNNEST(items) t(sites)

UNNEST()是一个集合返回函数:它生成一系列行,其中一列保存原始数组中的值。

这组行也称为派生表。此处t是派生表的别名,site是此派生表中(仅(列的名称。

如果我们添加AS关键字,可能会更容易理解:

FROM dataset, UNNEST(items) AS t(sites)

相关内容

  • 没有找到相关文章

最新更新