Skip to content

Instantly share code, notes, and snippets.

@countnazgul
Last active April 17, 2022 06:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save countnazgul/2d2137dfd7c8f9444c0e925dfb7f4cf3 to your computer and use it in GitHub Desktop.
Save countnazgul/2d2137dfd7c8f9444c0e925dfb7f4cf3 to your computer and use it in GitHub Desktop.
[List Qlik Sense master items] List all master dimensions and measures #qlik #qliksense #enigma
const enigma = require('enigma.js');
const WebSocket = require('ws');
const schema = require('enigma.js/schemas/12.170.2.json');
let qlik = {
session: {},
global: {},
doc: {},
details: {
host: 'localhost',
port: 4848,
appId: 'C:\\Users\\User-Name\\Documents\\Qlik\\Sense\\Apps\\Executive Dashboard.qvf'
},
objectDefinitions: {
dimensions: {
"qInfo": {
"qType": "DimensionList"
},
"qDimensionListDef": {
"qType": "dimension",
"qData": {
"title": "/title",
"tags": "/tags",
"grouping": "/qDim/qGrouping",
"info": "/qDimInfos"
}
}
},
measures: {
"qInfo": {
"qType": "MeasureList"
},
"qMeasureListDef": {
"qType": "measure",
"qData": {
"title": "/title",
"tags": "/tags"
}
}
}
}
}
let masterItems = {
dimensions: [],
measures: []
}
qlik.session = enigma.create({
schema,
url: `ws://${qlik.details.host}:${qlik.details.port}/app/engineData`,
createSocket: url => new WebSocket(url),
});
(async function () {
qlik.global = await qlik.session.open()
qlik.doc = await qlik.global.openDoc(qlik.details.appId)
masterItems.dimensions = await getMasterItems(qlik.doc, qlik.objectDefinitions.dimensions, 'qDimensionList')
masterItems.measures = await getMasterItems(qlik.doc, qlik.objectDefinitions.measures, 'qMeasureList')
await qlik.session.close()
})()
async function getMasterItems(qDoc, sessionObjectDefinition, type) {
let sessionObject = await qDoc.createSessionObject(sessionObjectDefinition)
let sessionObjectLayout = await sessionObject.getLayout()
await qDoc.destroySessionObject(sessionObject.id)
return sessionObjectLayout[type].qItems
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment