U-SQL 错误 - 更改标识符以使用至少一个小写字母
U-SQL Error - Change the identifier to use at least one lower case letter
我对 U-SQL 相当陌生,并尝试 运行 Azure Data Lake Analytics 中的 U-SQL 脚本以使用 Parquet 提取器功能处理 parquet 文件。我收到以下错误,但找不到解决方法。
错误 - 更改标识符以使用至少一个小写字母。如果不可能,则转义该标识符(例如:'[ACTIVITY]'),或将其嵌入 CSHARP() 块(例如 CSHARP(ACTIVITY)).
不幸的是,Parquet 文件中生成的所有不同字段都是大写的,我不想转义这些标识符。我已经尝试过是否可以用 CSHARP 块包装标识符,但它也失败了(E_CSC_USER_RESERVEDKEYWORDASIDENTIFIER:保留关键字 CSHARP 用作标识符。)无论如何我可以提取 parquet 文件吗?谢谢你的帮助!
代码片段:
SET @@FeaturePreviews = "EnableParquetUdos:on";
@var1 =
提取 ACTIVITY 字符串,
AUTHOR_NAME 字符串,
隶属关系字符串
FROM "adl://xxx.azuredatalakestore.net/Abstracts/FY2018_028"
USING Extractors.Parquet();
@var2 =
SELECT *
从@var1
按 ACTIVITY ASC 排序
获取 5 行;
输出@var2
至 "adl://xxx.azuredatalakestore.net/Results/AbstractsResults.csv"
使用 Outputters.Csv();
根据你的描述你想说
EXTRACT ALLCAPSNAME int FROM "/data.parquet" USING Extractors.Parquet();
在 U-SQL 中,我们保留所有大写标识符,以便我们可以在将来添加新关键字而不会使旧脚本失效。
要解决这个问题,您只需像在任何其他 SQL 方言中一样引用名称(转义):
EXTRACT [ALLCAPSNAME] int FROM "/data.parquet" USING Extractors.Parquet();
请注意,这不会更改字段的名称。这只是对字段进行寻址的句法方式。
另请注意,在大多数 SQL 社区中,始终引用标识符以避免保留关键字冲突被认为是最佳做法。
如果 Parquet 文件中的所有字段都是大写的,你将不得不将它们全部引用......在未来的更新中你将能够说 EXTRACT * FROM ... 对于 Parquet(和 Orc)文件,但是你当您明确引用这些列时,仍然需要引用它们。
我对 U-SQL 相当陌生,并尝试 运行 Azure Data Lake Analytics 中的 U-SQL 脚本以使用 Parquet 提取器功能处理 parquet 文件。我收到以下错误,但找不到解决方法。 错误 - 更改标识符以使用至少一个小写字母。如果不可能,则转义该标识符(例如:'[ACTIVITY]'),或将其嵌入 CSHARP() 块(例如 CSHARP(ACTIVITY)).
不幸的是,Parquet 文件中生成的所有不同字段都是大写的,我不想转义这些标识符。我已经尝试过是否可以用 CSHARP 块包装标识符,但它也失败了(E_CSC_USER_RESERVEDKEYWORDASIDENTIFIER:保留关键字 CSHARP 用作标识符。)无论如何我可以提取 parquet 文件吗?谢谢你的帮助! 代码片段:
SET @@FeaturePreviews = "EnableParquetUdos:on";
@var1 = 提取 ACTIVITY 字符串, AUTHOR_NAME 字符串, 隶属关系字符串
FROM "adl://xxx.azuredatalakestore.net/Abstracts/FY2018_028"
USING Extractors.Parquet();
@var2 =
SELECT *
从@var1
按 ACTIVITY ASC 排序
获取 5 行;
输出@var2
至 "adl://xxx.azuredatalakestore.net/Results/AbstractsResults.csv"
使用 Outputters.Csv();
根据你的描述你想说
EXTRACT ALLCAPSNAME int FROM "/data.parquet" USING Extractors.Parquet();
在 U-SQL 中,我们保留所有大写标识符,以便我们可以在将来添加新关键字而不会使旧脚本失效。
要解决这个问题,您只需像在任何其他 SQL 方言中一样引用名称(转义):
EXTRACT [ALLCAPSNAME] int FROM "/data.parquet" USING Extractors.Parquet();
请注意,这不会更改字段的名称。这只是对字段进行寻址的句法方式。
另请注意,在大多数 SQL 社区中,始终引用标识符以避免保留关键字冲突被认为是最佳做法。
如果 Parquet 文件中的所有字段都是大写的,你将不得不将它们全部引用......在未来的更新中你将能够说 EXTRACT * FROM ... 对于 Parquet(和 Orc)文件,但是你当您明确引用这些列时,仍然需要引用它们。