1

有什么方法可以更新行集中的值

数据:

1,apple,0
2,check,1
3,chec,1

USQL 脚本:

@result = EXTRACT
ID int,
value string,
types int
FROM @"TLD_BT/sacmple.txt"
USING Extractors.Csv();

现在我想更新上面的结果集 @result set type =1 其中 value 是 apple

我试过下面的脚本。

UPDATE @result SET types=1 WHERE value="apple"

但我得到以下错误:

UPDATE  ### @result SET types=1 WHERE value="apple"

Error
   E_CSC_USER_SYNTAXERROR
Message
    syntax error. Expected one of: STATISTICS

无论如何我可以更新行集的值,或者我应该找出任何其他解决方法。

4

2 回答 2

4

此时 U-SQL 中没有UPDATE命令,但您可以使用条件语句创建一个新列并将其输出。您还可以使用 CTAS 语法创建新的内部表。以下示例:

@result =
    EXTRACT [ID] int,
            value string,
            types int
    FROM @"input/input.txt"
    USING Extractors.Csv();

//UPDATE @result SET types=1 WHERE value="apple"
@output =
    SELECT [ID] AS id,
           value,
           value == "apple"? 1 : types AS types
    FROM @result;

// CTAS
CREATE TABLE IF NOT EXISTS dbo.interimResult
(
    INDEX cdx_Result
    CLUSTERED(id)
    DISTRIBUTED BY
    ROUND ROBIN
)
AS
SELECT [ID] AS id,
       value,
       value == "apple"? 1 : types AS types
FROM @result;


// output result
OUTPUT @output TO "/output/adlaresult.csv"
USING Outputters.Csv();

希望这是有道理的。另请参见此处:U-SQL DML 语句

于 2016-10-25T16:30:02.630 回答
1

如果您想更新同一张表,我们创建一个新分区并插入未更改和新记录。这样,新分区将始终拥有最新的数据集

于 2018-02-01T09:23:52.880 回答