You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by sh...@apache.org on 2018/06/21 00:35:22 UTC

[kylin] branch document updated (58bf469 -> e0aefbb)

This is an automated email from the ASF dual-hosted git repository.

shaofengshi pushed a change to branch document
in repository https://gitbox.apache.org/repos/asf/kylin.git.


    from 58bf469  add doc for jdbc data source
     new 94d03cd  Add superset and redash, move jdbc datasource to tutorial
     new e0aefbb  Delete duplicated docs for cube planner

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 website/_data/docs23.yml                           |   5 +-
 website/_docs23/howto/howto_setup_systemcube.md    | 440 ---------------------
 website/_docs23/howto/howto_use_cube_planner.md    | 142 -------
 website/_docs23/howto/howto_use_dashboard.md       | 110 ------
 website/_docs23/index.md                           |   3 +
 .../setup_jdbc_datasource.md}                      |  56 ++-
 6 files changed, 53 insertions(+), 703 deletions(-)
 delete mode 100644 website/_docs23/howto/howto_setup_systemcube.md
 delete mode 100644 website/_docs23/howto/howto_use_cube_planner.md
 delete mode 100644 website/_docs23/howto/howto_use_dashboard.md
 rename website/_docs23/{howto/howto_setup_jdbc_datasource.md => tutorial/setup_jdbc_datasource.md} (55%)


[kylin] 01/02: Add superset and redash, move jdbc datasource to tutorial

Posted by sh...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

shaofengshi pushed a commit to branch document
in repository https://gitbox.apache.org/repos/asf/kylin.git

commit 94d03cd3e935eab10c8237eeb2d160e516a7a531
Author: shaofengshi <sh...@apache.org>
AuthorDate: Thu Jun 21 08:34:49 2018 +0800

    Add superset and redash, move jdbc datasource to tutorial
---
 website/_data/docs23.yml                           |  5 +-
 website/_docs23/index.md                           |  3 ++
 .../setup_jdbc_datasource.md}                      | 56 +++++++++++++++++++---
 3 files changed, 53 insertions(+), 11 deletions(-)

diff --git a/website/_data/docs23.yml b/website/_data/docs23.yml
index bb8a44b..40012c0 100644
--- a/website/_data/docs23.yml
+++ b/website/_data/docs23.yml
@@ -49,6 +49,7 @@
   - tutorial/setup_systemcube
   - tutorial/use_cube_planner
   - tutorial/use_dashboard
+  - tutorial/setup_jdbc_datasource
 
 - title: Integration
   docs:
@@ -78,7 +79,3 @@
   - howto/howto_update_coprocessor
   - howto/howto_install_ranger_kylin_plugin
   - howto/howto_enable_zookeeper_acl
-  - howto/howto_setup_systemcube
-  - howto/howto_use_cube_planner
-  - howto/howto_use_dashboard
-  - howto/howto_setup_jdbc_datasource
diff --git a/website/_docs23/index.md b/website/_docs23/index.md
index 3b60dd7..390990a 100644
--- a/website/_docs23/index.md
+++ b/website/_docs23/index.md
@@ -42,6 +42,7 @@ Tutorial
 10. [Setup System Cube](tutorial/setup_systemcube.html)
 11. [Optimize with Cube Planner](tutorial/use_cube_planner.html)
 12. [Use System Dashboard](tutorial/use_dashboard.html)
+13. [Setup JDBC Data Source](tutorial/setup_jdbc_datasource.html)
 
 
 Connectivity and APIs
@@ -59,6 +60,8 @@ Connectivity and APIs
 11. [Connect from Apache Spark](tutorial/spark.html)
 12. [Connect from Hue](tutorial/hue.html)
 13. [Connect from Qlik Sense](tutorial/Qlik.html)
+14. [Connect from Apache Superset](/blog/2018/01/01/kylin-and-superset/)
+15. [Connect from Redash](/blog/2018/05/08/redash-kylin-plugin-strikingly/)
 
 
 Operations
diff --git a/website/_docs23/howto/howto_setup_jdbc_datasource.md b/website/_docs23/tutorial/setup_jdbc_datasource.md
similarity index 55%
rename from website/_docs23/howto/howto_setup_jdbc_datasource.md
rename to website/_docs23/tutorial/setup_jdbc_datasource.md
index 7653360..881d76f 100644
--- a/website/_docs23/howto/howto_setup_jdbc_datasource.md
+++ b/website/_docs23/tutorial/setup_jdbc_datasource.md
@@ -2,7 +2,7 @@
 layout: docs23
 title:  Setup JDBC Data Source
 categories: howto
-permalink: /docs23/howto/howto_setup_jdbc_datasource.html
+permalink: /docs23/tutorial/setup_jdbc_datasource.html
 ---
 
 > Available since Apache Kylin v2.3.x
@@ -19,24 +19,66 @@ Kylin uses Apache Sqoop to load data from relational databases to HDFS. Download
 
 2. Prepare JDBC driver
 
-   Copy Kylin JDBC driver from `$KYLIN_HOME/lib` to `$SQOOP_HOME/lib`.
+You need to download the JDBC Driver of your database to the Kylin server. The JDBC driver jar should be added to `$KYLIN_HOME/ext` and `$SQOOP_HOME/lib` folder.
 
 3. Configure Kylin
 
-In `$KYLIN_HOME/conf/kylin.properties`, add the following configurations (assumming your MySQL is in the same host):
+In `$KYLIN_HOME/conf/kylin.properties`, add the following configurations.
+
+MySQL sample:
 
 ```
 kylin.source.default=8
-kylin.source.jdbc.connection-url=jdbc:mysql://localhost:3306/employees
+kylin.source.jdbc.connection-url=jdbc:mysql://hostname:3306/employees
 kylin.source.jdbc.driver=com.mysql.jdbc.Driver
 kylin.source.jdbc.dialect=mysql
-kylin.source.jdbc.user=your_mysql_username
-kylin.source.jdbc.pass=your_mysql_password
+kylin.source.jdbc.user=your_username
+kylin.source.jdbc.pass=your_password
 kylin.source.jdbc.sqoop-home=/usr/hdp/current/sqoop-client/bin
 kylin.source.jdbc.filed-delimiter=|
 ```
 
-Please note, when configure these parameters in `conf/kylin.properties`, all your projects are using the JDBC as data source. If you need access different types of data source, you need configure these parameters at project level, this is the recommended way.
+SQL Server sample:
+
+```
+kylin.source.default=8
+kylin.source.jdbc.connection-url=jdbc:sqlserver://hostname:1433;database=sample
+kylin.source.jdbc.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
+kylin.source.jdbc.dialect=mssql
+kylin.source.jdbc.user=your_username
+kylin.source.jdbc.pass=your_password
+kylin.source.jdbc.sqoop-home=/usr/hdp/current/sqoop-client/bin
+kylin.source.jdbc.filed-delimiter=|
+```
+
+Amazon Redshift sample:
+
+```
+kylin.source.default=8
+kylin.source.jdbc.connection-url=jdbc:redshift://hostname:5439/sample
+kylin.source.jdbc.driver=com.amazon.redshift.jdbc.Driver
+kylin.source.jdbc.dialect=default
+kylin.source.jdbc.user=user
+kylin.source.jdbc.pass=pass
+kylin.source.jdbc.sqoop-home=/usr/hdp/current/sqoop-client/bin
+kylin.source.default=8
+kylin.source.jdbc.filed-delimiter=|
+```
+
+There is another parameter specifing how many splits should be divided. Sqoop would run a mapper for each split.
+
+```
+kylin.source.jdbc.sqoop-mapper-num=4
+```
+
+To make each mapper gets even input, the splitting column is selected by the following rules:
+ * ShardBy column, if exists;
+ * Partition date column, if exists;
+ * High cardinality column, if exists;
+ * Numeric column, if exists;
+ * A column at first glance.
+
+Please note, when configure these parameters in `conf/kylin.properties`, all your projects are using the JDBC as data source. If you need access different types of data source, you need configure these parameters at project level, this is the recommended way (since Kylin v2.4.0).
 
 ## Load tables from JDBC data source
 


[kylin] 02/02: Delete duplicated docs for cube planner

Posted by sh...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

shaofengshi pushed a commit to branch document
in repository https://gitbox.apache.org/repos/asf/kylin.git

commit e0aefbb14b4ba2276a433a892649512c129a3933
Author: shaofengshi <sh...@apache.org>
AuthorDate: Thu Jun 21 08:35:11 2018 +0800

    Delete duplicated docs for cube planner
---
 website/_docs23/howto/howto_setup_systemcube.md | 440 ------------------------
 website/_docs23/howto/howto_use_cube_planner.md | 142 --------
 website/_docs23/howto/howto_use_dashboard.md    | 110 ------
 3 files changed, 692 deletions(-)

diff --git a/website/_docs23/howto/howto_setup_systemcube.md b/website/_docs23/howto/howto_setup_systemcube.md
deleted file mode 100644
index 5a42a3e..0000000
--- a/website/_docs23/howto/howto_setup_systemcube.md
+++ /dev/null
@@ -1,440 +0,0 @@
----
-layout: docs23
-title:  Set Up System Cube
-categories: howto
-permalink: /docs23/howto/howto_setup_systemcube.html
----
-
-> Available since Apache Kylin v2.3.x
-
-## What is System Cube
-
-For better supporting self-monitoring, a set of system Cubes are created under the system project, called "KYLIN_SYSTEM". Currently, there are five Cubes. Three are for query metrics, "METRICS_QUERY", "METRICS_QUERY_CUBE", "METRICS_QUERY_RPC". And the other two are for job metrics, "METRICS_JOB", "METRICS_JOB_EXCEPTION".
-
-## How to Set Up System Cube
-
-### Prepare
-Create a configuration file SCSinkTools.json in KYLIN_HOME directory.
-
-For example:
-
-```
-[
-  [
-    "org.apache.kylin.tool.metrics.systemcube.util.HiveSinkTool",
-    {
-      "storage_type": 2,
-      "cube_desc_override_properties": [
-        "java.util.HashMap",
-        {
-          "kylin.cube.algorithm": "INMEM",
-          "kylin.cube.max-building-segments": "1"
-        }
-      ]
-    }
-  ]
-]
-```
-
-### 1. Generate Metadata
-Run the following command in KYLIN_HOME folder to generate related metadata:
-
-```
-./bin/kylin.sh org.apache.kylin.tool.metrics.systemcube.SCCreator \
--inputConfig SCSinkTools.json \
--output <output_forder>
-```
-
-By this command, the related metadata will be generated and its location is under the directory `<output_forder>`. The details are as follows, system_cube is our `<output_forder>`:
-
-![metadata](/images/SystemCube/metadata.png)
-
-### 2. Set Up Datasource
-Running the following command to create source hive tables:
-
-```
-hive -f <output_forder>/create_hive_tables_for_system_cubes.sql
-```
-
-By this command, the related hive table will be created.
-
-![hive_table](/images/SystemCube/hive_table.png)
-
-### 3. Upload Metadata for System Cubes
-Then we need to upload metadata to hbase by the following command:
-
-```
-./bin/metastore.sh restore <output_forder>
-```
-
-### 4. Reload Metadata
-Finally, we need to reload metadata in Kylin web UI.
-
-![reload_metadata](/images/SystemCube/reload_metadata.png)
-
-Then, a set of system Cubes will be created under the system project, called "KYLIN_SYSTEM".
-
-![kylin_system](/images/SystemCube/kylin_system.png)
-
-### 5. System Cube build
-When the system Cube is created, we need to build the Cube regularly.
-
-1. Create a shell script that builds the system Cube by calling org.apache.kylin.tool.job.CubeBuildingCLI
-  
-	For example:
-
-{% highlight Groff markup %}
-#!/bin/bash
-
-dir=$(dirname ${0})
-export KYLIN_HOME=${dir}/../
-
-CUBE=$1
-INTERVAL=$2
-DELAY=$3
-CURRENT_TIME_IN_SECOND=`date +%s`
-CURRENT_TIME=$((CURRENT_TIME_IN_SECOND * 1000))
-END_TIME=$((CURRENT_TIME-DELAY))
-END=$((END_TIME - END_TIME%INTERVAL))
-
-ID="$END"
-echo "building for ${CUBE}_${ID}" >> ${KYLIN_HOME}/logs/build_trace.log
-sh ${KYLIN_HOME}/bin/kylin.sh org.apache.kylin.tool.job.CubeBuildingCLI --cube ${CUBE} --endTime ${END} > ${KYLIN_HOME}/logs/system_cube_${CUBE}_${END}.log 2>&1 &
-
-{% endhighlight %}
-
-2. Then run this shell script regularly
-
-	For example, add a cron job as follows:
-
-{% highlight Groff markup %}
-0 */2 * * * sh ${KYLIN_HOME}/bin/system_cube_build.sh KYLIN_HIVE_METRICS_QUERY_QA 3600000 1200000
-
-20 */2 * * * sh ${KYLIN_HOME}/bin/system_cube_build.sh KYLIN_HIVE_METRICS_QUERY_CUBE_QA 3600000 1200000
-
-40 */4 * * * sh ${KYLIN_HOME}/bin/system_cube_build.sh KYLIN_HIVE_METRICS_QUERY_RPC_QA 3600000 1200000
-
-30 */4 * * * sh ${KYLIN_HOME}/bin/system_cube_build.sh KYLIN_HIVE_METRICS_JOB_QA 3600000 1200000
-
-50 */12 * * * sh ${KYLIN_HOME}/bin/system_cube_build.sh KYLIN_HIVE_METRICS_JOB_EXCEPTION_QA 3600000 12000
-
-{% endhighlight %}
-
-## Details of System Cube
-
-### Common Dimension
-For all of these Cube, admins can query at four time granularities. From higher level to lower, it's as follows:
-
-<table>
-  <tr>
-    <td>KYEAR_BEGIN_DATE</td>
-    <td>year</td>
-  </tr>
-  <tr>
-    <td>KMONTH_BEGIN_DATE</td>
-    <td>month</td>
-  </tr>
-  <tr>
-    <td>KWEEK_BEGIN_DATE</td>
-    <td>week</td>
-  </tr>
-  <tr>
-    <td>KDAY_DATE</td>
-    <td>date</td>
-  </tr>
-</table>
-
-### METRICS_QUERY
-This Cube is for collecting query metrics at the highest level. The details are as follows:
-
-<table>
-  <tr>
-    <th colspan="2">Dimension</th>
-  </tr>
-  <tr>
-    <td>HOST</td>
-    <td>the host of server for query engine</td>
-  </tr>
-  <tr>
-    <td>PROJECT</td>
-    <td></td>
-  </tr>
-  <tr>
-    <td>REALIZATION</td>
-    <td>in Kylin, there are two OLAP realizations: Cube, or Hybrid of Cubes</td>
-  </tr>
-  <tr>
-    <td>REALIZATION_TYPE</td>
-    <td></td>
-  </tr>
-  <tr>
-    <td>QUERY_TYPE</td>
-    <td>users can query on different data sources, CACHE, OLAP, LOOKUP_TABLE, HIVE</td>
-  </tr>
-  <tr>
-    <td>EXCEPTION</td>
-    <td>when doing query, exceptions may happen. It's for classifying different exception types</td>
-  </tr>
-</table>
-
-<table>
-  <tr>
-    <th colspan="2">Measure</th>
-  </tr>
-  <tr>
-    <td>COUNT</td>
-    <td></td>
-  </tr>
-  <tr>
-    <td>MIN, MAX, SUM of QUERY_TIME_COST</td>
-    <td>the time cost for the whole query</td>
-  </tr>
-  <tr>
-    <td>MAX, SUM of CALCITE_SIZE_RETURN</td>
-    <td>the row count of the result Calcite returns</td>
-  </tr>
-  <tr>
-    <td>MAX, SUM of STORAGE_SIZE_RETURN</td>
-    <td>the row count of the input to Calcite</td>
-  </tr>
-  <tr>
-    <td>MAX, SUM of CALCITE_SIZE_AGGREGATE_FILTER</td>
-    <td>the row count of Calcite aggregates and filters</td>
-  </tr>
-  <tr>
-    <td>COUNT DISTINCT of QUERY_HASH_CODE</td>
-    <td>the number of different queries</td>
-  </tr>
-</table>
-
-### METRICS_QUERY_RPC
-This Cube is for collecting query metrics at the lowest level. For a query, the related aggregation and filter can be pushed down to each rpc target server. The robustness of rpc target servers is the foundation for better serving queries. The details are as follows:
-
-<table>
-  <tr>
-    <th colspan="2">Dimension</th>
-  </tr>
-  <tr>
-    <td>HOST</td>
-    <td>the host of server for query engine</td>
-  </tr>
-  <tr>
-    <td>PROJECT</td>
-    <td></td>
-  </tr>
-  <tr>
-    <td>REALIZATION</td>
-    <td></td>
-  </tr>
-  <tr>
-    <td>RPC_SERVER</td>
-    <td>the rpc related target server</td>
-  </tr>
-  <tr>
-    <td>EXCEPTION</td>
-    <td>the exception of a rpc call. If no exception, "NULL" is used</td>
-  </tr>
-</table>
-
-<table>
-  <tr>
-    <th colspan="2">Measure</th>
-  </tr>
-  <tr>
-    <td>COUNT</td>
-    <td></td>
-  </tr>
-  <tr>
-    <td>MAX, SUM of CALL_TIME</td>
-    <td>the time cost of a rpc all</td>
-  </tr>
-  <tr>
-    <td>MAX, SUM of COUNT_SKIP</td>
-    <td>based on fuzzy filters or else, a few rows will be skiped. This indicates the skipped row count</td>
-  </tr>
-  <tr>
-    <td>MAX, SUM of SIZE_SCAN</td>
-    <td>the row count actually scanned</td>
-  </tr>
-  <tr>
-    <td>MAX, SUM of SIZE_RETURN</td>
-    <td>the row count actually returned</td>
-  </tr>
-  <tr>
-    <td>MAX, SUM of SIZE_AGGREGATE</td>
-    <td>the row count actually aggregated</td>
-  </tr>
-  <tr>
-    <td>MAX, SUM of SIZE_AGGREGATE_FILTER</td>
-    <td>the row count actually aggregated and filtered, = SIZE_SCAN - SIZE_RETURN</td>
-  </tr>
-</table>
-
-### METRICS_QUERY_CUBE
-This Cube is for collecting query metrics at the Cube level. The most important are cuboids related, which will serve for Cube planner. The details are as follows:
-
-<table>
-  <tr>
-    <th colspan="2">Dimension</th>
-  </tr>
-  <tr>
-    <td>CUBE_NAME</td>
-    <td></td>
-  </tr>
-  <tr>
-    <td>CUBOID_SOURCE</td>
-    <td>source cuboid parsed based on query and Cube design</td>
-  </tr>
-  <tr>
-    <td>CUBOID_TARGET</td>
-    <td>target cuboid already precalculated and served for source cuboid</td>
-  </tr>
-  <tr>
-    <td>IF_MATCH</td>
-    <td>whether source cuboid and target cuboid are equal</td>
-  </tr>
-  <tr>
-    <td>IF_SUCCESS</td>
-    <td>whether a query on this Cube is successful or not</td>
-  </tr>
-</table>
-
-<table>
-  <tr>
-    <th colspan="2">Measure</th>
-  </tr>
-  <tr>
-    <td>COUNT</td>
-    <td></td>
-  </tr>
-  <tr>
-    <td>MAX, SUM of STORAGE_CALL_COUNT</td>
-    <td>the number of rpc calls for a query hit on this Cube</td>
-  </tr>
-  <tr>
-    <td>MAX, SUM of STORAGE_CALL_TIME_SUM</td>
-    <td>sum of time cost for the rpc calls of a query</td>
-  </tr>
-  <tr>
-    <td>MAX, SUM of STORAGE_CALL_TIME_MAX</td>
-    <td>max of time cost among the rpc calls of a query</td>
-  </tr>
-  <tr>
-    <td>MAX, SUM of STORAGE_COUNT_SKIP</td>
-    <td>the sum of row count skipped for the related rpc calls</td>
-  </tr>
-  <tr>
-    <td>MAX, SUM of STORAGE_SIZE_SCAN</td>
-    <td>the sum of row count scanned for the related rpc calls</td>
-  </tr>
-  <tr>
-    <td>MAX, SUM of STORAGE_SIZE_RETURN</td>
-    <td>the sum of row count returned for the related rpc calls</td>
-  </tr>
-  <tr>
-    <td>MAX, SUM of STORAGE_SIZE_AGGREGATE</td>
-    <td>the sum of row count aggregated for the related rpc calls</td>
-  </tr>
-  <tr>
-    <td>MAX, SUM of STORAGE_SIZE_AGGREGATE_FILTER</td>
-    <td>the sum of row count aggregated and filtered for the related rpc calls, = STORAGE_SIZE_SCAN - STORAGE_SIZE_RETURN</td>
-  </tr>
-</table>
-
-### METRICS_JOB
-In kylin, there are mainly three types of job:
-- "BUILD",for building Cube segments from **HIVE**.
-- "MERGE",for merging Cube segments in **HBASE**.
-- "OPTIMIZE",for dynamically adjusting the precalculated cuboid tree base on the **base cuboid** in **HBASE**.
-
-This Cube is for collecting job metrics. The details are as follows:
-
-<table>
-  <tr>
-    <th colspan="2">Dimension</th>
-  </tr>
-  <tr>
-    <td>PROJECT</td>
-    <td></td>
-  </tr>
-  <tr>
-    <td>CUBE_NAME</td>
-    <td></td>
-  </tr>
-  <tr>
-    <td>JOB_TYPE</td>
-    <td></td>
-  </tr>
-  <tr>
-    <td>CUBING_TYPE</td>
-    <td>in kylin, there are two cubing algorithms, Layered & Fast(InMemory)</td>
-  </tr>
-</table>
-
-<table>
-  <tr>
-    <th colspan="2">Measure</th>
-  </tr>
-  <tr>
-    <td>COUNT</td>
-    <td></td>
-  </tr>
-  <tr>
-    <td>MIN, MAX, SUM of DURATION</td>
-    <td>the duration from a job start to finish</td>
-  </tr>
-  <tr>
-    <td>MIN, MAX, SUM of TABLE_SIZE</td>
-    <td>the size of data source in bytes</td>
-  </tr>
-  <tr>
-    <td>MIN, MAX, SUM of CUBE_SIZE</td>
-    <td>the size of created Cube segment in bytes</td>
-  </tr>
-  <tr>
-    <td>MIN, MAX, SUM of PER_BYTES_TIME_COST</td>
-    <td>= DURATION / TABLE_SIZE</td>
-  </tr>
-  <tr>
-    <td>MIN, MAX, SUM of WAIT_RESOURCE_TIME</td>
-    <td>a job may includes serveral MR(map reduce) jobs. Those MR jobs may wait because of lack of Hadoop resources.</td>
-  </tr>
-</table>
-
-### METRICS_JOB_EXCEPTION
-This Cube is for collecting job exception metrics. The details are as follows:
-
-<table>
-  <tr>
-    <th colspan="2">Dimension</th>
-  </tr>
-  <tr>
-    <td>PROJECT</td>
-    <td></td>
-  </tr>
-  <tr>
-    <td>CUBE_NAME</td>
-    <td></td>
-  </tr>
-  <tr>
-    <td>JOB_TYPE</td>
-    <td></td>
-  </tr>
-  <tr>
-    <td>CUBING_TYPE</td>
-    <td></td>
-  </tr>
-  <tr>
-    <td>EXCEPTION</td>
-    <td>when running a job, exceptions may happen. It's for classifying different exception types</td>
-  </tr>
-</table>
-
-<table>
-  <tr>
-    <th>Measure</th>
-  </tr>
-  <tr>
-    <td>COUNT</td>
-  </tr>
-</table>
diff --git a/website/_docs23/howto/howto_use_cube_planner.md b/website/_docs23/howto/howto_use_cube_planner.md
deleted file mode 100644
index 7596e1e..0000000
--- a/website/_docs23/howto/howto_use_cube_planner.md
+++ /dev/null
@@ -1,142 +0,0 @@
----
-layout: docs23
-title:  Use Cube Planner
-categories: howto
-permalink: /docs23/howto/howto_use_cube_planner.html
----
-
-> Available since Apache Kylin v2.3.0
-
-# Cube Planner
-
-## What is Cube Planner
-
-OLAP solution trades off online query speed with offline Cube build cost (compute resource to build Cube and storage resource to save the Cube data). Resource efficiency is the most important competency of OLAP engine. To be resource efficient, It is critical to just pre-build the most valuable cuboids.
-
-Cube Planner makes Apache Kylin to be more resource efficient. It intelligently build a partial Cube to minimize the cost of building a Cube and at the same time maximize the benefit of serving end user queries, then learn patterns from queries at runtime and dynamically recommend cuboids accordingly. 
-
-![CubePlanner](/images/CubePlanner/CubePlanner.png)
-
-## Prerequisites
-
-To enable Dashboard on WebUI, you need to set **kylin.cube.cubeplanner.enabled=true** and other properties in **kylin.properties**.
-
-
-{% highlight Groff markup %}
-kylin.cube.cubeplanner.enabled=true
-kylin.server.query-metrics2-enabled=true
-kylin.metrics.reporter-query-enabled=true
-kylin.metrics.reporter-job-enabled=true
-kylin.metrics.monitor-enabled=true
-{% endhighlight %}
-
-## How to use it
-
-*Note: Cube planner optimization is not suitable for new Cube. Cube should be online on production for a while (like 3 months) before optimizing it. So that Kylin platform collects enough real queries from end user and use them to optimize the Cube.*  
-
-#### Step 1:
-
-​	Select a Cube
-
-#### Step 2:
-
-1. Click the '**Planner**' button to view the '**Current Cuboid Distribution**' of the Cube.
-
-  You should make sure the status of the Cube is '**READY**'![Status_Ready](/images/CubePlanner/Status_Ready.png).
-
-  If the status of the Cube is '**DISABLED**'![Status_Disabled](/images/CubePlanner/Status_Disabled.png), you will not be able to use the Cube planner.
-
-  ​
-
-  You should change the status of the Cube from '**DISABLED**' to '**READY**' by clicking the '**Enable**' button.
-
-  ![DISABLED2READY](/images/CubePlanner/DISABLED2READY.png)
-
-#### Step 3:
-
-a. Click the '**Planner**' button to view the '**Current Cuboid Distribution**' of the Cube.
-
-- The data will be displayed in *[Sunburst Chart](https://en.wikipedia.org/wiki/Pie_chart#Ring_chart_.2F_Sunburst_chart_.2F_Multilevel_pie_chart)*. 
-
-- Each part refers to a cuboid, is shown in different colors determined by the query **frequency** against this cuboid.
-
-     ![CubePlanner](/images/CubePlanner/CP.png)
-
-
--  You can move the cursor over the chart and it will display the detail information of the cuboid.
-
-   The detail information contains 5 attributes, '**Name**', '**ID**', '**Query Count**', '**Exactly Match Count**', '**Row Count**' and '**Rollup Rate**'. 
-
-   Cuboid **Name** is composed of several '0' or '1'. It means a combination of dimensions. '0' means the dimension doesn't exist in this combination, while '1' means the dimension exist in the combination. All the dimensions are ordered by the HBase row keys in advanced settings. 
-
-   Here is an example: 
-
-   ![CubePlanner](/images/CubePlanner/Leaf.png)
-
-   Name:1111111110000000 means the dimension combination is ["MONTH_BEG_DT","USER_CNTRY_SITE_CD","RPRTD_SGMNT_VAL","RPRTD_IND","SRVY_TYPE_ID","QSTN_ID","L1_L2_IND","PRNT_L1_ID","TRANCHE_ID"] based on the row key orders below:
-
-   ![CubePlanner](/images/CubePlanner/Rowkeys.png)
-
-   **ID** is the unique id of the cuboid.
-
-   **Query Count** is the total count of the queries that are served by this cuboid, including those queries that against other un-precalculated cuboids, but on line aggregated from this cuboid.  
-
-   **Exactly Match Count** is the query count that the query is actually against this cuboid.
-
-   **Row Count** is the total row count of all the segments for this cuboid.
-
-   **Rollup Rate** = (Cuboid's Row Count/its parent cuboid's Row Count) * 100%  
-
--  The center of the sunburst chart contains the combined information of  basic cuboid. its '**Name**' is composed of several '1's.
-
-![Root](/images/CubePlanner/Root.png)
-
-As for a leaf, its '**Name**' is composed of several '0's and 1's. 
-
-![Leaf](/images/CubePlanner/Leaf.png)
-
--    If you want to **specify** a leaf, just **click on** it. The view will change automatically.
-
-     ![Leaf-Specify](/images/CubePlanner/Leaf-Specify.png)
-
--    If you want to specify the parent leaf of a leaf, click on the **center circle** (the part marked yellow).
-
-![Leaf-Specify-Parent](/images/CubePlanner/Leaf-Specify-Parent.png)
-
-b. Click the '**Recommend**' button to view the '**Recommend Cuboid Distribution**' of the Cube.
-
-If the Cube is currently under building![Running](/images/CubePlanner/Running.png), the Cube planner '**Recommend**' function will not be able to perform correctly. Please first **stop the building progress** of the Cube.
-
--  The data will be calculated by unique algorithms. It is common to see this window.
-
-   ![Recommending](/images/CubePlanner/Recommending.png)
-
--  The data will be displayed in *[Sunburst Chart](https://en.wikipedia.org/wiki/Pie_chart#Ring_chart_.2F_Sunburst_chart_.2F_Multilevel_pie_chart)*.
-
-   - Each part is shown in different colors determined by the **frequency**.
-
-![CubePlanner_Recomm](/images/CubePlanner/CPRecom.png)
-
-- Detailed operation of the '**Recommend Cuboid Distribution**' chart is the same as '**Current Cuboid Distribution**' chart.
-- User is able to tell the dimension names from a cuboid when mouse hovers over the sunburst chart as figure shown below.
-- User is able to click **'Export'** to export hot dimension combinations (TopN cuboids, currently including options of Top 10, Top 50, Top 100) from an existing Cube as a json file, which will be downloaded to your local file system for recording or future import of dimension combinations when creating Cube.
-
-![export cuboids](/images/CubePlanner/export_cuboids.png)
-
-c. Click the '**Optimize**' button to optimize the Cube.
-
-- A window will jump up to ensure your decision.
-
-  ​	![CubePlanner_Optimize](/images/CubePlanner/CubePlanner_Optimize.png)
-
-  Click '**Yes**' to start the optimization.
-
-  Click '**Cancel**' to give up the optimization.
-
-- User is able to get to know the last optimized time of the Cube in Cube Planner tab page. 
-
-![column name+optimize time](/images/CubePlanner/column_name+optimize_time.png)
-
-- User is able to receive an email notification for a Cube optimization job.
-
-![optimize email](/images/CubePlanner/optimize_email.png)
diff --git a/website/_docs23/howto/howto_use_dashboard.md b/website/_docs23/howto/howto_use_dashboard.md
deleted file mode 100644
index 00025ba..0000000
--- a/website/_docs23/howto/howto_use_dashboard.md
+++ /dev/null
@@ -1,110 +0,0 @@
----
-layout: docs23
-title:  Use Dashboard
-categories: howto
-permalink: /docs23/howto/howto_use_dashboard.html
----
-
-> Available since Apache Kylin v2.3.0
-
-# Dashboard
-
-As a project owner, do you want to know your Cube usage metrics? Do you want to know how many queries are against your Cube every day? What is the AVG query latency? Do you want to know the AVG Cube build time per GB source data, which is very helpful to foresee the time cost of a coming Cube build job? You can find all information from Kylin Dashboard. 
-
-Kylin Dashboard shows useful Cube usage statistics, which are very important to users.
-
-## Prerequisites
-
-To enable Dashboard on WebUI, you need to ensure these are all set:
-* Set **kylin.web.dashboard-enabled=true** in **kylin.properties**.
-* Setup system Cubes according to [toturial](howto_setup_systemcube.html).
-
-## How to use it
-
-#### Step 1:
-
-​	Click the '**Dashboard**' button on the navigation bar.
-
-​	There are 9 boxes on this page which you can operate.
-
-​	The boxes represent different attributes, including '**Time Period**','**Total Cube Count**', '**Avg Cube Expansion**', '**Query Count**', '**Average Query Latency**', '**Job Count**', '**Average Build Time per MB**', '**Data grouped by Project**' and '**Data grouped by Time**'. 
-
-![Kylin Dashboard](/images/Dashboard/QueryCount.jpg)
-
-#### Step 2:
-
-You should now click on the calender to modify the '**Time Period**'.
-
-![SelectPeriod](/images/Dashboard/SelectPeriod.png)
-
-- '**Time period**' is set deafult to **'Last 7 Days**'.
-
-- There are **2** ways to modify the time period, one is *using standard time period*s and the other is *customizing your time period*.
-
-  1. If you want to *use standard time periods*, you can click on '**Last 7 Days**' to choose data only from last 7 days, or click on '**This Month**' to choose data only from this month, or click on '**Last Month**' to choose data only from last month. 
-
-  2. If you want to *customize your time period*, you can click on '**Custom Range**'.
-
-     There are **2** ways to customize the time period, one is *typing dates in the textfield* and the other is *selecting dates in the calender*.
-
-     1. If you want to *type dates in the textfield*, please make sure that both dates are valid.
-     2. If you want to *select dates in the calender*, please make sure that you have clicked on two specific dates.
-
-- After you have modified the time period, click '**Apply**' to apply the changes, click '**Cancel**' to give up the changes.
-
-#### Step 3:
-
-Now the data analysis will be changed and shown on the same page. (Important information has been pixilated.)
-
-- Numbers in '**Total Cube Count**' and '**Avg Cube Expansion**' are in **Blue**.
-
-  You can click the '**More Details**' in these two boxes and you will be led to the '**Model**' page. 
-
-  ![Cube-Info-Page](/images/Dashboard/Cube-Info-Page.png)
-
-
-- Numbers in '**Query Count**', '**Average Query Latency**', '**Job Count**' and '**Average Build Time per MB**' are in **Green**.
-
-  You can click on these four rectangles to get detail infomation about the data you selected. The detail information will then be shown as diagrams and displayed in '**Data grouped by Project**' and '**Data grouped by Time**' boxes.
-
-  1. '**Query Count**' and '**Average Query Latency**'
-
-     You can click on '**Query Count**' to get detail infomation. 
-
-     ![QueryCount](/images/Dashboard/QueryCount.jpg)
-
-     You can click on '**Average Query Latency**' to get detail infomation. 
-
-     ![AVG-Query-Latency](/images/Dashboard/AVGQueryLatency.jpg)
-
-     You can click the '**More Details**' in these two boxes and you will be led to the '**Insight**' page. 
-
-     ![Query-Link-Page](/images/Dashboard/Query-Link-Page.png)
-
-  2. '**Job Count**' and '**Average Build Time per MB**'
-
-     You can click on '**Job Count**' to get detail infomation. 
-
-     ![Job-Count](/images/Dashboard/JobCount.jpg)
-
-     You can click on '**Average Build Time per MB**' to get detail information. 
-
-     ![AVG-Build-Time](/images/Dashboard/AVGBuildTimePerMB.jpg)
-
-     You can click the '**More Details**' in these two boxes and you will be led to the '**Monitor**' page.
-
-     ![Job-Link-Page](/images/Dashboard/Job-Link-Page.png)
-
-     It is common to see the browser showing 'Please wait...'.
-
-     ![Job-Link-Page-Waiting](/images/Dashboard/Job-Link-Page-Waiting.png)
-
-#### Step 4:
-
-**Advanced Operations**
-
-'**Data grouped by Project**' and '**Data grouped by Time**' displayed data in the form of diagram.
-
-There is a radio button called '**showValue**' in '**Data grouped by Project**', you can choose to show number in the diagram.
-
-There is a radio drop-down menu in '**Data grouped by Time**', you can choose to show the diagram in different timelines.