aliyun_odps數倉常用命令總結

  1. odps_cmd
  • 用戶和權限管理-------------
    向項目空間中添加用戶:add user username;eg:add user [email protected]
    查看用戶:list users;
    刪除用戶:remove user username;
    授限:向user_name授予名爲user_project_name的project的createTable創建表權限
        grant CreateTable on project $user_project_name to user user_name;
        獲取表信息的權限
        grant Describe to table $user_table_name to user user_name;
        函數執行權限
        grant Execute on function $user_function_name to user user_name;
    創建角色:create role role_name;
    向角色中添加用戶:grant role_name to user_name;
    將用戶移除角色:remove role_name from user_name;
    刪除角色:drop role role_name;
    表操作
    創建帶有生命週期的分區表:create table test3 (key boolean) partitioned by (pt string, ds 
    string) lifecycle 100;
    獲取表信息:desc table_name;
    刪除表:drop table table_name;
    UDF
    CREATE FUNCTION test_lower AS org.alidata.odps.udf.examples.Lower 
    USING my_lower.jar; 
    在 sql中使用此函數: 
    select test_lower('A') from my_test_table; 
    數據操作
    注意事項
    mapjoin中,最多支持6張小表的mapjoin;
    ODPS SQL 目前最多支持 128 個併發 union 操作; 
    最多支持 128 個併發 insert overwrite/into 操作;

2

  • odps sql:與hive sql語法基本一致
  • SQL語句不分大小寫,使用“–”進行註釋,使用分號作爲語句結束符號
  • 數據定義語言(DDL),數據操作語言(DML),數據控制語言(DCL)和事務控制語言(TCL);在ODPS中使用的主要是DDL跟DML
  • 查看錶空間:1:show tables; 2:ls tables;3:list tables;
  • 查看錶:desc biaoming;
  • 切庫:use 庫名;
  • 退出:1:quit;2:q;
  • 上傳文本txt到對應分區表:tunnel upload -h true -fd '\t' C:\Users\Desktop\stg_police_tablename_d.txt  odps_prod.stg_police_tablename_d/dt='20180724',adcode='330100';
  • 下載數據:tunnel download  odps_prod.ods_tfc_area_range_znkk/dt='20180701' C:\Users\Desktop\daduixiaqu.txt;
  • 查看最近的歷史記錄操作:tunnel show history -n 5;
  • 修改表名:alter table aaa_ps rename to aaa_znkk;
  • 查看分區:show partitions 表名;
  • 刪除分區:alter table 表名 drop partition(dt='20180601');
  • 刪除數據:TRUNCATE TABLE table_name;
  • 創建分區;alter table odps_prod.dwd_tfc_rltn_wide_custinter_inter add partition(adcode='330100',data_version='20180724');
  • 清空表數據:truncate table temp_a;
  • DDL語句
  • 1.表的創建
  • (1)新建一個自定義的表:create table if not exists A (字段名 字段類型);
  • (2)新建一個表,字段與現有表一致,但數據並沒有複製:create table if not exists A like B;
  • 2.表的刪除
  • drop table A; 
  • 3.表的重命名
  • alter table A rename to B; 
  • 4.表的生命週期
  • alter table A set lifecycles 30;
  • 5.增加字段
  • alter table A add columns(字段名 字段類型); 
  • 6.查看錶的信息
  • desc A 
  • 7修改表的字段或者註釋:
  • alter table tablename change column col_old_name col_new_name column_type comment'';
  • eg:
  • DML語句 
  • 1.表中數據的更新(insert語句)
  • (1)insert overwrite table A select * from B :表示將表A的數據複製到表B中,前提是字段一致;會覆蓋分區中的所有數據
  • PS:ODPS平臺的SQL僅支持以上的更新數據庫語句;其中關鍵字overwrite表示覆蓋寫入,可換成into表示追尾寫入;
  • 2表中數據的讀取(select語句)
  • (1)select * from A:讀取全部字段數據
  • (2)select uid from A:讀取某一字段全部數據
  • (3)select distinct uid from A :讀取某一字段不重複數據
  • (4)select * from A where uid=’a’:讀取某一字段值等於指定值的數據
  • (5)select * from (select * from A)a:嵌套語句 
  • (6)select sum(uid) from A group by uid:分組查詢 
  • (7)select * from A order by uid limit 4:全局排序,必須與limit 配合使用
  • (8)select row_number() over (partition by item order by score)as row_num from A:對字段item按字段score值進行局部排序並給出序號
  • 3.表的合併(union all 語句)
  • select * from( 
  • select * from t1 where uid=’a’ 
  • union all 
  • select * from t2 where uid=’a’)t;
  • 4.表的連接(join 語句與left outer join 語句)
  • (1)join
  • select * from A a join B b on a.item = b.item :返回A,B表中字段item值相同的數據
  • (2)left outer join
  • select * from A a left outer join B b on a.item = b.item :返回A表全部數據
  • (四)內建函數
  • 查看附件文檔 
  • MaxCompute-sql:https://help.aliyun.com/document_detail/27860.html
  • 清除12月前歷史數據:delete from adm_corrector_info_four_plat_m where dt<='${month_bef12}' or dt='${month}'
     
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章