Skip to main content
Announcements
See why Qlik is a Leader in the 2024 Gartner® Magic Quadrant™ for Analytics & BI Platforms. Download Now
ArturoMuñoz
Employee
Employee

See what WITH CONNECTION can do for you when working with REST data sources

I was approached by a colleague with a simple but recurrent question, how can I use for…while loops in conjunction with the REST connector, and how can we make it work with the connection library that comes with Qlik Sense.

 

A few months ago I shared a “hack” so we can do loops in our scripts as we do with QlikView, activating Legacy Mode will make connection library optional, please remember that there are a bunch of good reasons for not do that.  “With connection” is a great solution for those of you who don’t want or just can’t activate Qlik Sense Desktop to work in Legacy Mode but still need to loop through several URLs to get complete data.

 

Let’s do a quick example.

 

We need to load data from an online data source, we have a URL to connect to the data that contains the ID of each one of the elements that we would like to load into our app.

 

https://www.domain.com/element?key=elementID/more_stuff

 

We have a list of 100 alphanumeric elementIDs and we need to make sure we load them all. Using our REST connector, we could easily connect to the online data source and extract the data,  but we faced the issue of how to make to connection loop trough a series of items.  

In our example we have an inline table that contains each one of the ID numbers of the elements we want to read in the REST connector, and we need to pass that parameter to the connection URL below.

 

LIB CONNECT TO 'REST';

 
ElementsToLoad:

Load * inline [

ElementID

12fa91

1sy293

h13d13

…

];


Let j=0; for j = 0 to 99 Let vElementID = peek('ElementID', $(j), 'Teams'); RestConnectorMasterTable: SQL SELECT     fields     FROM "datad") FROM JSON (wrap on) "root" PK "__KEY_root" WITH CONNECTION(Url "https://www.domain.com/element?key=$(vElementID)/more_stuff/"); NEXT j; DROP TABLE RestConnectorMasterTable; exit Script;

 

After the inline statement, we loop over the REST connection 100 times, one time for each row of the inline table, I know we have 100 rows so I'm hard coding that number but if you don't know how long your table is you should check that before and store it in a variable.

 

Lately, using "With Connection" we have access to the data source URL so we can expand my variable "vElementID" containing the necessary ID for the connection to work.

 

More info about "With Connection" here -> https://help.qlik.com/en-US/connectors/Subsystems/REST_connector_help/Content/Connectors_REST/Load-R...

 

Arturo @arturoqv

I wish you all a great end of the year and a very successful 2019.

 

32 Comments
ramonneto
Contributor III
Contributor III

Arturo, boa tarde!
Estou tendo um problema, e pesquisando acabei chegando na sua solução.
Estou usando uma condição "WITH CONNECTION" com uma url baseada em uma variável para o ID que muda o valor a cada iteração. Idêntico a sua solução e já fiz em outros modelos que funcionaram bem.
Mas por algum motivo, estou recebendo o erro "HTTP protocol error 405 ()", quando o modelo passa para a segunda iteração do loop construído. 
Sei que não é um problema de configuração do chamada que estou fazendo porque posso valida-la com IDs específicos. O erro acontece apenas após a primeira conexão.
Alguém já teve problema semelhante?

 

Edit 01: O erro acima está diretamente ligado ao local onde faço o drop da minha tabela inicial de conexão rest. Alterei o drop para antes do "Next Variavelx;", dessa forma eu sempre dropo a conexão, antes de fazer a chamada para o próximo código na api.

Essa formato exige que eu salve as informações a cada iteração.

393 Views
konidena
Creator
Creator

Hi Team,

I have the similar issue while trying to restrict the Operations monitor app to hold only one app details, I tried giving the app id in json sql query in Operation monitor app script. but it is throwing me an error. Could someone please help me on how to filter the app id correctly.

Here is the post I logged in the community portal. 

https://community.qlik.com/t5/Qlik-Enterprise-Manager/How-to-apply-filter-to-restrict-Operations-mon...

 

225 Views