2016-03-21 125 views
1

我是卡桑德拉的新手。我創建了一個表格,並在其中插入了一些數據,現在我想從中選擇數據,並且在輸出中,我需要一些計算列。爲什麼Cassandra不允許在更新語句中使用udf?

我創建了一個用戶定義的函數concat,它連接了2個字符串並返回結果。然後我注意到這個函數在SELECT語句中使用它時正確顯示數據。但在UPDATE語句中使用時不起作用:

也就是說,這是有效的;

select concat(prov,city), year,mnth,acno,amnt from demodb.budgets; 

但是這不;

update demodb.budgets set extra=concat(prov,city) where prov='ON'; 

此外,該更新還沒有,如果我們只是一個列的值分配給同一類型的另一列(沒有任何計算)工作,如下;

update demodb.budgets set extra=city where prov='ON'; 

此外,即使簡單的算術計算在Update語句中也不起作用;

也就是說,這也不起作用;

update demodb.budgets set amnt = amnt + 20 where prov='ON'; 

here amnt是一個簡單的雙列型列。

(當我看到這個,我所能做的就是很難拉我的頭髮,說,我不能與卡桑德拉工作,我不就是想它,如果它不能做簡單的算術)

可有人請幫助我如何實現所需的更新?

+0

你爲什麼要首先與Cassandra合作?你選擇的是什麼,你滿意嗎? –

+0

我正在與Cassandra合作,因爲公司想要使用它,而且我的老闆要求我學習它。 –

+0

我希望能夠把握大局。 –

回答

0

我認爲你的問題的基本答案是先讀後寫是Cassandra中的一個巨大的反模式。

分佈式環境中的併發問題是一個關鍵問題。

More info

相關問題