【问题标题】:U-SQL Compare Rowset Data in scalar expressionU-SQL 在标量表达式中比较行集数据
【发布时间】:2018-04-20 11:29:54
【问题描述】:

我浏览了一些无法进行转换的文章,但是我遇到了一个问题,即在行集中获取值并需要在标量表达式中使用。

ColumnA 是一个字符串值,ColumnB 是一个 Int..

@RequiredData = SELECT [ColumnA] from @Input ORDER BY [ColumnB] ASC
      FETCH 1 ROWS;

IF((@RequiredData == "Something")) THEN
//DO SOMETHING 
END;

这在 ADLA 中失败,出现问题 Rowset variable @RequiredData is not a scalar variable。

【问题讨论】:

    标签: azure azure-data-lake u-sql data-lake


    【解决方案1】:

    U-SQL 是一种声明性语言,控制流有限。您可以将您的逻辑转换为基于集合的,这将起作用,例如

    @someOtherData = 
        SELECT * FROM 
            ( VALUES
            (1),(2),(3),(4),(5),(6),(7),(8),(9)
            ) AS x(y);
    
    
    @Input = 
        SELECT * FROM 
            ( VALUES
            ("Something",  1),
            ("Nothing",   2)
            ) AS x(ColumnA, ColumnB);
    
    
    @RequiredData = SELECT [ColumnA] FROM @Input ORDER BY [ColumnB] ASC
          FETCH 1 ROWS;
    
    
    // IF((@RequiredData == "Something")) THEN
    @output =
        SELECT d.*
        FROM @someOtherData AS d
             CROSS JOIN
                 @RequiredData AS rd
        WHERE rd.ColumnA == "Something";
    
    
    OUTPUT @output
    TO "/output/output.txt"
    USING Outputters.Tsv();
    

    如果值不是“Something”,这将输出一个空文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-02
      • 2012-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-18
      • 1970-01-01
      • 2011-08-31
      相关资源
      最近更新 更多