Alternate States
Description
You can use Alternate States to perform comparative analysis between sets of multiple data items, for example for basket analysis purposes. A state holds a set of selections.
The QlikView developer can create multiple states within a QlikView document and apply these states to specific objects within the document. The end-user can create copies of these objects (server objects) and then put those objects into different states.
The most important difference between Detach and Alternate States is that ALL objects in a given state will respond to user selections made in that state. Objects in a given state are not affected by user selections in the other states.
Alternate States functionality is not accessible in the load script.
Setting Alternate States
Do the following to enable and set alternate states:
- Click Alternate States... in the Document Properties: General tab.
The Alternate States dialog opens. - Click Add... to create a number of states, and name them. The names will be referred to as state identifiers.
- Click OK to close the dialog.
Now the QlikView developer can create new Alternate States from within screen objects.
End-users who access QlikView documents from a QlikView Server can make use of Alternate States but cannot create Alternate States.
Assigning States to Objects
Do the following to assign a state to an object:
- Open the Properties dialog and select the General tab.
- Set Alternate State to the state identifier you want to use for the object.
The object will now be independent from the rest of the document in terms of selection, unless other objects are set to the same state.
There are two states that are always available; default state and inherited. The default state is the state where most QlikView usage occurs and is represented by $. The QlikView document is always in the default state. Objects can inherit states from higher level objects, such as sheets and containers. This means that states are inherited as such: Document - Sheet - Sheet Objects. The sheets and sheet objects are always in the inherited state unless overridden by the QlikView developer.
Comparing Alternate States
You can compare two states on the same object. For example, you can create a line chart to display both states of the data with the same axis by assigning a state in the expression using set analysis.
Example:
If you have defined the states Group1 and Group2, you can compare the average of field Adj.Close for the groups by showing these two expressions in a line chart:
Avg({[Group1]} [Adj.Close])
Avg({[Group2]} [Adj.Close])
Logical Behavior when Using Alternate States
Pressing the Clear button affects all states.
In the Inter Explorer plugin, a menu item has been added to the Clear button drop-down menu that allows a user clear the selections of a specific state. This menu is not available in the Ajax client, but the same function can be achieved by creating an action button connected to the Clear action with a specific state.
Pressing the Back and Forward buttons affects all states. There is no mechanism to move back and forward through specific states.
Pressing the Lock and Unlock buttons affects all states. It is not possible to lock and unlock specific states with these buttons. It is possible to lock specific fields in states by using the right-click menu on list boxes in a specific state.
The menu items in the Selections menu apply to all states. There is no mechanism to affect specific states in this menu.
Alternate States can be used with linked objects. The state applies to all instances of an object. Changing a state on a linked object will put the other linked objects into the same state.
Actions can be set to occur in specific states. One known exception is the Run Macro action. It can be set to run in a specific state; however macros fire in all states.
Objects that make use of a missing state (the state was removed by a developer) will revert to the default state though the Alternate State drop-down, that will display information such as:
AlternateStateName <unavailable>.
You can only use field functions with a State argument in conjunction with Alternate States.
Variables in Alternate States
You can specify which state to use when expanding a variable. Changes in a specific state do not affect variable values that are expanded in another state. If you do not specify a state, the variable is expanded in the default state.
Example:
If you have a state named MyState, and a variable named vMyVar:
- $(vMyVar) expands the variable in the default state.
- $({MyState} vMyVar) expands the variable in the MyState state.