azure - [U-SQL]][FlexExtractor] 我无法加入。表达式必须都是列

标签 azure azure-data-lake u-sql

我正在使用 Cortana Analytics Suite。目前正在使用 Visual Studio 数据湖分析项目分析数据湖存储的数据,其中的文件包含数百列。阅读 u-sql 文档后,我找到了一个 Flex 提取器来帮助解决这个问题(数百列)。柔性提取器与一张 table 完美配合。问题始于连接表,编译时出现此错误:

“错误 E_CSC_USER_JOINCOLUMNSEXPECTEDONEACHSIDEOFCONDITION:比较两侧的表达式 map[0] 和 map_2[0] 必须都是列。”

我有两个这样的提取器:

@data = EXTRACT map SqlMap<Int32,string>
    FROM @input
    USING new USQLFlexExtractor.FlexExtractor();

@data_2 = EXTRACT map_2 SqlMap<Int32,string>
    FROM @input_2
    USING new USQLFlexExtractor.FlexExtractor();

@output =  SELECT map[0], map[2], map_2[1]
FROM @data AS data
LEFT JOIN @data_2 AS data_2 ON map[0] == map_2[0]

我正在遵循这个示例(后面有 usql 脚本和 C# 代码):https://github.com/Azure/usql/tree/master/Examples/FlexibleSchemaExtractor/FlexibleSchemaExtractor

我什至尝试了使用组合表达式的不同方法,但遇到了相同的错误。

有什么想法吗?

问候

最佳答案

U-Sql 不支持连接条件中的派生列。您可以尝试使用这样的中间结果集:

@dataExtract = EXTRACT map SqlMap<Int32,string>
    FROM @input
    USING new USQLFlexExtractor.FlexExtractor();

@dataExtract_2 = EXTRACT map_2 SqlMap<Int32,string>
    FROM @input_2
    USING new USQLFlexExtractor.FlexExtractor();

@data =
    SELECT map[0] AS map0,
           map[2] AS map2
FROM @dataExtract;

@data_2 =
    SELECT map[0] AS map2_0,
           map[1] AS map2_1
FROM @dataExtract_2;

@output =  SELECT map0, map2, map21
FROM @data AS data
LEFT JOIN @data_2 AS data_2 ON map0 == map2_0;

关于azure - [U-SQL]][FlexExtractor] 我无法加入。表达式必须都是列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48405244/

相关文章:

azure - 如何导出和导入Azure Function的 "application settings"

node.js - 错误:InvalidAuthenticationTokenTenant' The access token is from the wrong issuer

Azure 数据工厂 U-SQL 事件动态参数

sql - Azure/U-SQL - 将查询输出到屏幕

javascript - 有关使用客户端凭据 One Drive 访问 MS Graph 的问题吗?

Azure函数: clarifications about zip deployment and run from package file

python - U-SQL + Pandas Merge_asof

azure-data-lake - 当静默开关为真时使用 U-SQL 文件集模式提取数据

azure - 微软.WindowsAzure.存储: No valid combination of account information found

python - 将变量的数据写入 ADLS 文件中