QlikTip #12: Erweiterung des Store Into-Befehls in QlikView 9

STORE INTO konnte bis dato zur Speicherung einer Tabelle in eine QVD-Datei verwendet werden.

// Store table Customers into Qvd-file
STORE Customers INTO Customers.qvd (qvd);

Dabei ist (auch in vorherigen Versionen) der Parameter nach dem Dateinamen, als “(qvd)” optional, wenn man diesen weglässt, dann funktioniert das Speichern in QVD-Dateien trotzdem.

Wozu dieser zusätzliche Parameter (auch schon in vorhergehenden Versionen) gedacht war, erkennt man erst mit QlikView 9, denn nun lässt sich auch folgender Befehl ausführen:

STORE Customers INTO Customers.csv (txt);

Mit „(txt)“ am Ende des STORE INTO – Befehls wird die Tabelle in ein Text-File im CSV-Format exportiert . Als Trennzeichen (Delimiter) für das CSV-File wird ein Beistrich „,“ verwendet; wie andere Trennzeichen verwendet werden können, scheint noch nicht dokumentiert zu sein, zumindest finde ich es nicht:

Customers:
LOAD * INLINE [
Country, Customer, CustomerId
Austria, Customer A, 1
Germany, Customer B, 2
Switzerland, Customer C, 3
Denmark, Customer C, 4
];
STORE Customers INTO Customers.qvd (qvd);

// Store table countries into .csv-file
STORE Customers INTO Customers.csv (txt);

Dieses Beispiel wird daher folgenden Inhalt in der Datei Customers.csv aus:

Country,Customer,CustomerId
Austria,Customer A,1
Germany,Customer B,2
Switzerland,Customer C,3
Denmark,Customer C,4

Definition des Trennzeichens / Delimiters

Das Trennzeichen, welches standardmässig verwendet wird, ist ein Beistrich, also “,”, das Trennzeichen (der Delimiter) kann jedoch verändert werden.
Obwohl nicht offiziell genau so dokumentiert, funktioniert das Definieren des Delimiters für den STORE INTO-Befehl wie folgt:

// change the delimiter to a pipe "|"
STORE Customers INTO Customers.csv (txt, delimiter is '|');

// or change the delimiter to ";"
STORE Customers INTO Customrs.csv (txt, delimiter is ';');

Fazit:

  • Eine praktische Erweiterung in QlikView, die vor allem QlikView offener in der Zusammenarbeit mit anderen System macht.
  • Warum mit dieser neuen Funktionalität nicht auch gleich die Möglichkeit implementiert wurde, Tabellen in XML-Dateien zu exportieren, bleibt mir ein Rätsel; es ist aber anzunehmen, dass „STORE Customers INTO Customers.xml (xml)“ in einer der nächsten Versionen möglich sein wird ;) Beim Schreiben dieses Artikels bin ich draufgekommen, dass “STORE Customers INTO Customers.xml (xml)” schon funktioniert, jedoch nicht offiziell dokumentiert ist, darüber aber bald mehr :) … die Funktionalität “STORE Customers INTO Customers.xml (xml)” macht nichts anderes als eine QVD zu generieren … :)
Bookmark and Share

Tags: , , , ,

QlikNews: QlikView im Time-Magazine

QlikTech CEO Lars Bjork

QlikTech CEO Lars Bjork

Die Veröffentlichung dieses Artikels ist zwar schon eine Weile her, zur Sicherheit poste ich es aber nochmals für jene, die diesen Artikel noch nicht kennen:

Kurzauszug einiger Aussagen:

“Your brain is associative,” says Lars Bjork, CEO of QlikTech.

Making search much more like your brain — and applying it to business analysis — is what has transformed QlikTech into one of the hotter business-intelligence-software companies around.

The QlikView software lets users decide what data they want to collect, rather than sort through an information hierarchy.

Link zum Artikel: http://www.time.com/time/magazine/article/0,9171,1912425-1,00.html

Bookmark and Share

QlikTip #11: Einlesen von Ini-Dateien

QlikView bietet eine Reihe von Funktionalitäten an, wie man xml-, Excel-, csv-,txt-Dateien, usw. strukturiert einlesen kann.
Dieser Tip zeigt, wie man auch .ini-Dateien sinnvoll auslesen kann.
“Typische” Ini-Dateien haben folgende Struktur (siehe auch http://en.wikipedia.org/wiki/INI_file):

[Section1]
Name1=Value1
Name2=ValueXX
Name3=ValueYY
[Section2]
Name4=Value3

Nachfolgender Code ladet eine beliebige Ini-Datei und bringt diese in strukturierte Form:

// **************************************************************
// this assumes that the ini-file defined below is located in the
// same folder as the qvw-file.
// **************************************************************
SET vIniFilePath = 'Test4.ini';

// **************************************************************
// Create a temporary table
// Note when reading the data-transformation:
// You have to read the load-statements bottom-up !!!
// **************************************************************
Temp_Ini:
Load
	// get the name
	if(_FlagSection = 0,left(FullField, index(FullField,'=')-1)) as Name,

	// get the value
	if(_FlagSection = 0,mid(FullField, index(FullField,'=')+1)) as Value,
	*
;
Load
	// just again a load to fill up the blank rows with the corresponding section
	if(_FlagSection = 0, text(peek('Section',RecNo()-2)),Section) as Section,
	FullField,
	Id,
	_FlagSection
	;
Load
	// if we are dealing with a section (see below) we cut the string inside
	// the '[' and ']' characters
	if (left(FullField,1) = '[' and right(FullField,1) = ']',purgechar((FullField),'[]')) as Section,

	// if we have a '[' character at the beginning and a ']' character at the end of
	// the string we are dealing with a section, so flag the record as section
	if (left(FullField,1) = '[' and right(FullField,1) = ']',1,0) as _FlagSection,
	*;
LOAD
	RecNo() as Id,
	@1 as FullField
FROM $(vIniFilePath)
(txt, codepage is 1252, no labels, delimiter is ',', msq);

// **************************************************************
// Load the values again to 'drop' the rows with sections in it.
// **************************************************************
Ini:
LOAD
	Id as LineNo,
	Section,
	Name,
	Value,
	FullField as LineString // just for testing and review,
RESIDENT Temp_Ini
WHERE (_FlagSection = 0)

	// prevent comments
	and (left(Value,1) <> ';')

	// prevent comments
	and (left(Name,1) <> ';')

	// prevent selecting empty-lines
	and ((len(Name) > 0) and (len(Value) > 0))
Order BY Id
;

//drop the temporary table which is not used anymore
Drop TABLE Temp_Ini;

Damit lassen sich die Daten in strukturierter Form an der Oberfläche anzeigen:

Anzeige der Daten der Ini-Datei

Anzeige der Daten der Ini-Datei

Verbesserungen:

Dinge, die ich in meinem Script nicht beachtet habe:

  • Escape Character
  • Kommentare am Ende einer Zeile
  • usw. :)

Downloads

QlikView-Applikation mit Beispiel-Dateien (.zip, 1.2 MB)

Bookmark and Share

Tags: , , , , , ,

Was ist ein “QlikView Archive Document” (.qar) ?

Kürzlich habe ich durch Zufall im Kontextmenüs des Windows Explorer (Windows 7) folgendes gefunden:

Screenshot des Windows-Explorer Kontextmenüs auf meinem Rechner

Screenshot des Windows-Explorer Kontextmenüs auf meinem Rechner

„QlikView Archive Document“? … Nie davon gehört, also begebe ich mich auf die Suche, doch leider erfolglos. In keiner Dokumentation von QlikView (weder Client, Server, API, etc.) auch nur der kleinste Hinweis auf diese Art von Dokumenten, die die Endung .qar haben … Auch ein demensprechender Post auf community.qlikview.com bringt nicht viel Neues, ausser das ich nicht der einzige bin, der diese Entdeckung gemacht hat …

Spannend, wir werden sehen, was es für Neuheiten auf dieser Front gibt … Ich werde sicher darüber berichten.

Bookmark and Share

Tags:

QlikTip #10: Zeilenumbruch in einer Textbox

Wenn man einen Zeilenumbruch in einer Textbox erzingen will und eine Formel verwendet, dann hat man zwei Möglichkeiten:

  • Variante 1: erzwungender Zeilenumbruch mit “\n”
  • Variante 2: erzwungener Zeilenumbruch mit Chr(13) und Chr(10) (carriage return und line feed)

In einer Formel sieht das dann so aus:

Variante 1:

='This is a long text, this is the first line\nand this is the second line'

Variante 2:

='This is a long text, this is the first line' & Chr(13) & Chr(10) & 'and this is the second line'

Dies führt dann zu folgendem Ergebnis:

Erzwungene Zeilenumbrüche mit Variante 1 & Variante 2

Erzwungene Zeilenumbrüche mit Variante 1 & Variante 2

Bookmark and Share

Tags: , , ,

QlikTip #9: Löschen von Variablen

Variablen können in Qlikview auf drei Varianten gelöscht werden:

  • Löschen über die Benutzeroberfläche/den Windows Client
  • Löschen im Load-Script
  • Löschen mit einem Makro 

Variante 1: Löschen über den Windows-Client

Das Löschen über die Benutzeroberfläche erfolgt über folgende Schritte

Menü -> Einstellungen -> Variablenliste (oder gleich Ctrl/Strg + Alt + V)

dann im Dialog eine Variable auswählen und auf „Löschen“ klicken.

Löschen einer Variable über die Benutzeroberfläche

Löschen einer Variable über die Benutzeroberfläche

Soweit so klar und sicher nicht neu für Sie, ist das Löschen jedoch auch im Load-Script möglich?

Variante 2: Löchen von Variablen im Load-Script

Variablen können im Load-Script gelöscht werden mit

// the name of the variable is vVariable

// first possibility for deleting variables within the load-script
SET vVariable = ;

//second possibility for deleting variables within the load-script
LET vVariable = null();

So klingt zwar einfach, funktioniert jedoch nur unter folgenden Bedingungen:

  • Die Variable, die während des Load-Script erstellt wurde bzw. mit der gearbeitet wurde, darf NIE am Ende des Scripts vorhanden sein.
  • Sobald die Variable einmal nach Ende des Scriptlaufs vorhanden ist, kann diese nur mehr über die Oberfläche gelöscht werden (Variante 1)

Variante 3: Löschen über ein Makro

Zu guter letzt bleibt noch zu erwähnen, dass man eine Variable auch mittels Makro löschen kann:

Makro-Code (VBScript):


' the only parameter for the function "RemoveVariable" is the name of the variable
' in this case "vTestVariable"

ActiveDocument.RemoveVariable "vTestVariable1"

Hinweis: Es ist nicht notwendig, zu überprüfen, ob die Variable existiert oder nicht; wird ActiveDocument.RemoveVariable für eine nicht existierende Variable aufgerufen, kommt es zu keinem Fehler.

Bookmark and Share

Tags: , ,

QlikTip #8: Vorschau der Tabelleninhalte

Ein Mini-Feature, aber E N D L I C H  :)

In der Ansicht der Tabellenstruktur (Ctrl + T bzw. Datei => Tabellenstruktur) kann man nun im Kontextmenü eine Vorschau des Tabelleninhaltes anzeigen lassen:

Durch rechtsklick auf die Tabelle kann man die Vorschau öffnen

Durch Rechtsklick auf die Tabelle kann man die Vorschau öffnen

Angezeigt wird dann ein Grid mit der Vorschau der Daten:

Vorschau der Daten einer in QlikView geladenen Tabelle

Vorschau der Daten einer in QlikView geladenen Tabelle

Bookmark and Share

Tags: ,