Erste Einheiten zum Mashup Tutorial fertig

Die ersten Einheiten zum Mashup Tutorial sind jetzt verfügbar, werden aber ggf. noch erweitert. 

http://qlik.binom.net/4-developers/mashup-tutorial/

Wer schon mal reinschauen möchte:

  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 nutzen
  8. Berechnungen seitens des Mashups durchführen
  9. Variablen auslesen und setzten

Die nächsten 3 Einheiten sind in Arbeit.

Set Analysis Einführung – Nur bestimmte Filter freigeben

In Teil 1 haben wir kennen gelernt wie man Filter (Modifier) nutzt um die ersten einfachen Ausdrücke zur erstellen. 

Hier wollen wir anknüpfen: 

Gehen wir davon aus das Sie ein Dashboard erstellen wollen auf dem die Werte nur noch auf eine Region und ein Quartal eingeschränkt werden sollen.

In der letzten Einführung haben wir dieses durch die Angabe des Feldes erledigt sum({  $ < Jahr={2018}, Monat={Jan} > } Umsatz).

Diese Methode ist aber ehr ungeeignet um nur einige Felder freizugeben.

Hier ist es sinnvoller erst mal alle Felder mit dem Identifier 1 zu sperren und dann Einzeile Felder wieder freizuschalten. Dies erreichen Sie mit der Notation Feld=$::Feld

Kommen wir zurück zum obigen Beispiel, Sie wollen nur die Filter Region und Quartal für Ihre Formel nutzen:

sum({  $ < Region=$::Region, Quartal=$::Quartal > } Umsatz)

Im nächsten Beitrag werden Sie erfahren wie Sie Operatoren und + und – nutzen.

 

 

Set Analysis Einführung – Operatoren Plus und Minus

Fangen wir mit den Operatoren + und – an:

Gehen wir von einen der ersten behandelten Ausdrücke aus:

sum({  $ < Jahr={2017} > } Umsatz) 

lieferte uns nur die Werte aus dem entsprechendem Jahr. Wenn Sie nun einen der Operatoren + oder – wählen fügen Sie das entsprechende Jahr der Auswahl immer hinzu oder entfernen es wieder.

sum({  $ < Jahr={2017} > } Umsatz) 

Wenn Sie das Jahr 2017 auswählen erhalten Sie für diesen Ausdruck 0, wenn alle Jahre ausgewählt sind ist das Jahr 2017 nicht enthalten. 

sum({  $ < Jahr+={2017} > } Umsatz) 

Hier Wiederrum spielt es keine Rolle ob 2017 ausgewählt ist oder nicht, es ist immer in der Summe des Umsatzes enthalten.

Sie wollen alle Kunden selektieren die mit A anfangen aber Arnold ausschließen:

sum({  $ < Kunde={„A*“} – {‚Arnold‘} > } Umsatz) 

Sie wollen alle Kunden selektieren die mit A anfangen und auch den Kunden Donald

sum({  $ < Kunde={„A*“} + {‚Donald‘} > } Umsatz) 

Qlik Sense Framework jetzt auf GIT

Das Qlik Sense Framework ist jetzt unter folgendem Link verfügbar https://github.com/Ac1d0n3/Qlik-Sense-Framework

Die entsprechende Dokumentation zu dem Framework ist zum größten Teil fertig. Für QlikView wird es die entsprechenden Links in Kürze auch geben. Eine entsprechende Dokumentation und Installationshilfe finden Sie im Bereich Qlik Framework.

In der Doku ist auch eine passende Erklärung zum Thema Staging bzw. ETL enthalten.

 

Set Analysis Einführung – Identifier

sum(Umsatz) 

zeigt den Umsatz abhängig von den Filtern an, Standard Verhalten.

Was ist Set Anlysis?

Mit Set Analysis können Sie der obigen Formel einen Filter mitgeben, so das dieser gesetzt ist,  ohne das man diesen an der Oberfläche selektiert.

Sie wollen z.B in einer Kennzahl eine feste Region anzeigen oder das aktuelle Jahr mit dem Vorjahr berechnen.

Wie ist Set Analysis aufgebaut?

wir gehen erneut von unserer Grundformel sum(Umsatz) aus. Um Set Analysis einzuleiten müssen Sie diese Grundformel wie folgt erweitern:
sum({  Identifier  } Umsatz).

Als Identifier haben Sie folgende Möglichkeiten:

1 = Filter ignorieren

sum({  1  } Umsatz)
Wenn Sie  1 als Identifier wählen ist, erhalten Sie unabhängig von den Filtern, immer den gesamten Umsatz über alle Werte. Sie erhalten das gleiche Ergebnis wenn Sie statt den Ausdruck {1} das Schlüsselwort ALL nutzen sum(ALL Umsatz).

$ = weitere Filter zulassen

sum({  $  } Umsatz)
Wenn Sie nur  $ als Identifier wählen ist die Erweiterung erst mal wirkungslos weil er das gleiche Ergebnis wie sum(Umsatz) liefert.

Filter (Modifier)

bleiben wir nun bei diesem Ausdruck sum({  $  } Umsatz)  um diesen Ausdruck nun sinnvoll zu gestalten müssen wir mindestens einen Filter mitgeben. Diese geschieht wie folgt
sum({  $ <Filter={Filterwert}>  } Umsatz).

weiterlesen

Alle Filter mit zwei Filterboxen

Formel für den ersten Filter: $Field

Formel für den zweiten Filter: =’$(=only($Field))‘

Formel für das Label: =only($Field)

Sie können sich im Script auch eine kleine Helfertabelle anlegen um nur bestimmte Dimensionen anzuzeigen:

Load * Inline [
MeineDimensionen
Dim1
Dim2
//usw
];

Die Formel würden dann so aussehen:

Formel für den ersten Filter: MeineDimensionen

Formel für den zweiten Filter: =’$(=only(MeineDimensionen))‘

Formel für das Label: =only(MeineDimensionen)

 

Excel Datein laden HowTo 1

BeispielTabelle.xls:

A B C
Item A Value 1 10
Item A Value 2 20
Item B Value 3 30
Item C Value 4 40

Problem

Sie wollen nur die Zeilen laden in denen in Spalte A „ItemA“ und „ItemC“ vorkommt.

Lösung

Nutzung eines Where Statements welches auch beim laden von Excel Dateien genutzt werden kann.

Load A,B,C From BeispielTabelle.xls 
Where A = 'ItemA' or A = 'ItemC';

Ergebnis

A B C
Item A Value 1 10
Item A Value 2 20
Item C Value 4 40

 

weiterlesen

Eigene Gruppe in den Proberties

Um eine eigene Gruppe innerhalb des Accordions für Ihre Extension zu erstellen nutzen Sie folgenden Code: 

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

function ( qlik, $, $dict, $q) {
  'use strict';
  var MeineGruppe = {
    component: "expandable-items",
    label: "MeineGruppe",
    items: {
       // Reguläre Items aus der Hilfe ...
       // Siehe URL unten
    }
  };

  // Reguläre Settings
  var Settings = {
    uses: "settings",
    items: {
      general: {
        items: {
          showTitles: {
            defaultValue: false
          }
        }
      }
    }
  }
  
  return {

    type: "items",
    component: "accordion",
    items: {
      cSection: MeineGruppe,
      settings: Settings

    }
  };
} );

Um innerhalb des Beispiel Codes weitere Punkte hinzuzufügen folgen Sie diesem Link:

https://help.qlik.com/en-US/sense-developer/September2018/Subsystems/Extensions/Content/Sense_Extensions/extensions-reusing-properties.htm

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); 
  }
}

Qlik Farben im Mashup ändern

Als erstes benötigt man ein eigenes Template.

Dieses ist schnell im Extension Ordner erstellt:

Extensions/myMashupTheme

1. myMashupTheme.qext
2. theme.json

Inhalt der MashupTheme.qext:

{
	"name": "myMashupTheme",
	"description": "custom theme for myMashup",
	"type": "theme",
	"version": "1.0.0",
	"author": "Thomas Lindackers"
}

Inhalt der theme.json: 

https://help.qlik.com/en-US/sense-developer/September2018/Subsystems/Extensions/Content/Sense_Extensions/CustomThemes/custom-themes-properties.htm

Die komplette Liste der Proberties findet man ganz unten auf der Seite.

Innerhalb des Mashups kann man das Theme mit folgenden Code anwenden:


qlik.theme.apply('myMashupTheme').then(function(result){

});

Nutzt man nun die Visualisierung API oder bindet Charts ein deren Farben nicht über die KPIs bestimmt werden, ändert man so die Farben.

Berechnng nur einmal ausführen

Es kommt immer wieder vor, das man für die Vorbelegung von Werten wie (z.B. min max Berechnung für die Einstellung eines Schiebregelers) nur eine einmalige Berechnung benötigt.

Erstellt man mit Hilfe des genericObjects eine Berechnung, wird diese allerdings bei jeder Selektion erneut ausgeführt. Dies kann zu unerwünschten Flackereffekten führen.

Um dieses Problem zu lösen können Sie das Session Objekt nach der Berechnung einfach entfernen, somit wird die Berechnung nur einmal ausgeführt.

Beispiel:


app.createGenericObject(JSON.parse('{' + genStr + '}'), function ( reply ) {
// Berechnung 
app.destroySessionObject(reply.qInfo.qId);
});

JavaScript Datum in Qlik Format umrechnen

Mit der folgen Funktion kann man ein JavaScript Date() in das Qlik Sense / View Format konvertieren:


function Date2QlikDate(aDate){
var nDate = new Date(aDate); 
var nMonth = nDate.getUTCMonth() +1; 
var nDay = nDate.getUTCDate() +1;
var nYear = nDate.getUTCFullYear();
// DMY to Modified Julian calculated with an extra subtraction of 2415019 - 153 for Q.
var nSerialDate =
parseInt(( 1461 * ( nYear + 4800 + parseInt(( nMonth - 14 ) / 12) ) ) / 4) +
parseInt(( 367 * ( nMonth - 2 - 12 * ( ( nMonth - 14 ) / 12 ) ) ) / 12) -
parseInt(( 3 * ( parseInt(( nYear + 4900 + parseInt(( nMonth - 14 ) / 12) ) / 100) ) ) / 4) +
nDay - 2415019 - 32075 - 153;

if (nSerialDate < 60) {
// Because of the 29-02-1900 bug, any serial date
nSerialDate--;
}
return nSerialDate;
}
Senior Technical Trainer
Thomas Lindackers
Senior Technical Trainer @ Qlik
04.2017 - Heute
Thomas Lindackers
Senior Technical Trainer
04.2017 - heute
Technical Trainer
Thomas Lindackers
Technical Trainer @ Qlik
10.2014 - 04.2017
Thomas Lindackers
Technical Trainer
10.2014 - 04.2017
Support Engineer
Thomas Lindackers
Tech. Support Engineer @ Qlik
07.2012 - 10.2014
Thomas Lindackers
Technical Support Engineer
07.2012 - 10.2014
Service Desk Analyst
Thomas Lindackers
Service Desk Analyst @ Qlik
10.2010 - 07.2012
Thomas Lindackers
Service Desk Analyst
10.2010 - 07.2012
at Qlik 1 - copy
alias Linse
Bloghoster / Entwickler / Fotograf
Thomas Lindackers
Senior Technical Trainer