Skip to main content Skip to complementary content

Dual - script and chart function

Dual() combines a number and a string into a single record, such that the number representation of the record can be used for sorting and calculation purposes, while the string value can be used for display purposes.

Syntax:  

Dual(text, number)

Return data type: dual

Information noteAll dual return values are right-aligned.
Arguments
Argument Description
text The string value to be used in combination with the number argument.
number The number to be used in combination with the string in the string argument.

In Qlik Sense, all field values are potentially dual values. This means that the field values can have both a numeric value and a textual value. An example is a date that could have a numeric value of 40908 and the textual representation '2011-12-31'.

Information noteWhen several data items read into one field have different string representations but the same valid number representation, they will all share the first string representation encountered.
Tip noteThe dual function is typically used early in the script, before other data is read into the field concerned, in order to create that first string representation, which will be shown in filter panes.
Example: Chart expressions
Example Description

Dual(IF(DayOfWeek = 0, 'Monday',

IF(DayOfWeek = 1, 'Tuesday',

If(DayOfWeek = 2 ,'Wednesday',

If(DayOfWeek = 3 ,'Thursday', If(DayOfWeek = 4 ,'Friday', If(DayOfWeek = 5 ,'Saturday', If(DayOfWeek = 6 ,'Sunday'

))))))), DayOfWeek)

The field DayOfWeek can be used in a visualization as a dimension. In a table, the week days are automatically sorted into their correct number sequence, instead of alphabetical order.

Dual(Pick( Priority , 'Low','Medium','High'), Priority) The field Priority can be used in a visualization as a dimension. In a table, the field Priority is automatically sorted into its correct number sequence, instead of alphabetical order.
Dual('Q' & Ceil(Month(Date)/3), Ceil(Month(Date)/3)) The field Date can be used in a visualization as a dimension. The text values Q1 to Q4 are created and assigned the numeric values 1 to 4.
Dual(WeekYear(Date) & '-W' & Week(Date), WeekStart(Date))

The field Date can be used in a visualization as a dimension. This example creates text values of the form '2012-W22' and at the same time, assigns a numeric value corresponding to the date number of the first day of the week, for example: 41057.

Example: Load scripts
Example Description

Add the following examples to your script and run it.

Load dual ( NameDay,NumDay ) as DayOfWeek inline

[ NameDay,NumDay

Monday,0

Tuesday,1

Wednesday,2

Thursday,3

Friday,4

Saturday,5

Sunday,6 ];

The field DayOfWeek can be used in a visualization as a dimension for example. In a table, the week days they are automatically sorted into their correct number sequence, instead of alphabetical order.
Load Dual('Q' & Ceil(Month(Now())/3), Ceil(Month(Now())/3)) as Quarter AutoGenerate 1; This example finds the current quarter. It is displayed as Q1 when the Now function is run in the first three months of the year, Q2 for the second three months, and so on. However, when used in sorting, the field Quarter will behave as its numerical value: 1 to 4.
Dual('Q' & Ceil(Month(Date)/3), Ceil(Month(Date)/3)) as Quarter As in the previous example, the field Quarter is created with the text values Q1 to Q4, and assigned the numeric values 1 to 4. In order to use this in the script the values for Date must be loaded.
Dual(WeekYear(Date) & '-W' & Week(Date), WeekStart(Date)) as YearWeek This example creates a field YearWeek with text values of the form 2012-W22 and at the same time, assigns a numeric value corresponding to the date number of the first day of the week, for example: 41057. In order to use this in the script the values for Date must be loaded.

Example - Dual fundamentals

Example - Dual scenario

Did this page help you?

If you find any issues with this page or its content – a typo, a missing step, or a technical error – let us know how we can improve!