参数使用
需要在任务配置里配置. 配置里 ${yyyyMMdd} 代表业务时间 $[yyyyMMdd] 代表运行时间. 参数里
| 配置 | 代码里 | |
| 业务时间 | ${} | |
| 运行时间 | $[] |
控制
if( , ,)
函数
create sql function时间函数
to_date(gmt_modified,'yyyy-mm-dd HH:mi:ss')
select dateadd(date '2005-02-18', 1, 'mm');--返回2005-03-18select dateadd(timestamp '2005-02-18 00:00:00', 1, 'mm');--返回2005-03-18 00:00:00
dt = TO_CHAR(DATEADD( GETDATE() , - 1,"dd"),"yyyymmdd")
字符串函数
KEYVALUE('fund_operation_type=PAY;orderAmout=0.25;',';','=','orderAmout') = '0.25'split_part('a,b,c,d', ',', 1, 2) = 'a,b'
其他函数
split 得到素组
size(split("1;2;3",';'))=2
split("1;2;3",';') 得到array ,然后 FROM_JSON ,然后通过get_json_object 获取item 元素
转json
FROM_JSON
SELECT from_json('{"a":1, "b":0.8}', 'a INT, b DOUBLE');{"a":1, "b":0.8}SELECT from_json('{"time":"26/08/2015"}', 'time string');{"time":"26/08/2015"}SELECT from_json('{"a":1, "b":0.8}', 'a INT, b DOUBLE, c STRING');{"a":1, "b":0.8, c: NULL}SELECT from_json('[1, 2, 3, "a"]', 'array<BIGINT>');[1, 2, 3]SELECT from_json('{"a":1,"b":[1,2,3],"c":{},"d":"v"}', 'map<string, string>');{a:1, b:[1,2,3], c:{}, d:v}
json提取 -get_json_object
示例1
+----+json+----+{"store":{"fruit":[{"weight":8,"type":"apple"},{"weight":9,"type":"pear"}],"bicycle":{"price":19.95,"color":"red"}},"email":"amy@only_for_json_udf_test.net","owner":"amy"}
通过以下查询,可以提取json对象中的信息:
odps> SELECT get_json_object(src_json.json, '$.owner') FROM src_json;amyodps> SELECT get_json_object(src_json.json, '$.store.fruit[0]') FROM src_json;{"weight":8,"type":"apple"}odps> SELECT get_json_object(src_json.json, '$.non_exist_key') FROM src_json;NULL
示例2
get_json_object('{"array":[[aaaa,1111],[bbbb,2222],[cccc,3333]]}','$.array[1][1]') = "2222"get_json_object('{"aaa":"bbb","ccc":{"ddd":"eee","fff":"ggg","hhh":["h0","h1","h2"]},"iii":"jjj"}','$.ccc.hhh[*]') = "["h0","h1","h2"]"get_json_object('{"aaa":"bbb","ccc":{"ddd":"eee","fff":"ggg","hhh":["h0","h1","h2"]},"iii":"jjj"}','$.ccc.hhh[1]') = "h1"
大小
size()