azure - U-SQL 错误 - 更改标识符以使用至少一个小写字母

标签 azure azure-data-lake u-sql

我对 U-SQL 相当陌生,并尝试在 Azure Data Lake Analytics 中运行 U-SQL 脚本,以使用 Parquet 提取器功能处理 Parquet 文件。我收到以下错误,但找不到解决该错误的方法。 错误 - 更改标识符以使用至少一个小写字母。如果不可能,则转义该标识符(例如:“[ACTIVITY]”),或将其嵌入到 CSHARP() block 中(例如 CSHARP(ACTIVITY))。

不幸的是,Parquet 文件中生成的所有不同字段都是大写的,我不想转义这些标识符。我尝试过是否可以用 CSHARP block 包装标识符,但它也失败(E_CSC_USER_RESERVEDKEYWORDASIDENTIFIER:保留关键字 CSHARP 用作标识符。)我是否可以提取 Parquet 文件?感谢您的帮助! 代码片段:

SET @@FeaturePreviews = "EnableParquetUdos:on";

@var1 = 提取事件字符串, AUTHOR_NAME 字符串, 隶属关系字符串

FROM "adl://xxx.azuredatalakestore.net/Abstracts/FY2018_028"
USING Extractors.Parquet();

@var2 = 选择 * 来自@var1 按事件 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 文件中的所有字段都是大写,您将必须全部引用它们...在将来的更新中,您将能够对 Parquet(和 Orc)文件说 EXTRACT * FROM ...,但您仍然会当您明确引用这些列时,需要引用它们。

关于azure - U-SQL 错误 - 更改标识符以使用至少一个小写字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51090984/

相关文章:

azure - U-SQL脚本性能分析

azure - 逻辑应用获取行任务仅处理 512 行?

azure - 如何在 Visual Studio 2017 上正确运行 Azure 函数?

azure - 如何修改Json提取器?

azure-data-lake - 如何使用 U-SQL 将处理后的文件移动到另一个目录?

azure - 将 U-SQL 表的计数读取为标量值?

u-sql - 无法在U-sql中进行数据类型转换

azure - 使用 bicep 将混合连接部署到 webapp

c# - Azure Blob 上传错误 : Could not load file or assembly 'System. Threading.Tasks.Extensions,版本=4.2.0.0

使用 Java SDK 通过代理访问 Azure Data Lake Store