19 mei 2022

The Qlik Wildmatch() function

Deel dit bericht
Learn everything about the WildMatch() function in Qlik Sense and QlikView

Every Friday at Bitmetric we’re posting a new Qlik certification practice question to our LinkedIn company page. Last Friday we asked the following Qlik Data Architect certification practice question about the Qlik WildMatch() function:

The dataset from Figure 1 has been loaded. What are the contents to be found after using the following expression: =WildMatch(Country, '*Land')?

The correct answer is D: Finland, New Zealand and Poland

Many times you will have to do some form of data transformation to deliver the required results. And in many of those times you will probably find yourself using Subfield(), see Qlik prep question 16 😉, or in this instance Wildmatch().

Wildmatch() is a great tool to find values in a field containing a certain word or having to match a certain string. And while on the surface using Wildmatch() seems pretty straightforward there are still some things to consider or know when using this syntax:

  • Wildmatch() may use wildcard characters:
  • An asterisk (*) will match any number of characters in front of or after the search string. In the question we are looking for any number of characters before Land. Since we are looking for *Land in the example and not *Land* we have not gotten The Netherlands as a result, since we are not looking for Lands.
  • A question mark (?) will match any single character on the place of the question mark. If in this example we would have given the expression Wildmatch(Country, ‘??Land’) the only result would have been Poland.
  • Wildmatch() is case insensitive. As we see in the question example we are looking for ‘Land’, with an upper case L, however the results we get are all where the ‘land‘ part is written with a lower case L.

Did you also know that:

  • Wildmatch() is also a great way to do custom sorting. Sometimes the standard numerically or alphabetically sorting options within Qlik are still not going to work. Take clothing sizes for example. If we would sort those alphabetically we would get L, M, S, XL while S, M, L, XL would be more logical for the viewer. By disabling all other sorts and using sort by expression, we can use =Wildmatch(Sizes, ‘S’, ’M’, ’L’, ’XL’) to fix a custom sorting in place.
  • Wildmatch() also returns a numerical value. This is best explained visually by loading the sizes example:
Example of the WildMatch() function

As we can see in this small example Size S receives a value of 1, since it is the first value we are looking for in the Wildmatch() statement. Then the same goes for M, which is 2, L is 3 and XL is 4. And this comes in handy for example in a load statement. Let’s refer back to the question and the countries. What would happen in the following load statement?

We will not load Netherlands at all. Since by using Wildmatch() the other countrues will receive a value of 1 for the Wildmatch() statement and since that is bigger than 0 they are being loaded. Meanwhile Netherlands will not be loaded since it hasn’t received a numerical value.

Wildmatch(), at a first glance a simple syntax, but is has many possibilities.

The behavior of the Qlik Wildmatch() function with non-alphabetic characters, such as numbers or special symbols, is consistent with its handling of alphabetic characters. Wildmatch() evaluates the pattern specified in the search string against the field values, where an asterisk (*) can match any sequence of characters, and a question mark (?) can replace any single character, irrespective of whether these are letters, numbers, or special symbols. This means if you are searching within strings that contain numbers or symbols, Wildmatch() can identify matches based on the specified pattern. For example, using Wildmatch() with a pattern like ‘*66’ could match “Route66”, and ‘?home’ could match “@home”. The function’s flexibility with character types makes it a powerful tool for pattern matching across diverse datasets.

Wildmatch() can indeed be integrated with a variety of other functions to achieve more nuanced data manipulation or insight generation. For instance, it can be used alongside the If() function to conditionally manipulate data based on pattern matching. This integration allows for complex decision-making within data loads or visualizations. Additionally, Wildmatch() might be used with aggregation functions to group or filter data based on matching criteria, enhancing the analytical capabilities of Qlik applications. This versatility underlines the function’s utility in creating dynamic and responsive data models.

When it comes to the performance impact of using Wildmatch() on large datasets, like any computationally intensive operation, it can affect performance, especially if applied to very large datasets or complex matching patterns. To optimize its usage and ensure efficient data processing, developers are advised to use Wildmatch() judiciously, particularly in scenarios where pattern matching is essential for the analysis but might be resource-intensive. Efficient use might involve pre-filtering the dataset to reduce the size before applying Wildmatch(), ensuring the patterns are as specific as possible to minimize unnecessary computations, and avoiding overly complex nested functions that can slow down processing.

That’s it for this week. See you next Friday?

Take your Qlik skills to the next level!

Since 2013, the Masters Summit for Qlik is the premier advanced training for Qlik. Join us in Vienna and take your Qlik skills to the next level.

Join the team!

Do you want to work within a highly-skilled, informal team where craftsmanship, ingenuity, knowledge sharing and personal development are valued and encouraged? Check out our job openings.

Friday Qlik Test Prep Functions Solution

Hoe kunnen we je ondersteunen?

Barry beschikt over meer dan 20 jaar ervaring als architect, developer, trainer en auteur op het gebied van Data & Analytics. Hij is bereid om je te helpen met al je vragen.