<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>article Fetch Data using Backend API in Qlik Sense Documents</title>
    <link>https://community.qlik.com/t5/Qlik-Sense-Documents/Fetch-Data-using-Backend-API/ta-p/1548320</link>
    <description>&lt;P&gt;&lt;SPAN&gt;Hi Team,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;I have a small example to share about an important topic &lt;STRONG&gt;hypercube&lt;/STRONG&gt;.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&lt;SPAN&gt;Some questions like :&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;&lt;SPAN&gt;How can we add dimension &amp;amp; measures&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;How can we add Data alternative to dimension &amp;amp; measure&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;How to fetch a cube&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;What property we get&lt;/SPAN&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;SPAN&gt;Let's see how we can achieve all these in a &lt;STRONG&gt;simple&lt;/STRONG&gt; way using "&lt;STRONG&gt;Backend API&lt;/STRONG&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;First make a property for adding &lt;EM&gt;dimension&lt;/EM&gt; &amp;amp; &lt;EM&gt;measure&lt;/EM&gt; OR &lt;EM&gt;data&lt;/EM&gt; in to our &lt;EM&gt;Properties&lt;/EM&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Note : &lt;/SPAN&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;&lt;SPAN&gt;It is important to define initial property i.e. define &lt;STRONG&gt;dimension&lt;/STRONG&gt; &amp;amp; &lt;STRONG&gt;measure&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;Number of &lt;STRONG&gt;columns&lt;/STRONG&gt; &amp;amp; &lt;STRONG&gt;number&lt;/STRONG&gt; of cells to be fetched i.e. &lt;STRONG&gt;qWidth&lt;/STRONG&gt; &amp;amp; &lt;STRONG&gt;qHeight&lt;/STRONG&gt; respectively&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;If we edit the number of column or cells, then you need to delete &amp;amp; add the extension again to&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; view&amp;nbsp; the results&lt;/SPAN&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;&lt;SPAN&gt;Step 1&lt;/SPAN&gt;&lt;/U&gt;&lt;/STRONG&gt;&lt;SPAN&gt; : Define initial property :&lt;/SPAN&gt;&lt;/P&gt;&lt;PRE&gt;initialProperties: {
	qHyperCubeDef: {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
		qDimensions: [],
		&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;qMeasures: [],
		&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;qInitialDataFetch: [{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
			qWidth: 10,
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;qHeight: 1000&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
		}]
	}&amp;nbsp;&amp;nbsp;
},&lt;/PRE&gt;&lt;P&gt;&lt;BR /&gt;&lt;SPAN&gt;&lt;STRONG&gt;&lt;U&gt;&lt;SPAN&gt;Step 2&lt;/SPAN&gt;&lt;/U&gt;&lt;/STRONG&gt;&lt;SPAN&gt; : Understand this properties:&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;A href="https://help.qlik.com/en-US/sense-developer/November2018/Subsystems/APIs/Content/Sense_ClientAPIs/ExtensionAPI/initialproperties-property.htm" target="_blank" rel="noopener"&gt;initialProperties&lt;/A&gt;: &lt;SPAN&gt;Specifies the properties the object should have when created. Define either as a hypercube (&lt;/SPAN&gt;&lt;SPAN&gt;qHyperCubeDef&lt;/SPAN&gt;&lt;SPAN&gt;) or as a list object (&lt;/SPAN&gt;&lt;SPAN&gt;qListObjectDef&lt;/SPAN&gt;&lt;SPAN&gt;). &lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;A href="https://help.qlik.com/en-US/sense-developer/November2018/Subsystems/Extensions/Content/Sense_Extensions/Overview/qHyperCubeDef.htm" target="_blank" rel="noopener"&gt;qHyperCubeDef&lt;/A&gt;&lt;SPAN&gt; : A hypercube can contain both dimensions and measures. If selections are applied to a hypercube, only the selected values are displayed.&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;qDimensions : Dimension to&amp;nbsp; be used.&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;qMeasures : Measure to be used.&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;The maximum number of cells &lt;STRONG&gt;(&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;STRONG&gt;qWidth&lt;/STRONG&gt;&lt;STRONG&gt;&lt;SPAN&gt;&amp;nbsp;*&amp;nbsp;&lt;/SPAN&gt;qHeight&lt;/STRONG&gt;&lt;STRONG&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt; allowed in an initial data fetch is &lt;STRONG&gt;10,000 cells&lt;/STRONG&gt;. Retrieve additional &lt;EM&gt;data in chunks&lt;/EM&gt; using the&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;getData&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;method in the &lt;STRONG&gt;Backend API&lt;/STRONG&gt;.&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;PRE&gt;definition: {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
	type: "items",
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;component: "accordion",
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;items: {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
		dimensions: {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
			uses: "dimensions",
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;min: 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
		},
		&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;measures: {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
			uses: "measures",
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;min: 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
		},
		&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sorting: {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
			uses: "sorting"&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
		},
		&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;settings: {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
			uses: "settings"&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
		}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
	}
},&lt;/PRE&gt;&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;&lt;SPAN&gt;Step 3&lt;/SPAN&gt;&lt;/U&gt;&lt;/STRONG&gt;&lt;SPAN&gt; : Define &lt;STRONG&gt;dimension&lt;/STRONG&gt; &amp;amp; &lt;STRONG&gt;measure&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;A href="https://help.qlik.com/en-US/sense-developer/November2018/Subsystems/Extensions/Content/Sense_Extensions/Howtos/working-with-properties.htm" target="_blank" rel="noopener"&gt;Link to get a clear example&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;SPAN&gt;&lt;STRONG&gt;&lt;U&gt;&lt;SPAN&gt;Step 4&lt;/SPAN&gt;&lt;/U&gt;&lt;/STRONG&gt;&lt;SPAN&gt; : Add &lt;STRONG&gt;&lt;EM&gt;layout&lt;/EM&gt;&lt;/STRONG&gt; option : &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;paint: function($element)&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Add &lt;STRONG&gt;&lt;EM&gt;&lt;SPAN&gt;layout&lt;/SPAN&gt;&lt;/EM&gt;&lt;/STRONG&gt; to the function&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;paint: function($element, layout)&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Console Log &lt;STRONG&gt;&lt;EM&gt;&lt;SPAN&gt;layout to &lt;/SPAN&gt;&lt;/EM&gt;&lt;/STRONG&gt;get your extension&lt;STRONG&gt;&lt;EM&gt;&lt;SPAN&gt; Meta Data / Basic information&lt;/SPAN&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;PRE&gt;paint: function($element, layout) {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
   console.log(layout);
});&lt;/PRE&gt;&lt;P&gt;&lt;SPAN&gt;Now &lt;STRONG&gt;&lt;EM&gt;&lt;SPAN&gt;layout &lt;/SPAN&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;SPAN&gt;will print out basic information about my extension.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;&lt;SPAN&gt;Step 5&lt;/SPAN&gt;&lt;/U&gt;&lt;/STRONG&gt;&lt;SPAN&gt; : Understand what we get in our &lt;STRONG&gt;&lt;EM&gt;layout&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; :&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;extensionMeta:{translationKey:&amp;nbsp;"",icon:"table",iconChar:"g",isLibraryItem:true,visible:true, …}&lt;/LI&gt;&lt;LI&gt;footnote:""&lt;/LI&gt;&lt;LI&gt;qHyperCube:{qSize:&amp;nbsp;{…},&amp;nbsp;qDimensionInfo:&amp;nbsp;Array(6),&amp;nbsp;qMeasureInfo:&amp;nbsp;Array(1),&amp;nbsp;qEffectiveInterColumnSortOrder:&amp;nbsp;Array(7),&amp;nbsp;qGrandTotalRow:&amp;nbsp;Array(1),&amp;nbsp;…}&lt;/LI&gt;&lt;LI&gt;qInfo:{qId:&amp;nbsp;"PKsJZ",&amp;nbsp;qType:&amp;nbsp;"HyperCubeDemo"}&lt;/LI&gt;&lt;LI&gt;showDetails:false&lt;/LI&gt;&lt;LI&gt;showTitles:true&lt;/LI&gt;&lt;LI&gt;subtitle:""&lt;/LI&gt;&lt;LI&gt;title:""&lt;/LI&gt;&lt;LI&gt;version:"1.0.0"&lt;/LI&gt;&lt;LI&gt;visualization:"HyperCubeDemo"&lt;/LI&gt;&lt;/OL&gt;&lt;UL&gt;&lt;LI&gt;extensionMeta: This will have all the configuration added in QEXT file of your extension.&lt;/LI&gt;&lt;LI&gt;footnote: Footnote for extension&lt;/LI&gt;&lt;LI&gt;qHyperCube : It has all the configuration, data, dimension &amp;amp; measure information , Grand total for our measure etc.&lt;/LI&gt;&lt;LI&gt;qInfo : It has type/object name.&lt;/LI&gt;&lt;LI&gt;showTitles : Will enable header &amp;amp; subtitle for object&lt;/LI&gt;&lt;LI&gt;showDetails: &lt;SPAN&gt;will allows users to choose to view details such as descriptions, measures and dimensions when user right clicks on the object.&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;title : Title of object.&lt;/LI&gt;&lt;LI&gt;version : Version of object.&lt;/LI&gt;&lt;LI&gt;visualization : Name of visualization.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;Inside qHyperCube:&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;qDataPages:(4)&amp;nbsp;[{…},&amp;nbsp;{…},&amp;nbsp;{…}]&lt;/LI&gt;&lt;LI&gt;qDimensionInfo:(6)&amp;nbsp;[{…},&amp;nbsp;{…},&amp;nbsp;{…},&amp;nbsp;{…},&amp;nbsp;{…},&amp;nbsp;{…}]&lt;/LI&gt;&lt;LI&gt;qEffectiveInterColumnSortOrder:(7)&amp;nbsp;[0,&amp;nbsp;6,&amp;nbsp;1,&amp;nbsp;2,&amp;nbsp;3,&amp;nbsp;4,&amp;nbsp;5]&lt;/LI&gt;&lt;LI&gt;qGrandTotalRow:[{…}]&lt;/LI&gt;&lt;LI&gt;qMeasureInfo:[{…}]&lt;/LI&gt;&lt;LI&gt;qSize:{qcx:&amp;nbsp;7,&amp;nbsp;qcy:&amp;nbsp;2478}&lt;/LI&gt;&lt;/OL&gt;&lt;UL&gt;&lt;LI&gt;qDataPages : It has all pages that is fetched from backend using backend api.&lt;/LI&gt;&lt;LI&gt;qDimensionInfo : All Dimension Information.&lt;/LI&gt;&lt;LI&gt;qMeasureInfo : All Measure Information.&lt;/LI&gt;&lt;LI&gt;qEffectiveInterColumnSortOrder : Sort order of all the fields added.&lt;/LI&gt;&lt;LI&gt;qGrandTotalRow : Total values as per measure.&lt;/LI&gt;&lt;/UL&gt;&lt;UL&gt;&lt;LI&gt;qSize :&lt;UL&gt;&lt;LI&gt;qcx : Number of columns.&lt;/LI&gt;&lt;LI&gt;Qcy : Total row data.&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;Inside qDataPages:&lt;/P&gt;&lt;P&gt;qArea:{qLeft:&amp;nbsp;0,&amp;nbsp;qTop:&amp;nbsp;0,&amp;nbsp;qWidth:&amp;nbsp;7,&amp;nbsp;qHeight:&amp;nbsp;1000}&lt;/P&gt;&lt;P&gt;qMatrix:(1000)&amp;nbsp;[Array(7),&amp;nbsp;Array(7),…]&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;qArea :&lt;/LI&gt;&lt;/OL&gt;&lt;UL&gt;&lt;LI&gt;qHeight : Rows.&lt;/LI&gt;&lt;LI&gt;qWidth : Column.&lt;/LI&gt;&lt;LI&gt;qTop : Where to start.&lt;/LI&gt;&lt;/UL&gt;&lt;OL&gt;&lt;LI&gt;qMatrix : It has the initial data set fetched as per qArea.&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;Inside qMatrix[0][0]:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;qElemNumber: returns Element Number&lt;/LI&gt;&lt;LI&gt;qNum: returns a number or "NaN"&lt;/LI&gt;&lt;LI&gt;qState: returns the state of this object as "O" , "X" or "S"&lt;/LI&gt;&lt;LI&gt;qText: returns a string value&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;&lt;SPAN&gt;Step 6&lt;/SPAN&gt;&lt;/U&gt;&lt;/STRONG&gt;&lt;SPAN&gt; : Valuable variables&lt;/SPAN&gt;&lt;/P&gt;&lt;PRE&gt;var self = this,
	hypercube = layout.qHyperCube,
	rowcount = hypercube.qDataPages[0].qMatrix.length,
	columncount = hypercube.qDimensionInfo.length + hypercube.qMeasureInfo.length,
	column = hypercube.qSize.qcx,
	totalrows = hypercube.qSize.qcy,
	pageheight = Math.floor(10000 / column),
	numberOfPages = Math.ceil(totalrows / pageheight);&amp;nbsp;
console.log(rowcount, layout);
Make a
function which will run based on numberOfPages from calculated variable

function fetchPage(numberOfPages, row) {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
	var add = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
	for (var i = 1; i &amp;lt;= (numberOfPages); i++) {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Make request pages
		&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
		var requestPage = [{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
			qTop: (row * i) + add,
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;qLeft: 0,
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;qWidth: columncount,
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;qHeight: Math.min(1000, totalrows - rowcount)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
		}];&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
		if (i == 0) {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
			add = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
		}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
		console.log(requestPage, row);&amp;nbsp;&amp;nbsp;&amp;nbsp; // Pass request page in getData method in Backend API
		&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
		self.backendApi.getData(requestPage).then(function(dataPages) {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // update rowcount
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
			rowcount += dataPages[0].qMatrix.length;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // if (rowcount &amp;gt;= hypercube.qSize.qcy) {
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$element.find(".more").hide();
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // }
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
		});&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
	}&amp;nbsp;
}&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Sat, 23 Feb 2019 12:03:32 GMT</pubDate>
    <dc:creator>ajaykakkar93</dc:creator>
    <dc:date>2019-02-23T12:03:32Z</dc:date>
    <item>
      <title>Fetch Data using Backend API</title>
      <link>https://community.qlik.com/t5/Qlik-Sense-Documents/Fetch-Data-using-Backend-API/ta-p/1548320</link>
      <description>&lt;P&gt;&lt;SPAN&gt;Hi Team,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;I have a small example to share about an important topic &lt;STRONG&gt;hypercube&lt;/STRONG&gt;.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&lt;SPAN&gt;Some questions like :&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;&lt;SPAN&gt;How can we add dimension &amp;amp; measures&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;How can we add Data alternative to dimension &amp;amp; measure&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;How to fetch a cube&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;What property we get&lt;/SPAN&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;SPAN&gt;Let's see how we can achieve all these in a &lt;STRONG&gt;simple&lt;/STRONG&gt; way using "&lt;STRONG&gt;Backend API&lt;/STRONG&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;First make a property for adding &lt;EM&gt;dimension&lt;/EM&gt; &amp;amp; &lt;EM&gt;measure&lt;/EM&gt; OR &lt;EM&gt;data&lt;/EM&gt; in to our &lt;EM&gt;Properties&lt;/EM&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Note : &lt;/SPAN&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;&lt;SPAN&gt;It is important to define initial property i.e. define &lt;STRONG&gt;dimension&lt;/STRONG&gt; &amp;amp; &lt;STRONG&gt;measure&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;Number of &lt;STRONG&gt;columns&lt;/STRONG&gt; &amp;amp; &lt;STRONG&gt;number&lt;/STRONG&gt; of cells to be fetched i.e. &lt;STRONG&gt;qWidth&lt;/STRONG&gt; &amp;amp; &lt;STRONG&gt;qHeight&lt;/STRONG&gt; respectively&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;If we edit the number of column or cells, then you need to delete &amp;amp; add the extension again to&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; view&amp;nbsp; the results&lt;/SPAN&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;&lt;SPAN&gt;Step 1&lt;/SPAN&gt;&lt;/U&gt;&lt;/STRONG&gt;&lt;SPAN&gt; : Define initial property :&lt;/SPAN&gt;&lt;/P&gt;&lt;PRE&gt;initialProperties: {
	qHyperCubeDef: {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
		qDimensions: [],
		&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;qMeasures: [],
		&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;qInitialDataFetch: [{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
			qWidth: 10,
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;qHeight: 1000&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
		}]
	}&amp;nbsp;&amp;nbsp;
},&lt;/PRE&gt;&lt;P&gt;&lt;BR /&gt;&lt;SPAN&gt;&lt;STRONG&gt;&lt;U&gt;&lt;SPAN&gt;Step 2&lt;/SPAN&gt;&lt;/U&gt;&lt;/STRONG&gt;&lt;SPAN&gt; : Understand this properties:&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;A href="https://help.qlik.com/en-US/sense-developer/November2018/Subsystems/APIs/Content/Sense_ClientAPIs/ExtensionAPI/initialproperties-property.htm" target="_blank" rel="noopener"&gt;initialProperties&lt;/A&gt;: &lt;SPAN&gt;Specifies the properties the object should have when created. Define either as a hypercube (&lt;/SPAN&gt;&lt;SPAN&gt;qHyperCubeDef&lt;/SPAN&gt;&lt;SPAN&gt;) or as a list object (&lt;/SPAN&gt;&lt;SPAN&gt;qListObjectDef&lt;/SPAN&gt;&lt;SPAN&gt;). &lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;A href="https://help.qlik.com/en-US/sense-developer/November2018/Subsystems/Extensions/Content/Sense_Extensions/Overview/qHyperCubeDef.htm" target="_blank" rel="noopener"&gt;qHyperCubeDef&lt;/A&gt;&lt;SPAN&gt; : A hypercube can contain both dimensions and measures. If selections are applied to a hypercube, only the selected values are displayed.&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;qDimensions : Dimension to&amp;nbsp; be used.&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;qMeasures : Measure to be used.&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;The maximum number of cells &lt;STRONG&gt;(&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;STRONG&gt;qWidth&lt;/STRONG&gt;&lt;STRONG&gt;&lt;SPAN&gt;&amp;nbsp;*&amp;nbsp;&lt;/SPAN&gt;qHeight&lt;/STRONG&gt;&lt;STRONG&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt; allowed in an initial data fetch is &lt;STRONG&gt;10,000 cells&lt;/STRONG&gt;. Retrieve additional &lt;EM&gt;data in chunks&lt;/EM&gt; using the&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;getData&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;method in the &lt;STRONG&gt;Backend API&lt;/STRONG&gt;.&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;PRE&gt;definition: {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
	type: "items",
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;component: "accordion",
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;items: {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
		dimensions: {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
			uses: "dimensions",
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;min: 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
		},
		&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;measures: {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
			uses: "measures",
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;min: 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
		},
		&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sorting: {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
			uses: "sorting"&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
		},
		&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;settings: {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
			uses: "settings"&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
		}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
	}
},&lt;/PRE&gt;&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;&lt;SPAN&gt;Step 3&lt;/SPAN&gt;&lt;/U&gt;&lt;/STRONG&gt;&lt;SPAN&gt; : Define &lt;STRONG&gt;dimension&lt;/STRONG&gt; &amp;amp; &lt;STRONG&gt;measure&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;A href="https://help.qlik.com/en-US/sense-developer/November2018/Subsystems/Extensions/Content/Sense_Extensions/Howtos/working-with-properties.htm" target="_blank" rel="noopener"&gt;Link to get a clear example&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;SPAN&gt;&lt;STRONG&gt;&lt;U&gt;&lt;SPAN&gt;Step 4&lt;/SPAN&gt;&lt;/U&gt;&lt;/STRONG&gt;&lt;SPAN&gt; : Add &lt;STRONG&gt;&lt;EM&gt;layout&lt;/EM&gt;&lt;/STRONG&gt; option : &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;paint: function($element)&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Add &lt;STRONG&gt;&lt;EM&gt;&lt;SPAN&gt;layout&lt;/SPAN&gt;&lt;/EM&gt;&lt;/STRONG&gt; to the function&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;paint: function($element, layout)&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Console Log &lt;STRONG&gt;&lt;EM&gt;&lt;SPAN&gt;layout to &lt;/SPAN&gt;&lt;/EM&gt;&lt;/STRONG&gt;get your extension&lt;STRONG&gt;&lt;EM&gt;&lt;SPAN&gt; Meta Data / Basic information&lt;/SPAN&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;PRE&gt;paint: function($element, layout) {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
   console.log(layout);
});&lt;/PRE&gt;&lt;P&gt;&lt;SPAN&gt;Now &lt;STRONG&gt;&lt;EM&gt;&lt;SPAN&gt;layout &lt;/SPAN&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;SPAN&gt;will print out basic information about my extension.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;&lt;SPAN&gt;Step 5&lt;/SPAN&gt;&lt;/U&gt;&lt;/STRONG&gt;&lt;SPAN&gt; : Understand what we get in our &lt;STRONG&gt;&lt;EM&gt;layout&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt; :&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;extensionMeta:{translationKey:&amp;nbsp;"",icon:"table",iconChar:"g",isLibraryItem:true,visible:true, …}&lt;/LI&gt;&lt;LI&gt;footnote:""&lt;/LI&gt;&lt;LI&gt;qHyperCube:{qSize:&amp;nbsp;{…},&amp;nbsp;qDimensionInfo:&amp;nbsp;Array(6),&amp;nbsp;qMeasureInfo:&amp;nbsp;Array(1),&amp;nbsp;qEffectiveInterColumnSortOrder:&amp;nbsp;Array(7),&amp;nbsp;qGrandTotalRow:&amp;nbsp;Array(1),&amp;nbsp;…}&lt;/LI&gt;&lt;LI&gt;qInfo:{qId:&amp;nbsp;"PKsJZ",&amp;nbsp;qType:&amp;nbsp;"HyperCubeDemo"}&lt;/LI&gt;&lt;LI&gt;showDetails:false&lt;/LI&gt;&lt;LI&gt;showTitles:true&lt;/LI&gt;&lt;LI&gt;subtitle:""&lt;/LI&gt;&lt;LI&gt;title:""&lt;/LI&gt;&lt;LI&gt;version:"1.0.0"&lt;/LI&gt;&lt;LI&gt;visualization:"HyperCubeDemo"&lt;/LI&gt;&lt;/OL&gt;&lt;UL&gt;&lt;LI&gt;extensionMeta: This will have all the configuration added in QEXT file of your extension.&lt;/LI&gt;&lt;LI&gt;footnote: Footnote for extension&lt;/LI&gt;&lt;LI&gt;qHyperCube : It has all the configuration, data, dimension &amp;amp; measure information , Grand total for our measure etc.&lt;/LI&gt;&lt;LI&gt;qInfo : It has type/object name.&lt;/LI&gt;&lt;LI&gt;showTitles : Will enable header &amp;amp; subtitle for object&lt;/LI&gt;&lt;LI&gt;showDetails: &lt;SPAN&gt;will allows users to choose to view details such as descriptions, measures and dimensions when user right clicks on the object.&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;title : Title of object.&lt;/LI&gt;&lt;LI&gt;version : Version of object.&lt;/LI&gt;&lt;LI&gt;visualization : Name of visualization.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;Inside qHyperCube:&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;qDataPages:(4)&amp;nbsp;[{…},&amp;nbsp;{…},&amp;nbsp;{…}]&lt;/LI&gt;&lt;LI&gt;qDimensionInfo:(6)&amp;nbsp;[{…},&amp;nbsp;{…},&amp;nbsp;{…},&amp;nbsp;{…},&amp;nbsp;{…},&amp;nbsp;{…}]&lt;/LI&gt;&lt;LI&gt;qEffectiveInterColumnSortOrder:(7)&amp;nbsp;[0,&amp;nbsp;6,&amp;nbsp;1,&amp;nbsp;2,&amp;nbsp;3,&amp;nbsp;4,&amp;nbsp;5]&lt;/LI&gt;&lt;LI&gt;qGrandTotalRow:[{…}]&lt;/LI&gt;&lt;LI&gt;qMeasureInfo:[{…}]&lt;/LI&gt;&lt;LI&gt;qSize:{qcx:&amp;nbsp;7,&amp;nbsp;qcy:&amp;nbsp;2478}&lt;/LI&gt;&lt;/OL&gt;&lt;UL&gt;&lt;LI&gt;qDataPages : It has all pages that is fetched from backend using backend api.&lt;/LI&gt;&lt;LI&gt;qDimensionInfo : All Dimension Information.&lt;/LI&gt;&lt;LI&gt;qMeasureInfo : All Measure Information.&lt;/LI&gt;&lt;LI&gt;qEffectiveInterColumnSortOrder : Sort order of all the fields added.&lt;/LI&gt;&lt;LI&gt;qGrandTotalRow : Total values as per measure.&lt;/LI&gt;&lt;/UL&gt;&lt;UL&gt;&lt;LI&gt;qSize :&lt;UL&gt;&lt;LI&gt;qcx : Number of columns.&lt;/LI&gt;&lt;LI&gt;Qcy : Total row data.&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;Inside qDataPages:&lt;/P&gt;&lt;P&gt;qArea:{qLeft:&amp;nbsp;0,&amp;nbsp;qTop:&amp;nbsp;0,&amp;nbsp;qWidth:&amp;nbsp;7,&amp;nbsp;qHeight:&amp;nbsp;1000}&lt;/P&gt;&lt;P&gt;qMatrix:(1000)&amp;nbsp;[Array(7),&amp;nbsp;Array(7),…]&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;qArea :&lt;/LI&gt;&lt;/OL&gt;&lt;UL&gt;&lt;LI&gt;qHeight : Rows.&lt;/LI&gt;&lt;LI&gt;qWidth : Column.&lt;/LI&gt;&lt;LI&gt;qTop : Where to start.&lt;/LI&gt;&lt;/UL&gt;&lt;OL&gt;&lt;LI&gt;qMatrix : It has the initial data set fetched as per qArea.&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;Inside qMatrix[0][0]:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;qElemNumber: returns Element Number&lt;/LI&gt;&lt;LI&gt;qNum: returns a number or "NaN"&lt;/LI&gt;&lt;LI&gt;qState: returns the state of this object as "O" , "X" or "S"&lt;/LI&gt;&lt;LI&gt;qText: returns a string value&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;&lt;SPAN&gt;Step 6&lt;/SPAN&gt;&lt;/U&gt;&lt;/STRONG&gt;&lt;SPAN&gt; : Valuable variables&lt;/SPAN&gt;&lt;/P&gt;&lt;PRE&gt;var self = this,
	hypercube = layout.qHyperCube,
	rowcount = hypercube.qDataPages[0].qMatrix.length,
	columncount = hypercube.qDimensionInfo.length + hypercube.qMeasureInfo.length,
	column = hypercube.qSize.qcx,
	totalrows = hypercube.qSize.qcy,
	pageheight = Math.floor(10000 / column),
	numberOfPages = Math.ceil(totalrows / pageheight);&amp;nbsp;
console.log(rowcount, layout);
Make a
function which will run based on numberOfPages from calculated variable

function fetchPage(numberOfPages, row) {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
	var add = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
	for (var i = 1; i &amp;lt;= (numberOfPages); i++) {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Make request pages
		&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
		var requestPage = [{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
			qTop: (row * i) + add,
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;qLeft: 0,
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;qWidth: columncount,
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;qHeight: Math.min(1000, totalrows - rowcount)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
		}];&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
		if (i == 0) {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
			add = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
		}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
		console.log(requestPage, row);&amp;nbsp;&amp;nbsp;&amp;nbsp; // Pass request page in getData method in Backend API
		&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
		self.backendApi.getData(requestPage).then(function(dataPages) {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // update rowcount
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
			rowcount += dataPages[0].qMatrix.length;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // if (rowcount &amp;gt;= hypercube.qSize.qcy) {
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$element.find(".more").hide();
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // }
			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
		});&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
	}&amp;nbsp;
}&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 23 Feb 2019 12:03:32 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Qlik-Sense-Documents/Fetch-Data-using-Backend-API/ta-p/1548320</guid>
      <dc:creator>ajaykakkar93</dc:creator>
      <dc:date>2019-02-23T12:03:32Z</dc:date>
    </item>
  </channel>
</rss>

