2016-10-25 13 views
1

Есть ли способ, с помощью которого я могу обновить значение в наборе строкОбновление в озере USQL Azure Data

данных:

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, где значение - яблоко

Я попытался выполнить сценарий.

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

В настоящее время нет команды UPDATE в U-SQL, но вы можете использовать условный оператор для создания нового столбца и вывода этого. Вы также можете использовать синтаксис 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

Если вы хотите обновить ту же таблицу, мы создаем новый раздел и вставляем как неизменные, так и новые записи. Таким образом, новый раздел всегда будет иметь новейший набор данных