Added: kylin/site/cn_blog/2022/04/20/kylin4-on-cloud-part2/index.html
URL: 
http://svn.apache.org/viewvc/kylin/site/cn_blog/2022/04/20/kylin4-on-cloud-part2/index.html?rev=1900099&view=auto
==============================================================================
--- kylin/site/cn_blog/2022/04/20/kylin4-on-cloud-part2/index.html (added)
+++ kylin/site/cn_blog/2022/04/20/kylin4-on-cloud-part2/index.html Thu Apr 21 
08:37:12 2022
@@ -0,0 +1,548 @@
+<!--
+* 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>
+       <!--
+* 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.
+-->
+
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1">
+
+  <title>Apache Kylin | Kylin on Cloud —— 
两小时快速搭建云上数据分析平台(下)</title>
+  <meta name="description" content="以下部分为 Kylin on Cloud —— 
两小时快速搭建云上数据分析平台 
的下篇,上篇请查看:Kylin on Cloud —— 
两小时快速搭建云上数据分析平台(上)">
+  <meta name="author"      content="Apache Kylin">
+  <link rel="shortcut icon" href="fav.png" type="image/png">
+
+
+
+<link rel="stylesheet" href="/assets/css/animate.css">
+<!-- Bootstrap -->
+<link rel="stylesheet" href="/assets/css/bootstrap.min.css">
+
+<!-- Fonts -->
+<!-- <link rel="stylesheet" 
href="http://fonts.googleapis.com/css?family=Alice|Open+Sans:400,300,700"> -->
+
+<!-- Icons -->
+<link rel="stylesheet" href="/assets/css/font-awesome.min.css">
+
+  <!-- Custom styles -->
+  <link rel="stylesheet" href="/assets/css/styles.css">
+  <link rel="stylesheet" href="/assets/css/docs.css">
+  <link rel="stylesheet" href="/assets/css/pygments.css">
+
+  <link rel="canonical" 
href="http://kylin.apache.org/cn_blog/2022/04/20/kylin4-on-cloud-part2/";>
+  <link rel="alternate" type="application/rss+xml" title="Apache Kylin" 
href="http://kylin.apache.org/feed.xml"; />
+
+<!--[if lt IE 9]> <script src="assets/js/html5shiv.js"></script> <![endif]-->
+<!-- Global site tag (gtag.js) - Google Analytics -->
+<script async 
src="https://www.googletagmanager.com/gtag/js?id=UA-120788561-1";></script>
+<script>
+  window.dataLayer = window.dataLayer || [];
+  function gtag(){dataLayer.push(arguments);}
+  gtag('js', new Date());
+
+  gtag('config', 'UA-120788561-1');
+</script>
+<script type="text/javascript" src="/assets/js/jquery-1.9.1.min.js"></script>
+<script type="text/javascript" src="/assets/js/nside.js"></script> </script>
+<script type="text/javascript" src="/assets/js/nnav.js"></script> </script>
+<script>
+var _hmt = _hmt || [];
+(function() {
+  var hm = document.createElement("script");
+  hm.src = "https://hm.baidu.com/hm.js?bdc5e03add430c0b72cc0eb91eabfa99";;
+  var s = document.getElementsByTagName("script")[0]; 
+  s.parentNode.insertBefore(hm, s);
+})();
+</script>
+
+</head>
+
+       <body>
+               <!--
+* 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.
+-->
+
+<header id="header" >
+  
+  <!-- Main Menu -->
+  <nav class="navbar navbar-default" role="navigation" id="nav-wrapper">
+    <div class="container-fluid" id="nav">
+      <!--
+      <img class="img-circle" width="40px" height="40px" id="circlelogo" 
src="/assets/images/kylin_logo.jpg">
+      -->
+      <!-- Brand and toggle get grouped for better mobile display -->
+      <div class="navbar-header">
+        <img class="navbar-logo" width="46" 
src="/assets/images/kylin_logo.png" ></img>
+        <button type="button" class="navbar-toggle collapsed" 
data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
+          <span class="sr-only">Toggle navigation</span>
+          <span class="icon-bar"></span>
+          <span class="icon-bar"></span>
+          <span class="icon-bar"></span>
+        </button>
+        <ul class="nav icon-navbar">
+            <li><a href="https://twitter.com/apachekylin"; target="_blank" 
class="fa fa-twitter fa-lg"  title="Twitter: @ApacheKylin" ></a></li>
+            <li><a href="https://github.com/apache/kylin"; target="_blank" 
class="fa fa-github-alt fa-lg" title="Github: apache/kylin" ></a></li>
+            <li><a href="https://www.facebook.com/kylinio"; target="_blank" 
class="fa fa-facebook fa-lg" title="Facebook: kylin.io" ></a></li>
+        </ul>
+      </div>
+
+      <!-- Collect the nav links, forms, and other content for toggling -->
+      <div class="navbar-collapse collapse" id="bs-example-navbar-collapse-1">
+
+        <ul class="nav navbar-nav">
+
+          <li><a href="/">Home</a></li>
+          <li>
+            <a href="/docs" class="dropdown-toggle" data-toggle="dropdown" 
role="button" aria-haspopup="true" aria-expanded="false">Docs<span 
class="caret"></span></a>
+            <ul class="dropdown-menu">
+              <li><a href="/docs/">Latest Release(Kylin 4.0.1)</a></li>
+              <li><a href="/docs31/">Kylin 3.1.3</a></li>
+              <li><a href="/docs24/">Kylin 2.4.0</a></li>
+              <li><a href="/archive/">Archive</a></li>
+            </ul>
+          </li>
+          <li><a href="/download">Download</a></li>
+          <li><a href="/community" >Community</a></li>
+          <li>
+            <a href="/development" class="dropdown-toggle" 
data-toggle="dropdown" role="button" aria-haspopup="true" 
aria-expanded="false">Development<span class="caret"></span></a>
+            <ul class="dropdown-menu">
+              <li><a href="/development40/">Kylin 4.x</a></li>
+              <li><a href="/development/">Kylin 3.x And Older Versions</a></li>
+            </ul>
+          </li>
+          <li><a href="/blog">Blog</a></li>
+          <li><a href="/cn" >中文版</a></li> 
+        </ul>     
+      </div><!-- /.navbar-collapse -->
+    </div><!-- /.container-fluid -->
+  </nav>
+
+  <div id="head" class="parallax normal-header" >
+    <div class="text-center header-apache">
+      <a href="http://apache.org/foundation/contributing.html"; title="Support 
Apache" style="margin-left: 150px;">
+        <div>
+          <img src="https://www.apache.org/images/SupportApache-small.png"; >
+        </div>
+      </a>
+    </div>  
+  </div>
+  
+ </header>
+
+               <div class="page-content main">
+                       <header style=" padding:2em 0 0 ">
+                       <div class="container" >
+                         <div style=" padding:0 4em">
+                <div class="blog-icon">
+                  <img width="30" src="/assets/images/icon_blog_w.png">
+                </div>
+                               <h4 class="index-title" style=" 
float:left;"><span>Apache Kylin™ Technical Blog</span></h4>
+                         </div>
+                       </div>
+               </div>
+
+               <div class="container blog">
+                       <div>
+                               <article class="post-content" > 
+                               <!--
+* 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.
+-->
+
+<div class="post" style=" padding:2em 4em 4em 4em">
+
+  <header class="post-header">
+    <h1 class="post-title">Kylin on Cloud —— 
两小时快速搭建云上数据分析平台(下)</h1>
+    <p class="post-meta" >Apr 20, 2022 • Yaqian Zhang</p>
+  </header>
+
+  <article class="post-content" >
+    <p>以下部分为 <code class="highlighter-rouge">Kylin on Cloud —— 
两小时快速搭建云上数据分析平台</code> 
的下篇,上篇请查看:<a href="../kylin4-on-cloud-part1/">Kylin on 
Cloud —— 两小时快速搭建云上数据分析平台(上)</a></p>
+
+<h3 id="kylin-">Kylin 查询集群</h3>
+
+<h4 id="kylin--1">启动 Kylin 查询集群</h4>
+
+<p>1.在启动构建集群时使用的 kylin_configs.yaml 
的基础上,打开 mdx 开关:</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>ENABLE_MDX: 
&amp;ENABLE_MDX 'true'
+</code></pre>
+</div>
+
+<p>2.然后执行部署命令启动集群:</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>python deploy.py 
--type deploy --mode query
+</code></pre>
+</div>
+
+<h4 id="kylin--2">体验 kylin 的查询速度</h4>
+
+<p>1.查询集群启动成功后,先执行 <code 
class="highlighter-rouge">python deploy.py --type list</code> 
命令来列出所有节点信息,然后在浏览器输入 
http://${kylin_node_public_ip}:7070/kylin 检查 kylin UI:</p>
+
+<p><img src="/images/blog/kylin4_on_cloud/14_kylin_web_ui.png" alt="" /></p>
+
+<p>2.在 Insight 页面执行与之前在 spark-sql 中相同的 sql:</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>select 
TAXI_TRIP_RECORDS_VIEW.PICKUP_DATE, NEWYORK_ZONE.BOROUGH, count(*), 
sum(TAXI_TRIP_RECORDS_VIEW.TRIP_TIME_HOUR), 
sum(TAXI_TRIP_RECORDS_VIEW.TOTAL_AMOUNT)
+from TAXI_TRIP_RECORDS_VIEW
+left join NEWYORK_ZONE
+on TAXI_TRIP_RECORDS_VIEW.PULOCATIONID = NEWYORK_ZONE.LOCATIONID
+group by TAXI_TRIP_RECORDS_VIEW.PICKUP_DATE, NEWYORK_ZONE.BOROUGH;
+</code></pre>
+</div>
+
+<p><img src="/images/blog/kylin4_on_cloud/15_query_in_kylin.png" alt="" /></p>
+
+<p>可以看到,在查询击中 cube 的情
况下,也就是查询结果直接来自于预计算后的数据,只使用了大概
 4 秒的时间就返回了查询结果,大大节省了查询时间。</p>
+
+<h3 id="section">预计算降低查询成本</h3>
+
+<p>在对比原生 SparkSql 和 Kylin 
查询速度的测试中,我们使用的数据集是纽约市出租车订单数据,事实表å
…±æœ‰ 2 亿+ 
数据。从对比结果可以看到,在上亿的大数据分析场景下,Kylin
 能够显著提升查询效率,通过一次构建加
速上千上万次业务查询,极大的降低查询成本。</p>
+
+<h3 id="section-1">配置语义层</h3>
+
+<h4 id="mdx-for-kylin--dataset">向 MDX for Kylin 导入 Dataset</h4>
+
+<p>在 <code class="highlighter-rouge">MDX for Kylin</code> 中可以æ 
¹æ®æ‰€è¿žæŽ¥çš„ Kylin 中的 Cube 来创建 <code 
class="highlighter-rouge">Dataset</code>,定义 Cube å…
³ç³»ï¼Œåˆ›å»ºä¸šåŠ¡æŒ‡æ ‡ã€‚ä¸ºæ–¹ä¾¿ä½“éªŒï¼Œç”¨æˆ·å¯ä»¥ç›´æŽ¥ä»Ž S3 下载 
Dataset 文件导入到 <code class="highlighter-rouge">MDX for Kylin</code> 
中:</p>
+
+<p>1.从 S3 下载 Dataset 文件到本地机器</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>wget 
https://s3.cn-north-1.amazonaws.com.cn/public.kyligence.io/kylin/kylin_demo/covid_trip_project_covid_trip_dataset.json
+</code></pre>
+</div>
+
+<p>2.访问 <code class="highlighter-rouge">MDX for Kylin</code> 界面</p>
+
+<p>在浏览器输入 <code 
class="highlighter-rouge">http://${kylin_node_public_ip}:7080</code> 访问 
<code class="highlighter-rouge">MDX for Kylin</code> 页面,以 <code 
class="highlighter-rouge">ADMIN/KYLIN</code> 的用户名密ç 
ç»„合登录:</p>
+
+<p><img src="/images/blog/kylin4_on_cloud/16_mdx_web_ui.png" alt="" /></p>
+
+<p>3.确认 Kylin 连接</p>
+
+<p><code class="highlighter-rouge">MDX for Kylin</code> 中已经é…
ç½®äº†éœ€è¦è¿žæŽ¥çš„ kylin 节点的信息,首次登录需要输入 kylin 
节点的用户名和密码也就是 <code 
class="highlighter-rouge">ADMIN/KYLIN</code>:</p>
+
+<p><img src="/images/blog/kylin4_on_cloud/17_connect_to_kylin.png" alt="" 
/></p>
+
+<p><img src="/images/blog/kylin4_on_cloud/18_exit_management.png" alt="" /></p>
+
+<p>4.导入 Dataset</p>
+
+<p>连接 Kylin 成功后点击右上角的图标退出管理界面:</p>
+
+<p><img src="/images/blog/kylin4_on_cloud/19_kylin_running.png" alt="" /></p>
+
+<p>切换到 <code class="highlighter-rouge">covid_trip_project</code> 
项目,在 Dataset 页面中点击 <code class="highlighter-rouge">Import 
Dataset</code>:</p>
+
+<p><img src="/images/blog/kylin4_on_cloud/20_import_dataset.png" alt="" /></p>
+
+<p>选择刚刚从 S3 下载的文件 <code 
class="highlighter-rouge">covid_trip_project_covid_trip_dataset.json</code> 
导入。</p>
+
+<p><code class="highlighter-rouge">covid_trip_dataset</code> 
中定义了各原子指æ 
‡çš„年累计、月累计、年增速、月增速,和时间层级、地区层级等特殊维度、度量,以及新å†
 è‚ºç‚Žç—…死率、出租车平均速度等业务指标。如何手动创建 
Dataset 请参考:<a 
href="https://cwiki.apache.org/confluence/display/KYLIN/Create+Dataset+in+MDX+for+Kylin";>Create
 dataset in MDX for Kylin</a>,MDX for Kylin 手册链接请参考:<a 
href="https://kyligence.github.io/mdx-kylin/";>MDX for Kylin 
使用手册</a>。</p>
+
+<h2 id="section-2">数据分析</h2>
+
+<h3 id="tableau-">通过 Tableau 进行数据分析</h3>
+
+<p>我们以本地 windows 机器上的 tableau 为例连接 MDX for Kylin 
进行数据分析。</p>
+
+<p>1.选择 Tableau 内置的 <code class="highlighter-rouge">Microsoft 
Analysis Service</code> 来连接 <code class="highlighter-rouge">MDX for 
Kylin</code> (需要提前安装 <code class="highlighter-rouge">Microsoft 
Analysis Services</code> 驱动,可从 tableau 官网下载,<a 
href="https://www.tableau.com/support/drivers?_ga=2.104833284.564621013.1647953885-1839825424.1608198275";>Microsoft
 Analysis Services 驱动下载</a>)</p>
+
+<p><img src="/images/blog/kylin4_on_cloud/21_tableau_connect.png" alt="" /></p>
+
+<p>2.在弹出的设置页面中填写 <code class="highlighter-rouge">MDX for 
Kylin</code> 的连接地址,以及用户名和密码,连接地址为 <code 
class="highlighter-rouge">http://${kylin_node_public_ip}:7080/mdx/xmla/covid_trip_project</code>:</p>
+
+<p><img src="/images/blog/kylin4_on_cloud/22_tableau_server.png" alt="" /></p>
+
+<p>3.选择 <code class="highlighter-rouge">covid_trip_dataset</code> 
作为数据集:</p>
+
+<p><img src="/images/blog/kylin4_on_cloud/23_tableau_dataset.png" alt="" /></p>
+
+<p>4.然后即可在工作表中进行数据分析,由于我们在 <code 
class="highlighter-rouge">MDX for Kylin</code> 
中已经统一定义了业务指标,所以在 tableau 
中制作数据分析报表时,可以直接拖拽定义好的业务指æ 
‡åˆ°å·¥ä½œè¡¨ä¸­è¿›è¡Œå±•示。</p>
+
+<p>5.首先分析疫情数据,通过确诊人数、病死率两个指æ 
‡æ¥ç»˜åˆ¶å›½å®¶çº§åˆ«çš„疫情地图,只需要将地区层级中的 <code 
class="highlighter-rouge">COUNTRY_SHORT_NAME</code> 放到工作表的列中 
,将事先定义好的新增确诊人数总和 <code 
class="highlighter-rouge">SUM_NEW_POSITIVE_CASES</code> 和病死率指标 
<code class="highlighter-rouge">CFR_COVID19</code> 
放到工作表的行中,然后选择以地图形式展示数据结果:</p>
+
+<p><img src="/images/blog/kylin4_on_cloud/24_tableau_covid19_map.png" alt="" 
/></p>
+
+<p>其中,图标面积代表死亡人数级别,图标颜色深浅代表病
死率级别。通过疫情
地图可以看出,美国和印度的确诊人数相对较多,但是这两个国家的ç—
…死率与å…
¶ä»–大多数国家没有明显差别;而确诊人数很少的秘鲁、瓦努阿图、墨西哥等国家的ç—
…死率则居高不下。从这个现象å…
¥æ‰‹ï¼Œä¹Ÿè®¸å¯ä»¥æŒ–掘到更深层次的原因。</p>
+
+<p>由于我们设置了地区层级,所以可以将国家级别的疫情
地图下钻到省级别,查看各个国家内部各个地区的疫情情
况:</p>
+
+<p><img src="/images/blog/kylin4_on_cloud/25_tableau_province.png" alt="" 
/></p>
+
+<p>在 province 级别的疫情地图放大看美国的疫情状况:</p>
+
+<p><img src="/images/blog/kylin4_on_cloud/26_tableau_us_covid19.png" alt="" 
/></p>
+
+<p>可以发现,美国每个州的病死率没有明显差距,都在 0.01 
左右;在确诊人数上,California、Texas、Florida 以及纽约市几
个地区明显偏高,这几个地区经济发达、人口众多,新冠
肺炎确诊人数也随之攀升。下面针对纽约市出租车数据集,结合疫æƒ
…发展情况,分析疫情
形势下人们乘坐出租车出行的数据变化。</p>
+
+<p>6.对于纽约市出租车订单数据集,分别从以下两个业务问题å
…¥æ‰‹ï¼š</p>
+
+<ul>
+  
<li>分析纽约市各个街区出行特征,对比订单数量、出行速度等出行指æ
 ‡</li>
+</ul>
+
+<p>将 lookup 表 <code class="highlighter-rouge">PICKUP_NEWYORK_ZONE</code> 
中的字段 <code class="highlighter-rouge">BOROUGH</code> 
拖拽到工作表的列中,将指标 <code 
class="highlighter-rouge">ORDER_COUNT</code>、<code 
class="highlighter-rouge">trip_mean_speed</code> 
拖拽到工作表的行中,以符号地图的方式展示,颜色深浅
代表平均速度、面积大小代表订单数量,可以看到从曼哈顿区出发的出租车订单比别的街区总和都要高,但是平均速度最小,Queens
 街区次之,Staten Island 则是出租车活动最少的一个街区。从 
Bronx 出发的
 出租车平均速度高达 82 英里/小时,比å…
¶ä»–街区的平均速度都高出几倍。从这些出行特征可以映
射出纽约市各个街区的人口密集程度以及经济发达程度。</p>
+
+<p><img src="/images/blog/kylin4_on_cloud/27_tableau_taxi_1.png" alt="" /></p>
+
+<p>然后将 lookup 表 <code 
class="highlighter-rouge">PICKUP_NEWYORK_ZONE</code> 中的字段 <code 
class="highlighter-rouge">BOROUGH</code> 换成 <code 
class="highlighter-rouge">DROPOFF_NEWYORK_ZONE</code> 中的 <code 
class="highlighter-rouge">BOROUGH</code>,统计出租车订单到达街区的数量和平均速度:</p>
+
+<p><img src="/images/blog/kylin4_on_cloud/27_tableau_taxi_2.png" alt="" /></p>
+
+<p>相比出发街区的数据,brookly、Queens 和 Bronx 
三个街区的到达数据都有比较明显的差别,从比例å…
³ç³»ä¸Šæ¥çœ‹ï¼Œåˆ°è¾¾ brookly 和 Bronx 的出租车订单要远远多于从 
Brookly 和 Bronx 出发的订单,到达 Queens 
街区的订单数量则明显小于从 Queens 街区出发的订单。</p>
+
+<ul>
+  <li>疫情前后纽约市居民乘坐出租车的出行习
惯变化,更偏向远程出行还是近程</li>
+</ul>
+
+<p>通过平均出行里程分析居民出行习惯变化,将维度 <code 
class="highlighter-rouge">MONTH_START</code> 拖拽到工作表的行,将指æ 
‡ <code class="highlighter-rouge">trip_mean_distance</code> 
拖拽到工作表的列:</p>
+
+<p><img src="/images/blog/kylin4_on_cloud/28_tableau_taxi_3.png" alt="" /></p>
+
+<p>根据柱状图的结果可以发现,疫情前后人们的出行习
惯发生了明显的变化,从 2020.03 
开始平均出行里程有明显升高,甚至有的月份发生数倍增长,并且疫æƒ
…
开始后每个月的平均出行里程变的很不稳定。基于这种数据表现,我们可以再结合月份维度的疫æƒ
…数据进行联合分析,将 <code 
class="highlighter-rouge">SUM_NEW_POSITIVE_CASES</code> 和 <code 
class="highlighter-rouge">MTD_ORDER_COUNT</code> 
拖拽到工作表的行中,并在筛选器中增加筛选条件 <code 
class="highli
 ghter-rouge">PROVINCE_STATE_NAME=New York</code>:</p>
+
+<p><img src="/images/blog/kylin4_on_cloud/29_tableau_taxi_4.png" alt="" /></p>
+
+<p>可以看到一个有趣的现象,疫情
初期刚刚爆发的时候出租车订单量急剧减少,而平均出行里程增大,说明大家减少了很多不å¿
…要的短距离出行,或者采用出租车以外的更安å…
¨çš„交通方式进行了短距离出行。对比三种数据的曲线变化,可以看到疫æƒ
…严重程度和人们的出行情况表现出很高的相关性,疫情
严重时出租车订单量减少,平均出行里程攀升,然后疫情
好转,出租车订单é‡
 å¢žå¤§ï¼Œå¹³å‡å‡ºè¡Œé‡Œç¨‹å›žè½ã€‚</p>
+
+<h3 id="excel-">通过 Excel 进行数据分析</h3>
+
+<p>有了 <code class="highlighter-rouge">MDX for Kylin</code> 
的帮助,我们在 Excel 中也可以连接 Kylin 
进行大数据分析。这次测试中,我们使用本地 windows 
机器上的 Excel 连接 MDX for Kylin 进行演示。</p>
+
+<p>1.打开 Excel,选择 数据 -&gt; 获取数据 -&gt; 来自数据库 
-&gt; 自 <code class="highlighter-rouge">Analysis Services</code>:</p>
+
+<p><img src="/images/blog/kylin4_on_cloud/30_excel_connect.png" alt="" /></p>
+
+<p>2.在数据连接向导中填写MDX for Kylin 
连接信息,服务器名称为 <code 
class="highlighter-rouge">http://${kylin_node_public_ip}:7080/mdx/xmla/covid_trip_project</code>:</p>
+
+<p><img src="/images/blog/kylin4_on_cloud/31_excel_server.png" alt="" /></p>
+
+<p><img src="/images/blog/kylin4_on_cloud/32_tableau_dataset.png" alt="" /></p>
+
+<p>3.然后为当前的数据连接创建数据透视表,在数据透视表字段中,我们可以看到,在
 Excel 中连接 <code class="highlighter-rouge">MDX for Kylin</code> 中的 
dataset 获取数据信息,可以与 Tableau 保持完全一致,无
论分析人员是在 Tableau 还是 Excel 
中进行分析,都是在一致的数据模型、维度和业务指æ 
‡çš„基础上,达到统一语义的效果。</p>
+
+<p>4.在 Tableau 中我们对 <code class="highlighter-rouge">covid19</code> 
和 <code class="highlighter-rouge">newyork_trip_data</code> 
两个数据集进行了疫情地图绘制和趋势分析。在 Excel 
中对于同æ 
·çš„æ•°æ®é›†å’Œæ•°æ®åœºæ™¯ï¼Œæˆ‘们可以查看更多的明细数据。</p>
+
+<ul>
+  <li>对于疫情数据,为数据透视表选取地区层级字段 <code 
class="highlighter-rouge">REGION_HIERARCHY</code>,以及事å…
ˆå®šä¹‰å¥½çš„æ–°å¢žç—…例数总和 <code 
class="highlighter-rouge">SUM_NEW_POSITIVE_CASES</code> 和病死率指标 
<code class="highlighter-rouge">CFR_COVID19</code>:</li>
+</ul>
+
+<p><img src="/images/blog/kylin4_on_cloud/33_tableau_covid19_1.png" alt="" 
/></p>
+
+<p>由于地区层级的最上层为 <code 
class="highlighter-rouge">CONTINENT_NAME</code>,所以默认展示洲级别的确诊人数和ç—
…死率,可以看到确诊人数最多的洲是欧洲,病
死率最高的是非洲。在这张
数据透视表中我们可以方便的下钻到更下层的地区级别查看更细粒度的明细数据,比如查看亚洲国家的疫æƒ
…数据,并根据确诊人数进行降序排序:</p>
+
+<p><img src="/images/blog/kylin4_on_cloud/34_excel_covid20_2.png" alt="" /></p>
+
+<p>数据显示,亚洲国家中确诊人数排名前三的国家分别是印度、土耳å
…¶å’Œä¼Šæœ—。</p>
+
+<ul>
+  <li>对于纽约市出租车订单数据,针对 “疫情
对于出租车订单数量有无明显影响” 的问题,首å…
ˆä»Žå¹´ä»½çš„维度上查看出租车订单数量的年累计和增速,新建透视表选择时间层级维度
 <code class="highlighter-rouge">TIME_HIERARCHY</code>、<code 
class="highlighter-rouge">YOY_ORDER_COUNT</code> 和 <code 
class="highlighter-rouge">YTD_ORDER_COUNT</code>:</li>
+</ul>
+
+<p><img src="/images/blog/kylin4_on_cloud/35_excel_taxi_1.png" alt="" /></p>
+
+<p>可以看到,2020 年疫情
爆发导致出租车订单数量急剧减少,2020年订单量增速为 
-0.7079,减少了 70% 的出行订单,2021 
年订单量增速仍为负数,但是相比 2020 年疫情
初期订单量减少速度放缓了许多。</p>
+
+<p>展开时间层级,可以查看季度级别、月级别直到天级别的订单累计值,选择
 <code class="highlighter-rouge">MOM_ORDER_COUNT</code> 和 <code 
class="highlighter-rouge">ORDER_COUNT</code> 
到透视表中还可以同时查看月度订单增速以及各个时间层级的订单数量:</p>
+
+<p><img src="/images/blog/kylin4_on_cloud/36_excel_taxi_2.png" alt="" /></p>
+
+<p>2020 年 3 月份,订单增速为 
-0.52,出租车订单已经出现明显减少,4 月份更是跌至 
-0.92,减少了 90% 的订单,后期开始慢æ…
¢å¢žé•¿ï¼Œä½†æ˜¯ä¹Ÿå§‹ç»ˆè¿œä½ŽäºŽç–«æƒ…之前的数量。</p>
+
+<h3 id="api--kylin-">通过 API 集成 Kylin 到数据分析平台</h3>
+
+<p>除了 Excel、Tableau 这种商业 BI 工具,很多企业内
部会开发自己的数据分析平台,在这类自ç 
”数据分析平台上,用户仍然可以通过调用 API 的方式将 Kylin 
+ MDX for Kylin 
作为分析平台的基础底座,保证统一的数据口径。在这次演示中,我们将展示如何通过
 Olap4j 向 MDX for Kylin 发送查询,获得分析结果,Olap4j 
是一个与 JDBC 驱动类似,能够访问任意 OLAP 服务的 Java 
库。</p>
+
+<p>我们提供了一个简单的 demo 
可以方便用户直接进行测试,源码位于 <a 
href="https://github.com/apache/kylin/tree/mdx-query-demo";>mdx query 
demo</a>:</p>
+
+<p>1.下载 demo 演示相关 jar 包:</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>wget 
https://s3.cn-north-1.amazonaws.com.cn/public.kyligence.io/kylin/kylin_demo/mdx_query_demo.tgz
+tar -xvf mdx_query_demo.tgz
+cd mdx_query_demo
+</code></pre>
+</div>
+
+<p>2.运行 demo</p>
+
+<p>运行 demo 之前保证运行环境安装了 java8:</p>
+
+<p><img src="/images/blog/kylin4_on_cloud/37_jdk_8.png" alt="" /></p>
+
+<p>运行 demo 需要两个参数,mdx 节点的 ip 和 需要运行的 mdx 
查询,端口默认为 7080,这里的 mdx 节点 ip 就是 kylin 节点的 
public ip:</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>java -cp 
olap4j-xmla-1.2.0.jar:olap4j-1.2.0.jar:xercesImpl-2.9.1.jar:mdx-query-demo-0.0.1.jar
 io.kyligence.mdxquerydemo.MdxQueryDemoApplication "${kylin_node_public_ip}" 
"${mdx_query}"
+</code></pre>
+</div>
+
+<p>如果用户在运行 demo 时没有通过命令行输入需要执行的 
mdx 语句,则会默认执行以下 mdx 
语句统计从出发街区的维度上各个街区的订单数量和平均里程:</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>SELECT
+{[Measures].[ORDER_COUNT],
+[Measures].[trip_mean_distance]}
+DIMENSION PROPERTIES [MEMBER_UNIQUE_NAME],[MEMBER_ORDINAL],[MEMBER_CAPTION] ON 
COLUMNS,
+NON EMPTY [PICKUP_NEWYORK_ZONE].[BOROUGH].[BOROUGH].AllMembers
+DIMENSION PROPERTIES [MEMBER_UNIQUE_NAME],[MEMBER_ORDINAL],[MEMBER_CAPTION] ON 
ROWS
+FROM [covid_trip_dataset]
+</code></pre>
+</div>
+
+<p>在这次演示中我们直接执行默认查询,执行成功之后,经过简单处理的查询结果会输出到命令行:</p>
+
+<p><img src="/images/blog/kylin4_on_cloud/38_demo_result.png" alt="" /></p>
+
+<p>可以看到,运行 Demo 
之后成功获得了需要查询的数据,数据结果显示,从 Manhattan 
出发的出租车订单数量最多,订单平均里程只有大约 2.4 
英里,符合 Manhattan 地理面积小且人口稠密的特点;而从 
Bronx 的订单平均里程达到 33 英里,成倍的高于å…
¶ä»–任何街区,可能是由于 Bronx 地处偏僻的缘故。</p>
+
+<p>与 Tableau 和 Excel 相同,在 Demo 中编写的 mdx 
语言中可以直接使用在 Kylin 以及 MDX for Kylin 中定义的指æ 
‡ã€‚在企业自ç 
”数据分析平台中,用户可以对查询返回的数据结果进行进一步分析,æ
 ¹æ®å±•示需求生成报表。</p>
+
+<h3 id="section-3">统一的数据口径</h3>
+
+<p>通过以三种不同的数据分析方式连接 Kylin + MDX for Kylin 
进行数据分析展示,我们可以发现,借助 Kylin 多维数据库和 
MDX for Kylin 语义层功能,无
论用户在业务场景中使用哪种方式分析数据,都可以使用相同的数据模型和业务指æ
 ‡ï¼Œè¾¾åˆ°ç»Ÿä¸€æ•°æ®å£å¾„的目的。</p>
+
+<h2 id="section-4">销毁集群</h2>
+
+<h3 id="section-5">销毁查询集群</h3>
+
+<p>在上述分析完成之后,我们可以执行集群销毁命令来销毁查询集群。如果用户希望同时销毁
 Kylin 以及 MDX for Kylin 的元数据库 RDS、监控节点以及 
VPC,那么可以执行集群销毁命令:</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>python deploy.py 
--type destroy-all
+</code></pre>
+</div>
+
+<h3 id="aws-">检查 AWS 资源</h3>
+
+<p>在销毁所有集群资源后,<code 
class="highlighter-rouge">CloudFormation</code> 中不会保留与部署工å…
·ç›¸å…³çš„任何 Stack。如果用户想要删除 S3 中与部署工具相å…
³çš„æ–‡ä»¶ä»¥åŠæ•°æ®ï¼Œå¯ä»¥æ‰‹åŠ¨åˆ é™¤ S3 
工作目录下的以下文件夹:</p>
+
+<p><img src="/images/blog/kylin4_on_cloud/39_check_s3_demo.png" alt="" /></p>
+
+<h2 id="section-6">总结</h2>
+
+<p>通过这次演示教程,只需要一个 AWS 
账号,用户就可以使用云上部署工具,借助于 Kylin 
的预计算技术和多维模型,以及MDX for Kylin 的基础指æ 
‡ç®¡ç†ï¼Œå¿«é€Ÿä¸”方便的搭建基于 Kylin + MDX for Kylin 
的云上大数据分析平台,对接各种 BI å·¥å…
·è¿›è¡ŒæŠ€æœ¯éªŒè¯ï¼Œè¾¾åˆ°é™æœ¬å¢žæ•ˆã€ç»Ÿä¸€æ•°æ®å£å¾„的目的。</p>
+
+
+  </article>
+
+</div>
+
+
+
+
+
+                               </article>
+                       </div>
+               </div>          
+               <!--
+* 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.
+-->
+
+<footer id="underfooter">
+    <div>
+        <div class="row">
+            <div class="col-md-12 widget">
+                <div class="widget-body">
+                    <div class="footer-img">
+                        <a href="http://www.apache.org";>
+                            <img id="asf-logo" height="78px" alt="Apache 
Software Foundation" src="/assets/images/apache_footer.png">
+                        </a>
+                    </div>
+                    <p style="padding-top: 11px;">
+                        The contents of this website are © 2015 Apache 
Software Foundation under the terms of the 
+                        <a href="http://www.apache.org/licenses/LICENSE-2.0";> 
Apache License v2 </a>. 
+                    </p>
+                    <p style="margin-bottom: 11px;">    
+                        Apache Kylin and its logo are trademarks of the Apache 
Software Foundation.
+                    </div>
+
+                </div>
+            </div>
+        </div>
+        <!-- /row of widgets -->
+
+    </div>
+    <div></div>
+
+</footer>
+
+       <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>
+
+
+
+


Reply via email to