华为云用户手册

  • 伪类型 GaussDB (DWS)数据类型中包含一系列特殊用途的类型,这些类型按照类别被称为伪类型。伪类型不能作为字段的数据类型,但是可以用于声明函数的参数或者结果类型。 当一个函数不仅仅是简单地接受并返回某种SQL数据类型,伪类型能起到很大的作用。表1列出了所有的伪类型。 表1 伪类型 名字 描述 any 表示函数接受任何输入数据类型。 anyelement 表示函数接受任何数据类型。 anyarray 表示函数接受任意数组数据类型。 anynonarray 表示函数接受任意非数组数据类型。 anyenum 表示函数接受任意枚举数据类型。 anyrange 表示函数接受任意范围数据类型。 cstring 表示函数接受或者返回一个空结尾的C字符串。 internal 表示函数接受或者返回一种服务器内部的数据类型。 language_handler 声明一个过程语言调用句柄返回language_handler。 fdw_handler 声明一个外部数据封装器返回fdw_handler。 record 标识函数返回一个未声明的行类型。 trigger 声明一个触发器函数返回trigger。 void 表示函数不返回数值。 opaque 一个已经过时的类型,以前用于所有上面这些用途。 声明用C编写的函数(不管是内置的还是动态装载的)都可以接受或者返回任何这样的伪数据类型。当伪类型作为参数类型使用时,用户需要保证函数的正常运行。 用过程语言编写的函数只能使用实现语言允许的伪类型。目前,过程语言不允许使用伪类型作为参数类型的,只允许使用void和record作为结果类型。一些多态的函数还支持使用anyelement,anyarray,anynonarray anyenum和anyrange类型。 伪类型internal用于声明只能在数据库系统内部调用的函数,这些函数不能直接在SQL查询里调用。如果某函数至少有一个internal类型的参数,则不能从SQL里调用。建议不要创建任何声明返回internal的函数,除非该函数至少有一个internal类型的参数。 示例: 创建或替换函数showall()。 1 2 3 CREATE OR REPLACE FUNCTION showall() RETURNS SETOF record AS $$ SELECT count(*) from tpcds.store_sales where ss_customer_sk = 9692; $$ LANGUAGE SQL; 调用函数showall()。 1 2 3 4 5 SELECT showall(); showall --------- (35) (1 row) 删除函数。 1 DROP FUNCTION showall(); 父主题: 数据类型
  • 注意事项 通过CREATE USER创建的用户,默认具有 LOG IN权限; 通过CREATE USER创建用户的同时系统会在执行该命令的数据库中,为该用户创建一个同名的SCHEMA;其他数据库中,则不自动创建同名的SCHEMA;用户可使用CREATE SCHEMA命令,分别在其他数据库中,为该用户创建同名SCHEMA。 系统管理员在普通用户同名schema下创建的对象,所有者为schema的同名用户(非系统管理员)。 除系统管理员之外,其他用户即使被授权了schema的所有权限也无法在普通用户的同名schema下创建对象,除非把同名schema相关的角色权限赋予其他用户。具体操作可参考“赋予用户schema的all权限后建表仍然报错”章节。
  • 语法格式 1 CREATE USER user_name [ [ WITH ] option [ ... ] ] [ ENCRYPTED | UNENCRYPTED ] { PASSWORD | IDENTIFIED BY } { 'password' | DISABLE }; 其中option子句用于设置权限及属性等信息。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 {SYSADMIN | NOSYSADMIN} | {AUDITADMIN | NOAUDITADMIN} | {CREATEDB | NOCREATEDB} | {USEFT | NOUSEFT} | {CREATEROLE | NOCREATEROLE} | {INHERIT | NOINHERIT} | {LOGIN | NOLOGIN} | {REPLICATION | NOREPLICATION} | {INDEPENDENT | NOINDEPENDENT} | {VCADMIN | NOVCADMIN} | CONNECTION LIMIT connlimit | VALID BEGIN 'timestamp' | VALID UNTIL 'timestamp' | RESOURCE POOL 'respool' | USER GROUP 'groupuser' | PERM SPACE 'spacelimit' | TEMP SPACE 'tmpspacelimit' | SPILL SPACE 'spillspacelimit' | NODE GROUP logic_cluster_name | IN ROLE role_name [, ...] | IN GROUP role_name [, ...] | ROLE role_name [, ...] | ADMIN role_name [, ...] | USER role_name [, ...] | SYSID uid | DEFAULT TABLESPACE tablespace_name | PROFILE DEFAULT | PROFILE profile_name | PGUSER | AUTHINFO 'authinfo' | PASSWORD EXPIRATION period
  • 示例 查询会话信息: 1 2 3 4 5 6 7 8 9 10 11 12 13 SELECT sid,serial#,username FROM V$SESSION; sid | serial# | username -----------------+---------+---------- 140131075880720 | 0 | 140131025549072 | 0 | 140131073779472 | 0 | 140131071678224 | 0 | 140131125774096 | 0 | 140131127875344 | 0 | 140131113629456 | 0 | 140131094742800 | 0 | (8 rows) 结束SID为140131075880720的会话: 1 ALTER SYSTEM KILL SESSION '140131075880720,0' IMMEDIATE;
  • 语法格式 详细介绍请参见INSERT的语法格式。有两种UPSERT语法格式: 表1 UPSERT语法格式 语法格式 冲突更新 冲突忽略 第一种:不指定索引 INSERT INTO ON DUPLICATE KEY UPDATE INSERT IGNORE INSERT INTO ON CONFLICT DO NOTHING 第二种:从指定列名或者约束上可以推断唯一约束 INSERT INTO ON CONFLICT(...) DO UPDATE SET INSERT INTO ON CONFLICT ON CONSTRAINT con_name DO UPDATE SET INSERT INTO ON CONFLICT(...) DO NOTHING INSERT INTO ON CONFLICT ON CONSTRAINT con_name DO NOTHING
  • 示例 创建表reason_t2,并向表中插入数据: 1 2 3 4 5 6 7 8 9 10 11 12 13 CREATE TABLE reason_t2 ( a int primary key, b int, c int ); INSERT INTO reason_t2 VALUES (1, 2, 3); SELECT * FROM reason_t2 ORDER BY 1; a | b | c ---+---+--- 1 | 2 | 3 (1 rows) 向表reason_t2中插入两条数据,一条有冲突,一条无冲突。有冲突的数据进行忽略,无冲突的数据进行插入: 1 2 3 4 5 6 7 INSERT INTO reason_t2 VALUES (1, 4, 5),(2, 6, 7) ON CONFLICT(a) DO NOTHING; SELECT * FROM reason_t2 ORDER BY 1; a | b | c ---+---+---- 1 | 2 | 3 2 | 6 | 7 (2 rows) 向表reason_t2中插入数据,一条有冲突,一条无冲突。有冲突的数据进行更新,无冲突的数据进行插入: 1 2 3 4 5 6 7 8 INSERT INTO reason_t2 VALUES (1, 4, 5),(3, 8, 9) ON CONFLICT(a) DO UPDATE SET b = EXCLUDED.b, c = EXCLUDED.c; SELECT * FROM reason_t2 ORDER BY 1; a | b | c ---+---+---- 1 | 4 | 5 2 | 6 | 7 3 | 8 | 9 (3 rows) 根据过滤条件筛选被更新的行: 1 2 3 4 5 6 7 8 INSERT INTO reason_t2 VALUES (2, 7, 8) ON CONFLICT (a) DO UPDATE SET b = excluded.b, c = excluded.c WHERE reason_t2.c = 7; SELECT * FROM reason_t2 ORDER BY 1; a | b | c ---+---+--- 1 | 4 | 5 2 | 7 | 8 3 | 8 | 9 (3 rows) 向表reason_t中插入数据,有冲突的数据进行更新并调整更新映射关系,即c列更新到b,b列更新到c: 1 2 3 4 5 6 7 8 INSERT INTO reason_t2 VALUES (1, 2, 3) ON CONFLICT (a) DO UPDATE SET b = excluded.c, c = excluded.b; SELECT * FROM reason_t2 ORDER BY 1; a | b | c ---+---+--- 1 | 3 | 2 2 | 7 | 8 3 | 8 | 9 (3 rows)
  • current_schema[()] 描述:current_schema返回在搜索路径中第一个顺位有效的模式名。(如果搜索路径为空则返回NULL,没有有效的模式名也返回NULL)。如果创建表或者其他命名对象时没有声明目标模式,则将使用这些对象的模式。 返回值类型:name 示例: 1 2 3 4 5 SELECT current_schema(); current_schema ---------------- public (1 row)
  • current_user 描述:当前执行环境下的用户名。current_user是用于权限检查的用户标识。通常用来表示会话用户,但是可以通过SET ROLE改变这个设置。在函数执行的过程中随着属性SECURITY DEFINER的改变,其值也会改变。 返回值类型:name 示例: 1 2 3 4 5 SELECT current_user; current_user -------------- dbadmin (1 row)
  • pg_my_temp_schema() 描述:pg_my_temp_schema返回当前会话中临时模式的OID,如果不存在(没有创建临时表)的话则返回0。如果给定的OID是其它会话中临时模式的OID,pg_is_other_temp_schema则返回true。 返回值类型:oid 示例: 1 2 3 4 5 SELECT pg_my_temp_schema(); pg_my_temp_schema ------------------- 0 (1 row)
  • current_schemas(boolean) 描述:current_schemas(boolean)返回搜索路径中所有模式名字的数组。布尔选项决定像pg_catalog这样隐含包含的系统模式是否包含在返回的搜索路径中。 返回值类型:name[] 示例: 1 2 3 4 5 SELECT current_schemas(true); current_schemas --------------------- {pg_catalog,public} (1 row) 搜索路径可以通过运行时设置更改。命令是: 1 SET search_path TO schema [, schema, ...]
  • version() 描述:版本信息。version返回一个描述服务器版本信息的字符串。 返回值类型:text 示例: 1 2 3 4 5 SELECT version(); version --------------------------------------------------------------------------------------------------------------------------------------- PostgreSQL 9.2.4 gsql ((GaussDB 8.2.1 build 39137c2d) compiled at 2022-09-23 15:43:11 commit 3629 last mr 5138 release) on x86_64-unknown-linux-gnu, compiled by g++ (GCC) 5.4.0, 64-bit (1 row)
  • pg_conf_load_time() 描述:配置加载时间。pg_conf_load_time返回最后加载服务器配置文件的时间戳。 返回值类型:timestamp with time zone 示例: 1 2 3 4 5 SELECT pg_conf_load_time(); pg_conf_load_time ------------------------------ 2017-09-01 16:05:23.89868+08 (1 row)
  • pgxc_version() 描述:Postgres-XC版本信息。 返回值类型:text 示例: 1 2 3 4 5 SELECT pgxc_version(); pgxc_version ------------------------------------------------------------------------------------------------------------- Postgres-XC 1.1 on x86_64-unknown-linux-gnu, based on PostgreSQL 9.2.4, compiled by g++ (GCC) 5.4.0, 64-bit (1 row)
  • pg_postmaster_start_time() 描述:服务器启动时间。pg_postmaster_start_time返回服务器启动时的timestamp with time zone。 返回值类型:timestamp with time zone 示例: 1 2 3 4 5 SELECT pg_postmaster_start_time(); pg_postmaster_start_time ------------------------------ 2017-08-30 16:02:54.99854+08 (1 row)
  • 条件表达式 在执行SQL语句时,可通过条件表达式筛选出符合条件的数据。 条件表达式主要有以下几种: CASE CASE表达式是条件表达式,类似于其他编程语言中的CASE语句。 CASE表达式的语法图请参考图1。 图1 case::= CASE子句可以用于合法的表达式中。condition是一个返回BOOLEAN数据类型的表达式: 如果结果为真,CASE表达式的结果就是符合该条件所对应的result。 如果结果为假,则以相同方式处理随后的WHEN或ELSE子句。 如果各WHEN condition都不为真,表达式的结果就是在ELSE子句执行的result。如果省略了ELSE子句且没有匹配的条件,结果为NULL。 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 CREATE TABLE tpcds.case_when_t1(CW_COL1 INT) DISTRIBUTE BY HASH (CW_COL1); INSERT INTO tpcds.case_when_t1 VALUES (1), (2), (3); SELECT * FROM tpcds.case_when_t1; cw_col1 --------- 3 1 2 (3 rows) SELECT CW_COL1, CASE WHEN CW_COL1=1 THEN 'one' WHEN CW_COL1=2 THEN 'two' ELSE 'other' END FROM tpcds.case_when_t1; cw_col1 | case ---------+------- 3 | other 1 | one 2 | two (3 rows) DROP TABLE tpcds.case_when_t1; DECODE DECODE的语法图请参见图2。 图2 decode::= 将表达式base_expr与后面的每个compare(n) 进行比较,如果匹配返回相应的value(n)。如果没有发生匹配,则返回default。 示例请参见条件表达式函数。 1 2 3 4 5 SELECT DECODE('A','A',1,'B',2,0); case ------ 1 (1 row) COALESCE COALESCE的语法图请参见图3。 图3 coalesce::= COALESCE返回它的第一个非NULL的参数值。如果参数都为NULL,则返回NULL。它常用于在显示数据时用缺省值替换NULL。和CASE表达式一样,COALESCE只计算用来判断结果的参数,即在第一个非空参数右边的参数不会被计算。 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 CREATE TABLE tpcds.c_tabl(description varchar(10), short_description varchar(10), last_value varchar(10)) DISTRIBUTE BY HASH (last_value); INSERT INTO tpcds.c_tabl VALUES('abc', 'efg', '123'); INSERT INTO tpcds.c_tabl VALUES(NULL, 'efg', '123'); INSERT INTO tpcds.c_tabl VALUES(NULL, NULL, '123'); SELECT description, short_description, last_value, COALESCE(description, short_description, last_value) FROM tpcds.c_tabl ORDER BY 1, 2, 3, 4; description | short_description | last_value | coalesce -------------+-------------------+------------+---------- abc | efg | 123 | abc | efg | 123 | efg | | 123 | 123 (3 rows) DROP TABLE tpcds.c_tabl; 如果description不为NULL,则返回description的值,否则计算下一个参数short_description;如果short_description不为NULL,则返回short_description的值,否则计算下一个参数last_value;如果last_value不为NULL,则返回last_value的值,否则返回(none)。 1 2 3 4 5 SELECT COALESCE(NULL,'Hello World'); coalesce --------------- Hello World (1 row) NULLIF NULLIF的语法图请参见图4。 图4 nullif::= 只有当value1和value2相等时,NULLIF才返回NULL。否则它返回value1。 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 CREATE TABLE tpcds.null_if_t1 ( NI_VALUE1 VARCHAR(10), NI_VALUE2 VARCHAR(10) ) DISTRIBUTE BY HASH (NI_VALUE1); INSERT INTO tpcds.null_if_t1 VALUES('abc', 'abc'); INSERT INTO tpcds.null_if_t1 VALUES('abc', 'efg'); SELECT NI_VALUE1, NI_VALUE2, NULLIF(NI_VALUE1, NI_VALUE2) FROM tpcds.null_if_t1 ORDER BY 1, 2, 3; ni_value1 | ni_value2 | nullif -----------+-----------+-------- abc | abc | abc | efg | abc (2 rows) DROP TABLE tpcds.null_if_t1; 如果value1等于value2则返回NULL,否则返回value1。 1 2 3 4 5 SELECT NULLIF('Hello','Hello World'); nullif -------- Hello (1 row) GREATEST(最大值),LEAST(最小值) GREATEST的语法图请参见图5。 图5 greatest::= 从一个任意数字表达式的列表里选取最大的数值。 1 2 3 4 5 SELECT greatest(9000,155555,2.01); greatest ---------- 155555 (1 row) LEAST的语法图请参见图6。 图6 least::= 从一个任意数字表达式的列表里选取最小的数值。 以上的数字表达式必须都可以转换成一个普通的数据类型,该数据类型将是结果类型。 列表中的NULL值将被忽略。只有所有表达式的结果都是NULL的时候,结果才是NULL。 1 2 3 4 5 SELECT least(9000,2); least ------- 2 (1 row) 示例请参见条件表达式函数。 NVL NVL的语法图请参见图7。 图7 nvl::= 如果value1为NULL则返回value2,如果value1非NULL,则返回value1。 示例: 1 2 3 4 5 SELECT nvl(null,1); nvl ----- 1 (1 row) 1 2 3 4 5 SELECT nvl ('Hello World' ,1); nvl --------------- Hello World (1 row) IF IF的语法图请参见图8。 图8 if::= 当bool_expr为true时,返回expr1,否则返回expr2。 示例请参见条件表达式函数。 IFNULL IFNULL的语法图请参见图9。 图9 ifnull::= 当expr1不为NULL时,返回expr1,否则返回expr2。 示例请参见条件表达式函数。 父主题: 表达式
  • 参数说明 server_name 所修改的server的名字。 new_version 修改后server的新版本名称。 修改server所支持的OPTIONS如下所示: address OBS服务的终端节点(Endpoint)。 HDFS集群的主备节点所在的IP地址以及端口。 对于HDFS server,address必须存在,所以ADD和DROP操作不被允许。 address目前只支持点分十进制格式的IPv4格式,且address字符串中不能出现空格,多组address以逗号作为分隔符。ip和port之间使用“:”来区分。HDFS集群中ip、port组对推荐设置两组,分别对应HDFS NameNode主备节点的address。 当server类型为 DLI 时,address为DLI服务上数据所存储的OBS address。 hdfscfgpath HDFS集群的配置文件。 若HDFS走安全模式时,hdfscfgpath是必选项,否则为可选项。 若设置hdfscfgpath时,path仅能设置一个。 fed 表示dfs_fdw连接的是HDFS为联邦模式。 取值rbf,表示HDFS为联邦rbf方式。 该参数8.1.2及以上版本支持;8.0.0基线版本下,仅8.0.0.10及以上版本支持。 encrypt 是否对数据进行加密,该参数仅支持在type为OBS时设置。默认值为off。 取值范围: on表示对数据进行加密。 off表示不对数据进行加密。 access_key OBS访问协议对应的AK值(OBS云服务界面由用户获取),创建外表时AK值会加密保存到数据库的元数据表中。该参数仅支持type为OBS时设置。 secret_access_key OBS访问协议对应的SK值(OBS云服务界面由用户获取),创建外表时SK值会加密保存到数据库的元数据表中。该参数仅支持type为OBS时设置。 dli_address DLI服务的终端节点,即endpoint。该参数仅支持type为DLI时设置。 dli_access_key DLI访问协议对应的AK值(DLI云服务界面由用户获取),创建外表时AK值会保存到数据库的元数据表中。该参数仅支持type为DLI时设置。 dli_secret_access_key DLI访问协议对应的SK值(DLI云服务界面由用户获取),创建外表时SK值会加密保存到数据库的元数据表中。该参数仅支持type为DLI时设置。 region 此参数表示OBS服务的IP地址或者 域名 信息。该参数仅支持type为OBS时设置。 dbname 用于协同分析、跨集群互联互通,表示将要连接的远端集群的数据库名字。 username 用于协同分析、跨集群互联互通,表示将要连接的远端集群的用户名。 password 用于协同分析、跨集群互联互通,表示将要连接的远端集群的用户名密码。 syncsrv 仅用于跨集群互联互通,表示数据同步过程中使用到的GDS服务,设置方式与GDS外表的location属性相同。该参数仅8.1.2及以上版本支持。 new_owner 修改后server的新拥有者。更改所有者,必须是外部服务器的所有者并且也是新的所有者角色的直接或者间接成员,并且必须对外部服务器的外部数据封装器有USAGE权限。 new_name 修改后server的新名字。 REFRESH OPTIONS 刷新HDFS的配置文件信息,在配置文件有变动时执行,若不执行可能会访问报错。
  • 示例 修改现有名为hdfs_server的address: 1 ALTER SERVER hdfs_server OPTIONS ( SET address '10.10.0.110:25000,10.10.0.120:25000'); 修改现有名为hdfs_server的hdfscfgpath: 1 ALTER SERVER hdfs_server OPTIONS ( SET hdfscfgpath '/opt/bigdata/hadoop');
  • 语法格式 修改外部服务的参数。 1 2 ALTER SERVER server_name [ VERSION 'new_version' ] [ OPTIONS ( {[ ADD | SET | DROP ] option ['value']} [, ... ] ) ]; 在OPTIONS选项里,ADD、SET和DROP指定要执行的操作,未指定时默认为ADD操作。option和value为对应操作的参数。 对于HDFS Server目前只支持SET操作,ADD/DROP操作现有版本不支持。语法中SET和DROP操作语法依然保留,以便后续扩展使用。 修改外部服务的所有者。 1 2 ALTER SERVER server_name OWNER TO new_owner; 修改外部服务的名字。 1 2 ALTER SERVER server_name RENAME TO new_name; 刷新HDFS配置文件。仅8.0.0.10及以上版本支持(8.1.0除外)。 1 ALTER SERVER server_name REFRESH OPTIONS;
  • 注意事项 由于TZ词典需要识别短语,所以在处理过程中必须保存当前状态并与解析器进行交互,以决定是否处理下一个token或是结束当前识别。此外,TZ词典配置时需谨慎,如果设置TZ词典仅处理asciiword类型的token,则类似one 7的分类词典定义将不会生效,因为uint类型的token不会传给TZ词典处理。 在索引期间要用到分类词典,因此分类词典参数中的任何变化都要求重新索引。对于其他大多数类型的词典来说,类似添加或删除停用词这种修改并不需要强制重新索引。
  • 操作步骤 创建一个名为thesaurus_astro的TZ词典。 以一个简单的天文学词典thesaurus_astro为例,其中定义了两组天文短语及其同义词如下: 1 2 supernovae stars : sn crab nebulae : crab 执行如下语句创建TZ词典: 1 2 3 4 5 6 CREATE TEXT SEARCH DICTIONARY thesaurus_astro ( TEMPLATE = thesaurus, DictFile = thesaurus_astro, Dictionary = pg_catalog.english_stem, FILEPATH = 'obs://bucket_name/path accesskey=ak secretkey=sk region=rg' ); 其中,词典定义文件全名为thesaurus_astro.ths,所在目录为 "obs://bucket_name/path accesskey=ak secretkey=sk region=rg"。子词典pg_catalog.english_stem是预定义的Snowball类型的英语词干词典,用于规范化输入词,子词典自身相关配置(例如停用词等)不在此处显示。关于创建词典的语法和更多参数,请参见CREATE TEXT SEARCH DICTIONARY。 创建词典后,将其绑定到对应文本搜索配置中需要处理的token类型上: 1 2 3 ALTER TEXT SEARCH CONFIGURATION english ALTER MAPPING FOR asciiword, asciihword, hword_asciipart WITH thesaurus_astro, english_stem; 使用TZ词典。 测试TZ词典。 ts_lexize函数对于测试TZ词典作用不大,因为该函数是按照单个token处理输入。可以使用plainto_tsquery、to_tsvector、to_tsquery函数测试TZ词典,这些函数能够将输入分解成多个token(to_tsquery函数需要将输入加上引号)。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 SELECT plainto_tsquery('english','supernova star'); plainto_tsquery ----------------- 'sn' (1 row) SELECT to_tsvector('english','supernova star'); to_tsvector ------------- 'sn':1 (1 row) SELECT to_tsquery('english','''supernova star'''); to_tsquery ------------ 'sn' (1 row) 其中,supernova star匹配了词典thesaurus_astro定义中的supernovae stars,这是因为在thesaurus_astro词典定义中指定了Snowball类型的子词典english_stem,该词典移除了e和s。 如果同时需要索引原始短语,只要将其同时放置在词典定义文件中对应定义的右侧即可,如下: 1 2 3 4 5 6 7 8 9 10 11 supernovae stars : sn supernovae stars ALTER TEXT SEARCH DICTIONARY thesaurus_astro ( DictFile = thesaurus_astro, FILEPATH = 'file:///home/dicts/'); SELECT plainto_tsquery('english','supernova star'); plainto_tsquery ----------------------------- 'sn' & 'supernova' & 'star' (1 row)
  • log(double precision or numeric) 描述:以10为底的对数。 ORA和TD兼容模式下,表现为以10为底的对数。 MySQL兼容模式下,表现为自然对数。 返回值类型:与输入相同。 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 -- ORA兼容模式 SELECT log(100.0); log -------------------- 2.0000000000000000 (1 row) -- TD兼容模式 SELECT log(100.0); log -------------------- 2.0000000000000000 (1 row) -- MySQL兼容模式 SELECT log(100.0); log -------------------- 4.6051701859880914 (1 row)
  • width_bucket(operand numeric, b1 numeric, b2 numeric, count int) 描述:设定分组范围的最小值、最大值和分组个数,构建指定个数的大小相同的分组,返回指定字段值落入的分组编号。b1为分组范围的最小值,b2为分组范围的最大值,count为分组的个数。 返回值类型:integer 示例: 1 2 3 4 5 SELECT width_bucket(5.35, 0.024, 10.06, 5); width_bucket -------------- 3 (1 row)
  • width_bucket(operand double precision, b1 double precision, b2 double precision, count int) 描述:设定分组范围的最小值、最大值和分组个数,构建指定个数的大小相同的分组,返回指定字段值落入的分组编号。b1为分组范围的最小值,b2为分组范围的最大值,count为分组的个数。 返回值类型:integer 示例: 1 2 3 4 5 SELECT width_bucket(5.35, 0.024, 10.06, 5); width_bucket -------------- 3 (1 row)
  • round(double precision or numeric) 描述:离输入参数最近的整数。 返回值类型:与输入相同。 示例: 1 2 3 4 5 6 7 8 9 10 11 SELECT round(42.4); round ------- 42 (1 row) SELECT round(42.6); round ------- 43 (1 row) 当调用round函数时,数值类型将舍入零,而(在大多数计算机上) 实数和双精度型,以最接近的偶数为结果。
  • CodeArts PerfTest 云性能测试服务CodeArts PerfTest(原CPTS,简称PerfTest)是一项为基于HTTP/HTTPS/TCP/UDP/HLS/RTMP/WEBSOCKET/HTTP-FLV等协议 资源编排 构建的提供性能测试的云应用服务,具备强大的分布式压测能力。通过CodeArts PerfTest,可以将性能压测本身的工作持续简化,将更多的精力回归到关注业务和性能问题本身,同时降低成本、提升稳定性、优化用户体验,帮助企业提升商业价值。 解决方案工作台集成了PerfTest性能测试框架为用户提供高并发性能测试能力。关于CodeArts PerfTest的详细介绍,请参考CodeArts PerfTest产品介绍。
  • VSS 漏洞扫描服务 (Vulnerability Scan Service,简称VSS)是针对网站、主机、移动应用、软件包/固件进行 漏洞扫描 的一种安全检测服务,目前提供通用漏洞检测、漏洞生命周期管理、自定义扫描多项服务。扫描成功后,提供扫描报告详情,用于查看漏洞明细、修复建议等信息。 解决方案工作台集成了VSS,为用户提供安全自动化测试,含主机扫描、网站扫描、二进制扫描。关于VSS的详细介绍,请参考VSS产品介绍。
  • CodeArts TestPlan CodeArts TestPlan,是一款自主研发的一站式测试管理平台,沉淀了华为多年高质量的软件测试工程方法与实践,覆盖测试计划、测试设计、测试用例、测试执行和测试评估等全流程,旨在帮助企业协同、高效、可信的开展测试活动,保障产品高质量上市。 解决方案工作台集成了CodeArts TestPlan的自动化测试框架为用户提供自动化测试能力。关于CodeArts TestPlan的详细介绍,请参考CodeArts TestPlan产品概述。
  • 入门实践 当您参考购买并配置 DataArts Studio 章节完成 注册华为账号 、购买DataArts Studio实例(DataArts Studio企业版)、创建工作空间等一系列操作后,可以根据自身的业务需求使用DataArts Studio提供的一系列常用实践。 表1 常用最佳实践 实践 描述 数据迁移 数据迁移进阶实践 本最佳实践提供了数据集成 CDM 组件的高阶使用技巧,例如如何实现增量迁移、时间宏变量表达式写法等。 数据开发 数据开发进阶实践 本最佳实践提供了数据开发DLF组件的高阶使用技巧,例如如何使用IF条件判断、For Each节点使用等。 DataArts Studio+X 跨工作空间的DataArts Studio数据搬迁 实例内的工作空间包含了完整的功能,工作空间的划分通常按照分子公司(集团、子公司、部门等)、业务领域(采购、生产、销售等)或者实施环境(开发、测试、生产等),没有特定的划分要求。 随着业务的不断发展,您可能进行了更细致的工作空间划分。这种情况下,您可以参考本文档,将原有工作空间的数据(包含管理中心数据连接、数据集成连接和作业、数据架构表、数据开发脚本、数据开发作业、数据质量作业等),搬迁到新建的工作空间中。 如何授权其他用户使用DataArts Studio 某数据运营工程师负责本公司的数据质量监控,仅需要数据质量组件的权限。管理员如果直接赋予该数据运营工程师“开发者”的预置角色,则会出现其他组件权限过大的风险。 为了解决此问题,项目管理员可以创建一个基于“开发者”预置角色的自定义角色“Developer_Test”,在“开发者”角色权限的基础上为其去除其他组件的增删改及操作权限,并赋予该数据运营工程师此角色,既能满足实际业务使用,也避免了权限过大的风险。 如何查看表行数和库大小 在 数据治理 流程中,我们常常需要统计数据表行数或数据库的大小。其中,数据表的行数可以通过SQL命令或数据质量作业获取;数据库大小可以直接在数据目录组件中查看,详情可参考本实践。 通过数据质量对比数据迁移前后结果 数据对账对数据迁移流程中的数据一致性至关重要,数据对账的能力是检验数据迁移或数据加工前后是否一致的关键指标。本文以DWS数据迁移到 MRS Hive分区表为例,介绍如何通过DataArts Studio中的数据质量模块实现数据迁移前后的一致性校验。 通过数据开发使用参数传递灵活调度CDM作业 如果CDM作业接收来自数据开发作业配置的参数,则在数据开发模块可以使用诸如EL表达式传递动态参数来调度CDM作业。 通过数据开发实现数据增量迁移 DataArts Studio服务的DLF组件提供了一站式的大数据协同开发平台,借助DLF的在线脚本编辑、周期调度CDM的迁移作业,也可以实现增量数据迁移。本文以DWS导入到OBS为例,介绍DLF配合CDM实现增量迁移的流程 通过CDM节点批量创建分表迁移作业 业务系统中,数据源往往会采用分表的形式,以减少单表大小,支持复杂的业务应用场景。在这种情况下,通过CDM进行数据集成时,需要针对每张表创建一个数据迁移作业。您可以参考本教程,通过数据开发模块的For Each节点和CDM节点,配合作业参数,实现批量创建分表迁移作业。 基于MRS Hive表构建图数据并自动导入GES 在DataArts Studio中,您可以将原始数据表按照GES数据导入要求处理为标准点数据集和边数据集,并通过自动生成元数据功能,将图数据(点数据集、边数据集和元数据)定期导入到GES服务中,在GES中对最新数据进行可视化图形分析。 案例 案例:贸易数据统计与分析 使用 云数据迁移 (Cloud Data Migration,简称CDM)将本地贸易统计数据导入到OBS,再使用 数据湖探索 (Data Lake Insight,简称DLI)进行贸易统计分析,帮助H咨询公司以极简、极低成本构建其大数据分析平台,使得该公司更好地聚焦业务,持续创新。 案例:车联网大数据业务上云 为搭建H公司车联网业务集团级的云管理平台,统一管理、部署硬件资源和通用类软件资源,实现IT应用全面服务化、云化,CDM(Cloud Data Migration,简称CDM)助力H公司做到代码“0”改动、数据“0”丢失迁移上云。 案例:搭建实时报警平台 在本实践用户可以了解到如何搭建一个简单的实时报警平台,该平台将应用多个云服务,结合数据开发模块的作业编辑和作业调度功能来实现。
  • 业务调研 在开始使用DataArts Studio前,您可以通过业务调研,明确业务过程中所需的DataArts Studio组件功能,并分析后续的业务负载情况。 表1 业务调研表 序号 收集项 需收集信息描述 调研结果 填写说明 1 工作空间 企业大数据相关部门的组织和关系调查 本示例不涉及 用于合理规划工作空间,降低空间相互依赖的复杂度 各组织部门之间对数据、资源的访问控制 本示例不涉及 涉及到用户的权限和资源权限控制 2 数据集成 有哪些数据源要迁移,数据源版本 CS V格式的数据,存储于OBS桶 - 每种数据源的数据全量数据规模 2,114 字节 - 每种数据源每天的增量数据规模 本示例不涉及 - 迁移目的端数据源种类以及版本 迁移到MRS Hive3.1 - 数据的迁移周期:天、小时、分钟还是实时迁移 天 - 数据源与目的数据源之间的网络带宽 100MB - 数据源和集成工具之间的网络连通性描述 本示例不涉及 - 数据库类迁移,调研表的个数,最大表的规模 本示例不涉及,本示例需要从OBS文件迁移到数据库 了解数据库迁移的作业规模,了解最大表的迁移时间是否可接受 文件类迁移,文件的个数,有没有单文件超过TB级文件 本示例的CSV文件仅1个,未超过TB级 - 3 数据开发 是否需要作业编排调度? 是 - 编排调度会涉及哪些服务,例如MRS、DWS、CDM等? 本示例涉及DataArts Studio数据集成和数据质量、MRS Hive 了解作业的场景,用于进一步调查平台能力与客户场景匹配度 作业数量规模是多少? 本示例作业数量在20个以内 大致了解作业的规模,通常用算子数来描述,可通过表的数量估计 每日作业调度次数是多少? 没有特殊要求,次数不限 根据DataArts Studio各销售版本的调度限额,确定DataArts Studio的版本 数据开发人员的数量是多少? 1个 - 4 数据架构 数据现状,有哪些数据源,多少张表? 本示例的CSV文件仅1个 原始端分析, 了解数据来源与整体概况 业务需求,有哪些业务,有什么需求, 想要获得什么价值? 数据标准化、模型标准化,并灵活统计收入情况 目的端分析,了解数据治理以及数字化是为了什么 数据调研,数据概况,数据标准程度,行业标准概况? 本示例不涉及 过程端分析,了解数据治理过程需要做到的标准与质量的遵从 5 数据质量 有哪些需求,需要获得什么价值? 监控数据质量 支持更多数据源和更多规则的监控 作业数量规模是多少? 本示例仅1个 用户可手动创建几十个作业,也可以在数据架构中配置自动生成数据质量作业。如果调用数据质量监控的创建接口,则可创建超过100个质量作业 用户的使用场景? 对DWI层数据进行标准化清洗 一般在数据加工前后,对数据的质量通过六大维度的规则进行质量监控,当发现不符合规则的异常数据时向用户发送报警 6 数据目录 需要支持哪些数据源? MRS Hive - 数据资产的数量规模有多大? 本示例表在百级以内 最大可支持100w数据表的管理 元数据采集的调度频率是多少? 本示例不涉及 支持按照小时、天、周为周期运行采集任务 元数据采集的重要指标包括什么? 本示例不涉及 表名称、字段名称、责任人、描述信息、创建时间等 标签的使用场景是什么? 本示例不涉及 标签是相关性很强的关键字,帮助用户对资产进行分类和描述,方便用户进行查询 7 数据安全 需要对哪些数据源进行访问管理? 本示例不涉及 支持DLI、DWS和Hive等数据源 需要支持静态脱敏? 本示例不涉及 支持对DLI、DWS和Hive数据源数据进行静态脱敏 需要支持动态脱敏? 本示例不涉及 支持对DWS和Hive数据源数据进行动态脱敏 需要支持数据水印? 本示例不涉及 支持对Hive数据源数据进行数据水印嵌入 需要支持文件水印? 本示例不涉及 支持对结构化数据文件注入暗水印,支持对非结构化数据文件注入明水印 需要支持动态水印? 本示例不涉及 支持对Hive和Spark数据源数据配置动态水印策略 8 数据服务 需要开放哪些数据源数据? 本示例不涉及 支持DLI、DWS和MySQL等数据源 每日数据调用量是多少? 本示例不涉及 若取数逻辑复杂造成数据库响应时间较长,调用量会下降 每秒数据调用量峰值是多少? 本示例不涉及 根据不同规格和具体的取数逻辑有所增减 单次数据调用平均时延是多少? 本示例不涉及 数据库响应耗时与用户取数逻辑相关 是否需要数据访问记录? 本示例不涉及 - 数据访问方式,内网还是外网? 本示例不涉及 - 数据服务开发人员数量是多少? 本示例不涉及 -
  • 需求分析 通过需求分析,可以提炼出数据治理流程的实现框架,支撑具体数据治理实施流程的设计。 在本示例场景下,当前面临的数据问题如下: 未建立标准化模型 数据字段命名不标准、不规范 数据内容不标准,数据质量不可控 统计口径不一致,困扰业务决策 通过DataArts Studio实施数据治理,期望能够达到以下目标: 数据标准化、模型标准化 统一统计口径,提供高质量数据报告 数据质量监控告警 统计每天收入 统计某月收入 统计不同支付类型收入占比
共100000条