Wednesday, October 12, 2011

如何引用Google Maps做為 Oracle Mapviewer 底圖

Oracle Mapviewer可以引用外部圖資做為其底圖, 如Google Map,...等。接下來說明如何在Oracle Mapviewer設定使用 Google Maps。
透過web proxy存取Google Maps
如果Oracle Mapviewer是在公司內部防火牆內,則先要能對外存取Google Map。一般來說公司都會允許透過web proxy來對外存取外部的網站。所幸,Google Maps是web-based的maps,可以在Mapviewer的設定檔內設定透過web proxy來存取Google Maps。

設定完成之後,記得要重新啓動Mapviewer。
取得Google Maps API Key
要取得 Google Maps API key,先要有Google的帳號。這個部分應該相當容易,就不敍述了。接下來到Sign Up for the Google Maps API,將 Oracle Mapviewer執行的主機註冊。例如我的 Mapviewer執行主機的IP為10.179.187.1(Google是建議使用主機名稱與網域進行註冊)。


設定 Oracle Mapviewer部部圖資來源
輸入相關的資訊
該是檢視成果的時候了
成果如下:

Monday, September 05, 2011

Oracle OLAP 一個簡單的範例

Oracle OLAP
需要工具
Oracle Analytic Workspace Manager 一般在安裝完Oracle Client 就會有. 如果想安裝獨立版本, 下載位置: http://www.oracle.com/technetwork/database/options/olap/olap-downloads-098860.html

啓動後需要建立資料庫連線


 



我要試作的範例非常簡單
維度: 地區, 例如: 全國-> 台北市->中正區
計量: 人口數

首先, 先建立一"分析工作區"



建立維度
Area(地區)

在「層次」的TAB下, 建立"COUNTRY"->"COUNTY"->"TOWN", 一個維度的三個層次

設定"AREA"維度的階層


建立CUBE(立方結構)其中只包括一個維度(AREA)與一個計量(人口數)



建立計量(人口數)






設定對應
點選"維度"下的"對應"
維度對應的設定
最上階層(ROOT)設定'中華民國'
點選"立方結構"下的"對應"
立方結構的對應定

產生Oracle BIEE 設定檔
先確定有下載 Oracle BIEE Plug-In
下載位置: http://www.oracle.com/technetwork/database/options/olap/olap-downloads-098860.html
並將Plug-In放置正確的位置






打開  Oracle BIEE Administration Tool
"Past"

Monday, August 22, 2011

Oracle Business Intelligence 與 圖資整合

本篇介紹的順序

先就OBIEE, Oracle Mapviewer, Oracle Database Spatial/Locator進行架構上的說明.

接下來, 花一點時間介紹Oracle spatial/Locator如何儲存地理空間資訊. 以及在地理空間資訊(GIS)怎麼看「地圖」這件事; 或是說「地圖」是怎麼構成的.

接下來談, Oracle Mapviewer怎麼從Oracle Database取出空間資訊, 然後來「畫」地圖.

附帶怎麼匯入台灣地理空間資訊.

接下來便介紹, Oracle Mapviewer怎麼做成類似Google Map.

最後是最簡單的部分, OBIEE怎麼使用地圖

Sunday, July 24, 2011

中文全文檢索

Oracle 資料庫內建全文檢的功能。這個功能包括"中文"的全文檢索方式。但是,如果沒有設定正確,其結果會看起來對,但是又覺怪怪的。

案例一:「寶僑家品股份有限公司」可以找到文章;但是搜尋「寶僑」就找不到文章。
案例二:文章內容有「電熨斗」,卻搜尋不到結果。

以上發生的主要原因是:沒有告訴Oracle資料庫,這些資料是中文字,要用中文字的方式處理,以及進行全文檢索。

什麼!!!中文和英文在尋上有什麼差別?在一般資料庫運作上,一般的索引查詢;也就是使用一般的 CREATE INDEX 所建立的索引,主要是幫助資料庫快速地找到所要查詢的資料。索引本身並沒有太大的意義。

在全文檢索上,所建立全文檢索的索引,則負有識別「TOKEN」的作用。英文與中文的最大差異,英文每個「字」是以空白隔開;這在中文上則沒有辦法以「空白」來區分「字」,必須要另外想辦法進行處理。

為解決該問題,在建立全文檢索索引之前,要告知Oracle資料庫,該需要被建立全文檢索的內容要以「中文」的方式處理。

範例:
以下為簡單的試作,來解釋中文全文檢索所發生的現象。
Table:
TEXT_TABLE (DOC_ID NUMBER, CONTENT CLOB)
DOC_ID: 文件識別代碼
CONTENT: 要被全文檢索的內容
表格範內容如下(內容很長, 故只顯示要查詢索引的內容)

DOC_ID                 CONTENT
---------------------- -------------------------------
1392249                ... ... 寶僑家品股份有限公司... ...

1389541                ... 寶僑家品股份有限公司... ... ...
1391776                ....電熨斗、蒸氣熨斗商品...
                       ... 寶僑家品股份有限公司


在不加上任何指示的情況下,建立索引
create index index1 on text_table(content) indextype is ctxsys.context;

執行SQL,與結果如下:

SELECT DOC_ID FROM text_table
where CONTAINS(content,'寶僑家品股份有限公司',1) > 0;


DOC_ID                
----------------------
1392249               
1389541               
1391776               


SELECT DOC_ID FROM text_table
where CONTAINS(content,'寶僑',1) > 0;

DOC_ID                
----------------------



SELECT DOC_ID FROM text_table
where CONTAINS(content,'電熨斗',1) > 0;

DOC_ID                
----------------------

很奇怪,對吧?

可以透過 CTX_REPORT.DESCRIBE_INDEX 來了解 Oracle 資料庫是怎麼看這個全文檢索的建立。
select ctx_report.describe_index('INDEX1') from dual;

CTX_REPORT.DESCRIBE_INDEX('INDEX1')    
------------------------------------
...
...
lexer:                         BASIC_LEXER
...
...
其中 LEXER 顯示為"BASIC_LEXER"。BASIC_LEXER只提供以空白作為字區隔的英文與西歐語言的全文檢索方式。所以產生上列的查詢結果,也就不會太奇怪了。

為了要正確地能以中文的方式進行全文檢索,在建立全文檢索索引前,必需訴 Oracle 資料庫,以下要檢索的內容是中文,請以中文的方式進行檢索。
執行下行 SQL 指令:
execute ctx_ddl.create_preference('CHINESE_LEXER','chinese_lexer');
定義中文的 lexer

再來才是建立全文檢索的索引,並告訴資料庫要使用中文的方式檢索
create index index1
on text_table(content)
indextype is ctxsys.context
parameters('FILTER CTXSYS.AUTO_FILTER LEXER CHINESE_LEXER')
;
請注意到 parameters 內所傳遞的參數

我們再檢驗之前所執行的 SQLs
SELECT DOC_ID FROM text_table
where CONTAINS(content,'寶僑家品股份有限公司',1) > 0;


DOC_ID
----------------------
1392249
1389541
1391776



SELECT DOC_ID FROM text_table
where CONTAINS(content,'寶僑',1) > 0;


DOC_ID
----------------------

1392249
1389541
1391776



SELECT DOC_ID FROM text_table
where CONTAINS(content,'電熨斗',1) > 0;


DOC_ID
----------------------

1391776

這才是我們認為應該出現的結果。

Monday, July 04, 2011

Oracle BIEE 整合台灣地圖 Part II -- OBIEE 與 MAP 連結設定

使用環境:Oracle Business Intelligence 11g (11.1.1.3)
執行於Weblogic Server 以及 Mapviewer已安裝.

1. 設定有那些地圖(Map) 與 圖層(Theme) 要與 OBIEE 整合
選擇"管理"->"地圖資料管理/管理地圖資料". 會看到"圖層", "背景地圖", 與"影像" 三個TAB
點選"圖層", 並將之前所定義的圖層(Theme) 選擇, 匯入。
下圖為選擇要加入的圖層

 點選該圖層,並選擇右上角的「編輯」
 接下來,就是如何將OBIEE 與 圖層的所屬性 進行連結(註:圖層的屬性, 在之前使用MapBuilder定義圖層時,所定義)







按下「確定」後結束圖層的定義。

接下來,設定「背景地圖」
做法如圖層,只不過次可以選的是地圖。另外在編輯的部分則是要義
BI關聯的縮放比例
如下圖
如上圖,地圖一共可以縮放10層。但第0層時,不顯示。第1層,顯示"TAIWAN"圖層;第2~4層顯示"TWN_COUNTY":第5~9層顯示"TWN_TOWN"。

最後,就是把地圖放入OBIEE ANALYTICS
選擇"新建"->"分析"->選取主題區域
(註:因為資料面的關係, 以下為示意)
選擇 "C52County Name", "1-Revenue" (這些欄位已與圖層進行連結)
點選"結果" TAB,再點選"新檢視"->"對應"(中文翻譯出錯;英文為Map,應該翻譯成"地圖" )
結果顯示如下: