本文為您提供資料分析支援的CAST、DECODE、LEAST、ARRAY、SIZE、NVL等函數的命令格式、參數說明及樣本。
函數 | 功能 |
將運算式的結果轉換成目標類型。 | |
返回列表中第一個非NULL的值。 | |
實現 | |
返回輸入參數中最大的一個。 | |
返回輸入參數中最小的一個。 | |
返回一個隨機ID。 | |
根據運算式的計算結果,靈活地返回不同的值。 | |
判斷指定的條件是否為真。 | |
返回指定MAP中的K/V對數或ARRAY中的元素數目。 | |
對指定值進行加密。 | |
返回當前裝置名稱。 | |
返回Topic分段資訊。 | |
返回物聯網平台產生的訊息ID。 |
CAST
命令格式
cast(<expr> as <type>)
命令說明
將expr的結果轉換成目標資料類型,用法如下:
cast(double as bigint)
:將DOUBLE資料類型值轉換成BIGINT資料類型。cast(string as bigint)
:在將字串轉為BIGINT資料類型時,如果字串中是以整型表達的數字,則會直接將它們轉為BIGINT類型。如果字串中是以浮點數或指數形式表達的數字,則會先轉為DOUBLE資料類型,再轉為BIGINT資料類型。cast(string as datetime)
或cast(datetime as string)
:會採用預設的日期格式yyyy-mm-dd hh:mi:ss
。
參數說明
expr:必填。運算式,待轉換資料來源。
type:必填。目標資料類型。
傳回值說明
傳回值為轉換後的目標資料類型。
樣本
樣本1:常見用法。
--返回1。 cast('1' as bigint);
樣本2:異常用法,如果轉換不成功或遇到不支援的類型轉換,則會返回NULL。
--返回NULL。 cast('abc' as bigint);
COALESCE
命令格式
coalesce(<expr1>, <expr2>, ...)
命令說明
返回
<expr1>, <expr2>, ...
中第一個非NULL的值,如果列表中所有的值都是NULL,則返回NULL。參數說明
expr:必填。待驗證的值。所有實值型別必須相同或為NULL,不一致的資料類型會返回報錯。至少要有一個參數非NULL,否則會返回報錯。
傳回值說明
傳回值類型和參數類型相同。
樣本
樣本1:常見用法。
--返回1。 coalesce(null,null,1,null,3,5,7);
樣本2:參數實值型別不一致,返回報錯。
--返回報錯,無法識別abc。 coalesce(null,null,1,null,abc,5,7);
樣本3:參數值無非NULL值,返回報錯。
--返回報錯,至少有一個參數值非NULL。 coalesce(null,null,null,null);
DECODE
命令格式
decode(<expression>, <search>, <result>[, <search>, <result>]...[, <default>])
命令說明
實現
if-then-else
分支選擇的功能。參數說明
expression:必填。要比較的運算式。
search:必填。與expression進行比較的搜尋項。
result:必填。search和expression的值匹配時的傳回值。
default:可選。如果所有的搜尋項都不匹配,則返回此default值,如果未指定,則返回NULL。
說明至少要指定三個參數。
所有的result類型必須一致或為NULL。不一致的資料類型會引發異常。
所有的search和expression類型必須一致,否則會引發異常。
傳回值說明
如果匹配,返回result。
如果沒有匹配,返回default。
如果沒有指定default,返回NULL。
如果search選項有重複且匹配時,會返回第一個值。
通常,在計算
NULL=NULL
時返回NULL,但在該函數中,NULL與NULL的值是相等的。
樣本
當customer_id的值為1時,返回Taobao;值為2時,返回Alipay;值為3時,返回Aliyun;值為NULL時,返回NA;其他情境返回Others。
decode(customer_id, '1', 'Taobao', '2', 'Alipay', '3', 'Aliyun', Null, 'NA', 'Others');
等效於如下語句:
if customer_id = 1 then result := 'Taobao'; elsif customer_id = 2 then result := 'Alipay'; elsif customer_id = 3 then result := 'Aliyun'; ... else result := 'Others'; end if;
GREATEST
命令格式
greatest(<var1>, <var2>, …)
命令說明
返回輸入參數中最大的值。
參數說明
var:必填。可以為BIGINT、DOUBLE、DECIMAL、DATETIME或STRING資料類型。如果所有的參數值都為NULL,則返回NULL。
傳回值說明
返回輸入參數中的最大值。當不存在隱式轉換時,傳回值同輸入參數類型。
NULL為最小值。
當輸入參數類型不同時,DOUBLE、BIGINT、DECIMAL、STRING之間的比較轉為DOUBLE類型;STRING、DATETIME的比較轉為DATETIME類型。不允許其它的隱式轉換。
LEAST
命令格式
least(<var1>, <var2>, …)
命令說明
返回輸入參數中最小的值。
參數說明
var :必填。輸入參數值,為BIGINT、DOUBLE、DECIMAL、DATETIME或STRING資料類型。如果所有參數值都為NULL,則返回NULL。
傳回值說明
輸入參數中的最小值。當不存在隱式轉換時,傳回值同輸入參數類型。
當有類型轉換時,DOUBLE、BIGINT、STRING之間的轉換返回DOUBLE類型;STRING、DATETIME之間的轉換返回DATETIME類型;DECIMAL和DOUBLE、BIGINT、STRING之間的轉換返回DECIMAL類型。不允許其它的隱式類型轉換。
NULL為最小值。
UUID
命令格式
string uuid()
命令說明
返回一個隨機ID,格式為
29347a88-1e57-41ae-bb68-a9edbdd9****
。說明UUID返回的是一個隨機的全域ID,其重複的機率很小。
CASE WHEN運算式
命令格式
提供以下兩種
case when
格式:case <value> when <value1> then <result1> when <value2> then <result2> ... else <resultn> end
case when (<_condition1>) then <result1> when (<_condition2>) then <result2> when (<_condition3>) then <result3> ... else <resultn> end
命令說明
根據value或_condition的計算結果,靈活地返回不同的result值。
參數說明
value:必填。比較的值。
_condition:必填。指定條件。
result:必填。傳回值。
說明如果result類型只有BIGINT、DOUBLE,統一轉為DOUBLE後,再返回。
如果result類型中有STRING類型,則統一轉為STRING後,再返回。如果無法進行類型轉換,例如BOOLEAN類型無法轉換為STRING類型,則會返回報錯。
不允許其它類型之間的轉換。
樣本
根據
shop_name
的不同情況得出所屬地區。case when shop_name is null then 'default_region' when shop_name like 'hang%' then 'zj_region' end as region from sale_detail;
IF運算式
命令格式
if(<testCondition>, <valueTrue>, <valueFalseOrNull>)
命令說明
判斷testCondition是否為真。如果為真,返回valueTrue的值,否則返回valueFalseOrNull的值。
參數說明
testCondition:必填。要判斷的運算式,BOOLEAN類型。
valueTrue:必填。運算式testCondition為True時,返回的值。
valueFalseOrNull:運算式testCondition為False時,返回的值,可以設為NULL。
傳回值說明
傳回值類型和參數valueTrue或valueFalseOrNull的類型一致。
樣本
--返回200。 if(1=2,100,200);
SIZE
命令格式
INT size(map) INT size(array)
命令說明
size(map)
返回給定map
中K、V對數。size(array)
返回給定的array
中的元素數目。參數說明
map
:MAP類型的資料。array
:ARRAY類型的資料。
樣本
--返回2。 size(map('a',123,'b',456)); --返回3。 size(map('a',123,'b',456,'c',789)); --返回2。 size(array('a','b')); --返回3。 size(array(123,456,789));
CRYPTO
命令格式
crypto(field,String)
命令說明
根據String演算法對field的值進行加密。
參數說明
field:必填。任意類型值。
String:演算法字串。可選:MD2、MD5、SHA1、SHA-256、SHA-384、SHA-512。
DEVICENAME
命令格式
deviceName()
命令說明
返回當前裝置名稱。
TOPIC
命令格式
topic(INT number)
命令說明
返回Topic分段資訊。
如,有一個Topic:
/alDbcLe****/TestDevice/user/set
。使用函數topic()
,則返回整個Topic;使用topic(1)
,則返回Topic的第一級類目alDbcLe****
;使用topic(2)
,則返回第二級類目TestDevice
,以此類推。參數說明
number:INT類型。非必填。
MESSAGEID
命令格式
messageId()
命令說明
返回物聯網平台產生的訊息ID。