用法

可以使用任何受支持的客户端管理Cubes,例如位于安装中bin目录下的hetu-cli。

CREATE CUBE

概要

CREATE CUBE [ IF NOT EXISTS ]
cube_name ON table_name WITH (
   AGGREGATIONS = ( expression [, ...] ),
   GROUP = ( column_name [, ...])
   [, FILTER = (expression)]
   [, ( property_name = expression [, ...] ) ] 
)
[WHERE predicate]

描述

使用指定的组和聚合创建一个新的空Cube。使用INSERT INTO CUBE (see below)来插入数据。

如果Cube已经存在,可选的IF NOT EXISTS子句会导致错误被抑制。 可选的property_name部分可用于在新创建的Cube上设置属性。

要列出所有可用的表属性,请运行以下查询:

SELECT * FROM system.metadata.table_properties

注意: 这些属性仅限于为其创建Cube的连接器。

例子

orders上创建一个新的Cubeorders_cube

CREATE CUBE orders_cube ON orders WITH (
  AGGREGATIONS = ( SUM(totalprice), AVG(totalprice) ),
  GROUP = ( orderstatus, orderdate ),
  format = 'ORC'
)

创建一个新的分区Cubeorders_cube

CREATE CUBE orders_cube ON orders WITH (
  AGGREGATIONS = ( SUM(totalprice), AVG(totalprice) ),
  GROUP = ( orderstatus, orderdate ),
  format = 'ORC',
  partitioned_by = ARRAY['orderdate']
)

使用一些源数据过滤器创建一个新的Cubeorders_cube

CREATE CUBE orders_cube ON orders WITH (
  AGGREGATIONS = ( SUM(totalprice), COUNT DISTINCT(orderid) ),
  GROUP = ( orderstatus ),
  FILTER = (orderdate BETWEEN 2512450 AND 2512460)
)

创建一个新的Cubeorders_cube,并在Cube列上添加一些额外的谓词:

CREATE CUBE orders_cube ON orders WITH (
  AGGREGATIONS = ( SUM(totalprice), COUNT DISTINCT(orderid) ),
  GROUP = ( orderstatus ),
  FILTER = (orderdate BETWEEN 2512450 AND 2512460)
) WHERE orderstatus = 'PENDING';

这与以下内容相同:

CREATE CUBE orders_cube ON orders WITH (
  AGGREGATIONS = ( SUM(totalprice), COUNT DISTINCT(orderid) ),
  GROUP = ( orderstatus ),
  FILTER = (orderdate BETWEEN 2512450 AND 2512460)
);
INSERT INTO CUBE orders_cube WHERE orderstatus = 'PENDING';

FILTER属性可用于在构建Cube时从源表中过滤掉数据。 cube是基于源表应用orderdate BETWEEN 2512450 AND 2512460谓词之后的数据上构建的。过滤谓词中使用的列不得属于Cube。

限制

  • 可以仅使用以下聚合函数创建Cubes。 换句话说,使用以下函数的查询只能使用Cubes进行优化。 COUNT, COUNT DISTINCT, MIN, MAX, SUM, AVG
  • 不同的连接器可能支持不同的数据类型和不同的表/列属性。

INSERT INTO CUBE

概要

INSERT INTO CUBE cube_name [WHERE condition]

描述

CREATE CUBE语句创建没有任何数据的Cube。要将数据插入Cube,请使用INSERT INTO CUBESQL。 WHERE子句是可选的。如果提供了谓词,则只有与给定谓词匹配的数据才会从源表中处理并插入到Cube中。 否则,源表中的整个数据将被处理并插入到Cube中。

例子

将数据插入orders_cubeCube:

INSERT INTO CUBE orders_cube WHERE orderdate > date '1999-01-01';
INSERT INTO CUBE order_all_cube;

限制

  1. 对同一个Cube的后续插入需要使用相同的列集
   CREATE CUBE orders_cube ON orders WITH (AGGREGATIONS = (count(*)), GROUP = (orderdate));
   
   INSERT INTO CUBE orders_cube WHERE orderdate BETWEEN date '1999-01-01' AND date '1999-01-05';
   
   -- This statement would fail because its possible the Cube already contain rows matching the given predicate.
   INSERT INTO CUBE orders_cube WHERE location = 'Canada';

注意: 这意味着在第一个插入中使用的列必须在第一个插入后的每个插入谓词中使用,以避免插入重复数据。

INSERT OVERWRITE CUBE

概要

INSERT OVERWRITE CUBE cube_name [WHERE condition]

描述

类似于"INSERT INTO CUBE"语句,但使用此语句覆盖现有数据。谓词是可选的。分区的Cubes不支持INSERT OVERWRITE CUBE类语句。 Cubes本质上存储为表,因此只有INSERT OVERWRITE替换匹配的分区并且不会覆盖整个表。所以这个操作在分区的Cube上被阻止。 删除并重新创建多维数据集,如果 需要。

例子

根据条件插入数据到orders_cubeCube:

INSERT OVERWRITE CUBE orders_cube WHERE orderdate > date '1999-01-01';
INSERT OVERWRITE CUBE orders_cube;

SHOW CUBES

概要

SHOW CUBES [ FOR table_name ];

描述

SHOW CUBES列出所有Cubes。添加可选的table_name仅列出该表的Cubes。

例子

显示所有Cubes:

    SHOW CUBES;

显示orders表的Cubes:

    SHOW CUBES FOR orders;

RELOAD CUBE

概要

RELOAD CUBE cube_name

描述

源表更新后重新加载Cube。

示例

如果Cubeorders_cube的源表orders被更新,且orders_cube的状态为“过期”,运行RELOAD CUBE cube_name命令重新加载Cube:

RELOAD CUBE orders_cube

DROP CUBE

概要

DROP CUBE  [ IF EXISTS ] cube_name

描述

删除存在的Cube.

如果Cube不存在,可选的IF EXISTS子句会抑制报错。

例子

删除Cubeorders_cube:

DROP CUBE orders_cube

如果存在,则删除Cubeorders_cube

DROP CUBE IF EXISTS orders_cube

有奖捉虫

“有虫”文档片段

0/500

存在的问题

文档存在风险与错误

● 拼写,格式,无效链接等错误;

● 技术原理、功能、规格等描述和软件不一致,存在错误;

● 原理图、架构图等存在错误;

● 版本号不匹配:文档版本或内容描述和实际软件不一致;

● 对重要数据或系统存在风险的操作,缺少安全提示;

● 排版不美观,影响阅读;

内容描述不清晰

● 描述存在歧义;

● 图形、表格、文字等晦涩难懂;

● 逻辑不清晰,该分类、分项、分步骤的没有给出;

内容获取有困难

● 很难通过搜索引擎,openLooKeng官网,相关博客找到所需内容;

示例代码错误

● 命令、命令参数等错误;

● 命令无法执行或无法完成对应功能;

内容有缺失

● 关键步骤错误或缺失,无法指导用户完成任务,比如安装、配置、部署等;

● 逻辑不清晰,该分类、分项、分步骤的没有给出

● 图形、表格、文字等晦涩难懂

● 缺少必要的前提条件、注意事项等;

● 描述存在歧义

0/500

您对文档的总体满意度

非常不满意
非常满意

请问是什么原因让您参与到这个问题中

您的邮箱

创Issue赢奖品
根据您的反馈,会自动生成issue模板。您只需点击按钮,创建issue即可。
有奖捉虫