1、探索hive元資料
涉及表說明:
如果表結構有變動,那麼cd_id會改變。如果想檢視變動前的表cd_id,可通過下面語句查詢到結果數量與表分割槽數量相等:
select
*from sds where location like
'%table_name%'
;
再通過下面語句獲取表分割槽的結構:
select
*from columns_v2 where cd_id=***;
表有乙個sd_id,表每個分割槽的sd_id各不相同,且和表的sd_id不一樣。
tbls儲存的是當前表結構sd_id,其sds對應的cd_id是最新表結構。
通過元資料查詢表字段及分割槽資訊:
select
t1.tbl_id
,t2.
`name`
as db_name
,t1.tbl_name
,t3.param_value as table_comment
,t5.
comment
as column_comment
,t4.cd_id
,t5.column_name
,t5.type_name
,t5.integer_idx,0
as partition_key_flag
from tbls t1
left
join dbs t2
on t1.db_id = t2.db_id
left
join table_params t3
on t1.tbl_id = t3.tbl_id
and t3.param_key =
'comment'
left
join sds t4
on t1.sd_id = t4.sd_id
join columns_v2 t5
on t4.cd_id = t5.cd_id
union
allselect
t1.tbl_id
,t2.
`name`
as db_name
,t1.tbl_name
,t3.param_value as table_comment
,t5.pkey_comment as column_comment
,t4.cd_id
,t5.pkey_name as column_name
,t5.pkey_type as type_name
,t5.integer_idx,1
as partition_key_flag
from tbls t1
left
join dbs t2
on t1.db_id = t2.db_id
left
join table_params t3
on t1.tbl_id = t3.tbl_id
and t3.param_key =
'comment'
left
join sds t4
on t1.sd_id = t4.sd_id
join partition_keys t5
on t1.tbl_id = t5.tbl_id;
2、hql、mysql:greatest
可實現最小值為x、least
可實現最大值為x。greatest
/least
獲取取最大/小值。
select
1as seq,greatest(0,
1,-1
)as a --取函式內字段值的最大值,這裡返回1
union
allselect
2as seq,least(0,
1,-1
)as a --取函式內字段值的最小值,這裡返回-1
union
allselect
3as seq,greatest(0,
null,-
1)as a --由於字段存在null,函式值返回null
union
allselect
4as seq,least(0,
null,-
1)as a --由於字段存在null,函式值返回null
3、獲取日期,hql:to_date(timestr)
;mysql:date(timestr)
Hive元資料對應關係Sql
眾所周知hive的表關係儲存在mysql中,由於presto在建立hive表時comment不能新增中文,今天有個需求需要新增中文注釋,那就先了解一下hive中元資料的儲存結構,下面是sql,邏輯不複雜把邏輯記一下方便以後使用 select c.from tbls t join sds s on t...
sql 資料雜記
1 sql把資料行和彙總行連線起來用union all 注意 如果union上面的是數字形式的,下面的用 就會報錯。2 字串擷取 left string,3 str right string,3 ing 3 日期判斷 datediff d,datefield,getdate 0 當天,第二個日期減去...
hive 自定義元資料表 Hive 元資料表含義
hive 元資料表含義 1 version 查詢版本資訊 fieldtypecomment ver id bigint 20 id主鍵 schema version varchar 127 hive版本 version comment varchar 255 版本說明 2 dbs 儲存hive中所有...