2015年12月9日 星期三

QLIKVIEW 12 版本上架囉! 12-08

QLIKVIEW 12 OFFICIALLY AVAILABLE

QlikView 12 ReleaseFor just a few hours now, QlikView 12, the latest version of one of the world’s leading Business Intelligence platforms, has been available on the market. Besides several innovations familiar from the beta version, the software now offers additional interesting functions.
Around two months after ending the beta test phase, Qlik has published the latest release of its proven analysis solution, QlikView 12. Even before the official release, users were able to get a first glance at several of the new features and extensions. The new features include the improved QIX Engine, extended touch functions, and a new online help portal including context-sensitive help pages to provide support during product use. Furthermore, the beta version already included optimisations pertaining to the security of external interfaces.

如果已經安裝了11.2 的Desktop 版本 需移除再裝QlikView 12
而且有超讚的介紹可以滙入一些外部資料及JSON ,不用再像以前要寫語法了..果然愈來愈合適大資料Big Data 的分析世界


2015年10月27日 星期二

QlikView 語法攻略 - export Excel and Email


提供大家一個簡單的滙出EXCEL 加選擇條件, 並且可以EMAIL 的Marco 語法.
下方語法是使用VBScript , 要注意要選擇System Access 跟Allow system access

另外,如果你不是使用button 呼叫Marco時, 而是Reload 後就要執行Marco 的話,
原則上無法背景處理,及QMC 上排程.
所以要另外下指令,而指令的差異是/r 變成 /l  指的是 Open, Reload *
所以注意我在MARCO 裡加了ActiveDocument.Save  
                                         ActiveDocument.GetApplication.Quit 
讓APP可以關閉

 請參考指令方法Command line execute Reload / partial Reload 指令更新資料







Sub  ExportM1023
 
 
     set f = ActiveDocument.Fields("User.BusinessUnitIdName") 'User.BusinessUnitIdName 是欄位名稱
     f.Select    "業務二處"  
     f.ToggleSelect "業務三處"   '多選擇資料時用
   
set obj = ActiveDocument.GetSheetObject("CH01")
obj.ExportBiff "c:\temp_del\DataM1023.xls"  '暫存的excel 檔案
    'MsgBox("Export done")
 End Sub





Sub mailM1023
Dim objEmail

Const cdoSendUsingPort = 2 ' Send the message using SMTP
Const cdoBasicAuth = 1     ' Clear-text authentication
Const cdoTimeout = 60       ' Timeout for SMTP in seconds

     mailServer = "yourMailserver" ' inpurt your MailServer
     SMTPport = 25
     mailusername = "yourMailUser" ' inpurt your MailServer user 認證用
     mailpassword = "Password"     ' inpurt your Mail  user password 認證用

     mailto = "xxx@mail.com"  ' inpurt who you want to email
   
     mailSubject = "QlikView mailSubject"  ' inpurt mailSubject
       mailBody = "***** This is an automated message from qlikview  ******"  & Chr(13) & Chr(10)
   
Set objEmail = CreateObject("CDO.Message")
Set objConf = objEmail.Configuration
Set objFlds = objConf.Fields

With objFlds
    .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = cdoSendUsingPort
    .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = mailServer
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = SMTPport
.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
    .Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = cdoTimeout
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = cdoBasicAuth
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = mailusername
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = mailpassword
    .Update
End With

objEmail.To = mailto
objEmail.From = mailusername
objEmail.Subject = mailSubject
objEmail.TextBody = mailBody
objEmail.AddAttachment "C:\temp_del\DataM1023.xls'mail 出暫存的excel 檔案
objEmail.Send

'MsgBox("Message Sent")
Set objFlds = Nothing
Set objConf = Nothing
Set objEmail = Nothing

ActiveDocument.Save  
ActiveDocument.GetApplication.Quit   


END Sub

 其它類似語法  滙出成TXT 檔 export txt file format from MARCO

2015年8月25日 星期二

QlikView 語法攻略- 簡易歸納WebLog 分析

剛好手上一個例子..分享給各位參考,

其需求是要將網路上的URL連結歸類屬性,
一般會利用網址中的特別路徑或是參數來判別。

資料需求會有兩項,一個表格為關鍵字,另一個表格則是weblog
Mapping String 就是關鍵字, 用你的關鍵字去歸類資料


範例下載

2015年2月2日 星期一

QlikView 的超強 Data Modeling

QlikView 超強的 Data Modeling

話說一般BI 大都是要先在資料庫端處理好資料,及整理資料後才能介接到BI 上將資料抓出分析,現在的工具甚至還能同時混用異質性資料,但是要每個異質資料都配合你所要要的資料格式給你分析實在是不太可能,所以還是得認份的自己處理資料的!!

簡單來介紹幾個在語法裡用到的像是:
  • resident:先前載入的表格載入資料 重覆拿下來進行運算或是其它資料處理;若資料只想保留運算後的你還能利用Drop Table xxxname;方式來刪除表資料。 
1| tab1:
     Load * ;
       SQL Select A,B,C,D from transtable;
      2| Load A,B,month(C),A*B+D as E resident tab1; 
        3| Load A,A+B+C resident tab1 where A>B;
          4| Load A,B*C as E resident tab1 order by A;
            5| Load A,B*C as E resident tab1 order by 1,2;
              6| Load A,B*C as E resident tab1 order by C desc, B asc, 1 desc;


              • 載入不在檔案上的資料



              Load * Inline
                [CatID, Category
                 0,  Regular
                 1,   Occasional

                2,   Permanent];


              • 將資料分組

              用來試先先運算資料,來儲存
              Load ArtNo, round(Sum(TransAmount),0.05) as ArtNoTotal from table.csv group by ArtNo;

              Load Week, ArtNo, round(Avg(TransAmount),0.05) as WeekArtNoAverages from table.csv group by Week, ArtNo;



              以上先初步列出幾組,但其實還有很多應用,例如使用Web Log ,等LOG 資料的載取,
              都是可以在QV 用一套工具就可完成處理資料到資料分析的功能。

              2014年12月15日 星期一

              QlikView 超強的 Data Modeling- Crosstable精靈教你如何轉換表格

              你是不是也有下圖這類型表格資料,尤其在做年度預算時更是常常出現;這類的資料在QV裡就像是"一塊小蛋糕",我們可以利用精靈的方式就可以將資料滙入囉!一點都不需要在次資料表格的加工


              =====================================================================
              步驟說明:
               
              選擇table files點選你的檔案,接著點選下一步


              你會發現這張報表有些表頭資料是我們不需要的,你可以選擇"Delete Marked" ,但是考量到以後我可能有重覆的資料要滙入所以還是套用判斷式比較好,接下來我們使用此方法來示範

              選擇conditional deleted ,注意我下圖中有圈選欄1這是我拿來判斷,當欄1有空值時就刪除不要滙入資料


              按OK 後就會出現像下圖一樣,表頭空白的資料不見了。


              接著下一次,我們來處理交叉表格的處理
              首先,我們先訂義Label ,再點選Cosstable 


              出現此畫面時,就是在定義你的横軸資料跟原本的維度資料,
              紅色的地方指的就是不需要轉換方向的欄位
              綠色指的是要轉換方向的維度,並且可以重新命名為"Month"
              藍色指的是資料值,重新命名為"AMT" 然後確定



              看到了嗎,資料已經從橫向變成直的囉!


              2014年12月2日 星期二

              如何加快QlikView速度及效能-1


              如何加快QlikView速度及效能



              • Allow Minimize  縮小時QV 不會運算,當打開來時才會運算

              •  Calculation Condition  如果條件不符合時,則資料不會運算,且資料內容可以呈現ERROR 提示訊息

              • Data Model Scenarios and Solutions 

              • Complex Dimensions and Expressions  盡量減少複雜的維度計算,及Count() 方式,
              如果要減少COUNT() 你可以在Script語法裡增加一個虛欄位OrderRecordCounter , 例如 :
              LOAD
              OrderID,
              1 as OrderRecordCounter
              Resident Facts;

              之後要統計時只需要用SUM(OrderRecordCounter)即可


              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 改進的方式可參考國外網站