2016-10-25 65 views
1

有沒有什麼辦法讓我可以在行集更新的值更新在USQL Azure的數據湖

數據:

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,其中值爲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

目前在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 Statements

+4

目前ADLA的U-SQL實現是僅附加存儲(與大多數大數據存儲一樣)。因此,正如wBob概述的那樣,如果您想進行更改或跟蹤「增量」,則必須「回收」數據。 –

+0

謝謝你們。 – The6thSense

1

如果你想更新同一個表,我們創建一個新的分區並插入Unchanged和新記錄。通過這種方式,新分區將始終具有最新的數據集