说明:本文重因个人偏好,重点偏向于数仓规划、数据引入、编码研发

一、什么是Dataphin

Dataphin是阿里巴巴集团OneData数据治理方法论内部实践的云化输出,一站式提供数据采、建、管、用全生命周期的大数据能力,以助力企业显著提升数据治理水平,构建质量可靠、消费便捷、生产安全经济的企业级数据中台。Dataphin提供多种计算平台支持及可拓展的开放能力,以适应不同行业客户的平台技术架构和特定诉求。

二、Dataphin框架

三、平台管理

Dataphin的基础功能,包含账号管理、计算设置和智能引擎。超级管理员需要通过管理中心来进行成员管理和计算设置,同时您也可以通过智能引擎来配置计算和存储规则,以提高数据构建的效率。

平台管理根据说明书进行即可,在实施之前要进行整体规格。

四、数仓规划

基于Dataphin建设数据中台的第一步,同时也是数据体系的顶层设计中至关重要的一步。在您开始数据开发前,需要完成数据仓库的规划,包括定义业务板块、数据域、项目、数据源、计算源和统计周期。

数仓规划包括逻辑空间与物理空间的全局架构,以实现业务划分、资源管控、项目管理等目的:

  • 逻辑空间:基于业务特征划分命名空间及其核心对象,包括业务板块、数据域和公共定义模块。
  • 物理空间:基于开发协作管理需求划分物理项目,包括项目管理、数据源管理等模块。

基础研发版和智能研发版支持的功能不同:

  • 基础研发版:规划包括项目和源两大模块。模块之间存在依赖关系,项目的计算存储资源配置基于计算源,项目空间内所用到的数据基于数据源。
  • 智能研发版:规划包括业务、项目和源。模块之间存在依赖关系,项目的计算存储资源配置基于计算源,项目空间内所用到的数据基于数据源,项目可以归属于业务板块。

1、业务板块

2、数据域

数据域用于存放同一业务板块内不同意义的指标,如商品域、交易域、会员域等。

特指电信行业大数据领域的三大数据域。

  • B域(业务域)=business support
    system的数据域,B域有用户数据和业务数据,比如用户的消费习惯、终端信息、ARPU的分组、业务内容,业务受众人群等。业务支持系统(BSS)主要实现了对电信业务、电信资费、电信营销的管理,以及对客户的管理和服务的过程,它所包含的主要系统包括:计费系统、客服系统、帐务系统、结算系统以及经营分析系统等。
  • O域(运营域)=operation support
    system的数据域,O域有网络数据,比如信令、告警、故障、网络资源等。运营支撑系统(OSS)主要是面向资源(网络、设备、计算系统)的后台支撑系统,包括专业网络管理系统、综合网络管理系统、资源管理系统、业务开通系统、服务保障系统等,为网络可靠、安全和稳定运行提供支撑手段。
  • M域(管理域)=management support
    system的数据域。M域有位置信息,比如人群流动轨迹、地图信息等。管理支持系统(MSS),包括为支撑企业所需的所有非核心业务流程,内容涵盖制订公司战略和发展方向、企业风险管理、审计管理、公众宣传与形象管理、财务与资产管理、人力资源管理、知识与研发管理、股东与外部关系管理、采购管理、企业绩效评估、政府政策与法律等。

3、编辑板块参数

板块参数用于定义业务板块内的时间分区和业务日期。

4、管理统计周期

公共定义仅支持定义统计周期。统计周期即统计数据的时间范围,例如最近7天、最近30天等。

4、计算源

  • 新建MaxCompute计算源
  • 新建AnalyticDB For PostgreSQL计算源
  • 新建Flink计算源
  • 创建加速计算源
  • 管理计算源

比如新建MaxCompute计算源

MaxCompute计算源用于绑定Dataphin项目空间和MaxCompute项目,为Dataphin项目提供处理离线计算任务的计算源。如果Dataphin系统的计算引擎设置为MaxCompute,则只有项目空间添加MaxCompute计算源,才支持规范建模、即席查询、MAXC任务、通用脚本等功能。

前提条件已设置Dataphin计算引擎为MaxCompute,
系统支持超级管理员和项目管理员角色的账号新建计算源

5、项目空间

  • 创建Prod和Dev项目
  • 创建Basic项目
  • 管理项目成员及权限设置

比如:项目是Dataphin的基本组织单元,是进行多用户隔离和访问控制的主要边界。您开通Dataphin服务后,需要通过项目使用Dataphin。为了保障数据生产的稳定性及对数据研发流程的强管控,您可以创建Dev-Prod模式的项目。

6、数据源

  • Dataphin支持的数据源
  • Dataphin出网IP地址
  • 网络连通解决方案
  • 大数据存储数据源
  • 文件数据源
  • 消息队列数据源
  • 关系型数据源
  • NoSQL数据源

比如Dataphin支持的数据源:
在使用Dataphin前,您需要选择符合业务场景需求的数据库或数据仓库作为数据源,用于读取原始数据和写入数据建设过程中的数据。Dataphin集成了丰富的数据引擎,支持对接如MaxCompute、Hive等数据仓库,也支持对接企业传统数据库,如MySQL、Oracle等。

Dataphin支持对接的数据源包括大数据存储型数据源、文件数据源、消息队列数据源、关系型数据源和NoSQL数据源,各模块支持对接的数据源类型说明如下。如果您需要在Dataphin中连接某数据源,则需要先在数仓规划中的数据源模块创建该数据源。




五、数据引入

基于全局设计定义的项目空间与物理数据源,将各业务系统、各类型的数据抽取加载至目标数据库。这个过程可以实现各类业务数据的同步与集成,助您完成基础数据中心建设,为后续进一步加工数据奠定基础。

1、数据集成

1.1 支持的数据源

数据集成支持两种数据迁移方式,包括表、文件迁移和整库迁移。

  • 表、文件迁移 适用于数据上云、云上数据迁移到本地业务系统等场景。例如,将本地数据库MySQL的数据迁移至阿里云数据库RDS中。
  • 整库迁移 适用于将本地数据中心或在ECS上自建的数据库,同步数据至离线数仓(Hive)、大数据计算服务等场景。例如,将ECS上自建的MySQL数据库的数据迁移至MaxCompute中。

1.2 管理管道脚本文件夹

新建、移动、删除及重命名用于存放管道脚本文件的文件夹。

1.3上传管道脚本

Dataphin支持将已下载的管道脚本上传至系统。进行二次开发。

1.4 离线单条管道

  • 配置离线单条管道
  • 编辑离线单条管道
  • 重命名离线单条管道
  • 移动离线单条管道
  • 查看历史信息
  • 下线和删除离线单条管道

1.5 离线整库迁移

  • 配置离线整库迁移
  • 操作离线单条管道
  • 重命名离线整库迁移
  • 删除离线整库迁移

1.6 自定义组件

  • 新建自定义组件
  • 应用自定义组件

1.7 组件说明

  • 组件库-输入组件
  • 组件库-转换组件
  • 组件库-流程组件
  • 组件库-输出组件

2、数据同步

  • 新建同步任务文件夹
  • 新建同步目标表
  • 新建同步任务
  • 配置同步任务
  • 调度配置
  • 执行同步任务
  • 验证同步任务

比如调度配置:
调度配置是配置节点在调度过程中的调度规则及依赖关系。
系统仅支持周期性节点的同步任务进行调度配置。
依赖关系是两个或多个节点之间的语义连接关系,同时上游节点的状态将影响其他下游节点的运行状态。
配置了依赖关系的节点调度规则为:首先,上游节点运行完成后,才能调度下游节点。其次,根据节点设定的调度时间判断是否执行调度。
当您在设定的调度时间之前提交的调度配置,会在设定的调度时间之后生效。而在设定的调度时间之后配置的依赖关系,只能间隔一天再生成实例。
调度配置的权限限制



比如验证同步任务:
执行以下SQL语句,查询同步任务执行的结果。
select * from 目标表名称 where ds=‘任务调度日期’

六、规范定义

规范定义 以维度建模作为理论基础,构建总线矩阵,划分并定义数据域、业务过程、维度、原子指标、业务限定、时间周期和派生指标,以保障数据标准化、规范化的产出。

七、建模研发

基于规范定义的数据元素,进行设计与构建可视化的数据模型。数据模型提交发布后,Dataphin自动化地生成代码与调度任务,大大提升了数据研发效率。

八、编码研发

基于通用的代码编辑页面,灵活地进行个性化的数据编码研发,完成任务发布。
Dataphin不同版本,支持构建不同类型的计算任务。

版本计算任务类型
智能研发版SQL、Spark、MapReduce、Shell、Python、Virtual、Flink_SQL、Flink_Template_SQL和Flink_DataStream
基础研发版ADB for PostgreSQL、Shell、Python、Virtual、Flink_SQL、Flink_Template_SQL和Flink_DataStream

Flink_SQL和Flink_Template_SQL类型的任务,既支持处理实时数据又支持处理离线数据。

1、规范建模

1.1 规范定义-维度

新建维度
维度是人们观察事物的角度,是确定事物的多方位、多角度、多层次的条件和概念。维度即进行数据统计的对象。通常情况下,维度是实际存在、不因事件发生而存在的实体,例如时间维度、地区维度、产品维度等。创建维度,即从顶层规范业务中实体(或称主数据)的存在性及唯一性。



创建了维度后,可以对维度进行其它相应操作,查看维度逻辑表、编辑维度、继承维度、下线和删除维度

1.2 规范定义-业务过程

新建业务过程
业务过程是业务活动中不可拆分的事件,例如下单、支付和退款。创建业务过程,即从顶层视角,规范业务活动中事件的内容类型及唯一性。


新建完业务过程,可以对业务过程进行编辑业务过程、克隆业务过程、创建逻辑表、查看相关事实逻辑表、删除业务过程等操作。

1.3 逻辑表-维度逻辑表

添加关联维度、属性和子维度
维度提交成功后,系统会自动创建与维度一一对应的维度逻辑表。同时,系统支持对维度逻辑表添加属性、关联维度和子维度。


编辑字段的计算逻辑

order_id string
select order_id
from onedata.s_order a
join s_item b
on a.item_id=b.item_id
where ds='${bizdate}'

下面还可以进行以下操作:
编辑模型关系、定义公用计算逻辑、编辑字段、物理化配置、调度配置、参数配置、查看历史信息、下线和删除维度逻辑表

1.4 逻辑表-事实逻辑表

新建事实逻辑表
事实逻辑表用于描述业务过程的详细信息





建立完事实表,还可以进行以下配置:
物理化配置、修改事实逻辑表、调度配置、查看历史信息、下线和删除事实逻辑表

1.5 规范定义-原子指标

新建原子指标
原子指标是对指标统计口径、具体算法的抽象。Dataphin创新性地提出了设计即开发的理念,指标定义同时也明确了设计统计口径(即计算逻辑),提升了研发效率,并保证了统计结果的一致性。




建立了原子指标,还可进行以下的操作:
修改原子指标、查看同源原子指标、克隆原子指标、查看相关派生指标、创建派生指标、下线和删除原子指标等。

1.6 规范定义-业务限定

新建业务限定
业务限定用于圈定统计的业务范围。




还可以做克隆业务限定、修改业务限定、查看同源业务限定、查看相关派生指标、下线和删除业务限定等操作。

1.7 规范定义-派生指标

新建派生指标
派生指标用于圈定原子指标统计业务范围,Dataphin支持构建标准、规范及无二义性的派生指标。派生指标的说明如下:

  • 派生指标由原子指标、业务限定、统计周期和统计粒度组成。
  • 系统支持基于维度逻辑表或事实逻辑表构建派生指标。
  • 派生指标在业务板块内只能归属于一个来源逻辑表。
  • 因为原子指标和派生指标可能来自不同数据域的逻辑表,所以派生指标可能归属于多个数据域。
  • 新建派生指标的权限限制

建立完派生指标,我们可以进行修改派生指标、下线和删除派生指标、查看相关汇总逻辑表等操作。

1.8 逻辑表-汇总逻辑表

新建汇总逻辑表
汇总逻辑表用于统计以统计粒度(维度)为主题的所有数据。前提是完成维度的创建,派生指标的创建。

  • 汇总逻辑表由一个特定的统计粒度(维度)和该统计粒度相关的统计指标(原子指标)组成。
  • 汇总逻辑表的统计指标(原子指标)具有相同的统计粒度(维度)。
  • 如果派生指标和汇总逻辑表的统计粒度一致,则系统会自动加入派生指标至汇总逻辑表。

汇总逻辑表的统计指标包括以下两种来源:

  • 基于系统自动汇聚的派生指标,构建汇总逻辑表的统计指标。
  • 通过创建自定义指标的方式,构建汇总逻辑表的统计指标。

下面就可以进行:物理化配置汇总逻辑表、编辑汇总逻辑表、查看汇总逻辑表的详情、删除汇总逻辑表等操作。

1.9 规范建模-建模引擎

Dataphin逻辑表开发、提交和调度运行,会自行根据系统内置规则对逻辑表模型进行校验、物理化,提供查询使用。标准规范、可靠稳定及高效的逻辑表研发过程依赖于智能建模引擎服务。
逻辑表查询SQL
Dataphin支持逻辑表雪花模型的查询,即支持基于[逻辑模型.关联维度.关联维度.···.属性](如订单.买家.会员类型.类型值)查询所需数据,提高查询类SQL的编码效率。

事实逻辑表/维度逻辑表查询
SQL格式说明如下。

select Column,
        LTable.Column,   //逻辑表名.字段名
        LTable.Role(relation - dimension)..Dimension_Column,   //逻辑表名.角色名(关联维度字段名).维度属性字段名
from    LD.LTable   //业务板块名.逻辑表名 
where
select Column,
        LTable_Alias.Column,
        LTable_Alias.Role(relation - dimension)..Dimension_Column
from    LD.LTable    Alias
where

SQL格式举例如下。

select a.dim_industry.in_name,
        a.dim_industry.IN_ID,
        name,
        ceo_name,
        company_id
from    LD_demo.dim_company.dim_industry.in_name  a
where   ds = '${bizdate}'
limit   100;

汇总逻辑表查询
SQL格式说明如下。

select Column,
        LTable.Column,
        LTable.Dimension(granularity)..Dimension_Column,
from    LD.LTable
whereselect Column,
        Alias.Column,
        Alias.Dimension (granularity)..Dimension_Column
from    LD.LTable Alias
where

SQL格式举例如下。

select customer_id,
        c.dim_customer.address_line1,
        c.dim_customer.dim_tax_rate.tx_name,
        crt_trd_comm_amt_30d_trd_valid,
        acct_cnt_td_actv_account,
        watch_sec_cnt_td_actv_watches,
        avg_crt_trd_comm_7d,
        crt_trd_acct_cnt_7d,
        crt_trd_cnt_1d,
        avg_crt_trd_comm_1d,
        crt_trd_comm_amt_1d_trd_valid,
        crt_trd_acct_cnt_1d,
        watch_sec_cnt_td_inac_watches,
        watch_sec_cnt_td,
        acct_cnt_td,
        crt_trd_cnt_7d
from  LD_DEMO.DWS_CUSTOMER c
where ds='${bizdate}'
limit 100;

2、编码研发

2.1 新建资源

资源管理用于存储、管理代码研发过程中所需的文件,如JAR、JSON、Python等资源文件。

2.2 新建用户自定义函数

离线计算函数用于管理离线计算任务代码开发过程中用到的SQL函数,包括计算引擎源常用且系统默认支持的函数和用户自定义函数,前者不支持编辑操作。

并使用即席查询编写SQL代码(SQL代码中引用该函数)验证函数是否符合预期效果。SQL查询语句示例如下。

select   
get_week_date("20170810",0,2),--获取8月10日本周周二日期。
from  cndata.dual

2.3 新建MAXC任务

2.3.1 新建SQL任务

Dataphin构建SQL类型的离线计算任务,具体步骤菜单可参考产品文档。

2.3.2 新建MapReduce任务

MapReduce任务中引用到的JAR资源包需提前创建,因此需要您在资源管理中上传JAR资源包,然后在MapReduce代码任务中引用。

2.3.3 新建Spark任务

完成上传JAR或PYTHON文件,Spark任务中引用到的JAR和PYTHON文件需要提前创建,因此您在资源管理中先上传JAR和PYTHON文件,然后在Spark任务中引用。

在代码编写页面,编写Spark离线计算任务的代码。
代码示例如下。

@resource_reference{"spark.py"}
spark-submit
--deploy-mode cluster
--conf spark.hadoop.odps.task.major.version=cupid_v2
--conf spark.hadoop.odps.end.point=http://service.cn.maxcompute.aliyun.com/api
--conf spark.hadoop.odps.runtime.end.point=http://service.cn.maxcompute.aliyun-inc.com/api
--master yarn
spark.py

其中,resource_reference{}为引用JAR或PYTHON文件资源包,其它语句均为固定语法。

2.4 开发流批一体任务

  • 新建镜像表
  • 新建元表
  • 新建自定义源
  • 新建代码模板
  • 创建Flink SQL任务
  • 创建Flink Template SQL任务
  • 创建Flink DataStream计算任务

2.5 新建ADB任务

  • 新建ADB for PostgreSQL任务
  • ADB for PostgreSQL支持的语法

2.6 新建通用任务

2.6.1 新建Shell任务

@resource_reference{"datax.json"}
python $DATAX_HOME/bin/datax.py datax.json 

#Dataphin系统已内置DataX的安装目录为DATAX_HOME/bin/datax.py。
其中,resource_reference{}用于调用已上传的datax.json资源文件。

2.6.2 新建Virtual任务

2.6.3 创建Python计算任务

为了满足丰富的Python应用场景,Dataphin支持创建可以使用Python语法的Python计算任务。本文为您介绍如何基于Dataphin构建Python计算任务和定义Python UDF。





定义Python UDF时,需要在代码中添加import Python文件名语句,导入上传的Python文件。

开发Python 3.7计算任务时,需要根据业务场景安装如下资源包。以下安装包已经预制至系统内,您在开发代码过程中,只需要在代码开始部分添加import 资源包名语句即可,例如import configparser。

需要选择代码示例如下。

#!/usr/bin/Python
# -*- coding: latin-1 -*-
import time
import datetime
import base64
import hashlib
import json
import sys
import csv
from odps import ODPS
def main():   
    print "Hello World"

2.6.4 Dataphin PyODPS

Dataphin PyODPS是基于MaxCompute PyODPS开发的Dataphin Python版本的SDK。在Dataphin中使用Python时,您可以使用Dataphin PyODPS安全地访问Dataphin项目内存储在MaxCompute的数据.

使用示例

from dataphin import odps
odps.execute_sql("select * from ${[业务板块]}.[逻辑表名]")

2.7 创建并配置机器学习任务


以后有兴趣可进一步研究。

2.8 调度配置

调度配置用于配置节点在调度过程中的调度规则及依赖关系。

2.9 管理计算任务

如何编辑、移动、重命名和删除计算任务等操作

3、即席查询

即席查询是指那些用户在使用系统时,根据自己当时的需求定义的查询。

4、SQL使用说明

4.1 常用命令

Dataphin支持的MaxCompute SQL常用开发命令主要是支持表操作和分区操作。

类别	常用命令	是否支持
项目空间操作	进入项目空间(use)	支持
查看项目空间属性(setproject)	不支持
设置项目空间属性(setproject)	不支持
查看项目空间账号体系(list accountproviders)	支持
增加RAM账号体系(add)	支持
删除RAM账号体系(remove)	支持
set操作	set	支持
show flags	不支持
安全操作	开启项目空间数据保护(ProjectProtection)	不支持
添加可信项目空间(add trustedproject)	不支持
移除可信项目空间(remove trustedproject)	不支持
查看可信项目空间(list trustedprojects)	不支持
查看项目空间的安全配置(show SecurityConfiguration)	不支持
用户和角色操作	添加用户(add user)	支持
删除用户(remove user)	支持
查看用户列表(list users)	支持
创建角色(create role)	不支持
查看角色列表(list roles)	支持
为用户授予角色(grant)	支持
删除角色中的用户(revoke)	支持
删除角色(drop role)	不支持
授权操作	为角色或用户授权(grant)	支持
撤销角色或用户授权(revoke)	支持
表操作	创建表(create table)	支持
修改表的所有人(alter table)	支持
删除表(drop table)	支持
查看表或视图信息(desc)	支持
查看分区信息(desc partition)	支持
列出空间下的表(show tables)	支持
列出空间下的表(show tables)	支持
分区和列操作	添加分区(alter table add)	支持
删除分区(alter table drop)	支持
添加列或注释(alter table add columns)	支持
修改列名及注释(alter table change column)	支持
实例操作	查看实例信息(show)	不支持
查看实例状态(status)	不支持
查看正在执行的实例信息(top instance)	不支持
停止实例(kill)	不支持
获取实例对应的作业信息(desc)	不支持
获取实例对应的作业运行日志信息(wait)	不支持
资源操作	添加资源(add)	不支持
查看资源列表(list)	支持
为资源创建别名(alias)	不支持
下载资源(get)	不支持
删除资源(drop)	不支持
函数操作	注册函数(create function)	不支持
注销函数(drop function)	不支持
查看函数(desc function)	不支持
查看函数列表(list functions)	不支持
Tunnel操作	上传数据(Tunnel upload)	不支持
下载数据(Tunnel download)	不支持
时区配置操作	时区配置操作	不支持
其它操作	计量预估(cost sql)	不支持

4.2 SQL使用限制

限制项	最大值/限制条件	分类	说明
表名长度	128字节	长度限制	表名、列名中不能有特殊字符,以字母开头,且只能用英文小写字母(a-z)、英文大写字母(A-Z)、数字和下划线(_)。
注释长度	1024字节	长度限制	长度不超过1024字节的有效字符串。
表的列定义	1200个	数量限制	单表的列定义个数最多为1200个。
单表分区数	60000个	数量限制	单表的分区个数最多为60000个。
表的分区层级	6级	数量限制	在表中创建的分区层次不能超过6级。
屏显	10000行	数量限制	SELECT语句屏显最多输出10000行。
INSERT目标个数	256个	数量限制	MULTI-INSERT场景,目标表的数量限制为256个。
UNION ALL	256个	数量限制	UNION ALL场景,最多允许合并256个表。
MAPJOIN	128个	数量限制	MAPJOIN场景,最多允许连接128个小表。
MAPJOIN内存限制	512 MB	数量限制	MAPJOIN场景,所有小表的内存不能超过512 MB。
窗口函数	5个	数量限制	单个SELECT语句中最多允许存在5个窗口函数。
ptinsubq	1000行	数量限制	子查询中存在分区列时,子查询的返回结果不能超过1000行。
SQL语句长度	2 MB	长度限制	SQL语句的最大长度为2 MB。包括您使用SDK调用SQL的场景。
WHERE子句条件个数	256个	数量限制	WHERE子句中的条件个数最大为256个。
列记录长度	8 MB	数量限制	表中单个单元的最大长度为8 MB。
IN的参数个数	1024	数量限制	IN的最大参数限制,例如in (1,2,3.,1024)。如果in()的参数过多,会影响编译性能。1024为建议值,不是限制值。
jobconf.json	1 MB	长度限制	jobconf.json的大小为1 MB。当表包含的分区数量较多时,大小可能超过jobconf.json,超过1 MB。
视图	不可写	操作限制	视图不支持写入,不支持INSERT操作。
列的数据类型	不可修改	操作限制	不允许修改列的数据类型及列位置。
Java UDF函数	不允许为ABSTRACT或者STATIC。	操作限制	Java UDF函数不能为ABSTRACT或STATIC。
最多查询分区个数	10000个	数量限制	最多查询分区个数不能超过10000个。
SQL执行计划长度	1 MB	长度限制	MaxCompute SQL生成的执行计划不能超过1 MB,否则会触发FAILED: ODPS-0010000:System internal error - The Size of Plan is too large报错。

4.3 数据类型

类型	常量示例	描述
TINYINT	1Y、-127Y	8位有符号整型。
取值范围:-128~127SMALLINT	32767S、-100S	16位有符号整型。
取值范围:-32768~32767INT	1000-15645787	32位有符号整型。
取值范围:-2 31~2 31-1BIGINT	100000000000L、-1L	64位有符号整型。
取值范围:-2 63+1~2 63 -1BINARY	无	二进制数据类型,目前长度限制为8MB。
FLOAT32位二进制浮点型。
DOUBLE	3.1415926 1E+7	64位二进制浮点型。
DECIMAL(precision,scale)	3.5BD、99999999999.9999999BD	10进制精确数字类型。
precision:表示最多可以表示多少位的数字。取值范围:1 <= precision <= 38。
scale:表示小数部分的位数。取值范围: 0 <= scale <= 18。
如果不指定以上两个参数,则默认为decimal(38,18)。

说明
同一个表中不能同时存在新老Decimal数据类型。
执行setproject odps.sql.hive.compatible=true;命令开启Hve兼容模式时,Decimal(precision, scale)类型在数据导入(Tunnel Upload)和SQL运算过程中,如果数据的小数位数超过scale的大小,则会进行四舍五入的处理。如果整数部分超出限制,则会报错。
VARCHAR(n)	无	变长字符类型,n为长度。
取值范围:1~65535CHAR(n)	无	固定长度字符类型,n为长度。最大取值255。长度不足则会填充空格,但空格不参与比较。
STRING	“abc”、’bcd’、”alibaba”、‘inc’	字符串类型,目前长度限制为8MB。
DATE	DATE'2017-11-11'	日期类型,格式为yyyy-mm-dd。
取值范围:0000-01-01~9999-12-31DATETIME	DATETIME2017-11-11 00:00:00’	日期时间类型。
取值范围:0000-01-01 00:00:00.000~9999-12-31 23.59:59.999,精确到毫秒。

TIMESTAMP	TIMESTAMP2017-11-11 00:00:00.123456789’	与时区无关的时间戳类型。
取值范围:0000-01-01 00:00:00.000000000~9999-12-31 23.59:59.999999999,精确到纳秒。

说明 对于部分时区相关的函数,例如cast(<a timestamp> as string),要求TIMESTAMP按照与当前时区相符的方式来展现。
BOOLEAN	TrueFalse	BOOLEAN类型。
取值范围:TrueFalse

复杂数据类型

ARRAY	
array<int>
array<struct<a:int, b:string>>
array(1, 2, 3)
array(array(1, 2), array(3, 4))
MAP	
map<string, string>
map<smallint, array<string>>
map(“k1”, “v1”, “k2”, “v2”)
map(1S, array(‘a’, ‘b’), 2S, array(‘x’, ‘y’))
STRUCT	
struct<x:int, y:int>
struct<field1:bigint, field2:array<int>, field3:map<int, int>>
named_struct(‘x’, 1, ‘y’, 2)
named_struct(‘field1’, 100L, ‘field2’, array(1, 2), ‘field3’, map(1, 100, 2, 200))

4.4 运算符

运算符	说明
A=B	
A或B为NULL,返回NULL。
A等于B,返回TRUE,否则返回FALSE。
A<>B	
A或B为NULL,返回NULL。
A不等于B,返回TRUE,否则返回FALSE。
A<B	
A或B为NULL,返回NULL。
A小于B,返回TRUE,否则返回FALSE。
A<=B	
A或B为NULL,返回NULL。
A小于等于B,返回TRUE,否则返回FALSE。
A>B	
A或B为NULL,返回NULL。
A大于B,返回TRUE,否则返回FALSE。
A>=B	
A或B为NULL,返回NULL。
A大于等于B,返回TRUE,否则返FALSE。
A IS NULL	A为NULL,返回TRUE,否则返回FALSE。
A IS NOT NULL	A不为NULL,返回TRUE,否则返回FALSE。
A LIKE B	如果A或B为NULL,返回NULL。A为字符串,B为要匹配的模式,如果匹配,返回TRUE,否则返回FALSE。
百分号(%)匹配任意多个字符。
下划线(_)匹配单个字符。
要匹配百分号(%)或下划线(_)要用转义符表示为‘%’或‘_’。
'aaa' like 'a__'= TRUE 
'aaa' like 'a%' = TRUE
'aaa' like 'aab'= FALSE 
'a%b' like 'a\\%b'= TRUE 
'axb' like 'a\\%b'= FALSE 
A RLIKE B	A是字符串,B是字符串常量或者正则表达式。如果匹配成功,返回TRUE,否则返回FALSE。如果B为空串会报错。如果A或B为NULL,返回NULL。
A IN B	
B为一个集合,如果A在B中,返回TRUE,否则返回FALSE。
如果A为NULL,返回NULL。
如果B仅包含一个NULL元素,即A IN(NULL),则返回NULL。
B必须是常数集合且至少包含一个项,且所有项的数据类型需要一致。
说明 如果B集合中包含NULL元素同时也包含其它元素,则将NULL视为与B集合中其它元素的数据类型一致。
BETWEEN AND	表达式为A [NOT] BETWEEN B AND C。
A、B或C为NULL,则为空。
A大于等于B且小于等于C,返回TRUE,否则返回FALSE。
IS [NOT] DISTINCT FROM	表达式为A IS [NOT] DISTINCT FROM B。详情请参见IS DISTINCT FROM和IS NOT DISTINCT FROM。

常见用法如下。

SELECT * FROM user WHERE user_id = '0001'; 
SELECT * FROM user WHERE user_name <> 'maggie'; 
SELECT * FROM user WHERE age >50; 
SELECT * FROM user WHERE birth_day >= '1980-01-01 00:00:00'; 
SELECT * FROM user WHERE is_female is null; 
SELECT * FROM user WHERE is_female is not null; 
SELECT * FROM user WHERE user_id in (0001,0010); 
SELECT * FROM user WHERE user_name like 'M%';

在执行部分关系运算之前,您首先需要进行类型转换,否则可能返回NULL,详情请参见数据类型转换。示例如下,'2019-02-16 00:00:01’为DATETIME类型,而’2019-02-16’为STRING类型,在进行比较关系运算前需要完成显示类型转换。

SELECT CAST('2019-02-16 00:00:01' AS STRING) > '2019-02-16';
SELECT CAST('2019-02-16 00:00:02' AS DATETIME) > '2019-02-16 00:00:01';

由于DOUBLE类型存在一定的精度差,因此,不建议您直接使用等于号(=)对两个DOUBLE类型的数据进行比较。您可以将两个DOUBLE类型数据相减,然后取绝对值进行判断。当绝对值足够小时,认为两个DOUBLE数值相等,示例如下。

ABS(0.9999999999 - 1.0000000000) < 0.000000001
 -- 0.9999999999和1.0000000000为10位精度,而0.000000001为9位精度。
 -- 此时可以认为0.9999999999和1.0000000000相等。

4.5 DDL语句

MaxCompute中的DDL语句包括对表、分区、列、生命周期和视图的操作。本文为您介绍Dataphin支持的MaxCompute的DDL语句。

表操作
功能	当前是否支持
创建表	是
修改表的注释	是
修改表的修改时间	是
修改表的聚簇属性	
支持增加聚簇属性
不支持删除聚簇属性
重命名表	是
删除表	是
查看表或视图信息	是
查看分区信息	是
列出项目空间下的表和视图	是
列出所有分区	是
修改表的所有人	否
清空非分区表里的数据	否
查看建表语句	否
分区和列操作
功能	是否支持
添加分区	
支持添加单个分区
不支持添加多个分区
删除分区	
支持删除单个分区
不支持删除多个分区
不支持根据过滤条件删除分区
添加列或注释	是
修改列名	是
修改列注释	是
修改分区的更新时间	是
修改分区值	是
合并分区	否
生命周期操作
功能	是否支持
修改表的生命周期	是
禁止或恢复生命周期	是
视图操作
功能	是否支持
创建或更新视图	是
重命名视图	是
删除视图	是

4.6 DML操作

MaxCompute中的DML语句包括插入、更新和删除数据操作。本文为您介绍Dataphin支持的MaxCompute的DML操作语句。

功能	是否支持
插入或覆写数据(INSERT INTO | INSERT OVERWRITE)	
支持insert {into|overwrite} table <table_name> [partition (<pt_spec>)] <select_statement> from <from_statement>;
不支持指定列插入数据:insert into table <table_name> [partition (<pt_spec>)] (<col_name> ,<col_name> ...) <select_statement> from <from_statement>;
不支持插入数据排序:insert {into|overwrite} table <table_name> [partition (<pt_spec>)] [(<col_name> [,<col_name> ...)] <select_statement> from <from_statement> [zorder by <zcol_name> [, <zcol_name> ...]];
插入或覆写动态分区数据(DYNAMIC PARTITION)	是
多路输出(MULTI INSERT)	是
VALUES	
支持insertvalues
不支持values table
LOAD	否
COMMON TABLE EXPRESSION(CTE)	
支持with table as (select ...) insert into tab select ... from table
支持with table as (select ...) select ... from table

4.7 DQL操作

MaxCompute中的DQL语句包括SELECTJOINWHERE子句等。本文为您介绍Dataphin支持的MaxCompute的DQL操作语句。
功能	是否支持
命令格式	是
列表达式(select_expr)	
支持*
支持distinct
不支持正则表达式
WHERE子句(where_condition)	Dataphin 2.9.2及之后版本支持UDF分区裁剪
当SQL语句设置了group by属性,即set odps.sql.groupby.position.alias=true;group by中的整型常量会被当做select的列序号处理,详情请参见GROUP BY分组查询(col_list)	是
基础子查询	
支持select <select_expr> from (<select_statement>) <sq_alias_name>;
不支持select (<select_statement>) from <table_name>;
IN SUBQUERY	是
NOT EXISTS SUBQUERY	是
SCALAR SUBQUERY	是
交集、并集和补集	
支持intersect
不支持intersect all
不支持intersect distinct
并集	
支持union all
支持union [distinct]
补集	
支持except
支持minus
不支持except distinct
不支持minus distinct
不支持except all
不支持minus distinct
JOIN	是
SEMI JOIN(半连接)	是
MAPJOIN HINT	是
Lateral View(行转列)	是
GROUPING SETS	是
COMMON TABLE EXPRESSION(CTE)	是
CLONE TABLESELECT TRANSFORM	否
EXPLAIN	否
执行语序	否

九、资源及函数管理

支持管理各种资源包(例如JAR、文本文件),以满足部分数据处理需求。
支持查找与使用内置的系统函数。
支持用户自定义函数,以满足数据研发的特殊加工需求。

十、数据萃取

基于Dataphin数据建模研发沉淀的数据,萃取提供以目标对象为中心的数据打通和深度挖掘,并生成代码与调度任务,完成实体对象识别、连接及标签生产,可快速应用于各类业务。

十一、发布

生产开发隔离项目中,提交成功的任务对象会展示在待发布列表,该页面为您展示已提交的新增、更新、下线任务、建模对象、资源和函数等操作。发布成功后,被发布的对象从待发布列表移除,并生成一条发布成功记录;成功发布的操作在生产环境生效。

十二、调度运维

对建模研发、编码研发生成的代码任务进行基于策略的调度与运维,确保所有任务正常有序地运行。调度运维操作包括:部署数据生产任务、查看任务运行情况、管理及维护任务之间的依赖关系。

十三、资产全景与地图

持采集、解析和管理基础数据中心、公共数据中心、萃取数据中心的元数据。在元数据中心基础上,深度分析元数据,实现数据资产化管理。为您可视化地呈现资产分布、元数据详情等,方便您快速查找、深度了解数据资产。

十四、权限管理

为您提供多种资产对象和功能权限的精细化管理,支持权限主动申请与交还、权限审批、主动授权或回收权限等功能,实现了权限最小化管控,同时,方便您查看权限审批流程各环节的进展,及时跟进处理流程。 权限管理

十五、资产质量

资产质量基于Dataphin平台,为您提供全链路的资产质量方案,包括质量规则配置、质量监控、智能报警等功能。 资产质量

十六、资产治理

资产治理具备资源统计分析能力,可智能识别当前系统内低价值的数据资产和数据任务,并进行优化提示。您可以在治理工作台中,一站式的进行资源的优化处理,全局把控计算与存储成本,提升系统使用效率。 资产治理

十七、资产安全

资产安全模块提供了数据生命周期中统一的敏感数据识别与保护能力。通过数据分类分级、敏感数据识别、敏感数据脱敏等措施,帮助客户建立完善的数据安全体系,确保数据使用的安全合规。 资产安全

十八、数据服务

数据服务为您提供高效、便捷的主题式查询功能及有效的全链路企业内API生命周期托管,真正实现低门槛API开发,帮助您更好地进行数据资产应用以实现价值化。

十九、告警中心

告警中心 告警中心是基于Dataphin构建的监控告警平台,为您展示资产质量、实时计算、数据服务模块的告警事件和推送记录。

本文参考网址:
https://help.aliyun/document_detail/109739.html

更多推荐

大数据-玩转数据-阿里Dataphin全接触