MySQL MaxCompute與AnalyticDB實現(xiàn)數(shù)據(jù)處理與轉(zhuǎn)換過程詳解
1、行轉(zhuǎn)列函數(shù)
odps 中行轉(zhuǎn)列函數(shù) wm_concat,將列信息轉(zhuǎn)成行顯示,可指定分隔符。
語法格式
wm_concat(separator, string) ,其中separator為分隔符,支持字符串去重,即distinct.
select wm_concat('|',sku_id) from t_business_order_odps where create_time >= '2022-09-30 00:00:00';
ads 中行轉(zhuǎn)列函數(shù) group_concat,即將列信息轉(zhuǎn)成行顯示,默認逗號分隔。如在mysql中查詢表的所有列名。
select group_concat(COLUMN_NAME) from information_schema.COLUMNS where TABLE_NAME = 't_business_order';
2、判空函數(shù)
odps 中判空函數(shù) coalesce ,如若無運費,則顯示為0。
select coalesce(freight_amount,0) from t_business_order_odps where create_time >= '2022-09-30 00:00:00';
odps 中判斷函數(shù) decode ,如若無運費,則顯示為0。
語法格式
decode(expression, search, result[, search, result]…[, default])
表示:三元運算符,即實現(xiàn)IF-THEN-ELSE分支選擇的功能
select decode(order_amount,freight_amount,0) from t_business_order_odps where create_time >= '2022-09-30 00:00:00';
ads 中判空函數(shù) ifnull,如若無運費,則顯示為0。
select ifnull(freight_amount,0) from t_business_order where create_time >= '2022-09-30 00:00:00';
3、時間函數(shù)
odps 中 時間字段類型為 datetime,獲取當(dāng)前時間函數(shù)為 getdate()。
select coalesce(freight_amount,0),getdate() as etl_time from t_business_order_odps where create_time >= '2022-09-30 00:00:00';
ads 中時間字段類型為 timestamp,獲取當(dāng)前時間函數(shù)為 now()。
select ifnull(freight_amount,0),now() as etl_time from t_business_order where create_time >= '2022-09-30 00:00:00';
4、建表語句
odps 中 字符串字段類型為 string,時間字段類型為 datetime。
CREATE TABLE t_business_order_odps ( prov_name string COMMENT '省名稱', city_name string COMMENT '地市名', cty_name string COMMENT '區(qū)縣名稱', order_no string COMMENT '訂單號', order_amount bigint COMMENT '運費', freight bigint COMMENT '運費', insert_month bigint COMMENT '插入月份', created_time datetime COMMENT '創(chuàng)建時間' ) COMMENT '業(yè)務(wù)訂單主表;
ads 中字符串字段類型為 varchar,時間字段類型為 timestamp。
CREATE TABLE t_business_orde ( prov_name varchar COMMENT '省名稱', city_name varchar COMMENT '地市名', cty_name varchar COMMENT '區(qū)縣名稱', order_no varchar COMMENT '訂單號', order_amount bigint COMMENT '運費', freight bigint COMMENT '運費', insert_month bigint COMMENT '插入月份', created_time timestamp COMMENT '創(chuàng)建時間' ) PARTITION BY HASH KEY (order_no) PARTITION NUM 128 TABLEGROUP ads_sc_rpt OPTIONS (UPDATETYPE='batch') COMMENT '業(yè)務(wù)訂單主表';
知識梳理
OPTIONS 類型有兩種
1)batch 批量表,即數(shù)據(jù)批量入庫,適用于從odps同步到ads;
2)realtime 實時表,即數(shù)據(jù)單條入庫,適用于日志等信息單條入庫。
到此這篇關(guān)于MySQL MaxCompute與AnalyticDB實現(xiàn)數(shù)據(jù)處理與轉(zhuǎn)換過程詳解的文章就介紹到這了,更多相關(guān)MySQL MaxCompute與AnalyticDB內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!