Set Analysis A Beginners Guide Version: Date: Author(s) 1.01 2011-08-15 INT Contents A Beginners Guide................................................................................................................ 1 Contents .................................................................................................................................. 2 Introduction ........................................................................................................................... 3 Basic Syntax ......................................................................................................................... 4 Examples .............................................................................................................................. 5 Dynamic Record Sets ........................................................................................................... 7 Adding and Removing Values to Selections......................................................................... 8 More Examples ................................................................................................................... 10 Introduction Qlikview Green/White/Grey functionality is a very simple and intuitive concept. A user makes a series of selections and narrows the application’s data set and associated charts/reports. Set Analysis is Qlikview function that allows you to override this functionality and take control of the selections at an object or chart level. Set Analysis gives the developer complete control over which data is reported in the chart. The following are some scenarios where a developer may wish to use Set Analysis: To compare a measure for multiple time periods. To restrict values from fields in a calculation To Ignore or include some or all of the current selections To perform Cumulative calculations or Year to date results. It is a very simple concept although the syntax can appear complicated. Page | 3 Basic Syntax The following example is used to show how a Set Analysis is composed; Sum of Sales for the country UK to include all current selections. The field to be used in the expression is SALES and the values in that field are to be added together therefore Sum is used. The starting point (IN BLACK) is:Sum(SALES) The Set portion of the expression is then added immediately after the first parenthesis and is enclosed in curly brackets {set expression} Immediately after the first curly bracket ({) a $ sign states that the record set will honor existing current selections and a 1 states that all current selections are to be ignored and the set analysis is to be based on a full data set. Since the example requires current selections to be included a $ is used(IN RED):Sum ({$}Sales) Next the field/s that will be used in the set expression are defined and these are added immediately after the $ and enclosed in less than / greater than (<>) symbols(IN GREEN). In this example only records where country equals UK are to be included, the completed Set Analysis statement is:Sum ({$ <Country ={“UK”} > } Sales) Or it can help, when reading a Set Statement to separate the syntax across multiple lines:Sum ( {$ <Country ={“UK”} > } Sales) Page | 4 Examples Standard Sum of field Sales:SUM( SALES) Set Analysis style SUM of field Sales. The $ means that all current selections remain:SUM( {$} SALES) Set style SUM of field Sales. The 1 means current selections are ignored:SUM( {1} SALES) SUM of Sales for All(*) countries and including current selections:SUM( {$ <[Country] = {"*"} > } SALES) Sum of Sales for all counties, excluding current selections:SUM( {1 <[Country] = {"*"} > } SALES) Sum of Sales for United Kingdom and including current selections:SUM( {$ <[Country] = {"UK"} > } SALES) Page | 5 Sum of Sales for All Countries except United Kingdom, including current selections:SUM( {$ <[Country] -= {"UK"} > } SALES) Page | 6 Dynamic Record Sets Point in Time reporting is easily achieved using set analysis. If you wanted to obtain the years sales for 2010 the following set analysis would be used:Sum( {$ <Year = {2010}> } Sales) If you wanted to return Sales for the immediate previous year to whatever the user selects, you can use the aggregation function:First determine the function that will return the required value, Max(Year) – 1. In this example if the user selects 2010, the function will return 2009, if the user makes multiple selections or no selections at all, you will still get the value of the previous year based on the last possible year. Next you use this function as a set modifier in the final expression, as follows:$(=Function()) (NB equal sign) The final expression would look as follows:Sum( {$ <Year = {$(=Max(Year) – 1)) } Sales This approach works equally well for Quarters, Months, Days etc. however its’ limitation is demonstrated when working with months for example, if a user selects Month 1 (January) and uses the function Max(Month) a zero will be returned and this is not what is required. Page | 7 Adding and Removing Values to Selections The following operators can be used to modify the selections that have been made by the user:= Redefines the selection made for a given field += Defines a union between the selected field value and the next specified:- Sum( {$ <Year += {2009, 2010}> } Sales) …… This expression will return the sales for the years that the user has selected AND the years 2009 and 2010. -= Defines an exclusion of the value specified from the value that the user has selected:Sum( {$ <Product -= {‘Product X’}> } Sales) …… This expression will return the sales for the products the user has selected excluding Product X. *= Defines the values that occur in both the users selections and the values specified in the set expression:Sum( {$ <Product *= {‘Product X’}> } Sales) …… returns the sales for the current selection but only for the intersection of currently selected products and Product X. Page | 8 /= This defines an XOR, the resulting record set will contain the values present in either one set but not in the other:Sum( {$ <ProductNumber *= {“33*”}> } Sales) ……. Returns the sales for the current selection but only for the intersection of currently selected products and all the products with numbers starting with 33 Page | 9 More Examples Sum of Sales and ignore specific selections for Customer Country and Policy Status:SUM( {$<[Customer Country] = , [Policy Status] = >} Sales ) Sum of Sales where Policy Created Year equals variable vMaxCreatedYear:SUM( {$<[Policy Created Year] = {$(#vMaxCreatedYear)}>} Sales ) Sum of Sales where Policy Created Year greater than or equal to variable v2002:SUM( {$<[Policy Created Year] = {">=$(#v2002)"}>} Sales ) Sum of Sales where Policy Created Year less than variable v2002:SUM( {$<[Policy Created Year] = {"<$(#v2002)"}>} Sales ) Sum of Sales where Policy Created Year greater than or equal to v2002 and less than or equal to v2004:SUM( {$<[Policy Created Year] = {">=$(#v2002) <=$(#v2004)"} >} Sales ) Sum of Sales where Product not equal to Life Plan:SUM( {$<Product -= {"Life Plan"} >} Sales ) Sum of Sales where Policy Created Year is greater than 1999 but less than 2004:SUM( {$<[Policy Created Year] = {“>1999<2004”}>} Sales ) Sum of Sales for policies created in the Years beginning “200*” :SUM( {$<[Policy Created Year] = {“200*”}>} Sales ) Sum of Sales excluding where Product equals *Plan* :SUM( {$<~Product = {“*Plan*”}>} Sales ) Sum of Sales to include all current selections and the union of the 2 products, Life Plan and Fleet Secure:SUM( {$<Product += {"Life Plan", "Fleet Secure"} >} Sales ) Sum of Sales to include all current selections and Years 20* and 1997 minus the year 2000:SUM( {$<[Policy Created Year] += {“20*”,1997} – {2000} >} Sales ) Sum of Sales to include all current selections, and the intersect of product Fleet Secure:SUM( {$<Product *= {"Fleet Secure"} >} Sales ) Page | 10 This expression returns the sum of sales for the previous year in relation to the current selection. A dollar-sign expansion is used to calculate the previous year:SUM( {$<[Policy Created Year] = {$(#=Only([Policy Created Year])-1)}>} Sales ) Returns the sum of Sales for all current selections excluding the products with Plan and Secure in their title:SUM({$-1<Product = {"*Plan*", "*Secure*"}>} Sales ) Return the sum of sales for all current selections, with a new selection in the “Customer” field. Only include customers who during 2007 had total sales of more than 1000000:SUM( {$ <Customer = {“=Sum({1<Year = {2007}>} Sales ) > 1000000”}> } Sales ) Page | 11