USQL Azure 数据湖中的更新
Update in USQL Azure Data lake
有什么方法可以更新行集中的值
数据:
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 where value is 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
我是否可以通过它来更新行集的值,或者我是否应该找出任何其他解决方法。
此时 U-SQL 中没有 UPDATE
命令,但您可以使用条件语句创建一个新列并输出它。您还可以使用 CTAS 语法创建一个新的内部 table。示例如下:
@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 Statements
如果你想更新相同的 table ,我们创建一个新分区并插入 Unchanged 和新记录。这样,新分区将始终具有最新的数据集
有什么方法可以更新行集中的值
数据:
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 where value is 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
我是否可以通过它来更新行集的值,或者我是否应该找出任何其他解决方法。
此时 U-SQL 中没有 UPDATE
命令,但您可以使用条件语句创建一个新列并输出它。您还可以使用 CTAS 语法创建一个新的内部 table。示例如下:
@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 Statements
如果你想更新相同的 table ,我们创建一个新分区并插入 Unchanged 和新记录。这样,新分区将始终具有最新的数据集