我有一个嵌套的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 |
非常感谢任何见解。
答案 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;
希望这有帮助。