QlikView Set Analysis
Tom Mackay
Senior Consultant
Agenda
1. 2. 3. 4.
What is Set Analysis? Why do we use it? How do we use it (syntax)? Examples
Set Analysis What?
Aggregation functions normally aggregate over the set of possible records defined by the current selection. sum( Sales ) But an alternative set of records can be defined by a set expression. sum( {$<Year={2008}>} Sales )
Set Analysis What?
Hence: 1. Conceptually similar to a selection. 2. Provides a method of defining groups (sets) of information that are independent of the current selections. 3. Can create sets based on other sets. 4. Must be used in aggregation function. 5. Always begin and end with curly brackets {}
Set Analysis Why?
Very powerful functionality for comparison analysis.
This year vs. last year Products purchased vs. not purchased
May eliminate the need for additional, complex coding within an application
No need for data islands (but data islands sometimes useful in conjunction with sets) Reduces the need for macros
Provides much more flexibility in the analysis you can create
Expressions can be added for data outside of your current selection criteria
Set Analysis How?
The syntax is broken down into 3 categories:
1. Identifiers 2. Operators 3. Modifiers
Set Analysis How?
The syntax is broken down into 3 categories:
1. Identifiers sum({1 - $} Sales) sum({Bookmark01 <CategoryName={Babywear}>} Sales)
Identifiers
0 1 $ $1 $_1 Bookmark01 - Represents an empty set - Represents the full set of all the records in the application - Represents the records of the current selection - Represents the previous selection - Represents the next (forward) selection - Represents the bookmark ID or the bookmark name
Identifiers
Examples: sum({1} Sales)
Returns total sales within the application, disregarding selections but not the dimension.
sum({$} Sales)
Returns sales for the current selection, i.e. the same as sum(Sales).
sum({$1} Sales)
Returns sales for the previous selection.
sum({Bookmark01} Sales)
Returns sales for the bookmark named Bookmark01.
Set Analysis How?
The syntax is broken down into 3 categories: Identifiers Operators + Union Exclusion Returns the set of all records that belong to the unioned sets Returns records that belong to the first but not the other of the two set identifiers. Returns records that belong to both of the set identifiers. Returns a set that belongs to either, but not both of the set identifiers.
* /
Intersection Symmetric Difference
Operators
Examples:
sum({1 - $} Sales)
Returns sales for everything excluded by the current selection.
sum({$ * Bookmark01} Sales)
Returns sales for the intersection between the current selection and the bookmark Bookmark01.
sum({ - ($ + Bookmark01)} Sales)
Returns sales excluded by current selection and the bookmark Bookmark01.
Set Analysis How?
The syntax is broken down into 3 categories: Identifiers Operators Modifiers sum({BM01 <CategoryName={Babywear), Office={4}>} Sales)
Modifiers
Set Modifiers A set can be modified by additional or changed selections. Such a modification can be written in the set expression. The modifier consists of one or several field names, each followed by selection(s) that can be made in the field. Modifiers begin and end with angle brackets <>.
Modifiers - Examples
sum({$<OrderDate = DeliveryDate>} Sales) Returns the sales for the current selection where OrderDate = DeliveryDate. sum({1<Region = {US}>} Sales) Returns the sales for region US disregarding the current selection. sum({$<Region = >} Sales) Returns the sales for current selection, but with the selection in Region removed. sum({<Region = >} Sales) Returns same as the example above. When the set to modify is omitted, $ is assumed. sum({$<Year={2000}, Region={U*}>} Sales) Returns the sales for current selection, but with new selections both in Year and in Region.
Solution Demonstration
Advanced Set Analysis
1. Dollar sign expansion 2. Indirect Set Analysis
Modifiers
Set Modifiers with Dollar-sign expansions Variables and other dollar-sign expansions can be used in set expressions. Examples:
sum( {$<Year = {$(vLastYear)}>} Sales )
returns the sales for the previous year in relation to the current selection. Here, a variable vLastYear containing the relevant year is used in a dollar-sign expansion.
sum( {$<Year = {$(=Only(Year)-1)}>} Sales )
returns the sales for the previous year in relation to the current selection. Here, a dollar-sign expansion is used to calculate previous year.
Example
Indirect Set Analysis
Set analysis was previously restricted to stating direct selections in a field. Starting with version 9, it is now possible to state selections in a field based on selections in another field. The functions p() and e() can be used to select the set of possible or excluded values within a field.
Indirect Set Analysis
p( ) = Possible e( ) = Excluded
Excluded Possible Customer = p({<Year={$(=max(Year)-1)}>} Customer)
Returns customers who had an association to last year.
sum(({<Year={$(=max(Year))}, Customer = p({<Year={$(=max(Year)-1)} Customer>}) Sales)
Returns this years sales for customers who had sales last year.
Indirect Set Analysis
sum({$<CompanyName = p({$<CategoryName={'Baby Clothes'}>} CompanyName)>} Sales)
Sales for Customers who purchased Baby Clothes. The set p({}) returns the values of CompanyName (Customer) that purchased Baby Clothes.
sum({$<CompanyName = p({$<CategoryName={'Baby Clothes'}>} CompanyName) - p({$<CategoryName={'SportsWear'}>} CompanyName)>} Sales)
Sales for Customers who purchased Baby Clothes but not Sportswear.The first set p({}) returns CompanyName that purchased Baby Clothes.The second set p({}) returns CompanyName that Purchased SportsWear.The Unary Operator "-" between the two gives a list of Customers (CompanyName)that belong to the first but not the other set.
Questions ? For specific questions regarding your utilization of set analysis, please contact your local QlikView representative