如何转换和写回嵌套列

时间:2018-02-21 19:16:46

标签: apache-drill

我有一个嵌套的json数据文件。我需要使用特定的数字数据类型写入Parquet。所以需要控制一些字段为Integer,有些字段为Long等。我可以转换列,但不能将它们写回嵌套位置。数据必须是嵌套结构。

以下是我的尝试:

CREATE TABLE cdg.`test2.parquet` AS SELECT CAST(t.l1.l2.id AS INTEGER) l1.l2.id FROM cdg.`data.json` t;

我在CAST语句的右括号后面的路径上得到的错误是Error: PARSE ERROR: Encountered "." AS INTEGER) l1.l2.id FROM c ^

分析#1:如果我没有放入那个嵌套字段,它会将表达式结果写得很好:

+---------+ | EXPR$0 | +---------+ | 22222 | | 22222 | | 22222 | | 22222 |

非常感谢任何见解。

1 个答案:

答案 0 :(得分:0)

此错误表示您无法将字段名称l1.l2.id指定为转换表达式的别名。别名应该是顶级字段。

Alias可以使用或不使用'作为'提供给列。 keyword(隐式解析器假定为)

因此,例如,如果要为强制转换表达式aId的结果表达式命名,则可以使用以下Sql语句。

CREATE TABLE cdg。test2.parquet AS SELECT CAST(t.l1.l2.id AS INTEGER)as Id FROM cdg。data.json t;

希望这有帮助。