【问题标题】:Amazon Athena select entire JSON rowAmazon Athena 选择整个 JSON 行
【发布时间】:2017-08-22 05:57:51
【问题描述】:

在亚马逊雅典娜中,

我在一行上有一些 JSON 格式的数据文件

{ a: 1, b: 2 }
{ a: 2, b: 4 }
{ a: 3, b: 6 }

是否可以在仅使用字段a 创建表时输出整行数据?

SELECT ??? FROM table1 WHERE a > 1;

输出

{ a: 2, b: 4 }
{ a: 3, b: 6 }

谢谢

【问题讨论】:

    标签: hive presto amazon-athena


    【解决方案1】:

    是的,如果您的列是 JSON,那么您可以将其提取到 Athena,如下所示:

    SELECT *
    FROM my_table
    WHERE cast(json_extract_scalar(column_name,
             '$.a') as integer) > 1;
    

    【讨论】:

      【解决方案2】:

      hive 中有函数 concat(sting,string,...) 可以使用,但我怀疑 Athena 是否支持 UDF。

      示例代码

      SELECT concat('{ a: ' , cast(a as string),', b:' ,cast(a as string), ' }' )FROM table1 WHERE a > 1;
      

      评论后更新

      如果您必须在基表之上创建表形式受限列创建视图。

      【讨论】:

      • 感谢您的回答。但是,我的 json 数据行有一百个属性。字段太多,我选择其中一些来创建表格。我使用这些字段进行过滤。但是,在某些用例中。我会得到整行数据。
      • 在这种情况下,在基表之上创建视图。
      猜你喜欢
      • 2018-12-23
      • 1970-01-01
      • 1970-01-01
      • 2019-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-02
      相关资源
      最近更新 更多