Mashup Tutorial Einsteiger fertig

Hier nochmal ein Überblick alle Lektionen:

Inhalt:

  1. Basefiles (benötige Dateien für Ihr Projekt)
  2. Objekte über den Dev-Hub hinzufügen (Klassen qvplaceholder und qvobject)
  3. Debuggen mit den Chrome Entwicklertools
  4. Skripten im alternativen Editor (Atom)
  5. Zugriff auf Frameworks welche in Sense vorhanden sind
  6. Charts mit jQuery Ein- und Ausblenden und Qlik.Resize() 
  7.  jQuery-UI Komponenten einbinden
  8. jQuery-UI Komponenten nutzen – Tabs
  9. Qlik Navigation erstellen – Auswahl (zurück / löschen / vorwärts)
  10. Berechnungen seitens des Mashups durchführen
  11. Variablen setzten
  12. Numerisches Feld mit Schieberegler (jQueryUI) einschränken

Variablen- und Feldliste in Extension Proberties

Um Variablen oder Felder in einer Qlik Extension zu nutzen müssen in der define ng!$q nutzen um innerhalb der Proberties auf die Promises von Qlik zugreifen zu können.

Beispiel:

define(["qlik", "jquery",'ng!$q'],

function ( qlik, $,  $q) {
	'use strict';

// Your Code

}

Funktion um die Variablenliste zu erhalten:

var getVariableList = function(){
  var defer = $q.defer();
  app.getList( 'VariableList', function ( items ) {
  defer.resolve( items.qVariableList.qItems.map( function ( item ) {
	return {
		value: item.qName,
		label: item.qName
		}
	} )
       );
     } );
  return defer.promise;
}

weiterlesen

Variablen setzen

Egal ob Extension oder Mashup.

Sie müssen beim setzen von Variablen entscheiden ob der Wert als ZAHL oder STRING gespeichert werden soll. Da in HTML aber immer alles erst mal STRING ist können Sie folgende kleine Funktion nutzen um Zahlen auch als zahlen zu speichern.

function setVariable( name, val, useString = false) {
  if ( !app ) { app = getQlikApp(); }
  if(useString === true) { app.variable.setStringValue(name,val);
  } else {
    if(!isNaN(val)) app.variable.setNumValue(name, parseFloat(val));
    else app.variable.setStringValue(name,val); 
  }
}

Formelsammelung mit einer Excel Datei

Um eine Formelsammlung sinnvoll zu nutzen empfehle ich folgenden Weg:

Aufbau der Excel Datei:

Name Value Desc usedTable
sumLineSalesAmount sum(LineSalesAmount) Summe der Umsätze Facts
sumLineCosts sum(LineCostOfGoods) Summe der Kosten Facts
sumCataloguePrice sum(CataloguePrice) Summe der  Products

 

Die Formelsammlung würde ich zu einem gesamten Datenmodell erstellen, die letzte Spalte in der oberen Zeile kann dann genutzt werden um nur für die im Projekt benutzen Tabellen die Formeln zu generieren.
Sprich die letzte Zeile wird dann nicht geladen und dient nur der Einschränkung.

Zum Einschränken nutze ich in der Regel ein Where usedTable =’Facts‘ or  usedTable = ‚Products‘  etc.

Die restlichen Felder würde ich alle laden, so können Sie diese als Tabelle in QlikView angezeigt werden, so sind diese direkt auch Dokumentiert und für jeden Benutzer schnell einsehbar.

Um die Daten aus der geladen Tabelle zu generieren  benötigen Sie dann folgendes Script:

 

Variables: 
LOAD 
  Name, 
  Value,
  Desc
FROM
[$(Path)Expressions.xls]
(biff, embedded labels, table is Sheet1$);
; 
FOR i=0 TO NoOfRows('Variables') 
  LET vVar = Peek('Name', $(i), 'Variables'); 
  LET vVal = Peek('Value', $(i), 'Variables'); 
  LET '$(vVar)' = '$(vVal)'; 
NEXT

Dieses Script sollten Sie dann auslagern und immer wieder per include im Script einbinden, oder Sie nutzen den Weg über eine QVD.

siehe auch:

Variablen von einer Datei in die andere verschieben:

1. Projektordner erstellen:

create Prj Folder

Legen Sie dazu einfach einen Ordner an der wie Ihre Datei heißt und fügen Sie dem Namen „-prj“ an, siehe Beispiel:

2. Variablen auslesen und in eine qvd speichern:

VariableNames:
LOAD Name AS VariableName
FROM [MeineApplikation-prj\AllProperties.xml] 
(XmlSimple, Table is [AllProperties/VariableProperties/VariableProperties]);
FOR i=0 TO NoOfRows('VariableNames')
  LET varName = Peek('VariableName', $(i), 'VariableNames');
  LET varValue = $(varName);
  Variables:
  LOAD 
   '$(varName)' AS VariableName,
   '$(varValue)' AS VariableValue
  AutoGenerate 1;
  NEXT
STORE Variables INTO Variables.qvd (QVD);
DROP Tables VariableNames, Variables;

3. Variablen aus qvd auslesen

Variables: 
LOAD 
  VariableName, 
  VariableValue 
FROM Variables.qvd (qvd); 
FOR i=0 TO NoOfRows('Variables') 
  LET vVar = Peek('VariableName', $(i), 'Variables'); 
  LET vVal = Peek('VariableValue', $(i), 'Variables'); 
  LET '$(vVar)' = '$(vVal)'; 
NEXT

Sinnvolle Namenskonventionen

In vielen Büchern und in vielen Schulungen bekommt man den Tipp Felder entsprechend zu kennzeichnen, was auch nicht verkehrt ist. Allerdings wird hier in der Regel den Feldnamen ein entsprechendes Zeichen vorangestellt und das ist der Punkt den ich als nicht sinnvoll erachte. Ich gehe hier nur einmal von Feldnamen und Variablennamen innerhalb von QlikView aus. Dort findet man oft Konstrukte wie  

Sales_Name
Sales_Nachname
Sales_usw.

für Felder oder 

vVariable1
vHeute
vUsw

Das Problem bei dieser Schreibweise ist das Sie diese Variablen nicht mehr durch drücken der entsprechenden Buchstaben erreichen. Drücken Sie z.B. die Taste „N“ in einer Feldliste werden Sie nicht bei Sales_Name landen obwohl Sie nach einem Namen suchen.

weiterlesen