azure - U-SQL 错误 - 更改标识符以使用至少一个小写字母
问题描述
我对 U-SQL 相当陌生,并尝试在 Azure Data Lake Analytics 中运行 U-SQL 脚本,以使用 Parquet 提取器功能处理 Parquet 文件。我收到以下错误,但找不到解决方法。错误 - 更改标识符以使用至少一个小写字母。如果这不可能,则转义该标识符(例如:'[ACTIVITY]'),或将其嵌入到 CSHARP() 块中(例如 CSHARP(ACTIVITY))。
不幸的是,Parquet 文件中生成的所有不同字段都是大写的,我不想转义这些标识符。我尝试过是否可以用 CSHARP 块包装标识符并且它也失败了(E_CSC_USER_RESERVEDKEYWORDASIDENTIFIER:保留关键字 CSHARP 用作标识符。)无论如何我可以提取镶木地板文件吗?谢谢你的帮助!代码片段:
SET @@FeaturePreviews = "EnableParquetUdos:on";
@var1 = EXTRACT ACTIVITY 字符串、AUTHOR_NAME 字符串、AFFLIATION 字符串
FROM "adl://xxx.azuredatalakestore.net/Abstracts/FY2018_028"
USING Extractors.Parquet();
@var2 = SELECT * FROM @var1 ORDER BY ACTIVITY ASC FETCH 5 ROWS;
使用 Outputters.Csv() 将@var2 输出
到“adl://xxx.azuredatalakestore.net/Results/AbstractsResults.csv”;
解决方案
根据您的描述,您尝试说
EXTRACT ALLCAPSNAME int FROM "/data.parquet" USING Extractors.Parquet();
在 U-SQL 中,我们保留所有大写标识符,以便将来可以添加新关键字,而不会使旧脚本失效。
要解决此问题,您只需像在任何其他 SQL 方言中一样引用名称(转义它):
EXTRACT [ALLCAPSNAME] int FROM "/data.parquet" USING Extractors.Parquet();
请注意,这不会更改字段的名称。这只是解决该领域的语法方式。
另请注意,在大多数 SQL 社区中,始终引用标识符以避免保留关键字冲突被认为是最佳实践。
如果 Parquet 文件中的所有字段都是大写的,则必须将它们全部引用...明确引用它们时的列。
推荐阅读
- react-native - 如何添加预加载(例如加载...或获取...)反应原生 axios 调用?
- javascript - 浏览器将属性 translate="yes" 更改为 translate="translate"
- c# - c#通过蓝牙发送文件
- python - 如何在termux上运行python虚拟环境
- angular - 由于 crbug/1173575,无法在 WebStorm 中调试 Angular 项目
- python - MLP 混合器 - 保存训练模型
- java - 每当我尝试运行我的 mcp 客户端时都会出现错误
- c++ - 需要帮助了解 C++ 代码中的冒号和逗号
- python - pandas:根据索引列获取值
- python - Pandas Groupby 在一个类中应用函数