1、python 如果增加自己的字段,要用双引号不能用单引号。
2、grouping sets 可以用来增加维度
select
os_id,
nvl(new_flag, 'all') as new_flag, --(0, 1, all)
count(1)
from
xxx
where
date = '${date}'
group by
os_id,
new_flag
grouping sets(
(
os_id,
new_flag --此处加上,以 0,1分组
),(
os_id --这里没有 new_flag, 所以分组出来值是 NULL,在 select 语句中可以指定默认值为all
)
)
3、hive 进行 transfrom 的时候,如果字符串里面有空格或者字符串是空的,在 python 读取的时候会出问题,分隔符不对。
最好是在 sql 中先把空格用其他字符串 replace,在python中处理完以后再在 sql 里面替换回去,注意不要用美元符号¥$什么的。
注意print 的时候要是一个字符串,同时如果使用一个 int 类型的元素同时又用了 replace 是会出错的。
4、hive 的正则替换时,注意要 . { [ 等符号特殊处理。
5、explode 的使用,将 list 拆成多行
select
explode(
split(
regexp_replace(
parsed_content ['reviews'],
'\\[\\{|\\}\\]',
''
),
'\\},\\{'
)
) as good --parsed_content ['reviews']
from
dm_content.bee_doc_hourly
where
date = '${date+1}'
and code = 1
and parsed_content ['reviews'] is not NULL
and parsed_content ['reviews'] != ''
and link_info ['task_id'] = 405
and size(parsed_content) > 0
6、get_json_object 可以取出 JSON 字符串中的元素
get_json_object(JOSN_STRING, '$.user')