Qlik Community

Qlik Design Blog

All about product and Qlik solutions: scripting, data modeling, visual design, extensions, best practices, etc.

Announcements
QlikWorld, June 24-25, 2020. Free virtual event for Data Integration and Data Analytics gurus. Register Now
Employee
Employee

If you had loaded data from the web into QlikView then you probably know well how “for … next” loops work.

 

When working with Web Files frequently you need to loop through your code to load more than one URL in a single load. For example let's say I want to analyze an online publication, similar to this blog, where different authors contribute with articles. The URL is composed by a constant piece and a variable http://<publicationurl>?start=1’, http://<publicationurl>?start=15’ I want my script to dynamically load all the possible Urls from start=1 to start=375

 

In QlikView my code will look like this:

 

fori=1 to 375



LOAD

pageUrl,
title,
author,
Post
date,
Numberof
views,
Numberof
comments
FROM
[http://publicationurl.com?start=$(i)]
(
html, codepageis 1252, embeddedlabels, tableis @1);

next;

 

 

The script execution will loop 375 times letting me capture all the post written in this particular publication. To do so I’m using a simple variable expansion in the FROM statement.

 

If you want to perform a similar operation in Qlik Sense you might find some difficulties due variables not expanding when dealing with Web Files in Qlik Sense. But there’s a workaround, it’s called Legacy Mode.

 

What's Legacy Mode?

 

Legacy mode is a way to force Qlik Sense to reuse old load scripts that refer to absolute or relative file paths as well as library connections, and it's just what we need in order to successfully run our example script.

 

In Qlik Sense Desktop, you can set standard/legacy mode in Settings.ini.

 

Do the following:

 

Open C:\Users\{user}\My Documents\Qlik\Sense\Settings.ini in a text editor.

Change StandardReload=1 to StandardReload=0.

 

Save the file and start Qlik Sense Desktop, which will run in legacy mode.

 

The available settings for StandardReload are: 1 (standard mode) 0 (legacy mode)

 

For instructions on how to activate the Legacy Mode in Qlik Sense server check Qlik help:

 

http://help.qlik.com/sense/2.0/en-US/online/#../Subsystems/Hub/Content/LoadData/disable-standard-mod...

 

Please note that enabling Legacy Mode in Sense Server might have security implications in Sense Server meaning that you won't be able to manage the paths/connection strings in QMC anymore.

21 Comments
Not applicable

Nice post

0 Likes
5,408 Views
Creator
Creator

Does this also work in the cloud?

0 Likes
5,408 Views
Employee
Employee

Qlik Cloud will not enable legacy mode as that also allows you to load files of the local filesystem outside of a lib connection.

0 Likes
5,408 Views
Luminary
Luminary

Not so happy with this workaround because it breaks all the security enhancements made to better manage  paths / connections strings.

5,408 Views
Employee
Employee

You're right Pablo but I still feel this is a nice addition to desktop environment to solve specific cases, activating this mode in a Server on the other hand is something that must be thinked carefully, but you know... with great power, comes great responsibility

0 Likes
5,408 Views
Partner
Partner

I agree. Legacy mode is a quick way to get your old code working in Qlik Sense Desktop. You should rework it to conform to Qlik Sense Enterprise security before publishing it.

However, there are some cases when the ability to expand a variable is desirable, and does not change the source path (Arturo's example illustrates that). Perhaps enabling variable expansion at the Data Connection level would be a good idea. What do you think?

5,408 Views