华为云用户手册

  • 使用示例 修改表增加属性值: ALTER TABLE prod.db.sample SET TBLPROPERTIES ( 'comment' = 'A table comment.' ); 修改表增加表字段: ALTER TABLE prod.db.sample ADD COLUMNS ( new_column string comment 'new_column docs' ); 修改表重命名表字段: ALTER TABLE prod.db.sample RENAME COLUMN data TO payload; 修改表字段类型: ALTER TABLE prod.db.sample ALTER COLUMN measurement TYPE double; 修改表删除表字段: ALTER TABLE prod.db.sample DROP COLUMN id;
  • CREATE/DROP/SHOW VIRTUAL SCHEMA(S) CREATE HetuEngine中的CREATE语句用来创建SCHEMA映射,通过映射信息对外开放本域数据源。 语法如下: CREATE VIRTUAL SCHEMA [ IF NOT EXISTS ] [ ctlg_dest.]schema_name WITH ( [catalog = ctlg_name,] schema = schm_name, [property_name = expression, ...] ) 创建一个virtual schema,需要在WITH中提供具体映射的schema信息。 ctlg_dest为在哪个数据源创建virtual schema,参数可选,如果不指定则取当前Session中的catalog,如果当前Session中也未指定catalog则会创建失败。 WITH必选,schema参数必选,catalog参数可选(如果不指定则取当前Session中的catalog)。 样例语句: CREATE VIRTUAL SCHEMA hive_default WITH (catalog = 'hive', schema = 'default'); DROP HetuEngine中的DROP语句用来删除SCHEMA映射。 语法如下: DROP VIRTUAL SCHEMA [ IF EXISTS ] schema_name schema_name也可以替换为全限定名(catalogName.virtualSchema)。 样例语句: DROP VIRTUAL SCHEMA hive_default; SHOW HetuEngine中的SHOW语句用来查询所有SCHEMA映射。 语法如下: SHOW VIRTUAL SCHEMAS [ FROM catalog ] [ LIKE pattern ] 样例语句: SHOW VIRTUAL SCHEMAS;
  • 回答 场景一:(import场景)使用sqoop import命令抽取开源Postgre到 MRS HDFS或Hive等。 问题现象: 使用sqoop命令查询postgre表可以,但是执行sqoop import命令倒数时报错: The authentication type 5 is not supported. Check that you have configured the pg_hba.conf file to include the client's IP address or subnet, and that it The authentication type 12 is not supported. Check that you have configured the pg_hba.conf file to include the client's IP address or subnet, and that it 问题根因: 报错中type为5时:在执行sqoop import命令时,会启动MapReduce任务,由于MRS Hadoop安装目录(${BIGDATA_HOME}/ FusionInsight _HD_*/1_*_NodeManager/install/hadoop/share/hadoop/common/lib)下自带了postgre驱动包gsjdbc4-*.jar,与开源Postgre服务不兼容导致报错。 报错中type为12时:数据库的pg_hba.conf文件配置有误。 解决方案: 报错中type为5时:在每台MRS NodeManager实例所在节点上移动驱动包“gsjdbc4-*.jar”到“tmp”目录下。 mv ${BIGDATA_HOME}/FusionInsight_HD_*/1_*_NodeManager/install/hadoop/share/hadoop/common/lib/gsjdbc4-*.jar /tmp 报错中type为12时:调整数据库的pg_hba.conf文件,将address改成Sqoop所在节点的IP。 场景二:(export场景)使用sqoop export命令抽取开源Postgre到MRS HDFS或Hive等。 问题现象: 使用sqoop命令查询postgre表可以,但是执行sqoop export命令倒数时报错: The authentication type 5 is not supported. Check that you have configured the pg_hba.conf file to include the client's IP address or subnet, and that it 问题根因: 在执行sqoop export命令时,会启动MapReduce任务,由于MRS Hadoop安装目录(${BIGDATA_HOME}/FusionInsight_HD_*/1_*_NodeManager/install/hadoop/share/hadoop/common/lib)下自带了postgre驱动包“gsjdbc4-*.jar”,与开源Postgre服务不兼容导致报错。 解决方案: 在每台MRS NodeManager实例所在节点上移动驱动包“gsjdbc4-*.jar”到“tmp”目录下。 mv ${BIGDATA_HOME}/FusionInsight_HD_*/1_*_NodeManager/install/hadoop/share/hadoop/common/lib/gsjdbc4-*.jar /tmp 将“/opt/client/Hive/Beeline/lib/gsjdbc4-*.jar”删除 。
  • 使用方法 在创建的Kafka Connector Source流表中,设置 'format' = 'drs-json'。 SQL示例如下: CREATE TABLE KafkaSource ( `user_id` VARCHAR, `user_name` VARCHAR, `age` INT) WITH ( 'connector' = 'kafka', 'topic' = 'test_source', 'properties.bootstrap.servers' = 'Kafka的Broker实例业务IP:Kafka端口号', 'properties.group.id' = 'testGroup', 'scan.startup.mode' = 'latest-offset', 'format' = 'drs-json', 'properties.sasl.kerberos.service.name' = 'kafka', 'properties.security.protocol' = 'SASL_PLAINTEXT', 'properties.kerberos.domain.name' = 'hadoop.系统 域名 ');CREATE TABLE printSink( `user_id` VARCHAR, `user_name` VARCHAR, `age` INT) WITH ( 'connector' = 'print');Insert into printSinkselect *from KafkaSource;
  • 解决方法 参考修改集群服务配置参数,进入HDFS“全部配置”页面,搜索并查看“dfs.namenode.name.dir”参数值获取NameNode数据目录,例如获取到数据目录为“/srv/BigData/namenode/current”。 在HDFS服务页面选择“实例”页签,查看并记录主备NameNode节点的业务IP地址。 以root用户登录发生故障的备NameNode节点,将1获取的数据目录中的fsimage文件进行备份。例如备份到“/srv/BigData/namenode/current.bak”路径下。 mv /srv/BigData/namenode/current/ /srv/BigData/namenode/current.bak 以root用户登录主NameNode节点,执行如下命令复制fsimage文件到备NameNode节点。 scp -rp /srv/BigData/namenode/current/ {备NameNode节点IP}:/srv/BigData/namenode/ chown omm:wheel /srv/BigData/namenode/current -R 重启备NameNode,观察是否重启成功。如果失败请联系技术支持进行处理。
  • 操作场景 在FE的自定义配置项中添加“enable_col_auth”参数开启列授权后,Doris支持对列级别权限的管理。 该特性仅MRS 3.3.1及之后版本支持。 表的列级别的授权仅支持Select_priv权限。 必须使用具有Grant_priv权限的用户进行列权限的管理操作。 被授予了列级别Select_priv权限的用户,如果执行select *查询表数据,结果只返回具有Select_priv权限的列。 被授予了列级别Select_priv权限的用户,如果执行desc tbl查询表的详细信息,结果只返回具有Select_priv权限的列。 支持视图和物化视图的列级别授权。
  • 使用场景样例 union写入模拟多表join(flink可以使用该功能完成流流join,实现数据拉宽)。 下列代码以SparkSQL示例, 通过Hudi将t1和t2 join拉宽操作转成union + insert,避免join的开销: create table if not exists t1(id INT,col1 INT,col2 INT) using parquet;insert into t1 values(1, 1, 1);create table if not exists t2(id INT,col3 INT,col4 INT) using parquet;insert into t2 values(1, 2, 2); create table if not exists joinTable(id INT,col1 INT,col2 INT,group_1 INT,col3 INT,col4 INT,group_2 INT) using huditblproperties (primaryKey = 'id',type = 'mor','hoodie.index.type' = 'BUCKET',hoodie.bucket.index.num.buckets=1,'hoodie.merge-engine' = 'partial-update','fields.group_1.sequence-group' = 'col1,col2','fields.group_2.sequence-group' = 'col3,col4');--- union + insert 模拟join操作insert into joinTableselect id, col1, col2, 1, null, null, null from t1 --- 取任意非空值充当col1,col2的precombine值union allselect id, null, null, null, col3, col4, 1 from t2; --- 取任意非空值充当col3,col4的precombine值--- 执行查询select id,col1,col2,col3,col4 from joinTable;-- 结果-- 1,1,1,2,2
  • 使用约束 由于Hudi OCC特性的限制,当前不建议多流并发写Hudi表。 如果需要多流同时写请将所有流union后写入Hudi。 支持添加新列并作为新分组,但是新列添加后,需要同时修改表属性的tblproperties和serdeproperties属性,将新列添加到新的组里面。命令示例如下: 添加新列col5,col6,group_3: alter table testTable add columns (col5 int, col6 int, group_3 int); 添加新的分组信息到tblproperties中: alter table testTable set tblproperties('fields.group_3.sequence-group' = 'col5,col6'); 添加新的分组信息到serdeproperties中: alter table testTable set serdeproperties('fields.group_3.sequence-group' = 'col5,col6'); sequence组包含的列不能有重叠。sequence-1组和sequence-2都包含col1这一列,这种是不支持的。 group列的数据类型,仅支持int、bigint、float、double、date和timestamp。 对于已存在表,如果要开启部分列更新功能;需要严格执行如下步骤,否则会出现数据不符合预期的情况。 停止待修改表的数据写入。 MOR表需要执行全量compaction: 强制开启compaction set hoodie.compaction.inline.max.delta.commits=1; set hoodie.compact.inline=true; 执行全量compaction run compaction on my_table; reset hoodie.compaction.inline.max.delta.commits; 添加新的分组信息到tblproperties中: alter table testTable set tblproperties('fields.group_1.sequence-group' = 'col1,col2'); 添加新的分组信息到serdeproperties中: alter table testTable set serdeproperties('fields.group_1.sequence-group' = 'col1,col2');
  • 场景说明 当前开源社区提供了PartialUpdateAvroPayload机制实现部分列更新,但该功能在多流更新,每条流更新不同列场景下会出现数据相互覆盖的问题。 通过引入sequence组的概念,Hudi可以很好的解决该问题,实现真正的部分更新。 按建表时按需求,将表中的列切分成不同的sequence组。每一个sequence组包含的列是否更新,由该sequence组的precombine字段决定,不同sequence组相互不影响。
  • ROW ROW的字段可是任意所支持的数据类型,也支持各字段数据类型不同的混合方式。 --创建ROW表create table row_tb (id int,col1 row(a int,b varchar));--插入ROW类型数据insert into row_tb values (1,ROW(1,'HetuEngine'));--查询数据select * from row_tb; id | col1 ----|-------------- 1 | {a=1, b=HetuEngine} --字段是支持命名的,默认情况下,Row的字段是未命名的select row(1,2e0),CAST(ROW(1, 2e0) AS ROW(x BIGINT, y DOUBLE)); _col0 | _col1 ------------------------|-------------- {1, 2.0} | {x=1, y=2.0} (1 row) --命名后的字段,可以通过域操作符"."访问select col1.b from row_tb; -- HetuEngine--命名和未命名的字段,都可以通过位置索引来访问,位置索引从1开始,且必须是一个常量select col1[1] from row_tb; -- 1
  • IPADDRESS IP地址,可以表征IPv4或者IPv6地址。但在系统内,该类型是一个统一的IPv6地址。 对于IPv4的支持,是通过将IPv4映射到IPv6的取值范围(RFC 4291#section-2.5.5.2)来实现的。当创建一个IPv4时,会被映射到IPv6。当格式化时,如果数据是IPv4又会被重新映射为IPv4。 其他的地址则会按照RFC 5952所定义的规范格式来进行格式化。 示例: select IPADDRESS '10.0.0.1', IPADDRESS '2001:db8::1'; _col0 | _col1----------|------------- 10.0.0.1 | 2001:db8::1(1 row)
  • UUID 标准UUID (Universally Unique IDentifier),也被称为GUID (Globally Unique IDentifier)。 遵从RFC 4122标准所定义的格式。 示例: select UUID '12151fd2-7586-11e9-8f9e-2a86e4085a59'; _col0-------------------------------------- 12151fd2-7586-11e9-8f9e-2a86e4085a59(1 row)
  • HYPER LOG LOG 基数统计。 用HyperLogLog来近似计算唯一数的计数值,其代价要远小于用count来计算。 参见HyperLogLog函数函数。 HyperLogLog A HyperLogLog sketch可以用来高效的计算distinct()的近似值。 它以一个稀疏的表征开始,然后变成一个密集的表征,此时效率将变得更高。 P4HyperLogLog 类似于A HyperLogLog sketch,但是它以一个密集的表征开始。
  • 整数类型 表1 整数类型 名称 描述 存储空间 取值范围 字面量 TINYINT 微整数 8位 -128~127 TINYINT SMALLINT 小整数 16位 -32,768 ~ +32,767 SMALLINT INTEGER 整数 32位 -2,147,483,648 ~ +2,147,483,647 INT BIGINT 大整数 64位 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 BIGINT 示例: --创建具有TINYINT类型数据的表。 CREATE TABLE int_type_t1 (IT_COL1 TINYINT) ; --插入TINYINT类型数据 insert into int_type_t1 values (TINYINT'10'); --查看数据。 SELECT * FROM int_type_t1; it_col1 --------- 10 (1 row) --删除表。 DROP TABLE int_type_t1;
  • 固定精度型 名称 描述 存储空间 取值范围 字面量 DECIMAL 固定精度的十进制数。精度最高支持到38位,但精度小于18位能保障性能最好。 Decimal有两个输入参数: precision:总位数,默认38 scale:小数部分的位数,默认0 说明: 如果小数位为零,即十进制(38,0),则支持最高19位精度。 64位 DECIMAL NUMERIC 同DECIMAL 128位 NUMERIC 表2 字面量示例 字面量示例 数据类型 DECIMAL '0' DECIMAL(1) DECIMAL '12345' DECIMAL(5) DECIMAL '0000012345.1234500000' DECIMAL(20, 10) --创建具有DECIMAL类型数据的表CREATE TABLE decimal_t1 (dec_col1 DECIMAL(10,3)) ; --插入具有DECIMAL类型数据 insert into decimal_t1 values (DECIMAL '5.325'); --查看数据SELECT * FROM decimal_t1; dec_col1 --------- 5.325 (1 row) --反例:小数位数超出定义长度,sql执行失败insert into decimal_t1 values (DECIMAL '5.3253');Query 20201126_034601_00053_tq98i@default@HetuEngine failed: Insert query has mismatched column types: Table: [decimal(10,3)], Query: [decimal(5,4)]--删除表DROP TABLE decimal_t1; --创建NUMERIC 类型表CREATE TABLE tb_numberic_hetu(col1 NUMERIC(9,7));CREATE TABLE--插入数据INSERT INTO tb_numberic_hetu values(9.12);INSERT: 1 row--查看数据SELECT * FROM tb_numberic_hetu;col1 ------------ 9.1200000 (1 row)
  • 浮点型 名称 描述 存储空间 取值范围 字面量 REAL 实数 32位 1.40129846432481707e-45 ~3.40282346638528860e+38,正或负 REAL DOUBLE 双精度浮点数,15到17个有效位,具体取决于使用场景,有效位数并不取决于小数点位置 64位 4.94065645841246544e-324 ~1.79769313486231570e+308,正或负 DOUBLE FLOAT 单精度浮点数,6到9个有效位,具体取决于使用场景,有效位数并不取决于小数点位置 32位 1.40129846432481707e-45 ~3.40282346638528860e+38,正或负 FLOAT 用法说明: 分布式查询使用高性能硬件指令进行单精度或者双精度运算时,由于每次执行的顺序不一样,在调用聚合函数,比如SUM(),AVG(),特别是当数据规模非常大时,达到数千万甚至数十亿,其运算结果可能会略有不同。这种情况下,建议使用DECIMAL数据类型来运算。 可以使用别名来指定数据类型。 示例: --创建具有float类型数据的表CREATE TABLE float_t1 (float_col1 FLOAT) ;--插入具有float类型数据insert into float_t1 values (float '3.50282346638528862e+38');--查看数据SELECT * FROM float_t1;float_col1------------Infinity(1 row)--删除表DROP TABLE float_t1; 当小数部分为0时,可以通过cast()转为对应范围的整数处理,小数部分会四舍五入。 示例: select CAST(1000.0001 as INT);_col0-------1000(1 row)select CAST(122.5001 as TINYINT);_col0-------123(1 row) 使用指数表达式时,可以将字符串转为对应类型。 示例: select CAST(152e-3 as double);_col0-------0.152(1 row)
  • 布尔类型 “真”值的有效文本值是:TRUE、't'、'true'、'1'。 “假”值的有效文本值是:FALSE、'f'、'false'、'0'。 使用TRUE和FALSE是比较规范的用法(也是SQL兼容的用法)。 示例: select BOOLEAN '0'; _col0 ------- false (1 row) select BOOLEAN 'TRUE'; _col0 ------- true (1 row) select BOOLEAN 't'; _col0 ------- true (1 row)
  • 字符类型 名称 描述 VARCHAR(n) 变长字符串,n指字节长度。 CHAR(n) 定长字符串,不足补空格。n是指字节长度,如不带精度n,默认为1。 VARBINARY 变长二进制数据。需要带上前缀X,如:X'65683F',暂不支持指定长度的二进制字符串。 JSON 取值可以是a JSON object、a JSON array、a JSON number、a JSON string、true、false or null。 STRING 兼容impala的String,底层是varchar。 BINARY 兼容hive的Binary,底层实现为varbinary。 SQL表达式中,支持简单的字符表达式,也支持Unicode方式,一个Unicode字符串是以U&为固定前缀,以4位数值表示的Unicode前需要加转义符。 -- 字符表达式 select 'hello,winter!'; _col0 ------------------ hello,winter! (1 row) -- Unicode 表达式 select U&'Hello winter \2603 !'; _col0 ------------------ Hello winter ☃ ! (1 row) -- 自定义转义符 select U&'Hello winter #2603 !' UESCAPE '#'; _col0 ------------------ Hello winter ☃ ! (1 row) VARBINARY与BINARY。 -- 创建VARBINARY类型或BINARY类型的表 create table binary_tb(col1 BINARY);-- 插入数据 INSERT INTO binary_tb values (X'63683F');--查询数据 select * from binary_tb ; -- 63 68 3f 在做CHAR数值比较的时候,在对两个仅尾部空格数不同的CHAR进行比较时,会认为它们是相等的。 SELECT CAST('FO' AS CHAR(4)) = CAST('FO ' AS CHAR(5)); _col0 ------- true (1 row)
  • 时间和日期类型 时间和日期类型目前精确到毫秒。 表3 时间和日期类型 名称 描述 存储空间 DATE 日期和时间。仅支持ISO 8601格式:'2020-01-01' 32位 TIME 不带时区的时间(时、分、秒、毫秒) 例如:TIME '01:02:03.456' 64位 TIME WITH TIMEZONE 带时区的时间(时、分、秒、毫秒),时区用UTC值表示 例如:TIME '01:02:03.456 -08:00' 96位 TIMESTAMP 时间戳 64位 TIMESTAMP WITH TIMEZONE 带时区的时间戳 64位 INTERVAL YEAR TO MONTH 时间间隔字面量,年,月,格式: SY-M S:可选符号(+/-) Y:年数 M:月数 128位 INTERVAL DAY TO SECOND 时间间隔字面量,日,小时,分钟, 秒,精确到毫秒,格式:SD H:M:S.nnn S:可选符号(+/-) D:天数 M:分钟数 S:秒数 nnn:毫秒数 128位 示例: -- 查询日期SELECT DATE '2020-07-08'; _col0 ------------ 2020-07-08 (1 row)-- 查询时间SELECT TIME '23:10:15'; _col0 -------------- 23:10:15 (1 row)SELECT TIME '01:02:03.456 -08:00'; _col0 -------------- 01:02:03.456-08:00 (1 row)-- 时间间隔用法 SELECT TIMESTAMP '2015-10-18 23:00:15' + INTERVAL '3 12:15:4.111' DAY TO SECOND; _col0 ------------------------- 2015-10-22 11:15:19.111 (1 row)SELECT TIMESTAMP '2015-10-18 23:00:15' + INTERVAL '3-1' YEAR TO MONTH; _col0 ------------------------- 2018-11-18 23:00:15 (1 row)select INTERVAL '3' YEAR + INTERVAL '2' MONTH ; _col0 ------- 3-2 (1 row)select INTERVAL '1' DAY+INTERVAL '2' HOUR +INTERVAL '3' MINUTE +INTERVAL '4' SECOND ; _col0 ---------------- 1 02:03:04.000 (1 row)
  • 操作步骤 假设存在如下一张表: user_data(user_group int, user_name string, update_time timestamp); 其中user_group是分区列,需要根据已有数据,按更新时间进行排序,刷新用户组信息。操作步骤如下: 在Hive Beeline命令行执行以下命令开启Hive动态分区: set hive.exec.dynamic.partition=true; set hive.exec.dynamic.partition.mode=nonstrict; 执行以下命令创建一个临时表,用于存储去重后的数据: CREATE TABLE temp_user_data AS SELECT * FROM ( SELECT *, ROW_NUMBER() OVER(PARTITION BY user_group ORDER BY update_time DESC) as rank FROM user_data ) tmp WHERE rank = 1; 执行以下命令使用临时数据作为数据源,并插入到目的表中: INSERT OVERWRITE TABLE user_data SELECT user_group, user_name, update_time FROM temp_user_data; 执行以下命令清理临时表: DROP TABLE IF EXISTS temp_user_data;
  • 操作场景 在传统的HDFS中,当客户端请求读取数据时,它会与NameNode交互以确定数据块所在的DataNodes,并选择其中一个进行连接和数据传输。如果所选DataNode的响应速度较慢或者发生故障,客户端必须等待一段时间后才会尝试从其他副本中获取数据,将会导致读取延迟。开启多路读能够提高HDFS在高延迟网络环境中的可靠性,主要体现在以下方面: 降低读取延迟:通过同时从多个数据节点读取相同的数据块来降低总体读取时间。 适应网络变化:在网络条件不稳定或部分节点出现性能问题时,提高客户端的读取效率。
  • EXCEPT query EXCEPT [DISTINCT] query EXCEPT返回在第一个查询结果而不在第二个查询结果中的行。 SELECT * FROM (VALUES 13, 42) EXCEPT SELECT 13; _col0------- 42(1 row) Having子句目前不支持使用列的别名,例如: select count(userid) as num ,dept as aaa from salary group by dept having aaa='d1'; 报错如下: Query 20210630_085136_00024_wc8n9@default@HetuEngine failed: line 1:75: Column 'aaa' cannot be resolved
  • 示例 创建文件“f1.txt”,填入3行数字,并通过HDFS上传到“/opt/load_test/”目录下。 --读取f1.txt的数据填充表f1CREATE TABLE tb_load_f1(id int) with (format='TEXTFILE'); LOAD DATA INPATH '/opt/load_test/f1.txt' into table tb_load_f1; select * from tb_load_f1; id ---- 1 2 3 (3 rows) --读取/opt/load_test/目录下的文件,填充表f2CREATE TABLE tb_load_f2(id int) with (format='TEXTFILE'); LOAD DATA INPATH '/opt/load_test/' into table tb_load_f2; select * from tb_load_f2; id ---- 1 2 3 (3 rows) --读取f3.txt文件内容填充表f3(多字段,数据分隔符为'-'),并通过HDFS上传到/opt/load_test/ 目录下,f3.txt文件内容如下: 1-n1 2-n2-- 创建目标表tb_load_f3CREATE TABLE tb_load_f3(id int,name varchar) with(format='TEXTFILE',textfile_field_separator='-'); Load data inpath '/opt/load_test/f3.txt' into table tb_load_f3; Select * from tb_load_f3;id | name ----|------ 1 | n1 2 | n2 (2 rows)
  • 示例 非事务表场景: 清空表数据 --创建表并插入数据 create table tb_del as select * from (values(1,'suse'),(2,'centos'),(3,'euler')) as t (id,os);select * from tb_del; id | os ----|-------- 1 | suse 2 | centos 3 | euler (3 rows)--不支持通过where子句删除单条数据delete from tb_del where id =1;Query 20201116_081955_00027_iyct5@default@HetuEngine failed: This connector only supports delete where one or more partitions are deleted entirely for Non-Transactional tables--清空表数据delete from tb_del;select * from tb_del; id | os ----|----(0 rows) 删除分区表hive.web.page_views中partition(date='2020-07-17', country='US')的分区: delete from hive.web.page_views where ds=date '2020-07-17' and country='US'; 事务表场景:删除指定记录 --创建事务表 create table tb_trans(a int,b string) with (transactional=true);CREATE TABLE--插入数据insert into tb_trans values(1,'a'),(2,'b'),(3,'c');INSERT: 3 rows--删除数据delete from tb_trans where a=1;DELETE: 1 row
  • 描述 该语法是使用SELECT查询结果创建物化视图。物化视图是一个数据库对象,它包含了一个查询的结果,例如:它可以是远程数据的本地副本,单表查询或者多表join后查询的结果的行或列、行和列的子集,也可以是使用聚合函数的汇总表。 物化视图通常基于对数据表进行聚合和连接的查询结果创建。物化视图支持“查询重写”,这是一种优化技术,它将以原始表编写的用户查询转换为包括一个或多个物化视图的等效请求。 语法支持的属性包括: storage_table:指定存储表的表名。 need_auto_refresh: 管理计算实例时,预先创建维护实例后,可通过设置need_auto_refresh为true,创建具备自动刷新能力的物化视图,它会自动创建并提交物化视图刷新任务,在此基础上,可对refresh_duration,start_refresh_ahead_of_expiry,refresh_priority等属性做进一步配置来调整自动刷新任务。 mv_validity:物化视图生命周期。0表示永久有效,最短为1分钟。need_auto_refresh设置为false时,mv_validity默认值为0;设置为true时,默认值为24小时。 refresh_duration:物化视图自动刷新任务的最长等待时间。默认为5分钟,取值范围为1分钟到24小时。若自动刷新任务的等待时间超过设定的最长等待时间,自动化任务界面对应的任务状态显示为"timeout"。 start_refresh_ahead_of_expiry:基于mv _validity设置物化视图自动刷新任务的提交时间,表示达到物化生命周期的指定百分比时,提交自动刷新任务,默认值为0.2,最小值为0.05。 refresh_priority:物化视图提交自动刷新任务的优先级。默认值为3,最大值为3,1表示最高优先级。高优先级的任务会有更大机会先被执行。
  • INTERSECT query INTERSECT [DISTINCT] query INTERSECT仅返回第一个和第二个查询的结果相交的行。以下是最简单的INTERSECT子句之一的示例。它选择值13和42,并将此结果集与选择值13的第二个查询合并。由于42仅在第一个查询的结果集中,因此不包含在最终结果中。 SELECT * FROM (VALUES 13,42) INTERSECT SELECT 13; _col0 ------- 13 (1 row)
  • BERNOULLI 每一行都将基于指定的采样率选择到采样表中。当使用Bernoulli方法对表进行采样时,将扫描表的所有物理块并跳过某些行(基于采样百分比和运行时计算的随机值之间的比较)。结果中包含一行的概率与任何其他行无关。这不会减少从磁盘读取采样表所需的时间。如果进一步处理采样输出,则可能会影响总查询时间。 SELECT * FROM users TABLESAMPLE BERNOULLI (50);
  • 浮点函数 infinity() → double 返回表示正无穷大的常数。 select infinity();-- Infinity is_finite(x) → boolean 判断x是否有限值。 select is_finite(infinity());-- falseselect is_finite(50000);--true is_infinite(x) → boolean 判断x是否无穷大。 select is_infinite(infinity());-- trueselect is_infinite(50000);--false is_nan(x) → boolean 判断x是否非数字。 --输入的值必须为double类型select is_nan(null); -- NULLselect is_nan(nan()); -- trueselect is_nan(45);-- false nan() → double 返回表示非数字的常数。 select nan(); -- NaN
  • 三角函数 所有三角函数的参数都是以弧度表示。参考单位转换函数degrees()和radians()。 acos(x) → double 求反余弦值。 SELECT acos(-1);-- 3.14159265358979 asin(x) → double 求反正弦值。 SELECT asin(0.5);-- 0.5235987755982989 atan(x) → double 求x的反正切值。 SELECT atan(1);-- 0.7853981633974483 atan2(y, x) → double 返回y/x的反正切值。 SELECT atan2(2,1);-- 1.1071487177940904 cos(x) → double 返回x的余弦值。 SELECT cos(-3.1415927);-- -0.9999999999999989 cosh(x) → double 返回x的双曲余弦值。 SELECT cosh(3.1415967);-- 11.592000006553231 sin(x) → double 求x的正弦值。 SELECT sin(1.57079);-- 0.9999999999799858 tan(x) → double 求x的正切值。 SELECT tan(20);-- 2.23716094422474 tanh(x) → double 求x双曲正切值。 select tanh(3.1415927);-- 0.9962720765661324
  • SYSTEM 此采样方法将表划分为数据的逻辑段,并按此粒度对表进行采样。此采样方法要么从特定数据段中选择所有行,要么跳过它(基于采样百分比与运行时计算的随机值之间的比较)。系统采样中行的选择依赖于使用的connector。例如,如果使用Hive数据源,这将取决于数据在HDFS上的布局。这种采样方法不能保证独立的抽样概率。 SELECT * FROM users TABLESAMPLE SYSTEM (75);
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全