Wenn eine generische Tabbelle laden möchten, können Sie mit dem Präfix Generic die Daten transformieren und die gewünschten Felder erstellen.
Eine generische Tabelle ist im Grunde eine Tabelle, in der die zweitletzte Spalte ein beliebiges Attribut ist und der letzte Wert, der Wert des Attributs ist.
In der Grafik Unten ist eine Solche Tabelle dargestellt und auch das Ergebnis der Transformation.
Die Syntax für den Präfix lautet: Generic Load Key, Attribute, Value From … ;
Normalerweise hat die Quelle drei Spalten.
- ein Qualifiziererfeld (Schlüssel im obigen Beispiel)
- ein Attribut
- ein Wert
Aber Sie können auch mehrere qualifizierende Felder haben. Wenn Sie vier oder mehr Spalten haben,
werden alle Spalten ausser den beiden letzten als qualifizierende Felder behandelt.
Das generische Präfix wird mehrere Tabellen erstellt, eine Tabelle pro Attribut.
Das ist normalerweise kein Problem, diese Datenstruktur benötigt am wenigsten Speicher.
Wenn Sie mehr als einen Schlüssel haben, bedeutet dies dass Sie einen zusammengesetzten Schlüssel im Datenmodell erhalten. Dies ist unten zu sehen. Falls der Schlüssel stört, kann ein künstlicher Schlüssel erstellt werden dafür. Das ist aber nicht immer nötig!
Erstellung des künstlichen Schlüssels: Autonumber(Key1 & '|' & Key2 & '|' & Key3) as Key,
Damit nicht so endlos Tabellen vorhanden sind im Datenmodell, gibt es hier noch ein Snippet dass es ermöglicht die erstellten Tabellen in eine zusammen zufassen.
Set vListOfTables = ;
For vTableNo = 0 to NoOfTables()
Let vTableName = TableName($(vTableNo)) ;
If Subfield(vTableName,'.',1)='GenericLabel' Then
Let vListOfTables = vListOfTables & If(Len(vListOfTables)>0,',') & Chr(39) & vTableName & Chr(39) ;
End If
Next vTableNo
CombinedGenericTable:
Load distinct Key From GenericDB;
For each vTableName in $(vListOfTables)
Left Join (CombinedGenericTable) Load * Resident [$(vTableName)];
Drop Table [$(vTableName)];
Next vTableName
Das Resultat ist eine grosse Tabelle mit allen Attributen in einer Tabelle.
Dieses Script macht nur das Datenmodell schön.
Das bringt aber eher Performance Nachteile als Vorteile.
Daher würde ich das nicht machen!
Grund für die Performance Nachteile sind die vielen leeren Zellen ( Null-Values) in der grossen Tabelle.
Diese machen QlikView langsam.