Skip to main content
Announcements
Global Transformation Awards! Applications are now open. Submit Entry
Jamie_Gregory
Community Manager
Community Manager
How can I track app RAM usage over time?
 
How do I optimize my applications so that they can stay under the limit?
 

I am happy to introduce our App Analyzer for Qlik Cloud, that can help answer these questions and more.

AppAnalyzerwithborder.png

 

The app provides insights on:

  • App, Table and Field memory footprints
  • Synthetic keys and island tables to help improve app development
  • Threshold analysis for fields, tables, rows and more
  • Reload times and peak RAM utilization by app
  • And much more!

 

Jamie_Gregory_1-1597163015603.png

 

The App Analyzer uses a single REST connection to iterate over application metadata endpoints within a tenant. The data retrieve can then be measured against tenant quotas and user-defined thresholds to empower Admins to act on the insights that the app reveals. To see the app in action, check out this demo:

 

 

A few things to note:

  • This app is provided as-is and is not supported by Qlik Support.
  • It is recommended to always use the latest app.
  • Information is not collected by Qlik when using this app.
Check out Optimizing Qlik Sense SaaS Apps with App Analyzer for an in-depth dive into the App Analyzer.

 

The app as well as the configuration guide are available via GitHub, linked below. 

 

Any issues or enhancement requests should be opened on the Issues page within the app’s GitHub repository.

Be sure to subscribe to the Qlik Support Updates Blog by clicking the green Subscribe button to stay up-to-date with the latest Qlik Support announcements. Please give this post a like if you found it helpful!

Kind regards,

Qlik Platform Architects

 

Additional Resources:

Techspert Talk: Optimizing Qlik Sense SaaS Apps with App Analyzer

Our other monitoring apps for Qlik Cloud can be found below.

67 Comments
ALEX1977ALEX
Partner - Creator
Partner - Creator

Hello Steve

Thank for your return

it's my bad ...  it was not the good app analyser!

 

 

2,011 Views
psublue98
Creator
Creator

Hello - we have this, v3.0.2, running in our tenant and have noticed inconsistent values for the AppOwnerName field especially when importing apps via qlik-cli. Many AppOwnerName will show as null, and then populate elsewhere despite AppOwnerID being equal. Is there another version floating about that may address?

1,917 Views
SKFRoss
Contributor
Contributor

I downloaded v3.0.2 and about a minute into the data load I receive an error when loading metadata for an app which turns out that doesn't exist in our tenant.

I have 2 questions:

How could this happen ?

How do I fix the issue and have the app reload successfully?

2,037 Views
Sonja_Bauernfeind
Digital Support
Digital Support

Hello @SKFRoss 

I would recommend logging a ticket with support to investigate this issue. This will require troubleshooting and someone to review the situation with you. 

All the best,
Sonja 

1,992 Views
deepakthokal
Partner - Contributor II
Partner - Contributor II

Hello,

Can we check unused fields through this app? If not, is there a way in Qlik Sense SaaS and Windows to find the same?

Regards,

Deepak

1,860 Views
stevedark
Partner Ambassador/MVP
Partner Ambassador/MVP

Hi @deepakthokal 

You should check out https://easyqlik.com/qsda/

This will do everything you need and a whole lot more besides.

Steve

1,840 Views
frigoar1
Contributor III
Contributor III

Hi,

FYI, the latest version was not loading beyond the metadata sub, i.e. not loading anything, until I changed under Metadata:

Trace $(vAppGUID) metadata fetched okay.;

with 

Trace '$(vAppGUID) metadata fetched okay.'; 

1,698 Views
luke_brady
Contributor III
Contributor III

Hello,

is there a way to find which spaces have dedicated capacity set to 'Yes'?

This isn't available in the metadata and the only workaround I found is to manually check within the Management Console and manually add a note in the description.

We want to be able to see how many of our spaces have dedicated capacity turned on so we can keep an eye on the size of the apps in those spaces.

1,564 Views
Sonja_Bauernfeind
Digital Support
Digital Support

Hello @luke_brady 

From what I know, the only way to verify if dedicated capacity is enabled is to check in the Management Console as you already outlined in your question.

I will ask internally to see if other methods exist. This may be an idea to post in our ideas board!

All the best,
Sonja 

1,524 Views
Levi_Turner
Employee
Employee

@luke_brady : Since the API endpoints which would be required to source this information as not published on qlik.dev, it isn't suitable for addition to this application which only includes published / stable endpoints. That being said, this block of code, inserted at the end of the load script, will add a field called space_is_dedicated into the model which can then be used to filter / added to tables to determine which spaces have been tagged as using dedicated capacity:

 

LIB Connect To '$(vu_rest_connection)';

RestConnectorMasterTable:
SQL SELECT 
	"__KEY_root",
	(SELECT 
		"id",
		"__FK_data",
		"__KEY_data"
	FROM "data" PK "__KEY_data" FK "__FK_data")
FROM JSON (wrap on) "root" PK "__KEY_root"
    WITH CONNECTION (  
      URL "https://$(vu_tenant_fqdn)/api/v1/tenants"
    );

[tenants]:
LOAD	
	[id] AS [tenant_id]
RESIDENT RestConnectorMasterTable
WHERE NOT IsNull([__FK_data]);

DROP TABLE RestConnectorMasterTable;
LET vTenantId = Peek('tenant_id',0,'tenants');
DROP TABLE [tenants];

LIB Connect To '$(vu_rest_connection)';

RestConnectorMasterTable:
SQL SELECT 
	"tenantId",
	"__KEY_root",
	(SELECT 
		"@Value",
		"__FK_selectors"
	FROM "selectors" FK "__FK_selectors" ArrayValueAlias "@Value")
FROM JSON (wrap on) "root" PK "__KEY_root"
    WITH CONNECTION (  
      URL "https://$(vu_tenant_fqdn)/api/v1/selectors?tenantId=$(vTenantId)"
    );

[selectors]:
LOAD	[@Value] AS [spaceListRaw],
	[__FK_selectors] AS [__KEY_root]
RESIDENT RestConnectorMasterTable
WHERE NOT IsNull([__FK_selectors]);

[root]:
LOAD	[tenantId],
	[__KEY_root]
RESIDENT RestConnectorMasterTable
WHERE NOT IsNull([__KEY_root]);

DROP TABLE RestConnectorMasterTable;

[spaceListTMP]:
LOAD
	TextBetween([spaceListRaw],'(',')') AS [spaceListTMP]
RESIDENT [selectors];

DROP TABLE [root];
DROP TABLE [selectors];

[spaceListFinal]:
LOAD DISTINCT
	SubField([spaceListTMP],',') AS [SpaceID],
    'Dedicated' AS [space_is_dedicated]
RESIDENT [spaceListTMP];

DROP TABLE [spaceListTMP];

LEFT JOIN([Spaces])
LOAD 
	*
RESIDENT [spaceListFinal];

DROP TABLE [spaceListFinal];

 

 

Edited to include proper quoting, cc @luke_brady 

1,495 Views