2014年7月31日 星期四

QlikView 也能套印報表 ( How to setting a official report in QlikView )

除了彈性互動的分析之外,QlikView也可以產生公司套表的報表格式,例如有表頭的公司名稱啦,及表尾的簽名欄;而且設計這些Reports一點都不難,只要掌握幾個技巧你也可以輕鬆的設定報表,並可以定時的產品PDF 檔案出來。


  • 編輯報表,新增一張報表

  • 報表設定 , 用來調整紙張邊界,頁首頁尾的文字




  • 頁面設定 , 所有控制頁面內容設計 (包含橫向還是直向紙張,長表格資料跨頁以及頁首,頁尾的說明文字)
*資料表格會跨頁時請選 "多選頁"



* 若資料要以某個主題作為篩選分頁時,請勾選下列

* 若資料有前後頁說明,或是你要Show出篩選分頁的內容時,可以將簡介高度設為5%左右,再將分頁的欄位拉至此空間裡就可以達到每一頁分頁時都可以看到是以那個資料作為篩選分頁的內容。


重新用顏色視別設定的區域圖



接著我們就可以來列印看看囉 :) 






2014年7月9日 星期三

將整理好的資料排程滙出成TXT 檔 export txt file format from MARCO


如何將整理好的資料排程滙出成TXT 檔

步驟1:
Edit Module  ( Ctrl+M )  , 增加下列語法
/*===============================
Sub exp()

Dim strNow, strDD, strMM, strYYYY, strFulldate
strYYYY = DatePart("yyyy",Now())
strMM = Right("0" & DatePart("m",Now()),2)
strDD = Right("0" & DatePart("d",Now()),2)
fulldate = strYYYY & strMM & strDD

set obj = ActiveDocument.GetSheetObject("CH06")

obj.Export "C:\ProgramData\QlikTech\Documents\DataName"&fulldate&".txt","|" 
ActiveDocument.Save
Application.Quit
End Sub

/*===============================
說明:  CH06 是你要滙出資料表的ObjectID 
obj.Export 後為檔名而 "|" 為輸出時的欄位間隔符號





步驟2:
           加入一個OnPostReload 的Trigger ;
            下列圖中我有先指定只要前一天的資料條件,再執行Marco



以上存好後再用command 的方式執行就會自動出現滙出的TXT 檔案囉.



2014年7月3日 星期四

QlikView 語法攻略 - 改變用IF 換成用Pick + Match

每次在寫資料計算判斷時寫了一大堆的IF 都讓我不知道該怎麼看語法到底對應到那個去了,
就想到在SQL 語句裡常寫的CASE....WHEN.....END 方式;
我們先來看之前的笨笨寫法如下.

if(status=A,green,
         if(status=B,Amber,
                  if(status=C,Red,Grey))).

看到了嗎,上頭一堆IF 的判斷,再亂一點我就看不出來是在true 還是false 的條件了
所以我改了寫法如下

pick( match(status, 'A', 'B', 'C')+1, 
         'Grey'       ,
         'green'     ,
         'Amber'    ,
         'Red'
      )

說明: status 是欄位; 判斷欄位內容中是'A' 還是'B'還是'C' , 而+1 是為了其它值使用.

QlikView - Set Analysis 日期時間分析

常常寫到要做日期期間比較的分析,整理一下公式如下:


上月
sum({$<Year={'$(=Year(AddMonths(Max(OrderTime),-1)))'}
    ,Month={'$(=Month(AddMonths(max(OrderTime),-1)))'}
    ,[Shop Name]=>} SalesAmt)
 
說明:
OrderTime 是一日期欄位
Max(OrderTime) 是取得目前條件日期選擇中最大的日期
Month(AddMonths(max(OrderTime),-1) 取得少一個月的月份資料;利用此方式才能真正抓到1月份時的上個月是12月份資料。


指定月份期間   

Sum({<, ,Date={'>=$(=AddMonths(Date, -1 ) )<=$(=AddMonths(Date,-1))'}>}SalesAmt)
上年同月
sum({$<Year={'$(=Max(Year)-1)'} , [Shop Name]=>}  SalesAmt)
去年
Sum({$<Year={$(=Max(Year)-1)}>}  SalesAmt
本月() 可用為YTM
sum({$<Month={">0<$(=max(Month)+1)"}  ,[Shop Name]=> } SalesAmt)

Command line execute Reload / partial Reload 指令更新資料

個人版也可以自動化的重新更新資料!

最近有需要寫到Batch 批次檔執行的動作,剛好有也和大家來分享,如何利用指令的方式讓QV執行Reload

Command Reload
"C:\Program Files\QlikView\QV.exe" /r  "documentName.qvw"


Partial Reload
"C:\Program Files\QlikView\QV.exe" /rp " documentName.qvw"




@rem * Command Line Arguments (QVCMD) *
@rem ********************************************
@rem * /r  = Open, Reload, Save, Close *
@rem * /rp = Open, Partial Reload, Save, Close *
@rem * /l  = Open, Reload *
@rem * /p  = Open, Partial Reload *
@rem * /v  = Pass Variables eg /vBatchFlag=1 *
@rem ********************************************