Repository: kylin
Updated Branches:
  refs/heads/document 6616266d0 -> 59913167a


http://git-wip-us.apache.org/repos/asf/kylin/blob/59913167/website/_docs16/tutorial/create_cube.md
----------------------------------------------------------------------
diff --git a/website/_docs16/tutorial/create_cube.md 
b/website/_docs16/tutorial/create_cube.md
new file mode 100644
index 0000000..25b304f
--- /dev/null
+++ b/website/_docs16/tutorial/create_cube.md
@@ -0,0 +1,198 @@
+---
+layout: docs16
+title:  Kylin Cube Creation
+categories: tutorial
+permalink: /docs16/tutorial/create_cube.html
+---
+
+This tutorial will guide you to create a cube. It need you have at least 1 
sample table in Hive. If you don't have, you can follow this to create some 
data.
+  
+### I. Create a Project
+1. Go to `Query` page in top menu bar, then click `Manage Projects`.
+
+   ![]( /images/tutorial/1.5/Kylin-Cube-Creation-Tutorial/1 manage-prject.png)
+
+2. Click the `+ Project` button to add a new project.
+
+   ![]( /images/tutorial/1.5/Kylin-Cube-Creation-Tutorial/2 +project.png)
+
+3. Enter a project name, e.g, "Tutorial", with a description (optional), then 
click `submit` button to send the request.
+
+   ![]( /images/tutorial/1.5/Kylin-Cube-Creation-Tutorial/3 new-project.png)
+
+4. After success, the project will show in the table.
+
+   ![]( /images/tutorial/1.5/Kylin-Cube-Creation-Tutorial/3.1 pj-created.png)
+
+### II. Sync up Hive Table
+1. Click `Model` in top bar and then click `Data Source` tab in the left part, 
it lists all the tables loaded into Kylin; click `Load Hive Table` button.
+
+   ![]( /images/tutorial/1.5/Kylin-Cube-Creation-Tutorial/4 +table.png)
+
+2. Enter the hive table names, separated with commad, and then click `Sync` to 
send the request.
+
+   ![]( /images/tutorial/1.5/Kylin-Cube-Creation-Tutorial/5 hive-table.png)
+
+3. [Optional] If you want to browser the hive database to pick tables, click 
the `Load Hive Table From Tree` button.
+
+   ![]( /images/tutorial/1.5/Kylin-Cube-Creation-Tutorial/4 +table-tree.png)
+
+4. [Optional] Expand the database node, click to select the table to load, and 
then click `Sync`.
+
+   ![]( /images/tutorial/1.5/Kylin-Cube-Creation-Tutorial/5 
hive-table-tree.png)
+
+5. A success message will pop up. In the left `Tables` section, the newly 
loaded table is added. Click the table name will expand the columns.
+
+   ![]( /images/tutorial/1.5/Kylin-Cube-Creation-Tutorial/5 
hive-table-info.png)
+
+6. In the background, Kylin will run a MapReduce job to calculate the 
approximate cardinality for the newly synced table. After the job be finished, 
refresh web page and then click the table name, the cardinality will be shown 
in the table info.
+
+   ![]( /images/tutorial/1.5/Kylin-Cube-Creation-Tutorial/5 
hive-table-cardinality.png)
+
+
+### III. Create Data Model
+Before create a cube, need define a data model. The data model defines the 
star schema. One data model can be reused in multiple cubes.
+
+1. Click `Model` in top bar, and then click `Models` tab. Click `+New` button, 
in the drop-down list select `New Model`.
+
+    ![]( /images/tutorial/1.5/Kylin-Cube-Creation-Tutorial/6 +model.png)
+
+2. Enter a name for the model, with an optional description.
+
+    ![]( /images/tutorial/1.5/Kylin-Cube-Creation-Tutorial/6 model-name.png)
+
+3. In the `Fact Table` box, select the fact table of this data model.
+
+    ![]( /images/tutorial/1.5/Kylin-Cube-Creation-Tutorial/6 
model-fact-table.png)
+
+4. [Optional] Click `Add Lookup Table` button to add a lookup table. Select 
the table name and join type (inner or left).
+
+    ![]( /images/tutorial/1.5/Kylin-Cube-Creation-Tutorial/6 
model-lookup-table.png)
+
+5. [Optional] Click `New Join Condition` button, select the FK column of fact 
table in the left, and select the PK column of lookup table in the right side. 
Repeat this if have more than one join columns.
+
+    ![]( /images/tutorial/1.5/Kylin-Cube-Creation-Tutorial/6 
model-join-condition.png)
+
+6. Click "OK", repeat step 4 and 5 to add more lookup tables if any. After 
finished, click "Next".
+
+7. The "Dimensions" page allows to select the columns that will be used as 
dimension in the child cubes. Click the `Columns` cell of a table, in the 
drop-down list select the column to the list. 
+
+    ![]( /images/tutorial/1.5/Kylin-Cube-Creation-Tutorial/6 
model-dimensions.png)
+
+8. Click "Next" go to the "Measures" page, select the columns that will be 
used in measure/metrics. The measure column can only from fact table. 
+
+    ![]( /images/tutorial/1.5/Kylin-Cube-Creation-Tutorial/6 
model-measures.png)
+
+9. Click "Next" to the "Settings" page. If the data in fact table increases by 
day, select the corresponding date column in the `Partition Date Column`, and 
select the date format, otherwise leave it as blank.
+
+10. [Optional] Select `Cube Size`, which is an indicator on the scale of the 
cube, by default it is `MEDIUM`.
+
+11. [Optional] If some records want to excluded from the cube, like dirty 
data, you can input the condition in `Filter`.
+
+
+    ![]( /images/tutorial/1.5/Kylin-Cube-Creation-Tutorial/6 
model-partition-column.png)
+
+12. Click `Save` and then select `Yes` to save the data model. After created, 
the data model will be shown in the left `Models` list.
+
+    ![]( /images/tutorial/1.5/Kylin-Cube-Creation-Tutorial/6 model-created.png)
+
+### IV. Create Cube
+After the data model be created, you can start to create cube. 
+
+Click `Model` in top bar, and then click `Models` tab. Click `+New` button, in 
the drop-down list select `New Cube`.
+    ![]( /images/tutorial/1.5/Kylin-Cube-Creation-Tutorial/7 new-cube.png)
+
+
+**Step 1. Cube Info**
+
+Select the data model, enter the cube name; Click `Next` to enter the next 
step.
+
+You can use letters, numbers and '_' to name your cube (blank space in name is 
not allowed). `Notification List` is a list of email addresses which be 
notified on cube job success/failure.
+    ![]( /images/tutorial/1.5/Kylin-Cube-Creation-Tutorial/7 cube-info.png)
+    
+
+**Step 2. Dimensions**
+
+1. Click `Add Dimension`, it popups two option: "Normal" and "Derived": 
"Normal" is to add a normal independent dimension column, "Derived" is to add a 
derived dimension column. Read more in [How to optimize 
cubes](/docs15/howto/howto_optimize_cubes.html).
+
+2. Click "Normal" and then select a dimension column, give it a meaningful 
name.
+
+    ![]( /images/tutorial/1.5/Kylin-Cube-Creation-Tutorial/7 
cube-dimension-normal.png)
+    
+3. [Optional] Click "Derived" and then pickup 1 more multiple columns on 
lookup table, give them a meaningful name.
+
+   ![]( /images/tutorial/1.5/Kylin-Cube-Creation-Tutorial/7 
cube-dimension-derived.png)
+
+4. Repeate 2 and 3 to add all dimension columns; you can do this in batch for 
"Normal" dimension with the button `Auto Generator`. 
+
+   ![]( /images/tutorial/1.5/Kylin-Cube-Creation-Tutorial/7 
cube-dimension-batch.png)
+
+5. Click "Next" after select all dimensions.
+
+**Step 3. Measures**
+
+1. Click the `+Measure` to add a new measure.
+   ![]( /images/tutorial/1.5/Kylin-Cube-Creation-Tutorial/8 meas-+meas.png)
+
+2. There are 6 types of measure according to its expression: `SUM`, `MAX`, 
`MIN`, `COUNT`, `COUNT_DISTINCT` and `TOP_N`. Properly select the return type 
for `COUNT_DISTINCT` and `TOP_N`, as it will impact on the cube size.
+   * SUM
+
+     ![]( /images/tutorial/1.5/Kylin-Cube-Creation-Tutorial/8 measure-sum.png)
+
+   * MIN
+
+     ![]( /images/tutorial/1.5/Kylin-Cube-Creation-Tutorial/8 measure-min.png)
+
+   * MAX
+
+     ![]( /images/tutorial/1.5/Kylin-Cube-Creation-Tutorial/8 measure-max.png)
+
+   * COUNT
+
+     ![]( /images/tutorial/1.5/Kylin-Cube-Creation-Tutorial/8 
measure-count.png)
+
+   * DISTINCT_COUNT
+   This measure has two implementations: 
+   a) approximate implementation with HyperLogLog, select an acceptable error 
rate, lower error rate will take more storage.
+   b) precise implementation with bitmap (see limitation in 
https://issues.apache.org/jira/browse/KYLIN-1186). 
+
+     ![]( /images/tutorial/1.5/Kylin-Cube-Creation-Tutorial/8 
measure-distinct.png)
+
+   Pleaste note: distinct count is a very heavy data type, it is slower to 
build and query comparing to other measures.
+
+   * TOP_N
+   Approximate TopN measure pre-calculates the top records in each dimension 
combination, it will provide higher performance in query time than no 
pre-calculation; Need specify two parameters here: the first is the column will 
be used as metrics for Top records (aggregated with SUM and then sorted in 
descending order); the second is the literal ID, represents the record like 
seller_id;
+
+   Properly select the return type, depends on how many top records to 
inspect: top 10, top 100 or top 1000. 
+
+     ![]( /images/tutorial/1.5/Kylin-Cube-Creation-Tutorial/8 measure-topn.png)
+
+
+**Step 4. Refresh Setting**
+
+This step is designed for incremental cube build. 
+
+`Auto Merge Time Ranges (days)`: merge the small segments into medium and 
large segment automatically. If you don't want to auto merge, remove the 
default two ranges.
+
+`Retention Range (days)`: only keep the segment whose data is in past given 
days in cube, the old segment will be automatically dropped from head; 0 means 
not enable this feature.
+
+`Partition Start Date`: the start date of this cube.
+
+![]( /images/tutorial/1.5/Kylin-Cube-Creation-Tutorial/9 refresh-setting1.png)
+
+**Step 5. Advanced Setting**
+
+`Aggregation Groups`: by default Kylin put all dimensions into one aggregation 
group; you can create multiple aggregation groups by knowing well about your 
query patterns. For the concepts of "Mandatory Dimensions", "Hierarchy 
Dimensions" and "Joint Dimensions", read this blog: [New Aggregation 
Group](/blog/2016/02/18/new-aggregation-group/)
+
+`Rowkeys`: the rowkeys are composed by the dimension encoded values. 
"Dictionary" is the default encoding method; If a dimension is not fit with 
dictionary (e.g., cardinality > 10 million), select "false" and then enter the 
fixed length for that dimension, usually that is the max. length of that 
column; if a value is longer than that size it will be truncated. Please note, 
without dictionary encoding, the cube size might be much bigger.
+
+You can drag & drop a dimension column to adjust its position in rowkey; Put 
the mandantory dimension at the begining, then followed the dimensions that 
heavily involved in filters (where condition). Put high cardinality dimensions 
ahead of low cardinality dimensions.
+
+
+**Step 6. Overview & Save**
+
+You can overview your cube and go back to previous step to modify it. Click 
the `Save` button to complete the cube creation.
+
+![]( /images/tutorial/1.5/Kylin-Cube-Creation-Tutorial/10 overview.png)
+
+Cheers! now the cube is created, you can go ahead to build and play it.

http://git-wip-us.apache.org/repos/asf/kylin/blob/59913167/website/_docs16/tutorial/cube_build_job.cn.md
----------------------------------------------------------------------
diff --git a/website/_docs16/tutorial/cube_build_job.cn.md 
b/website/_docs16/tutorial/cube_build_job.cn.md
new file mode 100644
index 0000000..8a8822c
--- /dev/null
+++ b/website/_docs16/tutorial/cube_build_job.cn.md
@@ -0,0 +1,66 @@
+---
+layout: docs16-cn
+title:  Kylin Cube 建立和Job监控教程
+categories: 教程
+permalink: /cn/docs16/tutorial/cube_build_job.html
+version: v1.2
+since: v0.7.1
+---
+
+### Cube建立
+首先,确认你拥有你想要建立的cube的权限。
+
+1. 在`Cubes`页面中,点击cubeæ 
å³ä¾§çš„`Action`下拉按钮并选择`Build`操作。
+
+   ![]( /images/Kylin-Cube-Build-and-Job-Monitoring-Tutorial/1 
action-build.png)
+
+2. 选择后会出现一个弹出窗口。
+
+   ![]( /images/Kylin-Cube-Build-and-Job-Monitoring-Tutorial/2 pop-up.png)
+
+3. 点击`END DATE`输入框选择增量构建这个cube的结束日期。
+
+   ![]( /images/Kylin-Cube-Build-and-Job-Monitoring-Tutorial/3 end-date.png)
+
+4. 点击`Submit`提交请求。
+
+   ![]( /images/Kylin-Cube-Build-and-Job-Monitoring-Tutorial/4 submit.png)
+
+   ![]( /images/Kylin-Cube-Build-and-Job-Monitoring-Tutorial/4.1 success.png)
+
+   提交请求成功后,你将会看到`Jobs`页面新建了job。
+
+   ![]( /images/Kylin-Cube-Build-and-Job-Monitoring-Tutorial/5 jobs-page.png)
+
+5. 如要放弃这个job,点击`Discard`按钮。
+
+   ![]( /images/Kylin-Cube-Build-and-Job-Monitoring-Tutorial/6 discard.png)
+
+### Job监控
+在`Jobs`页面,点击job详情按钮查看显示于右侧的详细信息。
+
+![]( /images/Kylin-Cube-Build-and-Job-Monitoring-Tutorial/7 job-steps.png)
+
+job详细信息为跟踪一个job提供了它的每一步记录。你
可以将光标停放在一个步骤状态图æ 
‡ä¸ŠæŸ¥çœ‹åŸºæœ¬çŠ¶æ€å’Œä¿¡æ¯ã€‚
+
+![]( /images/Kylin-Cube-Build-and-Job-Monitoring-Tutorial/8 hover-step.png)
+
+点击每个步骤显示的图标按钮查看详情
:`Parameters`、`Log`、`MRJob`、`EagleMonitoring`。
+
+* Parameters
+
+   ![]( /images/Kylin-Cube-Build-and-Job-Monitoring-Tutorial/9 parameters.png)
+
+   ![]( /images/Kylin-Cube-Build-and-Job-Monitoring-Tutorial/9 
parameters-d.png)
+
+* Log
+        
+   ![]( /images/Kylin-Cube-Build-and-Job-Monitoring-Tutorial/9 log.png)
+
+   ![]( /images/Kylin-Cube-Build-and-Job-Monitoring-Tutorial/9 log-d.png)
+
+* MRJob(MapReduce Job)
+
+   ![]( /images/Kylin-Cube-Build-and-Job-Monitoring-Tutorial/9 mrjob.png)
+
+   ![]( /images/Kylin-Cube-Build-and-Job-Monitoring-Tutorial/9 mrjob-d.png)

http://git-wip-us.apache.org/repos/asf/kylin/blob/59913167/website/_docs16/tutorial/cube_build_job.md
----------------------------------------------------------------------
diff --git a/website/_docs16/tutorial/cube_build_job.md 
b/website/_docs16/tutorial/cube_build_job.md
new file mode 100644
index 0000000..b19ef5a
--- /dev/null
+++ b/website/_docs16/tutorial/cube_build_job.md
@@ -0,0 +1,67 @@
+---
+layout: docs16
+title:  Kylin Cube Build and Job Monitoring
+categories: tutorial
+permalink: /docs16/tutorial/cube_build_job.html
+---
+
+### Cube Build
+First of all, make sure that you have authority of the cube you want to build.
+
+1. In `Models` page, click the `Action` drop down button in the right of a 
cube column and select operation `Build`.
+
+   ![](/images/tutorial/1.5/Kylin-Cube-Build-and-Job-Monitoring-Tutorial/1 
action-build.png)
+
+2. There is a pop-up window after the selection, click `END DATE` input box to 
select end date of this incremental cube build.
+
+   ![](/images/tutorial/1.5/Kylin-Cube-Build-and-Job-Monitoring-Tutorial/3 
end-date.png)
+
+4. Click `Submit` to send the build request. After success, you will see the 
new job in the `Monitor` page.
+
+   ![](/images/tutorial/1.5/Kylin-Cube-Build-and-Job-Monitoring-Tutorial/4 
jobs-page.png)
+
+5. The new job is in "pending" status; after a while, it will be started to 
run and you will see the progress by refresh the web page or click the refresh 
button.
+
+   ![](/images/tutorial/1.5/Kylin-Cube-Build-and-Job-Monitoring-Tutorial/5 
job-progress.png)
+
+
+6. Wait the job to finish. In the between if you want to discard it, click 
`Actions` -> `Discard` button.
+
+   ![](/images/tutorial/1.5/Kylin-Cube-Build-and-Job-Monitoring-Tutorial/6 
discard.png)
+
+7. After the job is 100% finished, the cube's status becomes to "Ready", means 
it is ready to serve SQL queries. In the `Model` tab, find the cube, click cube 
name to expand the section, in the "HBase" tab, it will list the cube segments. 
Each segment has a start/end time; Its underlying HBase table information is 
also listed.
+
+   ![](/images/tutorial/1.5/Kylin-Cube-Build-and-Job-Monitoring-Tutorial/10 
cube-segment.png)
+
+If you have more source data, repeate the steps above to build them into the 
cube.
+
+### Job Monitoring
+In the `Monitor` page, click the job detail button to see detail information 
show in the right side.
+
+![](/images/tutorial/1.5/Kylin-Cube-Build-and-Job-Monitoring-Tutorial/7 
job-steps.png)
+
+The detail information of a job provides a step-by-step record to trace a job. 
You can hover a step status icon to see the basic status and information.
+
+![](/images/tutorial/1.5/Kylin-Cube-Build-and-Job-Monitoring-Tutorial/8 
hover-step.png)
+
+Click the icon buttons showing in each step to see the details: `Parameters`, 
`Log`, `MRJob`.
+
+* Parameters
+
+   ![](/images/tutorial/1.5/Kylin-Cube-Build-and-Job-Monitoring-Tutorial/9 
parameters.png)
+
+   ![](/images/tutorial/1.5/Kylin-Cube-Build-and-Job-Monitoring-Tutorial/9 
parameters-d.png)
+
+* Log
+        
+   ![](/images/tutorial/1.5/Kylin-Cube-Build-and-Job-Monitoring-Tutorial/9 
log.png)
+
+   ![](/images/tutorial/1.5/Kylin-Cube-Build-and-Job-Monitoring-Tutorial/9 
log-d.png)
+
+* MRJob(MapReduce Job)
+
+   ![](/images/tutorial/1.5/Kylin-Cube-Build-and-Job-Monitoring-Tutorial/9 
mrjob.png)
+
+   ![](/images/tutorial/1.5/Kylin-Cube-Build-and-Job-Monitoring-Tutorial/9 
mrjob-d.png)
+
+

http://git-wip-us.apache.org/repos/asf/kylin/blob/59913167/website/_docs16/tutorial/cube_streaming.md
----------------------------------------------------------------------
diff --git a/website/_docs16/tutorial/cube_streaming.md 
b/website/_docs16/tutorial/cube_streaming.md
new file mode 100644
index 0000000..3202810
--- /dev/null
+++ b/website/_docs16/tutorial/cube_streaming.md
@@ -0,0 +1,225 @@
+---
+layout: docs16
+title:  Scalable Cubing from Streaming (Kafka)
+categories: tutorial
+permalink: /docs16/tutorial/cube_streaming.html
+---
+Kylin v1.6 releases the scalable streaming cubing function, it leverages 
Hadoop to consume the data from Kafka to build the cube, you can check [this 
blog](/blog/2016/10/18/new-nrt-streaming/) for the high level design. This doc 
is a step by step tutorial, illustrating how to create and build a sample cube;
+
+## Preparation
+To finish this tutorial, you need a Hadoop environment which has kylin v1.6.0 
or above installed, and also have a Kafka (v0.10.0 or above) running; Previous 
Kylin version has a couple issues so please upgrade your Kylin instance at 
first.
+
+In this tutorial, we will use Hortonworks HDP 2.2.4 Sandbox VM + Kafka 
v0.10.0(Scala 2.10) as the environment.
+
+## Install Kafka 0.10.0.0 and Kylin
+Don't use HDP 2.2.4's build-in Kafka as it is too old, stop it first if it is 
running.
+{% highlight Groff markup %}
+curl -s 
http://mirrors.tuna.tsinghua.edu.cn/apache/kafka/0.10.0.0/kafka_2.10-0.10.0.0.tgz
 | tar -xz -C /usr/hdp/current/
+
+cd /usr/hdp/current/kafka_2.10-0.10.0.0/
+
+bin/kafka-server-start.sh config/server.properties &
+
+{% endhighlight %}
+
+Download the Kylin v1.6 from download page, expand the tar ball in /root/ 
folder.
+
+{% highlight Groff markup %}
+
+
+{% endhighlight %}
+
+
+## Create sample Kafka topic and populate data
+
+Create a sample topic "kylindemo", with 3 partitions:
+
+{% highlight Groff markup %}
+
+bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 
--partitions 3 --topic kylindemo
+Created topic "kylindemo".
+{% endhighlight %}
+
+Put sample data to this topic; Kylin has an utility class which can do this;
+
+{% highlight Groff markup %}
+export KAFKA_HOME=/usr/hdp/current/kafka_2.10-0.10.0.0
+export KYLIN_HOME=/root/apache-kylin-1.6.0-SNAPSHOT-bin
+
+cd $KYLIN_HOME
+./bin/kylin.sh org.apache.kylin.source.kafka.util.KafkaSampleProducer --topic 
kylindemo --broker localhost:9092
+{% endhighlight %}
+
+This tool will send 100 records to Kafka every second. Please keep it running 
during this tutorial. You can check the sample message with 
kafka-console-consumer.sh now:
+
+{% highlight Groff markup %}
+cd $KAFKA_HOME
+bin/kafka-console-consumer.sh --zookeeper localhost:2181 --bootstrap-server 
localhost:9092 --topic kylindemo --from-beginning
+{"amount":63.50375137330458,"category":"TOY","order_time":1477415932581,"device":"Other","qty":4,"user":{"id":"bf249f36-f593-4307-b156-240b3094a1c3","age":21,"gender":"Male"},"currency":"USD","country":"CHINA"}
+{"amount":22.806058795736583,"category":"ELECTRONIC","order_time":1477415932591,"device":"Andriod","qty":1,"user":{"id":"00283efe-027e-4ec1-bbed-c2bbda873f1d","age":27,"gender":"Female"},"currency":"USD","country":"INDIA"}
+
+ {% endhighlight %}
+
+## Define a table from streaming
+Start Kylin server with "$KYLIN_HOME/bin/kylin.sh start", login Kylin Web GUI 
at http://sandbox:7070/kylin/, select an existing project or create a new 
project; Click "Model" -> "Data Source", then click the icon "Add Streaming 
Table";
+
+   
![](/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/1_Add_streaming_table.png)
+
+In the pop-up dialogue, enter a sample record which you got from the 
kafka-console-consumer, click the ">>" button, Kylin parses the JSON message 
and listS all the properties;
+
+You need give a logic table name for this streaming data source; The name will 
be used for SQL query later; here enter "STREAMING_SALES_TABLE" as an example 
in the "Table Name" field.
+
+You need select a timestamp field which will be used to identify the time of a 
message; Kylin can derive other time values like "year_start", "quarter_start" 
from this time column, which can give your more flexibility on building and 
querying the cube. Here check "order_time". You can deselect those properties 
which are not needed for cube. Here let's keep all fields.
+
+Notice that Kylin supports structured (or say "embedded") message from v1.6, 
it will convert them into a flat table structure. By default use "_" as the 
separator of the structed properties.
+
+   
![](/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/2_Define_streaming_table.png)
+
+
+Click "Next". On this page, provide the Kafka cluster information; Enter 
"kylindemo" as "Topic" name; The cluster has 1 broker, whose host name is 
"sandbox", port is "9092", click "Save".
+
+   ![](/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/3_Kafka_setting.png)
+
+In "Advanced setting" section, the "timeout" and "buffer size" are the 
configurations for connecting with Kafka, keep them. 
+
+In "Parser Setting", by default Kylin assumes your message is JSON format, and 
each record's timestamp column (specified by "tsColName") is a bigint (epoch 
time) value; in this case, you just need set the "tsColumn" to "order_time"; 
+
+![](/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/3_Paser_setting.png)
+
+In real case if the timestamp value is a string valued timestamp like "Jul 20, 
2016 9:59:17 AM", you need specify the parser class with "tsParser" and the 
time pattern with "tsPattern" like this:
+
+
+![](/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/3_Paser_time.png)
+
+Click "Submit" to save the configurations. Now a "Streaming" table is created.
+
+![](/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/4_Streaming_table.png)
+
+## Define data model
+With the table defined in previous step, now we can create the data model. The 
step is almost the same as you create a normal data model, but it has two 
requirement:
+
+* Streaming Cube doesn't support join with lookup tables; When define the data 
model, only select fact table, no lookup table;
+* Streaming Cube must be partitioned; If you're going to build the Cube 
incrementally at minutes level, select "MINUTE_START" as the cube's partition 
date column. If at hours level, select "HOUR_START".
+
+Here we pick 13 dimension and 2 measure columns:
+
+![](/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/5_Data_model_dimension.png)
+
+![](/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/6_Data_model_measure.png)
+Save the data model.
+
+## Create Cube
+
+The streaming Cube is almost the same as a normal cube. a couple of points 
need get your attention:
+
+* The partition time column should be a dimension of the Cube. In Streaming 
OLAP the time is always a query condition, and Kylin will leverage this to 
narrow down the scanned partitions.
+* Don't use "order\_time" as dimension as that is pretty fine-grained; suggest 
to use "mintue\_start", "hour\_start" or other, depends on how you will inspect 
the data.
+* Define "year\_start", "quarter\_start", "month\_start", "day\_start", 
"hour\_start", "minute\_start" as a hierarchy to reduce the combinations to 
calculate.
+* In the "refersh setting" step, create more merge ranges, like 0.5 hour, 4 
hours, 1 day, and then 7 days; This will help to control the cube segment 
number.
+* In the "rowkeys" section, drag&drop the "minute\_start" to the head 
position, as for streaming queries, the time condition is always appeared; 
putting it to head will help to narrow down the scan range.
+
+       
![](/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/8_Cube_dimension.png)
+
+       
![](/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/9_Cube_measure.png)
+
+       ![](/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/10_agg_group.png)
+
+       ![](/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/11_Rowkey.png)
+
+Save the cube.
+
+## Run a build
+
+You can trigger the build from web GUI, by clicking "Actions" -> "Build", or 
sending a request to Kylin RESTful API with 'curl' command:
+
+{% highlight Groff markup %}
+curl -X PUT --user ADMIN:KYLIN -H "Content-Type: 
application/json;charset=utf-8" -d '{ "sourceOffsetStart": 0, 
"sourceOffsetEnd": 9223372036854775807, "buildType": "BUILD"}' 
http://localhost:7070/kylin/api/cubes/{your_cube_name}/build2
+{% endhighlight %}
+
+Please note the API endpoint is different from a normal cube (this URL end 
with "build2").
+
+Here 0 means from the last position, and 9223372036854775807 (Long.MAX_VALUE) 
means to the end position on Kafka topic. If it is the first time to build (no 
previous segment), Kylin will seek to beginning of the topics as the start 
position. 
+
+In the "Monitor" page, a new job is generated; Wait it 100% finished.
+
+## Click the "Insight" tab, compose a SQL to run, e.g:
+
+ {% highlight Groff markup %}
+select minute_start, count(*), sum(amount), sum(qty) from 
streaming_sales_table group by minute_start order by minute_start
+ {% endhighlight %}
+
+The result looks like below.
+![](/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/13_Query_result.png)
+
+
+## Automate the build
+
+Once the first build and query got successfully, you can schedule incremental 
builds at a certain frequency. Kylin will record the offsets of each build; 
when receive a build request, it will start from the last end position, and 
then seek the latest offsets from Kafka. With the REST API you can trigger it 
with any scheduler tools like Linux cron:
+
+  {% highlight Groff markup %}
+crontab -e
+*/5 * * * * curl -X PUT --user ADMIN:KYLIN -H "Content-Type: 
application/json;charset=utf-8" -d '{ "sourceOffsetStart": 0, 
"sourceOffsetEnd": 9223372036854775807, "buildType": "BUILD"}' 
http://localhost:7070/kylin/api/cubes/{your_cube_name}/build2
+ {% endhighlight %}
+
+Now you can site down and watch the cube be automatically built from 
streaming. And when the cube segments accumulate to bigger time range, Kylin 
will automatically merge them into a bigger segment.
+
+## Trouble shootings
+
+ * You may encounter the following error when run "kylin.sh":
+{% highlight Groff markup %}
+Exception in thread "main" java.lang.NoClassDefFoundError: 
org/apache/kafka/clients/producer/Producer
+       at java.lang.Class.getDeclaredMethods0(Native Method)
+       at java.lang.Class.privateGetDeclaredMethods(Class.java:2615)
+       at java.lang.Class.getMethod0(Class.java:2856)
+       at java.lang.Class.getMethod(Class.java:1668)
+       at sun.launcher.LauncherHelper.getMainMethod(LauncherHelper.java:494)
+       at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:486)
+Caused by: java.lang.ClassNotFoundException: 
org.apache.kafka.clients.producer.Producer
+       at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
+       at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
+       at java.security.AccessController.doPrivileged(Native Method)
+       at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
+       at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
+       at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
+       at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
+       ... 6 more
+{% endhighlight %}
+
+The reason is Kylin wasn't able to find the proper Kafka client jars; Make 
sure you have properly set "KAFKA_HOME" environment variable.
+
+ * Get "killed by admin" error in the "Build Cube" step
+
+ Within a Sandbox VM, YARN may not allocate the requested memory resource to 
MR job as the "inmem" cubing algorithm requests more memory. You can bypass 
this by requesting less memory: edit "conf/kylin_job_conf_inmem.xml", change 
the following two parameters like this:
+
+ {% highlight Groff markup %}
+    <property>
+        <name>mapreduce.map.memory.mb</name>
+        <value>1072</value>
+        <description></description>
+    </property>
+
+    <property>
+        <name>mapreduce.map.java.opts</name>
+        <value>-Xmx800m</value>
+        <description></description>
+    </property>
+ {% endhighlight %}
+
+ * If there already be bunch of history messages in Kafka and you don't want 
to build from the very beginning, you can trigger a call to set the current end 
position as the start for the cube:
+
+{% highlight Groff markup %}
+curl -X PUT --user ADMIN:KYLIN -H "Content-Type: 
application/json;charset=utf-8" -d '{ "sourceOffsetStart": 0, 
"sourceOffsetEnd": 9223372036854775807, "buildType": "BUILD"}' 
http://localhost:7070/kylin/api/cubes/{your_cube_name}/init_start_offsets
+{% endhighlight %}
+
+ * If some build job got error and you discard it, there will be a hole (or 
say gap) left in the Cube. Since each time Kylin will build from last position, 
you couldn't expect the hole be filled by normal builds. Kylin provides API to 
check and fill the holes 
+
+Check holes:
+ {% highlight Groff markup %}
+curl -X GET --user ADMINN:KYLIN -H "Content-Type: 
application/json;charset=utf-8" 
http://localhost:7070/kylin/api/cubes/{your_cube_name}/holes
+{% endhighlight %}
+
+If the result is an empty arrary, means there is no hole; Otherwise, trigger 
Kylin to fill them:
+ {% highlight Groff markup %}
+curl -X PUT --user ADMINN:KYLIN -H "Content-Type: 
application/json;charset=utf-8" 
http://localhost:7070/kylin/api/cubes/{your_cube_name}/holes
+{% endhighlight %}
+

http://git-wip-us.apache.org/repos/asf/kylin/blob/59913167/website/_docs16/tutorial/kylin_client_tool.cn.md
----------------------------------------------------------------------
diff --git a/website/_docs16/tutorial/kylin_client_tool.cn.md 
b/website/_docs16/tutorial/kylin_client_tool.cn.md
new file mode 100644
index 0000000..f6df3e5
--- /dev/null
+++ b/website/_docs16/tutorial/kylin_client_tool.cn.md
@@ -0,0 +1,97 @@
+---
+layout: docs16-cn
+title:  Kylin Client Tool 使用教程
+categories: 教程
+permalink: /cn/docs16/tutorial/kylin_client_tool.html
+---
+  
+> Kylin-client-tool是一个用python编写的,完全基于kylin的rest 
api的工具。可以实现kylin的cube创建,按时build 
cube,job的提交、调度、查看、取消与恢复。
+  
+## 安装
+1.确认运行环境安装了python2.6/2.7
+
+2.本工具需安装第三方python包
apscheduler和requests,运行setup.sh进行安装
,mac用户运行setup-mac.sh进行安装。也可用setuptools进行安装
+
+## 配置
+修改工具目录下的settings/settings.py文件,进行配置
+
+`KYLIN_USER`  Kylin用户名
+
+`KYLIN_PASSWORD`  Kylin的密码
+
+`KYLIN_REST_HOST`  Kylin的地址
+
+`KYLIN_REST_PORT`  Kylin的端口
+
+`KYLIN_JOB_MAX_COCURRENT`  允许同时build的job数量
+
+`KYLIN_JOB_MAX_RETRY`  cube build出现error后,允许的重启job次数
+
+## 命令行的使用
+本工具使用optparse通过命令行来执行操作,å…
·ä½“用法可通过`python kylin_client_tool.py -h`来查看
+
+## cube的创建
+本工具定义了一种读手写的文本,来快速cube创建的方法,æ 
¼å¼å¦‚下
+
+`cube名|fact table名|维度1,维度1类型;维度2,维度2类型...|指æ 
‡1,指标1表达式,指标1类型...|设置项|filter|`
+
+设置项内有以下选项,
+
+`no_dictionary`  设置Rowkeys中不生成dictionary的维度及其长度
+
+`mandatory_dimension`  设置Rowkeys中mandatory的维度
+
+`aggregation_group`  设置aggregation group
+
+`partition_date_column`  设置partition date column
+
+`partition_date_start`  设置partition start date
+
+具体例子可以查看cube_def.csv文件,目前不支持含lookup 
table的cube创建
+
+使用`-c`命令进行创建,用`-F`指定cube定义文件,例如
+
+`python kylin_client_tool.py -c -F cube_def.csv`
+
+## build cube
+###使用cube定义文件build
+使用`-b`命令,需要用`-F`指定cube定义文件,如果指定了partition
 date column,通过`-T`指定end date(year-month-dayæ 
¼å¼),若不指定,以当前时间为end date,例如
+
+`python kylin_client_tool.py -b -F cube_def.csv -T 2016-03-01`
+
+###使用cube名文件build
+用`-f`指定cube名文件,文件每行一个cube名
+
+`python kylin_client_tool.py -b -f cube_names.csv -T 2016-03-01`
+
+###直接命令行写cube名build
+用`-C`指定cube名,通过逗号进行分隔
+
+`python kylin_client_tool.py -b -C client_tool_test1,client_tool_test2 -T 
2016-03-01`
+
+## job管理
+###查看job状态
+使用`-s`命令查看,用`-f`指定cube名文件,用`-C`指定cube名,若不指定,将查看所有cube状态。用`-S`指定job状态,R表示`Running`,E表示`Error`,F表示`Finished`,D表示`Discarded`,例如:
+
+`python kylin_client_tool.py -s -C kylin_sales_cube -f cube_names.csv -S F`
+
+###恢复job
+用`-r`命令恢复job,用`-f`指定cube名文件,用`-C`指定cube名,若不指定,将恢复所有Error状态的job,例如:
+
+`python kylin_client_tool.py -r -C kylin_sales_cube -f cube_names.csv`
+
+###取消job
+用`-k`命令取消job,用`-f`指定cube名文件,用`-C`指定cube名,若不指定,将取消所有Running或Error状态的job,例如:
+
+`python kylin_client_tool.py -k -C kylin_sales_cube -f cube_names.csv`
+
+## 定时build cube
+### 每隔一段时间build cube
+在cube build命令的基础上,使用`-B 
i`指定每隔一段时间build的方式,使用`-O`指定间隔的小时数,例如:
+
+`python kylin_client_tool.py -b -F cube_def.csv -B i -O 1`
+
+### 设定时间build cube
+使用`-B t`指定按时build 
cube的方式,使用`-O`指定build时间,用逗号进行分隔
+
+`python kylin_client_tool.py -b -F cube_def.csv -T 2016-03-04 -B t -O 
2016,3,1,0,0,0`

http://git-wip-us.apache.org/repos/asf/kylin/blob/59913167/website/_docs16/tutorial/kylin_sample.md
----------------------------------------------------------------------
diff --git a/website/_docs16/tutorial/kylin_sample.md 
b/website/_docs16/tutorial/kylin_sample.md
new file mode 100644
index 0000000..f60ed8b
--- /dev/null
+++ b/website/_docs16/tutorial/kylin_sample.md
@@ -0,0 +1,21 @@
+---
+layout: docs16
+title:  Quick Start with Sample Cube
+categories: tutorial
+permalink: /docs16/tutorial/kylin_sample.html
+---
+
+Kylin provides a script for you to create a sample Cube; the script will also 
create three sample hive tables:
+
+1. Run ${KYLIN_HOME}/bin/sample.sh ; Restart kylin server to flush the caches;
+2. Logon Kylin web with default user ADMIN/KYLIN, select project "learn_kylin" 
in the project dropdown list (left upper corner);
+3. Select the sample cube "kylin_sales_cube", click "Actions" -> "Build", pick 
up a date later than 2014-01-01 (to cover all 10000 sample records);
+4. Check the build progress in "Monitor" tab, until 100%;
+5. Execute SQLs in the "Insight" tab, for example:
+       select part_dt, sum(price) as total_selled, count(distinct seller_id) 
as sellers from kylin_sales group by part_dt order by part_dt
+6. You can verify the query result and compare the response time with hive;
+
+   
+## What's next
+
+You can create another cube with the sample tables, by following the tutorials.

http://git-wip-us.apache.org/repos/asf/kylin/blob/59913167/website/_docs16/tutorial/odbc.cn.md
----------------------------------------------------------------------
diff --git a/website/_docs16/tutorial/odbc.cn.md 
b/website/_docs16/tutorial/odbc.cn.md
new file mode 100644
index 0000000..9ebe8dc
--- /dev/null
+++ b/website/_docs16/tutorial/odbc.cn.md
@@ -0,0 +1,34 @@
+---
+layout: docs16-cn
+title:  Kylin ODBC 驱动程序教程
+categories: 教程
+permalink: /cn/docs16/tutorial/odbc.html
+version: v1.2
+since: v0.7.1
+---
+
+> 我们提供Kylin ODBC驱动程序以支持ODBCå…
¼å®¹å®¢æˆ·ç«¯åº”用的数据访问。
+> 
+> 32位版本或64位版本的驱动程序都是可用的。
+> 
+> 测试操作系统:Windows 7,Windows Server 2008 R2
+> 
+> 测试应用:Tableau 8.0.4 和 Tableau 8.1.3
+
+## 前提条件
+1. Microsoft Visual C++ 2012 再分配(Redistributable)
+   * 32位Windows或32位Tableau Desktop:下载:[32bit 
version](http://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x86.exe)
 
+   * 64位Windows或64位Tableau Desktop:下载:[64bit 
version](http://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x64.exe)
+
+2. ODBC驱动程序内部从一个REST服务器获取结果,确保你
能够访问一个
+
+## 安装
+1. 如果你已经安装,首先卸载已存在的Kylin ODBC
+2. 从[下载](../../download/)下载附件驱动安装程序,并运行。
+   * 32位Tableau Desktop:请安装KylinODBCDriver (x86).exe
+   * 64位Tableau Desktop:请安装KylinODBCDriver (x64).exe
+
+3. Both drivers already be installed on Tableau Server, you properly should be 
able to publish to there without issues
+
+## 错误报告
+如有问题,请报告错误至Apache Kylin JIRA,或者
发送邮件到dev邮件列表。

http://git-wip-us.apache.org/repos/asf/kylin/blob/59913167/website/_docs16/tutorial/odbc.md
----------------------------------------------------------------------
diff --git a/website/_docs16/tutorial/odbc.md b/website/_docs16/tutorial/odbc.md
new file mode 100644
index 0000000..06fbf8b
--- /dev/null
+++ b/website/_docs16/tutorial/odbc.md
@@ -0,0 +1,49 @@
+---
+layout: docs16
+title:  Kylin ODBC Driver
+categories: tutorial
+permalink: /docs16/tutorial/odbc.html
+since: v0.7.1
+---
+
+> We provide Kylin ODBC driver to enable data access from ODBC-compatible 
client applications.
+> 
+> Both 32-bit version or 64-bit version driver are available.
+> 
+> Tested Operation System: Windows 7, Windows Server 2008 R2
+> 
+> Tested Application: Tableau 8.0.4, Tableau 8.1.3 and Tableau 9.1
+
+## Prerequisites
+1. Microsoft Visual C++ 2012 Redistributable 
+   * For 32 bit Windows or 32 bit Tableau Desktop: Download: [32bit 
version](http://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x86.exe)
 
+   * For 64 bit Windows or 64 bit Tableau Desktop: Download: [64bit 
version](http://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x64.exe)
+
+
+2. ODBC driver internally gets results from a REST server, make sure you have 
access to one
+
+## Installation
+1. Uninstall existing Kylin ODBC first, if you already installled it before
+2. Download ODBC Driver from [download](../../download/).
+   * For 32 bit Tableau Desktop: Please install KylinODBCDriver (x86).exe
+   * For 64 bit Tableau Desktop: Please install KylinODBCDriver (x64).exe
+
+3. Both drivers already be installed on Tableau Server, you properly should be 
able to publish to there without issues
+
+## DSN configuration
+1. Open ODBCAD to configure DSN.
+       * For 32 bit driver, please use the 32bit version in 
C:\Windows\SysWOW64\odbcad32.exe
+       * For 64 bit driver, please use the default "Data Sources (ODBC)" in 
Control Panel/Administrator Tools
+![]( /images/Kylin-ODBC-DSN/1.png)
+
+2. Open "System DSN" tab, and click "Add", you will see KylinODBCDriver listed 
as an option, Click "Finish" to continue.
+![]( /images/Kylin-ODBC-DSN/2.png)
+
+3. In the pop up dialog, fill in all the blanks, The server host is where your 
Kylin Rest Server is started.
+![]( /images/Kylin-ODBC-DSN/3.png)
+
+4. Click "Done", and you will see your new DSN listed in the "System Data 
Sources", you can use this DSN afterwards.
+![]( /images/Kylin-ODBC-DSN/4.png)
+
+## Bug Report
+Please open Apache Kylin JIRA to report bug, or send to dev mailing list.

http://git-wip-us.apache.org/repos/asf/kylin/blob/59913167/website/_docs16/tutorial/powerbi.cn.md
----------------------------------------------------------------------
diff --git a/website/_docs16/tutorial/powerbi.cn.md 
b/website/_docs16/tutorial/powerbi.cn.md
new file mode 100644
index 0000000..112c32b
--- /dev/null
+++ b/website/_docs16/tutorial/powerbi.cn.md
@@ -0,0 +1,56 @@
+---
+layout: docs16-cn
+title:  微软Excel及Power BI教程
+categories: tutorial
+permalink: /cn/docs16/tutorial/powerbi.html
+version: v1.2
+since: v1.2
+---
+
+Microsoft 
Excel是当今Windows平台上最流行的数据处理软件之一,支持多种数据处理功能,可以利用Power
 Query从ODBC数据源读取数据并返回到数据表中。
+
+Microsoft Power BI 是由微软推出的商业智能的专业分析工å…
·ï¼Œç»™ç”¨æˆ·æä¾›ç®€å•且丰富的数据可视化及分析功能。
+
+> Apache Kylin目前版本不支持原始数据的查询,部分查询会因
此失败,导致应用程序发生异常,建议打上KYLIN-1075补丁包
以优化查询结果的显示。
+
+
+> Power BI及Excel不支持"connect live"模式,请注意并添加
where条件在查询超大数据集时候,以避å…
ä»ŽæœåŠ¡å™¨æ‹‰åŽ»è¿‡å¤šçš„æ•°æ®åˆ°æœ¬åœ°ï¼Œç”šè‡³åœ¨æŸäº›æƒ…
况下查询执行失败。
+
+### Install ODBC Driver
+参考页面[Kylin ODBC 
驱动程序教程](./odbc.html),请确保下载并安装Kylin ODBC Driver 
__v1.2__. 如果你安装有早前版本,请卸载后再安装。 
+
+### 连接Excel到Kylin
+1. 从微软官网下载和安装Power Query,安装
完成后在Excel中会看到Power Query的Fast Tab,单击`From other 
sources`下拉按钮,并选择`From ODBC`项
+![](/images/tutorial/odbc/ms_tool/Picture1.png)
+
+2. 在弹出的`From ODBC`数据连接向导中输入Apache 
Kylin服务器的连接字符串,也可以在`SQL`文本框中输å…
¥æ‚¨æƒ³è¦æ‰§è¡Œçš„SQL语句,单击`OK`,SQL的执行结果就会立即åŠ
 è½½åˆ°Excel的数据表中
+![](/images/tutorial/odbc/ms_tool/Picture2.png)
+
+> 为了简化连接字符串的输入,推荐创建Apache 
Kylin的DSN,可以将连接字符串简化为DSN=[YOUR_DSN_NAME],有å…
³DSN的创建请参考:[https://support.microsoft.com/en-us/kb/305599](https://support.microsoft.com/en-us/kb/305599)。
+
+ 
+3. 如果您选择不输入SQL语句,Power 
Query将会列出所有的数据库表,您可以根据需要对整张
表的数据进行加载。但是,Apache 
Kylin暂不支持原数据的查询,部分表的加载可能因此受限
+![](/images/tutorial/odbc/ms_tool/Picture3.png)
+
+4. 稍等片刻,数据已成功加载到Excel中
+![](/images/tutorial/odbc/ms_tool/Picture4.png)
+
+5.  
一旦服务器端数据产生更新,则需要对Excel中的数据进行同步,右键单击右侧列表中的数据源,选择`Refresh`,最新的数据便会更新到数据表中.
+
+6.  1.  为了提升性能,可以在Power Query中打开`Query 
Options`设置,然后开启`Fast data load`,这将提高数据加
载速度,但可能造成界面的暂时无响应
+
+### Power BI
+1.  启动您已经安装的Power BI桌面版程序,单击`Get 
data`按钮,并选中ODBC数据源.
+![](/images/tutorial/odbc/ms_tool/Picture5.png)
+
+2.  在弹出的`From ODBC`数据连接向导中输入Apache 
Kylin服务器的数据库连接字符串,也可以在`SQL`文本框中输å
…
¥æ‚¨æƒ³è¦æ‰§è¡Œçš„SQL语句。单击`OK`,SQL的执行结果就会立即åŠ
 è½½åˆ°Power BI中
+![](/images/tutorial/odbc/ms_tool/Picture6.png)
+
+3.  如果您选择不输入SQL语句,Power 
BI将会列出项目中所有的表,您可以根据需要将整张
表的数据进行加载。但是,Apache 
Kylin暂不支持原数据的查询,部分表的加载可能因此受限
+![](/images/tutorial/odbc/ms_tool/Picture7.png)
+
+4.  现在你可以进一步使用Power BI进行可视化分析:
+![](/images/tutorial/odbc/ms_tool/Picture8.png)
+
+5.  单击工具栏的`Refresh`按钮即可重新加
载数据并对图表进行更新
+

http://git-wip-us.apache.org/repos/asf/kylin/blob/59913167/website/_docs16/tutorial/powerbi.md
----------------------------------------------------------------------
diff --git a/website/_docs16/tutorial/powerbi.md 
b/website/_docs16/tutorial/powerbi.md
new file mode 100644
index 0000000..00612da
--- /dev/null
+++ b/website/_docs16/tutorial/powerbi.md
@@ -0,0 +1,54 @@
+---
+layout: docs16
+title:  MS Excel and Power BI
+categories: tutorial
+permalink: /docs16/tutorial/powerbi.html
+since: v1.2
+---
+
+Microsoft Excel is one of the most famous data tool on Windows platform, and 
has plenty of data analyzing functions. With Power Query installed as plug-in, 
excel can easily read data from ODBC data source and fill spreadsheets. 
+
+Microsoft Power BI is a business intelligence tool providing rich 
functionality and experience for data visualization and processing to user.
+
+> Apache Kylin currently doesn't support query on raw data yet, some queries 
might fail and cause some exceptions in application. Patch KYLIN-1075 is 
recommended to get better look of query result.
+
+> Power BI and Excel do not support "connect live" model for other ODBC driver 
yet, please pay attention when you query on huge dataset, it may pull too many 
data into your client which will take a while even fail at the end.
+
+### Install ODBC Driver
+Refer to this guide: [Kylin ODBC Driver Tutorial](./odbc.html).
+Please make sure to download and install Kylin ODBC Driver __v1.2__. If you 
already installed ODBC Driver in your system, please uninstall it first. 
+
+### Kylin and Excel
+1. Download Power Query from Microsoft’s Website and install it. Then run 
Excel, switch to `Power Query` fast tab, click `From Other Sources` dropdown 
list, and select `ODBC` item.
+![](/images/tutorial/odbc/ms_tool/Picture1.png)
+
+2.  You’ll see `From ODBC` dialog, just type Database Connection String of 
Apache Kylin Server in the `Connection String` textbox. Optionally you can type 
a SQL statement in `SQL statement` textbox. Click `OK`, result set will run to 
your spreadsheet now.
+![](/images/tutorial/odbc/ms_tool/Picture2.png)
+
+> Tips: In order to simplify the Database Connection String, DSN is 
recommended, which can shorten the Connection String like 
`DSN=[YOUR_DSN_NAME]`. Details about DSN, refer to 
[https://support.microsoft.com/en-us/kb/305599](https://support.microsoft.com/en-us/kb/305599).
+ 
+3. If you didn’t input the SQL statement in last step, Power Query will list 
all tables in the project, which means you can load data from the whole table. 
But, since Apache Kylin cannot query on raw data currently, this function may 
be limited.
+![](/images/tutorial/odbc/ms_tool/Picture3.png)
+
+4.  Hold on for a while, the data is lying in Excel now.
+![](/images/tutorial/odbc/ms_tool/Picture4.png)
+
+5.  If you want to sync data with Kylin Server, just right click the data 
source in right panel, and select `Refresh`, then you’ll see the latest data.
+
+6.  To improve data loading performance, you can enable `Fast data load` in 
Power Query, but this will make your UI unresponsive for a while. 
+
+### Power BI
+1.  Run Power BI Desktop, and click `Get Data` button, then select `ODBC` as 
data source type.
+![](/images/tutorial/odbc/ms_tool/Picture5.png)
+
+2.  Same with Excel, just type Database Connection String of Apache Kylin 
Server in the `Connection String` textbox, and optionally type a SQL statement 
in `SQL statement` textbox. Click `OK`, the result set will come to Power BI as 
a new data source query.
+![](/images/tutorial/odbc/ms_tool/Picture6.png)
+
+3.  If you didn’t input the SQL statement in last step, Power BI will list 
all tables in the project, which means you can load data from the whole table. 
But, since Apache Kylin cannot query on raw data currently, this function may 
be limited.
+![](/images/tutorial/odbc/ms_tool/Picture7.png)
+
+4.  Now you can start to enjoy analyzing with Power BI.
+![](/images/tutorial/odbc/ms_tool/Picture8.png)
+
+5.  To reload the data and redraw the charts, just click `Refresh` button in 
`Home` fast tab.
+

http://git-wip-us.apache.org/repos/asf/kylin/blob/59913167/website/_docs16/tutorial/tableau.cn.md
----------------------------------------------------------------------
diff --git a/website/_docs16/tutorial/tableau.cn.md 
b/website/_docs16/tutorial/tableau.cn.md
new file mode 100644
index 0000000..fdbd8eb
--- /dev/null
+++ b/website/_docs16/tutorial/tableau.cn.md
@@ -0,0 +1,116 @@
+---
+layout: docs16-cn
+title:  Tableau教程
+categories: 教程
+permalink: /cn/docs16/tutorial/tableau.html
+version: v1.2
+since: v0.7.1
+---
+
+> Kylin ODBC驱动程序与Tableau存在一些限制,请在尝试前仔细阅
读本说明书。
+> * 仅
支持“managed”分析路径,Kylin引擎将对意外的维度或度量报错
+> * 请始终优先选择事实表,然后使用正确的连接条件添加
查找表(cube中已定义的连接类型)
+> * 请勿尝试在多个事实表或多个查找表之间进行连接;
+> * 你可以尝试使用类似Tableau过滤器中seller id这æ 
·çš„高基数维度,但引擎现在将只返回有限个Tableau过滤器中的seller
 id。
+> 
+> 
如需更多详细信息或有任何问题,请联系Kylin团队:`[email protected]`
+
+
+### 使用Tableau 9.x的用户
+请参考[Tableau 9 教程](./tableau_91.html)以获得更详细帮助。
+
+### 步骤1. 安装Kylin ODBC驱动程序
+参考页面[Kylin ODBC 驱动程序教程](./odbc.html)。
+
+### 步骤2. 连接到Kylin服务器
+> 我们建议使用Connect Using Driver而不是Using DSN。
+
+Connect Using Driver: 选择左侧面板中的“Other 
Database(ODBC)”和弹出窗口的“KylinODBCDriver”。
+
+![](/images/Kylin-and-Tableau-Tutorial/1 odbc.png)
+
+输入你
的服务器位置和证书:服务器主机,端口,用户名和密码。
+
+![](/images/Kylin-and-Tableau-Tutorial/2 serverhost.jpg)
+
+点击“Connect”获取你有权限访问的项目列表。有å…
³æƒé™çš„详细信息请参考[Kylin Cube Permission Grant 
Tutorial](https://github.com/KylinOLAP/Kylin/wiki/Kylin-Cube-Permission-Grant-Tutorial)。然后在下拉列表中选择ä½
 æƒ³è¦è¿žæŽ¥çš„项目。
+
+![](/images/Kylin-and-Tableau-Tutorial/3 project.jpg)
+
+点击“Done”完成连接。
+
+![](/images/Kylin-and-Tableau-Tutorial/4 done.jpg)
+
+### 步骤3. 使用单表或多表
+> 限制
+>    * 必须首先选择事实表
+>    * 请勿仅支持从查找表选择
+>    * 连接条件必须与cube定义匹配
+
+**选择事实表**
+
+选择`Multiple Tables`。
+
+![](/images/Kylin-and-Tableau-Tutorial/5 multipleTable.jpg)
+
+然后点击`Add Table...`添加一张事实表。
+
+![](/images/Kylin-and-Tableau-Tutorial/6 facttable.jpg)
+
+![](/images/Kylin-and-Tableau-Tutorial/6 facttable2.jpg)
+
+**选择查找表**
+
+点击`Add Table...`添加一张查找表。
+
+![](/images/Kylin-and-Tableau-Tutorial/7 lkptable.jpg)
+
+仔细建立连接条款。
+
+![](/images/Kylin-and-Tableau-Tutorial/8 join.jpg)
+
+继续通过点击`Add Table...`添加
表直到所有的查找表都被正确添加
。命名此连接以在Tableau中使用。
+
+![](/images/Kylin-and-Tableau-Tutorial/9 connName.jpg)
+
+**使用Connect Live**
+
+`Data Connection`共有三种类型。选择`Connect Live`选项。
+
+![](/images/Kylin-and-Tableau-Tutorial/10 connectLive.jpg)
+
+然后你就能够尽情使用Tableau进行分析。
+
+![](/images/Kylin-and-Tableau-Tutorial/11 analysis.jpg)
+
+**添加额外查找表**
+
+点击顶部菜单栏的`Data`,选择`Edit Tables...`更新查找表信息。
+
+![](/images/Kylin-and-Tableau-Tutorial/12 edit tables.jpg)
+
+### 步骤4. 使用自定义SQL
+使用自定义SQL类似于使用单表/多表,但你需要在`Custom SQL`æ 
‡ç­¾å¤åˆ¶ä½ çš„SQL后采取同上指令。
+
+![](/images/Kylin-and-Tableau-Tutorial/19 custom.jpg)
+
+### 步骤5. 发布到Tableau服务器
+如果你已经完成使用Tableau制作一个仪表板,你
可以将它发布到Tableau服务器上。
+点击顶部菜单栏的`Server`,选择`Publish Workbook...`。
+
+![](/images/Kylin-and-Tableau-Tutorial/14 publish.jpg)
+
+然后登陆你的Tableau服务器并准备发布。
+
+![](/images/Kylin-and-Tableau-Tutorial/16 prepare-publish.png)
+
+如果你正在使用Connect Using Driver而不是DSN连接,你
还将需要嵌入你的密ç 
ã€‚点击左下方的`Authentication`按钮并选择`Embedded 
Password`。点击`Publish`然后你将看到结果。
+
+![](/images/Kylin-and-Tableau-Tutorial/17 embedded-pwd.png)
+
+### 小贴士
+* 在Tableau中隐藏表名
+
+    * Tableau将会根据源表名分组显示列,但用户可能希望æ 
¹æ®å…¶ä»–不同的安排组织列。使用Tableau中的"Group by 
Folder"并创建文件夹来对不同的列分组。
+
+     ![](/images/Kylin-and-Tableau-Tutorial/18 groupby-folder.jpg)

http://git-wip-us.apache.org/repos/asf/kylin/blob/59913167/website/_docs16/tutorial/tableau.md
----------------------------------------------------------------------
diff --git a/website/_docs16/tutorial/tableau.md 
b/website/_docs16/tutorial/tableau.md
new file mode 100644
index 0000000..0d9e38c
--- /dev/null
+++ b/website/_docs16/tutorial/tableau.md
@@ -0,0 +1,113 @@
+---
+layout: docs16
+title:  Tableau 8
+categories: tutorial
+permalink: /docs16/tutorial/tableau.html
+---
+
+> There are some limitations of Kylin ODBC driver with Tableau, please read 
carefully this instruction before you try it.
+> 
+> * Only support "managed" analysis path, Kylin engine will raise exception 
for unexpected dimension or metric
+> * Please always select Fact Table first, then add lookup tables with correct 
join condition (defined join type in cube)
+> * Do not try to join between fact tables or lookup tables;
+> * You can try to use high cardinality dimensions like seller id as Tableau 
Filter, but the engine will only return limited seller id in Tableau's filter 
now.
+
+### For Tableau 9.x User
+Please refer to [Tableau 9.x Tutorial](./tableau_91.html) for detail guide.
+
+### Step 1. Install Kylin ODBC Driver
+Refer to this guide: [Kylin ODBC Driver Tutorial](./odbc.html).
+
+### Step 2. Connect to Kylin Server
+> We recommended to use Connect Using Driver instead of Using DSN.
+
+Connect Using Driver: Select "Other Database(ODBC)" in the left panel and 
choose KylinODBCDriver in the pop-up window. 
+
+![](/images/Kylin-and-Tableau-Tutorial/1 odbc.png)
+
+Enter your Sever location and credentials: server host, port, username and 
password.
+
+![]( /images/Kylin-and-Tableau-Tutorial/2 serverhost.jpg)
+
+Click "Connect" to get the list of projects that you have permission to 
access. See details about permission in [Kylin Cube Permission Grant 
Tutorial](./acl.html). Then choose the project you want to connect in the drop 
down list. 
+
+![]( /images/Kylin-and-Tableau-Tutorial/3 project.jpg)
+
+Click "Done" to complete the connection.
+
+![]( /images/Kylin-and-Tableau-Tutorial/4 done.jpg)
+
+### Step 3. Using Single Table or Multiple Tables
+> Limitation
+> 
+>    * Must select FACT table first
+>    * Do not support select from lookup table only
+>    * The join condition must match within cube definition
+
+**Select Fact Table**
+
+Select `Multiple Tables`.
+
+![]( /images/Kylin-and-Tableau-Tutorial/5 multipleTable.jpg)
+
+Then click `Add Table...` to add a fact table.
+
+![]( /images/Kylin-and-Tableau-Tutorial/6 facttable.jpg)
+
+![]( /images/Kylin-and-Tableau-Tutorial/6 facttable2.jpg)
+
+**Select Look-up Table**
+
+Click `Add Table...` to add a look-up table. 
+
+![]( /images/Kylin-and-Tableau-Tutorial/7 lkptable.jpg)
+
+Set up the join clause carefully. 
+
+![]( /images/Kylin-and-Tableau-Tutorial/8 join.jpg)
+
+Keep add tables through click `Add Table...` until all the look-up tables have 
been added properly. Give the connection a name for use in Tableau.
+
+![]( /images/Kylin-and-Tableau-Tutorial/9 connName.jpg)
+
+**Using Connect Live**
+
+There are three types of `Data Connection`. Choose the `Connect Live` option. 
+
+![]( /images/Kylin-and-Tableau-Tutorial/10 connectLive.jpg)
+
+Then you can enjoy analyzing with Tableau.
+
+![]( /images/Kylin-and-Tableau-Tutorial/11 analysis.jpg)
+
+**Add additional look-up Tables**
+
+Click `Data` in the top menu bar, select `Edit Tables...` to update the 
look-up table information.
+
+![]( /images/Kylin-and-Tableau-Tutorial/12 edit tables.jpg)
+
+### Step 4. Using Customized SQL
+To use customized SQL resembles using Single Table/Multiple Tables, except 
that you just need to paste your SQL in `Custom SQL` tab and take the same 
instruction as above.
+
+![]( /images/Kylin-and-Tableau-Tutorial/19 custom.jpg)
+
+### Step 5. Publish to Tableau Server
+Suppose you have finished making a dashboard with Tableau, you can publish it 
to Tableau Server.
+Click `Server` in the top menu bar, select `Publish Workbook...`. 
+
+![]( /images/Kylin-and-Tableau-Tutorial/14 publish.jpg)
+
+Then sign in your Tableau Server and prepare to publish. 
+
+![]( /images/Kylin-and-Tableau-Tutorial/16 prepare-publish.png)
+
+If you're Using Driver Connect instead of DSN connect, you'll need to 
additionally embed your password in. Click the `Authentication` button at left 
bottom and select `Embedded Password`. Click `Publish` and you will see the 
result.
+
+![]( /images/Kylin-and-Tableau-Tutorial/17 embedded-pwd.png)
+
+### Tips
+* Hide Table name in Tableau
+
+    * Tableau will display columns be grouped by source table name, but user 
may want to organize columns with different structure. Using "Group by Folder" 
in Tableau and Create Folders to group different columns.
+
+     ![]( /images/Kylin-and-Tableau-Tutorial/18 groupby-folder.jpg)

http://git-wip-us.apache.org/repos/asf/kylin/blob/59913167/website/_docs16/tutorial/tableau_91.cn.md
----------------------------------------------------------------------
diff --git a/website/_docs16/tutorial/tableau_91.cn.md 
b/website/_docs16/tutorial/tableau_91.cn.md
new file mode 100644
index 0000000..fddc464
--- /dev/null
+++ b/website/_docs16/tutorial/tableau_91.cn.md
@@ -0,0 +1,51 @@
+---
+layout: docs16-cn
+title:  Tableau 9 教程
+categories: tutorial
+permalink: /cn/docs16/tutorial/tableau_91.html
+version: v1.2
+since: v1.2
+---
+
+Tableau 9已经发布一段时间了,社区有很多用户希望Apache 
Kylin能进一步支持该版本。现在可以通过更新Kylin 
ODBC驱动以使用Tableau 9来与Kylin服务进行交互。
+
+
+### Tableau 8.x 用户
+请参考[Tableau 教程](./tableau.html)以获得更详细帮助。
+
+### Install ODBC Driver
+参考页面[Kylin ODBC 
驱动程序教程](./odbc.html),请确保下载并安装Kylin ODBC Driver 
__v1.5__. 如果你安装有早前版本,请卸载后再安装。 
+
+### Connect to Kylin Server
+在Tableau 9.1创建新的数据连接,单击左侧面板中的`Other 
Database(ODBC)`,并在弹出窗口中选择`KylinODBCDriver` 
+![](/images/tutorial/odbc/tableau_91/1.png)
+
+输入你的服务器地址、端口、项目、用户名和密ç 
ï¼Œç‚¹å‡»`Connect`可获取有权限访问的所有项目列表。有å…
³æƒé™çš„详细信息请参考[Kylin Cube 权限授予教程](./acl.html).
+![](/images/tutorial/odbc/tableau_91/2.png)
+
+### 映射数据模型
+在左侧的列表中,选择数据库`defaultCatalog`并单击”搜索“按钮,将列出所有可查询的表。用é¼
 æ ‡æŠŠè¡¨æ‹–拽到右侧区域,就可以添加
表作为数据源,并创建好表与表的连接关系
+![](/images/tutorial/odbc/tableau_91/3.png)
+
+### Connect Live
+Tableau 
9.1中有两种数据源连接类型,选择`在线`选项以确保使用'Connect
 Live'模式
+![](/images/tutorial/odbc/tableau_91/4.png)
+
+### 自定义SQL
+如果需要使用自定义SQL,可以单击左侧`New Custom 
SQL`并在弹窗中输入SQL语句,就可添加为数据源.
+![](/images/tutorial/odbc/tableau_91/5.png)
+
+### 可视化
+现在你可以进一步使用Tableau进行可视化分析:
+![](/images/tutorial/odbc/tableau_91/6.png)
+
+### 发布到Tableau服务器
+如果希望发布到Tableau服务器, 点击`Server`菜单并选择`Publish 
Workbook`
+![](/images/tutorial/odbc/tableau_91/7.png)
+
+### 更多
+
+- 请参考[Tableau 教程](./tableau.html)以获得更多信息
+- 也可以参考社区用户Alberto Ramon Portoles 
([email protected])提供的分享: 
[KylinWithTableau](https://github.com/albertoRamon/Kylin/tree/master/KylinWithTableau)
+
+

http://git-wip-us.apache.org/repos/asf/kylin/blob/59913167/website/_docs16/tutorial/tableau_91.md
----------------------------------------------------------------------
diff --git a/website/_docs16/tutorial/tableau_91.md 
b/website/_docs16/tutorial/tableau_91.md
new file mode 100644
index 0000000..39d70ff
--- /dev/null
+++ b/website/_docs16/tutorial/tableau_91.md
@@ -0,0 +1,50 @@
+---
+layout: docs16
+title:  Tableau 9
+categories: tutorial
+permalink: /docs16/tutorial/tableau_91.html
+---
+
+Tableau 9.x has been released a while, there are many users are asking about 
support this version with Apache Kylin. With updated Kylin ODBC Driver, now 
user could interactive with Kylin service through Tableau 9.x.
+
+
+### For Tableau 8.x User
+Please refer to [Kylin and Tableau Tutorial](./tableau.html) for detail guide.
+
+### Install Kylin ODBC Driver
+Refer to this guide: [Kylin ODBC Driver Tutorial](./odbc.html).
+Please make sure to download and install Kylin ODBC Driver __v1.5__. If you 
already installed ODBC Driver in your system, please uninstall it first. 
+
+### Connect to Kylin Server
+Connect Using Driver: Start Tableau 9.1 desktop, click `Other Database(ODBC)` 
in the left panel and choose KylinODBCDriver in the pop-up window. 
+![](/images/tutorial/odbc/tableau_91/1.png)
+
+Provide your Sever location, credentials and project. Clicking `Connect` 
button, you can get the list of projects that you have permission to access, 
see details at [Kylin Cube Permission Grant Tutorial](./acl.html).
+![](/images/tutorial/odbc/tableau_91/2.png)
+
+### Mapping Data Model
+In left panel, select `defaultCatalog` as Database, click `Search` button in 
Table search box, and all tables get listed. With drag and drop to the right 
region, tables will become data source. Make sure JOINs are configured 
correctly.
+![](/images/tutorial/odbc/tableau_91/3.png)
+
+### Connect Live
+There are two types of `Connection`, choose the `Live` option to make sure 
using Connect Live mode.
+![](/images/tutorial/odbc/tableau_91/4.png)
+
+### Custom SQL
+To use customized SQL, click `New Custom SQL` in left panel and type SQL 
statement in pop-up dialog.
+![](/images/tutorial/odbc/tableau_91/5.png)
+
+### Visualization
+Now you can start to enjou analyzing with Tableau 9.1.
+![](/images/tutorial/odbc/tableau_91/6.png)
+
+### Publish to Tableau Server
+If you want to publish local dashboard to a Tableau Server, just expand 
`Server` menu and select `Publish Workbook`.
+![](/images/tutorial/odbc/tableau_91/7.png)
+
+### More
+
+- You can refer to [Kylin and Tableau Tutorial](./tableau.html) for more 
detail.
+- Here is a good tutorial written by Alberto Ramon Portoles 
([email protected]): 
[KylinWithTableau](https://github.com/albertoRamon/Kylin/tree/master/KylinWithTableau)
+
+

http://git-wip-us.apache.org/repos/asf/kylin/blob/59913167/website/_docs16/tutorial/web.cn.md
----------------------------------------------------------------------
diff --git a/website/_docs16/tutorial/web.cn.md 
b/website/_docs16/tutorial/web.cn.md
new file mode 100644
index 0000000..7f5e82c
--- /dev/null
+++ b/website/_docs16/tutorial/web.cn.md
@@ -0,0 +1,134 @@
+---
+layout: docs16-cn
+title:  Kylin网页版教程
+categories: 教程
+permalink: /cn/docs16/tutorial/web.html
+version: v1.2
+---
+
+> **支持的浏览器**
+> 
+> Windows: Google Chrome, FireFox
+> 
+> Mac: Google Chrome, FireFox, Safari
+
+## 1. 访问 & 登陆
+访问主机: http://hostname:7070
+使用用户名/密码登陆:ADMIN/KYLIN
+
+![]( /images/Kylin-Web-Tutorial/1 login.png)
+
+## 2. Kylin中可用的Hive表
+虽然Kylin使用SQL作为查询接口并利用Hiveå…
ƒæ•°æ®ï¼ŒKylin不会让用户查询所有的hive表,因
为到目前为止它是一个预构建OLAP(MOLAP)系统。为了使表在Kylin中可用,使用"Sync"方法能够方便地从Hive中同步表。
+
+![]( /images/Kylin-Web-Tutorial/2 tables.png)
+
+## 3. Kylin OLAP Cube
+Kylin的OLAP 
Cube是从星型模式的Hive表中获取的预计算数据集,这是供用户探索、管理所有cube的网页管理页面。由菜单æ
 è¿›å…¥`Cubes`页面,系统中所有可用的cube将被列出。
+
+![]( /images/Kylin-Web-Tutorial/3 cubes.png)
+
+探索更多关于Cube的详细信息
+
+* 表格视图:
+
+   ![]( /images/Kylin-Web-Tutorial/4 form-view.png)
+
+* SQL 视图 (Hive查询读取数据以生成cube):
+
+   ![]( /images/Kylin-Web-Tutorial/5 sql-view.png)
+
+* 可视化 (显示这个cube背后的星型模式):
+
+   ![]( /images/Kylin-Web-Tutorial/6 visualization.png)
+
+* 访问 (授予用户/角色权限,beta版中授予权限操作仅
对管理员开放):
+
+   ![]( /images/Kylin-Web-Tutorial/7 access.png)
+
+## 4. 在网页上编写和运行SQL
+Kelin的网页版为用户提供了一个简单的查询工å…
·æ¥è¿è¡ŒSQL以探索现存的cube,验证结果并探索使用#5中的Pivot 
analysis与可视化分析的结果集。
+
+> **查询限制**
+> 
+> 1. 仅支持SELECT查询
+> 
+> 2. 为了避å…
ä»ŽæœåŠ¡å™¨åˆ°å®¢æˆ·ç«¯äº§ç”Ÿå·¨å¤§çš„ç½‘ç»œæµé‡ï¼Œbeta版中的扫描范围阀值被设置为1,000,000。
+> 
+> 3. beta版中,SQL在cube中无法找到的数据将不会重定向到Hive
+
+由菜单栏进入“Query”页面:
+
+![]( /images/Kylin-Web-Tutorial/8 query.png)
+
+* 源表:
+
+   浏览器当前可用表(与Hive相同的结构和元数据):
+  
+   ![]( /images/Kylin-Web-Tutorial/9 query-table.png)
+
+* 新的查询:
+
+   你可以编写和运行你
的查询并探索结果。这里提供一个查询供你参考:
+
+   ![]( /images/Kylin-Web-Tutorial/10 query-result.png)
+
+* 已保存的查询:
+
+   与用户账号关联,你
将能够从不同的浏览器甚至机器上获取已保存的查询。
+   
在结果区域点击“Save”,将会弹出名字和描述来保存当前查询:
+
+   ![]( /images/Kylin-Web-Tutorial/11 save-query.png)
+
+   点击“Saved Queries”探索所有已保存的查询,你
可以直接重新提交它来运行或删除它:
+
+   ![]( /images/Kylin-Web-Tutorial/11 save-query-2.png)
+
+* 查询历史:
+
+   仅
保存当前用户在当前浏览器中的查询历史,这将需要启用cookie,并且如果ä½
 æ¸…理浏览器缓存将会丢失数据。点击“Query History”标签,你
可以直接重新提交其中的任何一条并再次运行。
+
+## 5. Pivot Analysis与可视化
+Kylin的网页版提供一个简单的Pivot与可视化分析工å…
·ä¾›ç”¨æˆ·æŽ¢ç´¢ä»–们的查询结果:
+
+* 一般信息:
+
+   当查询运行成功后,它将呈现一个成功指æ 
‡ä¸Žè¢«è®¿é—®çš„cube名字。
+   同时它将会呈现这个查询在后台引擎运行了多久(不包
括从Kylin服务器到浏览器的网络通信):
+
+   ![]( /images/Kylin-Web-Tutorial/12 general.png)
+
+* 查询结果:
+
+   能够方便地在一个列上排序。
+
+   ![]( /images/Kylin-Web-Tutorial/13 results.png)
+
+* 导出到CSV文件
+
+   点击“Export”按钮以CSV文件格式保存当前结果。
+
+* Pivot表:
+
+   将一个或多个列拖放到标头,结果将æ 
¹æ®è¿™äº›åˆ—的值分组:
+
+   ![]( /images/Kylin-Web-Tutorial/14 drag.png)
+
+* 可视化:
+
+   
同时,结果集将被方便地显示在“可视化”的不同图表中:
+
+   注意:线形图仅
当至少一个从Hive表中获取的维度有真实的“Date”数据类型列时才是可用的。
+
+   * 条形图:
+
+   ![]( /images/Kylin-Web-Tutorial/15 bar-chart.png)
+   
+   * 饼图:
+
+   ![]( /images/Kylin-Web-Tutorial/16 pie-chart.png)
+
+   * 线形图:
+
+   ![]( /images/Kylin-Web-Tutorial/17 line-chart.png)
+

http://git-wip-us.apache.org/repos/asf/kylin/blob/59913167/website/_docs16/tutorial/web.md
----------------------------------------------------------------------
diff --git a/website/_docs16/tutorial/web.md b/website/_docs16/tutorial/web.md
new file mode 100644
index 0000000..314ff48
--- /dev/null
+++ b/website/_docs16/tutorial/web.md
@@ -0,0 +1,123 @@
+---
+layout: docs16
+title:  Kylin Web Interface
+categories: tutorial
+permalink: /docs16/tutorial/web.html
+---
+
+> **Supported Browsers**
+> Windows: Google Chrome, FireFox
+> Mac: Google Chrome, FireFox, Safari
+
+## 1. Access & Login
+Host to access: http://hostname:7070
+Login with username/password: ADMIN/KYLIN
+
+![](/images/tutorial/1.5/Kylin-Web-Tutorial/1 login.png)
+
+## 2. Sync Hive Table into Kylin
+Although Kylin will using SQL as query interface and leverage Hive metadata, 
kylin will not enable user to query all hive tables since it's a pre-build OLAP 
(MOLAP) system so far. To enable Table in Kylin, it will be easy to using 
"Sync" function to sync up tables from Hive.
+
+![](/images/tutorial/1.5/Kylin-Web-Tutorial/2 tables.png)
+
+## 3. Kylin OLAP Cube
+Kylin's OLAP Cubes are pre-calculation datasets from star schema tables, 
Here's the web interface for user to explorer, manage all cubes. Go to `Model` 
menu, it will list all cubes available in system:
+
+![](/images/tutorial/1.5/Kylin-Web-Tutorial/3 cubes.png)
+
+To explore more detail about the Cube
+
+* Form View:
+
+   ![](/images/tutorial/1.5/Kylin-Web-Tutorial/4 form-view.png)
+
+* SQL View (Hive Query to read data to generate the cube):
+
+   ![](/images/tutorial/1.5/Kylin-Web-Tutorial/5 sql-view.png)
+
+* Access (Grant user/role privileges, grant operation only open to Admin):
+
+   ![](/images/tutorial/1.5/Kylin-Web-Tutorial/7 access.png)
+
+## 4. Write and Execute SQL on web
+Kylin's web offer a simple query tool for user to run SQL to explorer existing 
cube, verify result and explorer the result set using #5's Pivot analysis and 
visualization
+
+> **Query Limit**
+> 
+> 1. Only SELECT query be supported
+> 
+> 2. SQL will not be redirect to Hive
+
+Go to "Insight" menu:
+
+![](/images/tutorial/1.5/Kylin-Web-Tutorial/8 query.png)
+
+* Source Tables:
+
+   Browser current available tables (same structure and metadata as Hive):
+  
+   ![](/images/tutorial/1.5/Kylin-Web-Tutorial/9 query-table.png)
+
+* New Query:
+
+   You can write and execute your query and explorer the result.
+
+   ![](/images/tutorial/1.5/Kylin-Web-Tutorial/10 query-result.png)
+
+* Saved Query (only work after enable LDAP security):
+
+   Associate with user account, you can get saved query from different 
browsers even machines.
+   Click "Save" in Result area, it will popup for name and description to save 
current query:
+
+   ![](/images/tutorial/1.5/Kylin-Web-Tutorial/11 save-query.png)
+
+   Click "Saved Queries" to browser all your saved queries, you could direct 
submit it or remove it.
+
+* Query History:
+
+   Only keep the current user's query history in current bowser, it will 
require cookie enabled and will lost if you clean up bowser's cache. Click 
"Query History" tab, you could directly resubmit any of them to execute again.
+
+## 5. Pivot Analysis and Visualization
+There's one simple pivot and visualization analysis tool in Kylin's web for 
user to explore their query result:
+
+* General Information:
+
+   When the query execute success, it will present a success indictor and also 
a cube's name which be hit. 
+   Also it will present how long this query be executed in backend engine (not 
cover network traffic from Kylin server to browser):
+
+   ![](/images/tutorial/1.5/Kylin-Web-Tutorial/12 general.png)
+
+* Query Result:
+
+   It's easy to order on one column.
+
+   ![](/images/tutorial/1.5/Kylin-Web-Tutorial/13 results.png)
+
+* Export to CSV File
+
+   Click "Export" button to save current result as CSV file.
+
+* Pivot Table:
+
+   Drag and drop one or more columns into the header, the result will grouping 
by such column's value:
+
+   ![](/images/tutorial/1.5/Kylin-Web-Tutorial/14 drag.png)
+
+* Visualization:
+
+   Also, the result set will be easy to show with different charts in 
"Visualization":
+
+   note: line chart only available when there's at least one dimension with 
real "Date" data type of column from Hive Table.
+
+   * Bar Chart:
+
+   ![](/images/tutorial/1.5/Kylin-Web-Tutorial/15 bar-chart.png)
+   
+   * Pie Chart:
+
+   ![](/images/tutorial/1.5/Kylin-Web-Tutorial/16 pie-chart.png)
+
+   * Line Chart
+
+   ![](/images/tutorial/1.5/Kylin-Web-Tutorial/17 line-chart.png)
+

http://git-wip-us.apache.org/repos/asf/kylin/blob/59913167/website/_layouts/docs16-cn.html
----------------------------------------------------------------------
diff --git a/website/_layouts/docs16-cn.html b/website/_layouts/docs16-cn.html
new file mode 100755
index 0000000..102c501
--- /dev/null
+++ b/website/_layouts/docs16-cn.html
@@ -0,0 +1,46 @@
+<!--
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements.  See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership.  The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License.  You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+-->
+
+<!doctype html>
+<html>
+       {% include head.cn.html %}
+       <body>
+               {% include header.cn.html %}
+               
+               <div class="container">
+                       <div class="row">
+                               {% include docs15_nav.cn.html %}
+                               <div class="col-md-9 col-lg-9 col-xs-14 aside2">
+                                       <div id="container">
+                                               <div id="pjax">
+                                                       <h1 
class="post-title">{{ page.title }}</h1>
+                                                       <article 
class="post-content" >
+                                                       {{ content }}
+                                                       </article>
+                                               </div>
+                                       </div>
+                               </div>
+                       </div>
+               </div>          
+               {% include footer.html %}
+
+       <script src="/assets/js/jquery-1.9.1.min.js"></script> 
+       <script src="/assets/js/bootstrap.min.js"></script> 
+       <script src="/assets/js/main.js"></script>
+       </body>
+</html>

http://git-wip-us.apache.org/repos/asf/kylin/blob/59913167/website/_layouts/docs16.html
----------------------------------------------------------------------
diff --git a/website/_layouts/docs16.html b/website/_layouts/docs16.html
new file mode 100644
index 0000000..8df5e2b
--- /dev/null
+++ b/website/_layouts/docs16.html
@@ -0,0 +1,50 @@
+<!--
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements.  See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership.  The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License.  You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+-->
+
+<!doctype html>
+<html>
+       {% include head.html %}
+       <body>
+               {% include header.html %}
+               
+               <div class="container">
+                       <div class="row">
+                               {% include docs15_nav.html %}
+                               <div class="col-md-9 col-lg-9 col-xs-14 aside2">
+                                       <div id="container">
+                                               <div id="pjax">
+                                                       <h1 
class="post-title">{{ page.title }}</h1>
+                                                       {% if page.version == 
NULL %}
+                                                       {% else %}              
                                        
+                                                               <p>version: 
{{page.version}}, since: {{page.since}}</p>
+                                                       {% endif %}
+                                                       <article 
class="post-content" > 
+                                                       {{ content }}
+                                                       </article>
+                                               </div>
+                                       </div>
+                               </div>
+                       </div>
+               </div>          
+               {% include footer.html %}
+
+       <script src="/assets/js/jquery-1.9.1.min.js"></script> 
+       <script src="/assets/js/bootstrap.min.js"></script> 
+       <script src="/assets/js/main.js"></script>
+       </body>
+</html>

http://git-wip-us.apache.org/repos/asf/kylin/blob/59913167/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/10_agg_group.png
----------------------------------------------------------------------
diff --git 
a/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/10_agg_group.png 
b/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/10_agg_group.png
new file mode 100644
index 0000000..8eea0bf
Binary files /dev/null and 
b/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/10_agg_group.png 
differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/59913167/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/11_Rowkey.png
----------------------------------------------------------------------
diff --git 
a/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/11_Rowkey.png 
b/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/11_Rowkey.png
new file mode 100644
index 0000000..b913b0a
Binary files /dev/null and 
b/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/11_Rowkey.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/59913167/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/12_overwrite.png
----------------------------------------------------------------------
diff --git 
a/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/12_overwrite.png 
b/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/12_overwrite.png
new file mode 100644
index 0000000..2c2e3e7
Binary files /dev/null and 
b/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/12_overwrite.png 
differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/59913167/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/13_Query_result.png
----------------------------------------------------------------------
diff --git 
a/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/13_Query_result.png 
b/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/13_Query_result.png
new file mode 100644
index 0000000..b45a4fa
Binary files /dev/null and 
b/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/13_Query_result.png 
differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/59913167/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/1_Add_streaming_table.png
----------------------------------------------------------------------
diff --git 
a/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/1_Add_streaming_table.png
 
b/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/1_Add_streaming_table.png
new file mode 100644
index 0000000..46cec24
Binary files /dev/null and 
b/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/1_Add_streaming_table.png
 differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/59913167/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/2_Define_streaming_table.png
----------------------------------------------------------------------
diff --git 
a/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/2_Define_streaming_table.png
 
b/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/2_Define_streaming_table.png
new file mode 100644
index 0000000..dca385a
Binary files /dev/null and 
b/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/2_Define_streaming_table.png
 differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/59913167/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/3_Kafka_setting.png
----------------------------------------------------------------------
diff --git 
a/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/3_Kafka_setting.png 
b/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/3_Kafka_setting.png
new file mode 100644
index 0000000..f4afc98
Binary files /dev/null and 
b/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/3_Kafka_setting.png 
differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/59913167/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/3_Paser_setting.png
----------------------------------------------------------------------
diff --git 
a/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/3_Paser_setting.png 
b/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/3_Paser_setting.png
new file mode 100644
index 0000000..e3ede03
Binary files /dev/null and 
b/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/3_Paser_setting.png 
differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/59913167/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/3_Paser_time.png
----------------------------------------------------------------------
diff --git 
a/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/3_Paser_time.png 
b/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/3_Paser_time.png
new file mode 100644
index 0000000..533ce29
Binary files /dev/null and 
b/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/3_Paser_time.png 
differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/59913167/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/4_Streaming_table.png
----------------------------------------------------------------------
diff --git 
a/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/4_Streaming_table.png
 
b/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/4_Streaming_table.png
new file mode 100644
index 0000000..02dd1b2
Binary files /dev/null and 
b/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/4_Streaming_table.png
 differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/59913167/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/5_Data_model_dimension.png
----------------------------------------------------------------------
diff --git 
a/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/5_Data_model_dimension.png
 
b/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/5_Data_model_dimension.png
new file mode 100644
index 0000000..f2dbc0f
Binary files /dev/null and 
b/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/5_Data_model_dimension.png
 differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/59913167/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/6_Data_model_measure.png
----------------------------------------------------------------------
diff --git 
a/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/6_Data_model_measure.png
 
b/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/6_Data_model_measure.png
new file mode 100644
index 0000000..c01c769
Binary files /dev/null and 
b/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/6_Data_model_measure.png
 differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/59913167/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/7_Data_model_partition.png
----------------------------------------------------------------------
diff --git 
a/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/7_Data_model_partition.png
 
b/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/7_Data_model_partition.png
new file mode 100644
index 0000000..c8aa31c
Binary files /dev/null and 
b/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/7_Data_model_partition.png
 differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/59913167/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/8_Cube_dimension.png
----------------------------------------------------------------------
diff --git 
a/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/8_Cube_dimension.png
 
b/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/8_Cube_dimension.png
new file mode 100644
index 0000000..152af9b
Binary files /dev/null and 
b/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/8_Cube_dimension.png
 differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/59913167/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/9_Cube_measure.png
----------------------------------------------------------------------
diff --git 
a/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/9_Cube_measure.png 
b/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/9_Cube_measure.png
new file mode 100644
index 0000000..0fd2601
Binary files /dev/null and 
b/website/images/tutorial/1.6/Kylin-Cube-Streaming-Tutorial/9_Cube_measure.png 
differ

Reply via email to