2014年11月24日 星期一

QlikView 語法攻略- 列出維度欄位控制選擇條件

最近在國外BLOG 看到一個範例與大家分享
這個範例原本是在說明另一種使用Chart Object 呈現像multibox選擇條件的方式
但是其中使用了一項控制方式特別拿出來跟大家說明一下
因為這樣的應用再進階一點可以控制到使用維度的互動,或是User 可用的維度呈現控制
















箭頭下方的Multibox Fields 即為維度清單列表, 使用者勾選了那些表格則會在上方呈現欄位供使用者條件選擇.接下來我們來拆解這個小丿步吧!


首先  1: 在語法裡必需要新增一個自定的維度清單TABLE
Multibox:
LOAD * INLINE
[
%Multibox
Year,
Name,
City,
Country,
Product,
Salesperson
];

而Multibox Fields  就是拿取%Multibox 欄位利用List Box 來呈現

動作 2:  建立一變數名稱為eMultiboxShow
         公式:   Index('|' & Concat(%Multibox, '|') &   '|', '|' & $1 & '|') > 0

         Concat(%Multibox, '|')  指是的選擇欄位的合併, 例如: 選了year , name
        則資料的組成就會變為   year|name
        那整個公式的測試請改為下列 , 例如 'Year'   ; 有發現嗎原本公式是$1 但現在用'Year'取代         了, 這個的意思是$1是傳入的參數的第一位,只是我們現在直接用Year 來使用  
      *替代語法*  Index('|' & Concat(%Multibox, '|') &   '|', '|' & 'Year' & '|') 

      {Examples index() 找出字串位置 :  
                            index( 'abcdefg', 'cd' ) returns 3
                  index( 'abcdabcd', 'b', 2 ) returns 6
                            index( 'abcdabcd', 'b', -2 ) returns 2
     }
    運用了Index() 查字串的特性,所以會得到>0 的位置

動作 3: 啓動條件  在Chart Object
       
             在啟用條件式用填入 $(eMultiboxShow('Year'))
              $() 是使用變數的意思,eMultiboxShow 是我們剛剛設的變數名稱,需要傳入值來取代$1 這數是傳用'Year'  這個就會和*替代語法*一樣了, 有發現嗎


以上很簡單的方式就能控制條件了。
而原本的Multibox 改進的方式可參考國外網站

2014年11月2日 星期日

Document Chaining - 檔案鏈接 大資料量分析方式之一

其實我們大部份的分析行為都是針對統計運算後的數值來解析, 但是
實際上我們都是利用明細資料來運算出來的, 也因為如此以前的OLAP 方式就會變成效能愈來愈差的狀況,但實際上我們應當要將資料的屬性切分開來,怎麼說呢?
其實就是引導使用者先以高視角的方式分析出資料,找出自己想看的資料區間後,再引導使用者查看明細資料,這樣的做法可以加快且有效率的讓使用者可以快速分析問題, 又不用一開始就開一個很大的明細檔來分析。

這方式簡單來說就是分析像EXCEL 的樞紐分析, 點選要的分析區域後再查看明細.

那在QlikView 的執行方式是什麼呢?
我們可以利用類似的方法叫做"Document Chaining"

會有一個事先滙總的分析資料, 利用維度條件串接明細資料條件
如下圖, 左方是一個滙總的分析,其維度有日期及地點,
右方是一個明細資料,其維度有日期及地點,
各位有發現了嗎?    沒錯,就是會相同的維度分析資料
也就是利用這個方式, 使用者可以快速分析又快速查詢資料

實現方法:
先製做兩個APP , 一個為匯總資料, 一個為明細資料 , 其中都有共用的維度
在滙總的APP 裡建立一個按鈕, 這按鈕是USER 確定要查詢明細時使用,

建立Actions ,