From 5011b0dfd4f13664aa87da69aa2ca8856f5a9998 Mon Sep 17 00:00:00 2001 From: tushengxia Date: Mon, 7 Mar 2022 19:59:51 +0800 Subject: [PATCH] translate hetu-docs --- hetu-docs/en/admin/properties.md | 3 +- hetu-docs/en/admin/web-interface.md | 12 +-- hetu-docs/en/preagg/overview.md | 2 +- hetu-docs/zh/admin/properties.md | 108 +++++++++++++++++++- hetu-docs/zh/admin/reliable-execution.md | 10 ++ hetu-docs/zh/admin/spill.md | 5 + hetu-docs/zh/admin/web-interface.md | 28 +++++ hetu-docs/zh/images/snapshot_statistics.png | Bin 0 -> 107006 bytes hetu-docs/zh/preagg/overview.md | 77 +++++++++----- hetu-docs/zh/preagg/statements.md | 20 ++++ hetu-docs/zh/sql/show-create-cube.md | 32 ++++++ 11 files changed, 260 insertions(+), 37 deletions(-) create mode 100644 hetu-docs/zh/images/snapshot_statistics.png create mode 100644 hetu-docs/zh/sql/show-create-cube.md diff --git a/hetu-docs/en/admin/properties.md b/hetu-docs/en/admin/properties.md index 8e93a1698..966260256 100644 --- a/hetu-docs/en/admin/properties.md +++ b/hetu-docs/en/admin/properties.md @@ -390,6 +390,7 @@ Exchanges transfer data between openLooKeng nodes for different stages of a quer > - **Default value:** `10` > > The maximum number of retry for failed task performed by the coordinator before considering it as a permanent failure. This property is used only when exchange.is-timeout-failure-detection-enabled is set to false. + ### `sink.max-buffer-size` > - **Type:** `data size` @@ -781,7 +782,7 @@ helps with cache affinity scheduling. > Auto-Vacuum enables the system to automatically manage vacuum jobs by constantly monitoring the tables which needs vacuum in order to maintain optimal performance. > Engine gets the tables from data sources that are eligible for vacuum and trigger vacuum operation for those tables. -### `auto-vacuum.enabled:` +### `auto-vacuum.enabled` > - **Type:** `boolean` > - **Default value:** `false` diff --git a/hetu-docs/en/admin/web-interface.md b/hetu-docs/en/admin/web-interface.md index 9dd26bcdc..4d6e383bd 100644 --- a/hetu-docs/en/admin/web-interface.md +++ b/hetu-docs/en/admin/web-interface.md @@ -33,32 +33,32 @@ and statistics about the query is available by clicking the *JSON* link. These v > - **Allowed values:** `true`, `false` > - **Default value:** `false` > -> Insecure authentication over HTTP is disabled by default. This could be overridden via "hetu.queryeditor-ui.allow-insecure-over-http" property of "etc/config.properties" (e.g. hetu.queryeditor-ui.allow-insecure-over-http=true). +> Insecure authentication over HTTP is disabled by default. This could be overridden via `hetu.queryeditor-ui.allow-insecure-over-http` property of `etc/config.properties` (e.g. hetu.queryeditor-ui.allow-insecure-over-http=true). ### `hetu.queryeditor-ui.execution-timeout` > - **Type:** `duration` -> - **Default value:** `100 DAYS`> +> - **Default value:** `100 DAYS` > -> UI Execution timeout is set to 100 days as default. This could be overridden via "hetu.queryeditor-ui.execution-timeout" of "etc/config.properties" +> UI Execution timeout is set to 100 days as default. This could be overridden via `hetu.queryeditor-ui.execution-timeout` of `etc/config.properties` ### `hetu.queryeditor-ui.max-result-count` > - **Type:** `int` > - **Default value:** `1000` > -> UI max result count is set to 1000 as default. This could be overridden via "hetu.queryeditor-ui.max-result-count" of "etc/config.properties" +> UI max result count is set to 1000 as default. This could be overridden via `hetu.queryeditor-ui.max-result-count` of `etc/config.properties` ### `hetu.queryeditor-ui.max-result-size-mb` >- **Type:** `size` >- **Default value:** `1GB` > -> UI max result size is set to 1 GB as default. This could be overridden via "hetu.queryeditor-ui.max-result-size-mb" of "etc/config.properties" +> UI max result size is set to 1 GB as default. This could be overridden via `hetu.queryeditor-ui.max-result-size-mb` of `etc/config.properties` ### `hetu.queryeditor-ui.session-timeout` > - **Type:** `duration` > - **Default value:** `1 DAYS` > -> UI session timeout is set to 1 day as default. This could be overridden via "hetu.queryeditor-ui.session-timeout" of "etc/config.properties" \ No newline at end of file +> UI session timeout is set to 1 day as default. This could be overridden via `hetu.queryeditor-ui.session-timeout` of `etc/config.properties` \ No newline at end of file diff --git a/hetu-docs/en/preagg/overview.md b/hetu-docs/en/preagg/overview.md index b9ff354f2..741baf1b3 100644 --- a/hetu-docs/en/preagg/overview.md +++ b/hetu-docs/en/preagg/overview.md @@ -121,7 +121,7 @@ Since the data inserted into the Cube was for `nationkey >= 5`, only queries mat Queries not matching the condition would continue to work but won't use the Cube. If the source table of a Cube gets updated, the corresponding Cube gets expired automatically. In order to overcome -this issue, we have added support in OpenLooKeng CLI by introducing **RELOAD CUBE** command. The user will have the +this issue, we have added support in openLooKeng CLI by introducing **RELOAD CUBE** command. The user will have the ability to manually reload a cube if the status of the Cube becomes INACTIVE or EXPIRED. The syntax to reload the Cube nation_cube is as follows, diff --git a/hetu-docs/zh/admin/properties.md b/hetu-docs/zh/admin/properties.md index ea510bc41..9faf7c35f 100644 --- a/hetu-docs/zh/admin/properties.md +++ b/hetu-docs/zh/admin/properties.md @@ -148,6 +148,24 @@ > > 此配置属性可由`spill_window_operator`会话属性重写。 +### `experimental.spill-build-for-outer-join-enabled` + +> - **类型:** `boolean` +> - **默认值:** `false` +> +> 为右外连接和全外连接操作启用溢出功能。 +> +> 此config属性可被`spill_build_for_outer_join_enabled`会话属性覆盖。 + +### `experimental.inner-join-spill-filter-enabled` + +> - **类型:** `boolean` +> - **默认值:** `false` +> +> 启用基于布隆过滤器的构建侧溢出匹配,以进行探查侧溢出决策。 +> +> 此config属性可被`inner_join_spill_filter_enabled`会话属性覆盖。 + ### `experimental.spill-reuse-tablescan` > - **类型**:`boolean` @@ -163,7 +181,7 @@ > - **无默认值。** 启用溢出时必须设置。 > > 溢出内容写入的目录。该属性可以是一个逗号分隔的列表,以同时溢出到多个目录,这有助于利用系统中安装的多个驱动器。 -> +> 当`experimental.spiller-spill-to-hdfs`为`true`时,`experimental.spiller-spill-path`必须只包含一个目录。 > 不建议溢出到系统驱动器上。最重要的是,不要溢出到写入JVM日志的驱动器,因为磁盘过度使用可能导致JVM长时间暂停,从而导致查询失败。 ### `experimental.spiller-max-used-space-threshold` @@ -208,7 +226,7 @@ > > 用于在Reuse Exchange中缓存页面的内存限制。 -### experimental.spill-compression-enabled` +### `experimental.spill-compression-enabled` > - **类型:** `boolean` > - **默认值:** `false` @@ -222,6 +240,69 @@ > > 允许使用随机生成的密钥(每个溢出文件)来加密和解密溢出到磁盘的数据。 +### `experimental.spill-direct-serde-enabled` + +> - **类型:** `boolean` +> - **默认值:** `false` +> +> 允许将页面直接序列化/读取到流中或从流中序列化/读取页面。 + +### `experimental.spill-prefetch-read-pages` + +> - **类型:** `integer` +> - **默认值:** `1` +> +> 设置从溢出文件读取时预取的页数。 + + +### `experimental.spill-use-kryo-serialization` + +> - **类型:** `boolean` +> - **默认值:** `false` +> +> 启用基于Kryo的序列化以溢出到磁盘,而不使用默认的Java序列化器。 + + +### `experimental.revocable-memory-selection-threshold` + +> - **类型:** `data size` +> - **默认值:** `512 MB` +> +> 设置运算符可撤销内存的内存选择阈值,直接为准备撤销的剩余字节分配可撤销内存。 + +### `experimental.prioritize-larger-spilts-memory-revoke` + +> - **类型:** `boolean` +> - **默认值:** `true` +> +> 启用对具有较大可撤销内存的Split进行优先级排序。 + +### `experimental.spill-non-blocking-orderby` + +> - **类型:** `boolean` +> - **默认值:** `false` +> +> 开启按照运算符排序,使用异步机制溢出。即使在溢出正在进行时,也可以累积输入,并在次要数据累积超过阈值或主溢出完成时启动次溢出。阈值的默认值是20MB到可用内存的5%之间的最小值。此属性必须与`experimental.spill-enabled`属性结合使用。 +> +> 此config属性可被`spill_non_blocking_orderby`会话属性覆盖。 + +### `experimental.spiller-spill-to-hdfs` + +> - **类型:** `boolean` +> - **默认值:** `false` +> +> 启用溢出到HDFS。当此属性设置为`true`时,必须设置`experimental.spiller-spill-profile`属性,并且`experimental.spiller-spill-path`必须仅包含单个路径。 + +### `experimental.spiller-spill-profile` + +> - **类型:** `string` +> - **无默认值。** 启用溢出到HDFS时必须设置此属性。 +> +> +> 此属性定义用于溢出的[filesystem](../develop/filesystem.md)配置文件。对应的配置文件必须存在于`etc/filesystem`中。例如,如果此属性设置为`experimental.spiller-spill-profile=spill-hdfs`,则必须在`etc/filesystem`中创建描述此文件系统的配置文件`spill-hdfs.properties`,其中包含必要的信息,包括身份验证类型、config和keytab(如果适用,详情请参见[filesystem](../develop/filesystem.md))。 +> +> 当`experimental.spiller-spill-to-hdfs`设置为`true`时,必须配置此属性。所有Coordinator和Worker的配置文件中必须包含此属性。指定的文件系统必须可由所有Worker访问,并且Worker必须能够读取和写入指定文件系统中`experimental.spiller-spill-path`文件夹中指明的路径。 + ## 交换属性 在openLooKeng节点之间为查询的不同阶段交换数据。调整这些属性可有助于解决节点间通信问题或提高网络利用率。 @@ -267,6 +348,20 @@ > > 交换错误最大缓冲时间,超过该时限则查询失败。 +### `exchange.is-timeout-failure-detection-enabled` + +> - **类型:** `boolean` +> - **默认值:** `true` +> +> 正在使用的故障检测机制。默认值是基于超时的故障检测。但是,当该属性设置为`false`时,启用基于最大重试次数的故障检测机制。 + +### `exchange.max-retry-count` + +> - **类型:** `integer` +> - **默认值:** `10` +> +> Coordinator在将失败任务视为永久失败之前对其执行的最大重试次数。仅当`exchange.is-timeout-failure-detection-enabled`设置为`false`时,才使用此属性。 + ### `sink.max-buffer-size` > - **类型:** `data size` @@ -634,7 +729,7 @@ > 自动清空使系统能够通过持续监测需要清空的表来自动管理清空作业,以保持最佳性能。引擎从符合清空条件的数据源获取表,并触发对这些表的清空操作。 -### `auto-vacuum.enabled:` +### `auto-vacuum.enabled` > - **类型:** `boolean` > - **默认值:** `false` @@ -737,6 +832,13 @@ > > 也可以使用`snapshot_retry_timeout`会话属性在每个查询基础上指定。 +### `hetu.snapshot.useKryoSerialization` + +> - **类型:** `boolean` +> - **默认值:** `false` +> +> 为快照启用基于Kryo的序列化,而不是默认的Java序列化。 + ## HTTP客户端属性配置 ### `http.client.idle-timeout` diff --git a/hetu-docs/zh/admin/reliable-execution.md b/hetu-docs/zh/admin/reliable-execution.md index 88d594d77..8821110f1 100644 --- a/hetu-docs/zh/admin/reliable-execution.md +++ b/hetu-docs/zh/admin/reliable-execution.md @@ -55,6 +55,16 @@ 建议仅在必要时启用分布式快照,如运行时间较长的查询任务。对于这些类型的工作负载,捕获快照的开销可以忽略不计。 +## 快照统计信息 + +在调试模式下启动CLI时,快照捕获信息和恢复信息将与查询结果一起显示在CLI中。 + +快照捕获信息包括查询期间捕获的快照大小、捕获快照的CPU时间和捕获快照的挂钟时间。分别显示所有快照和最后一个快照的捕获信息。 + +快照恢复信息包括查询期间从快照恢复的次数、加载用于恢复的快照大小、从快照恢复所需的CPU时间和从快照恢复所需的挂钟时间。仅当查询期间发生恢复时,才会显示恢复信息。 + +![](../images/snapshot_statistics.png) + ## 配置 与分布式快照功能相关的配置可参见[属性参考](properties.md#分布式快照)。 \ No newline at end of file diff --git a/hetu-docs/zh/admin/spill.md b/hetu-docs/zh/admin/spill.md index bf7b8d368..284484097 100644 --- a/hetu-docs/zh/admin/spill.md +++ b/hetu-docs/zh/admin/spill.md @@ -31,6 +31,10 @@ openLooKeng将溢出路径视为独立的磁盘(参见[JBOD](https://en.wikipedia.org/wiki/Non-RAID_drive_architectures#JBOD )),因此无需使用RAID进行溢出。 +## 溢出到HDFS + +操作可以直接溢出到HDFS。将`experimental.spiller-spill-to-hdfs`设置为`true`,配置`experimental.spiller-spill-profile`,并且`spiller-spill-path`必须仅包含一个目录。(更多详情请参见`experimental.spiller-spill-to-hdfs`和`experimental.spiller-spill-profile`属性) + ## 溢出压缩 当启用溢出压缩(`tuning-spilling`中的`spill-compression-enabled`属性)时,溢出页将被压缩后再写入磁盘。启用此特性可以减少磁盘I/O,但会牺牲额外的CPU负载来压缩和解压缩溢出页。 @@ -60,6 +64,7 @@ openLooKeng将溢出路径视为独立的磁盘(参见[JBOD](https://en.wikipe ### 排序 如果尝试对大量数据进行排序,可能需要大量内存。当启用为排序溢出到磁盘时,如果内存不足,则中间排序结果将写入磁盘。结果被重新加载回来,并以较低的内存占用量合并。 +通常,当溢出正在进行时,运算符将被阻止接受输入,但当`experimental.spill-non-blocking-orderby`设置为`true`时,使用异步机制溢出(请参见`experimental.spill-non-blocking-orderby`)。 ### 开窗函数 diff --git a/hetu-docs/zh/admin/web-interface.md b/hetu-docs/zh/admin/web-interface.md index d82a9ae6a..c2eed936a 100644 --- a/hetu-docs/zh/admin/web-interface.md +++ b/hetu-docs/zh/admin/web-interface.md @@ -31,3 +31,31 @@ openLooKeng提供了一个用于监视和管理查询的Web界面。Web界面可 > - **默认值:** `false` > > 默认情况下,基于HTTP的非安全环境禁用WEB UI。可以通过配置`etc/config.properties`文件的`hetu.queryeditor-ui.allow-insecure-over-http`属性启用(例子: hetu.queryeditor-ui.allow-insecure-over-http=true)。 + +### `hetu.queryeditor-ui.execution-timeout` + +> - **类型:** `duration` +> - **默认值:** `100 DAYS` +> +> UI执行超时默认设置为100天。可以通过配置`etc/config.properties`文件中的`hetu.queryeditor-ui.execution-timeout`属性修改。 + +### `hetu.queryeditor-ui.max-result-count` + +> - **类型:** `int` +> - **默认值:** `1000` +> +> UI最大结果计数默认设置为1000。可以通过配置`etc/config.properties`文件中的`hetu.queryeditor-ui.max-result-count`属性修改。 + +### `hetu.queryeditor-ui.max-result-size-mb` + +>- **类型:** `size` +>- **默认值:** `1GB` +> +>UI最大结果大小默认设置为1 GB。可以通过配置`etc/config.properties`文件中的`hetu.queryeditor-ui.max-result-size-mb`属性修改。 + +### `hetu.queryeditor-ui.session-timeout` + +> - **类型:** `duration` +> - **默认值:** `1 DAYS` +> +> UI会话超时默认设置为1天。可以通过配置`etc/config.properties`文件中的`hetu.queryeditor-ui.session-timeout`属性修改。 \ No newline at end of file diff --git a/hetu-docs/zh/images/snapshot_statistics.png b/hetu-docs/zh/images/snapshot_statistics.png new file mode 100644 index 0000000000000000000000000000000000000000..f41da3e3e48dde82fe1191f5551f5f07e937f2d4 GIT binary patch literal 107006 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 由于插入Cube的数据是为`nationkey >= 5`,只有匹配此条件的查询才会使用Cube。 不符合条件的查询将继续工作,但不会使用Cube。 +如果Cube的源表更新,则对应的Cube自动过期。为了克服这个问题,我们通过引入**RELOAD CUBE**命令在openLooKeng CLI中添加了支持。如果Cube的状态变为“未激活”或“过期”,用户将能够手动重新加载Cube。重新加载Cube`nation_cube`的语法如下: + +```sql +RELOAD CUBE nation_cube +``` + +请注意,此功能仅在CLI支持。在重新加载过程中,如果发生意外错误,用户可以查看原始SQL语句,手动重新创建Cube。 + ## 为大型数据集构建Cube 当前实现的限制之一是不能一次为更大的数据集构建Cube。这是由于集群内存限制。 处理大量行需要比集群配置更多的内存。这会导致查询失败并显示消息**Query exceeded per-node user memory limit**,也就是警告查询超出每节点用户内存限制。为了克服这个问题,**INSERT INTO CUBE** SQL支持被添加了。 @@ -178,38 +184,56 @@ SHOW CUBES; ``` **注意:** -1. 系统将尝试将所有类型的Predicates重写为Range以查看它们是否可以合并在一起。 + +① 系统将尝试将所有类型的Predicates重写为Range以查看它们是否可以合并在一起。 所有连续谓词将合并为单个范围谓词,其余谓词保持不变。 仅支持以下类型并且可以合并在一起。 - `Integer, TinyInt, SmallInt, BigInt, Date` + `Integer, TinyInt, SmallInt, BigInt, Date, String` - 对于其他数据类型,很难确定两个谓词是否连续,因此它们不能合并在一起。 - 由于这个问题,即使Cube具有所有必需的数据,在查询优化期间也可能不会使用特定Cube。例如, + 对于字符串数据类型,谓词合并逻辑仅在字符串以数字结尾,并且所有字符串的长度相同时才能生效。例如, ```sql INSERT INTO CUBE store_sales_cube WHERE store_id BETWEEN 'A01' AND 'A10'; INSERT INTO CUBE store_sales_cube WHERE store_id BETWEEN 'A11' AND 'A20'; ``` - 这里这两个谓词不能合并到store_id BETWEEN 'A01' AND 'A20'; - 因此,Cube不会用于跨越两个谓词的查询; - -```sql - SELECT ss_store_id, sum(ss_sales_price) WHERE ss_store_id BETWEEN 'A05' AND 'A15'; - Cube won't be used for optimizing this query. This is a limitation as of now. -``` - 由于谓词重写,无法支持以下某些查询 - -```sql - INSERT INTO CUBE store_sales_cube WHERE ss_sold_date_sk > 2451911; -``` + 插入后,两个谓词将被合并至`'A01' AND 'A20'`。 + + ```sql + SELECT ss_store_id, sum(ss_sales_price) WHERE ss_store_id BETWEEN 'A05' AND 'A15'; - Cube 能被这个查询语句所使用 + ``` + + 以下示例中,`store_id`值的长度不相同。 + + ``` + INSERT INTO CUBE store_sales_cube WHERE store_id = 'A1'; + INSERT INTO CUBE store_sales_cube WHERE store_id = 'A2' + ``` + + 根据varchar谓词合并逻辑,store_id谓词将被重写为`store_id >= 'A1' and store < 'A3'`; + + ``` + INSERT INTO CUBE store_sales_cube WHERE store_id = 'A10' + ``` + + 上述查询将失败,因为`A10`是范围`store_id >= 'A1' and store < 'A3'`的子集。请用户注意这个问题。 + + 对于其他数据类型,很难识别两个谓词是否连续,因此它们无法被合并。因此,即使某些Cube具有所有所需的数据,也可能不会被用来优化查询。 + +② 谓词重写也有一些限制。如以下查询: + + ```sql + INSERT INTO CUBE store_sales_cube WHERE ss_sold_date_sk > 2451911; + ``` + 谓词重写为ss_sold_date_sk >= 2451912为合并连续谓词做准备。 - 由于谓词被重写,他们使用ss_sold_date_sk > 2451911谓词查询将与Cube谓词不匹配,因此不会使用Cube来优化查询。 - 这同样适用于带有<=运算符的谓词,例如,ss_sold_date_sk <= 2451911改写为ss_sold_date_sk < 2451912。 - -```sql - SELECT ss_sold_date_sk, .... FROM hive.tpcds_sf1.store_sales WHERE ss_sold_date_sk > 2451911 -``` -3. 只能合并单列谓词。 + 由于谓词已重写,使用ss_sold_date_sk > 2451911谓词进行查询将无法匹配到Cube谓词,因此不会使用Cube优化查询。同样的情况也适用于具有<=运算符的谓词。例如 ss_sold_date_sk <= 2451911重写为ss_sold_date_sk < 2451912。 + + ```sql + SELECT ss_sold_date_sk, .... FROM hive.tpcds_sf1.store_sales WHERE ss_sold_date_sk > 2451911 + ``` + +③ 只能合并单列谓词。 ## 未解决的问题和限制 1. StarTree Cube仅在按基数分组的数量远小于源表中的行数时有效。 @@ -218,10 +242,11 @@ SHOW CUBES; 4. 即使源表尚未更新,在事务表上创建的Cubes也可能会自动过期。 这是由于压缩策略将delta文件合并为单个大型ORC文件,这反过来又更改了表的最后修改时间。 Cube状态是通过比较创建Cube时表的最后修改时间戳与执行查询时表的最后修改时间来确定的。 -5. OpenLooKeng CLI已经过修改,以简化为更大的数据集创建Cubes的过程。 +5. openLooKeng CLI已经过修改,以简化为更大的数据集创建Cubes的过程。 但是这种实现仍然存在局限性,因为该过程涉及将多个Cube谓词合并为一个。 只有定义在Integer、Long和Date类型上的Cube谓词才能正确合并。 对Char、String类型的支持仍需实现。 - +6. 当Varchar类型的谓词的数值长度是一样时可合并。 + ## Star Tree上的性能优化 1. 对同一个group by列的星型查询重写优化:如果查询语句与Cube组匹配,则会改写查询计划将聚合运算结果重定向到Cube结果,否则将添加其他聚合结果内部应用于重写语句。 2. 平均聚合函数的star tree表扫描优化:如果查询语句与group by列的Cube匹配,则会改写查询计划将聚合运算结果重定向到Cube的预聚合列的平均值结果,否则语句将在内部重写,以选择star tree预聚合Sum和Count结果,随后计算平均值。 \ No newline at end of file diff --git a/hetu-docs/zh/preagg/statements.md b/hetu-docs/zh/preagg/statements.md index 6a3f5c746..3813abbdd 100644 --- a/hetu-docs/zh/preagg/statements.md +++ b/hetu-docs/zh/preagg/statements.md @@ -150,6 +150,26 @@ SHOW CUBES [ FOR table_name ]; SHOW CUBES FOR orders; ``` +## RELOAD CUBE + +### 概要 + +``` sql +RELOAD CUBE cube_name +``` + +### 描述 + +源表更新后重新加载Cube。 + +### 示例 + +如果Cube`orders_cube`的源表`orders`被更新,且`orders_cube`的状态为“过期”,运行`RELOAD CUBE cube_name`命令重新加载Cube: + +```sql +RELOAD CUBE orders_cube +``` + ## DROP CUBE ### 概要 diff --git a/hetu-docs/zh/sql/show-create-cube.md b/hetu-docs/zh/sql/show-create-cube.md new file mode 100644 index 000000000..556a6c3db --- /dev/null +++ b/hetu-docs/zh/sql/show-create-cube.md @@ -0,0 +1,32 @@ + +SHOW CREATE CUBE +================= + +概要 +-------- + +``` sql +SHOW CREATE CUBE cube_name +``` + +描述 +----------- + +显示创建指定cube的SQL语句。 + +示例 +-------- + +在`orders`表上创建cube`orders_cube` + + CREATE CUBE orders_cube ON orders WITH (AGGREGATIONS = (avg(totalprice), sum(totalprice), count(*)), + GROUP = (custKEY, ORDERkey), format= 'orc') + +运行`SHOW CREATE CUBE`命令显示用于创建cube`orders_cube`的SQL语句: + + SHOW CREATE CUBE orders_cube; + +``` sql +CREATE CUBE orders_cube ON orders WITH (AGGREGATIONS = (avg(totalprice), sum(totalprice), count(*)), +GROUP = (custKEY, ORDERkey), format= 'orc') +```