AnalyticDB MySQL(簡稱ads)與 MaxCompute(簡稱odps)進行數據轉換時,個別語法有差別,記錄下來,方便備查,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
1、行轉列函數
odps 中行轉列函數 wm_concat,將列信息轉成行顯示,可指定分隔符。
語法格式
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 中行轉列函數 group_concat,即將列信息轉成行顯示,默認逗號分隔。如在mysql中查詢表的所有列名。
select group_concat(COLUMN_NAME)
from information_schema.COLUMNS
where
TABLE_NAME = 't_business_order';
2、判空函數
odps 中判空函數 coalesce ,如若無運費,則顯示為0。
select coalesce(freight_amount,0)
from t_business_order_odps
where
create_time >= '2022-09-30 00:00:00';
odps 中判斷函數 decode ,如若無運費,則顯示為0。
語法格式
decode(expression, search, result[, search, result]…[, default])
表示:三元運算符,即實現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 中判空函數 ifnull,如若無運費,則顯示為0。
select ifnull(freight_amount,0)
from t_business_order
where
create_time >= '2022-09-30 00:00:00';
3、時間函數
odps 中 時間字段類型為 datetime,獲取當前時間函數為 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,獲取當前時間函數為 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 '區縣名稱',
order_no string COMMENT '訂單號',
order_amount bigint COMMENT '運費',
freight bigint COMMENT '運費',
insert_month bigint COMMENT '插入月份',
created_time datetime COMMENT '創建時間'
)
COMMENT '業務訂單主表;
ads 中字符串字段類型為 varchar,時間字段類型為 timestamp。
CREATE TABLE t_business_orde (
prov_name varchar COMMENT '省名稱',
city_name varchar COMMENT '地市名',
cty_name varchar COMMENT '區縣名稱',
order_no varchar COMMENT '訂單號',
order_amount bigint COMMENT '運費',
freight bigint COMMENT '運費',
insert_month bigint COMMENT '插入月份',
created_time timestamp COMMENT '創建時間'
)
PARTITION BY HASH KEY (order_no) PARTITION NUM 128
TABLEGROUP ads_sc_rpt
OPTIONS (UPDATETYPE='batch')
COMMENT '業務訂單主表';
知識梳理
OPTIONS 類型有兩種
1)batch 批量表,即數據批量入庫,適用于從odps同步到ads;
2)realtime 實時表,即數據單條入庫,適用于日志等信息單條入庫。
- 原文來自:https://www.jb51.NET/article/271000.htm
- 本文地址:https://www.linuxprobe.com/mysql-maxcompute-analyticdb.html編輯:向金平,審核員:逄增寶
- Linux命令大全:https://www.linuxcool.com/
- Linux系統大全:https://www.linuxdown.com/
- 紅帽認證RHCE考試心得:https://www.rhce.net/