Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 雅典娜联盟-我需要定义结构列吗?_Sql_Amazon Athena - Fatal编程技术网

Sql 雅典娜联盟-我需要定义结构列吗?

Sql 雅典娜联盟-我需要定义结构列吗?,sql,amazon-athena,Sql,Amazon Athena,我在Athena中有一组表,其中包含具有不同嵌套列的结构。我希望将所有这些表作为单个表(即联合视图)进行查询,并且我希望能够仅在嵌套列存在时从结构中返回该列,否则返回null 例如: Table1: email record: {email, first_name, last_name} Table2: email record: {email, dob} 我希望能够联合这些,然后在公共电子邮件栏查询。然后执行类似于record.first\u name的操作,以生成一列,其中填充了表1行

我在Athena中有一组表,其中包含具有不同嵌套列的结构。我希望将所有这些表作为单个表(即联合视图)进行查询,并且我希望能够仅在嵌套列存在时从结构中返回该列,否则返回null

例如:

Table1: 
email
record: {email, first_name, last_name}

Table2:
email
record: {email, dob}
我希望能够联合这些,然后在公共电子邮件栏查询。然后执行类似于
record.first\u name
的操作,以生成一列,其中填充了表1行中的数据,并为表2行生成一个空值

我尝试在属性周围包装一个try()块,结果出现了“column cannot resolved”错误


这可能吗?或者我需要在视图/联合查询中定义结构列吗?

您可以将
record
转换为
JSON
,如下所示:

SELECT
  email,
  CAST(record AS JSON) AS record
FROM table1

UNION ALL

SELECT
  email,
  CAST(record AS JSON) AS record
FROM table2

我相信您也可以强制转换到
映射,但我无法理解语法。

一个解决方案可能是对要提取的每个元素使用转换。啊哈!我不知道JSON数据类型。谢谢