对行对象字段的引用

Wil*_*bur 2 presto trino

我无法访问我在 Presto 中创建的行对象的字段。Presto 文档声称“字段......使用字段引用运算符访问”。但是,这似乎不起作用。这段代码重现了这个问题:

CREATE TABLE IF NOT EXISTS data AS
SELECT * FROM (VALUES
    (1, 'Adam', 17),
    (2, 'Bill', 42)
) AS x (id, name, age);

CREATE TABLE IF NOT EXISTS ungrouped_data AS
 WITH grouped_data AS (
  SELECT
    id,
    ROW(name, age) AS name_age
  FROM data
 )
SELECT
  id,
  name_age.1 AS name,
  name_age.2 AS age
FROM grouped_data;
Run Code Online (Sandbox Code Playgroud)

它返回“无关输入'.1'”错误。

Mar*_*rso 5

Trino(以前称为 Presto)314 开始,现在可以ROW使用[]运算符引用字段。

WITH grouped_data AS (
  SELECT
    id,
    ROW(name, age) AS name_age
  FROM data
)
SELECT
  id,
  name_age[1] AS name,
  name_age[2] AS age
FROM grouped_data;
Run Code Online (Sandbox Code Playgroud)