zoukankan      html  css  js  c++  java
  • maxcompute笔记

    maxcompute安装和配置

     https://help.aliyun.com/document_detail/27804.html?spm=a2c4g.11174283.3.5.566a590e0PB79r

    =================================

    mysql与sql的不同

    SELECT TOP 2 * FROM Persons
    SELECT TOP 50 PERCENT * FROM Persons
    SELECT column_name(s)
    FROM table_name
    WHERE column_name
    BETWEEN value1 AND value2

    SELECT INTO 语句

    SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中。

    SELECT INTO 语句常用于创建表的备份复件或者用于对记录进行存档。

    可以在创建表时规定约束(通过 CREATE TABLE 语句),或者在表创建之后也可以(通过 ALTER TABLE 语句)。

    我们将主要探讨以下几种约束:

    • NOT NULL
    • UNIQUE
    • PRIMARY KEY
    • FOREIGN KEY
    • CHECK
    • DEFAULT
    CREATE TABLE Persons
    (
    Id_P int NOT NULL PRIMARY KEY,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255)
    )

    Insert into与Insert overwrite的区别是:Insert into会向表或表的分区中追加数据,而Insert overwrite会在向表或分区中插入数据前清空表中的原有数据。

    MySQL中表复制:create table like 与 create table as select

    create table like t1  会复制表数据结构和索引,一般使用这个。但是不会复制数据

    • MaxCompute的Insert语法与通常使用的MySQL或Oracle的Insert语法有差别,在insert overwrite|into后需要加入table关键字,而非直接使用tablename。

    =====================重要=====================

    create table sale_detail_insert like sale_detail;
    alter table sale_detail_insert add partition(sale_date='2013', region='china');
    insert overwrite table sale_detail_insert partition (sale_date='2013', region='china')
    select shop_name, customer_id,total_price from sale_detail;


    如果设置了主键自增,则insert的时候,只要指定主键的列为0,就可以




    =======================================

    select TO_CHAR(TO_DATE(20180101,'yyyymmdd'),'yyyymm') as time
    ======================================
    什么情况下使用inner join?

    首先,什么情况下需要使用完全限定列名,即【表.列名】
    在从多张表中,查询数据的时候,最好都使用完全限定列名:比如使用了子查询,或者连结了多张表

    (事实上,我们可以使用where语句做内连结,但是并不推荐)
    inner join其实是交集,Join可以理解为进行【集合操作】
    如果inner join 其实就是join,也就是说,必须两个表都有inner join on 字段A, 都有A才会出现结果,如果A不同的话,就不会出现结果。
    如果要让字段A在表1中出现,但是表2中不出现的数据,也要出现在查询结果当中,则使用left join.
    更多的Join类型请参考:https://www.cnblogs.com/logon/p/3748020.html

    ========================================
    insert overwrite table xiamensales_retail_by_month partition(pt)
    select t.userid, p.barcode,SUM(t.quantity),SUM(t.quantity*t.sellprice), CAST(TO_CHAR(TO_DATE(t.pt,'yyyymmdd'),'yyyymm') AS BIGINT) as pt 
    from
    ( select productuid,userid,quantity,sellprice,pt from ticketitem where name is not NULL and pt>=20170101 and pt<20190101) t --商品名为必填项
    inner join user_ods u on t.userid=u.id
    inner join product p on t.productuid=p.uid and t.userid=p.userid --确定了productuid和userid就能确定对应商品
    where u.pt=${bdp.system.bizdate} --商家信息可能会更新,取最新的分区
    and industry='零售超市' and address like '%厦门市%'
    group by p.barcode, t.userid, CAST(TO_CHAR(TO_DATE(t.pt,'yyyymmdd'),'yyyymm') AS BIGINT)
     
    1、如果select使用了表达式 然后 as 别名,则group by里面,分组的时候,只能使用表达式,不能使用别名
    2、动态插入分区,需要我们select的名字,跟表里的分区名一样
    3、${bdp.system.bizdate}是当前的时间,取到日,主要是用来如果我们每天固定跑节点,这个变量可以用来取最新的分区。
     
     
    ===============================================
    如果一个表有两个词,比如ticketitem,则写别名的时候,也要使用两个字母ti
  • 相关阅读:
    Atitit.检测文本文件的编码 自动获取文件的中文编码
    Atitit. 衡量项目规模 ----包含的类的数量 .net java类库包含多少类 多少个api方法??
    Atitit. 衡量项目规模 ----包含的类的数量 .net java类库包含多少类 多少个api方法??
    Atitit.获取主板与bios序列号获取硬件设备信息  Wmi wmic 的作用
    Atitit.获取主板与bios序列号获取硬件设备信息  Wmi wmic 的作用
    Atitit.播放系统的选片服务器,包厢记时系统 的说明,教程,维护,故障排查手册p825
    Atitit.播放系统的选片服务器,包厢记时系统 的说明,教程,维护,故障排查手册p825
    atitit.提升兼容性最佳实践 p825.doc
    atitit.提升兼容性最佳实践 p825.doc
    10个最好的 jQuery 视频插件(转)
  • 原文地址:https://www.cnblogs.com/yjybupt/p/10394560.html
Copyright © 2011-2022 走看看