Qlik Community

Qlik Sense Integration, Extensions, & APIs

Discussion board where members can learn more about Integration, Extensions and API’s for Qlik Sense.

kgershman
New Contributor

Find all Apps that Load a given QVD file

I've got a single APP whose objective is to read SQL Tables and generate QVD files.

I then have a series of Apps that then read those QVD files.  Any given QVD file may be used in one more more Apps.

I'm trying to figure out, for impact analysis, what Apps would be impacted if a QVD file is changed.

I can't locate the proper API methods.  And it appears that once the data is loaded and the search index is produced, the APIs that read the App data are only looking at the "tables" that have already been rendered independent of the source.

Perhaps there are APIs that I haven't found that can read the Data Load scripts?

1 Solution

Accepted Solutions
kenphamvn
Contributor III

Re: Find all Apps that Load a given QVD file

Hi

You can using script to read log files and find all apps that load QVD files

  1. Create a folder  connection (ex  'Log_Folder' ) to Scripts log folder  (ex:..\Qlik\Sense\Log\Script)
  2. Read data from Logs file by this script (you can edit if you want )

for each FoundFile in filelist( 'lib://Log_Folder ' & '\*.log' )

FileList_TMP:

Load

  left(Right('$(FoundFile)', len('$(FoundFile)') -index('$(FoundFile)','/',-1)),36) as App_ID

  ,Replace(@1,'/','\') as QVD_FILES

,FileTime('$(FoundFile)') as ReloadTime

FROM '$(FoundFile)'

(txt, utf8, no labels, delimiter is '\t', msq)

where Upper(@1) like '*.QVD*';

next FoundFile

NoConcatenate

FILE_QVD_TABLE:

load App_ID,

left(Right(QVD_FILES,len(QVD_FILES)-Index(QVD_FILES,'\',-1)),len(Right(QVD_FILES,len(QVD_FILES)-Index(QVD_FILES,'\',-1)))-1)  as  QVD_FILES

,ReloadTime

Resident FileList_TMP

where App_ID <>'13470956-078b-4287-a711-c055f9449fa1'; // exclude Current App

Drop Table FileList_TMP;

Here is my result

1-2-2018 10-45-11 AM.png

Regards

An Pham

3 Replies
kgershman
New Contributor

Re: Find all Apps that Load a given QVD file

There is a GetScript method on the App object, but that's pretty raw and a pain to parse out the QVD files.

Still hoping for something more basic that would represent the source files/databases, etc., that are used by an App.

kenphamvn
Contributor III

Re: Find all Apps that Load a given QVD file

Hi

You can using script to read log files and find all apps that load QVD files

  1. Create a folder  connection (ex  'Log_Folder' ) to Scripts log folder  (ex:..\Qlik\Sense\Log\Script)
  2. Read data from Logs file by this script (you can edit if you want )

for each FoundFile in filelist( 'lib://Log_Folder ' & '\*.log' )

FileList_TMP:

Load

  left(Right('$(FoundFile)', len('$(FoundFile)') -index('$(FoundFile)','/',-1)),36) as App_ID

  ,Replace(@1,'/','\') as QVD_FILES

,FileTime('$(FoundFile)') as ReloadTime

FROM '$(FoundFile)'

(txt, utf8, no labels, delimiter is '\t', msq)

where Upper(@1) like '*.QVD*';

next FoundFile

NoConcatenate

FILE_QVD_TABLE:

load App_ID,

left(Right(QVD_FILES,len(QVD_FILES)-Index(QVD_FILES,'\',-1)),len(Right(QVD_FILES,len(QVD_FILES)-Index(QVD_FILES,'\',-1)))-1)  as  QVD_FILES

,ReloadTime

Resident FileList_TMP

where App_ID <>'13470956-078b-4287-a711-c055f9449fa1'; // exclude Current App

Drop Table FileList_TMP;

Here is my result

1-2-2018 10-45-11 AM.png

Regards

An Pham

kgershman
New Contributor

Re: Find all Apps that Load a given QVD file

This gets me close enough to mark as correct for anyone else who comes by.

Ideally, I'd only read the logs of a given timeframe to avoid getting duplicate counts.  Also, I'd need a way of excluding from QVD_Files those entries that are the timestamped log entries and not the parsed QVD rows.

Thanks for the creativity of examining the logs.

The GetScript api would also work, but would need to be parsed to find the QVD files.

Community Browser