Zu Hauptinhalt springen Zu ergänzendem Inhalt springen

Arbeiten mit Apache Parquet-Dateien

Apache Parquetist ein Spalten-Speicherformat, das sehr effizient beim Speichern und Abfragen großer Datensätze ist. In Qlik Sense kann aus Parquet-Dateien gelesen werden, und Sie können Tabellen als Parquet-Dateien speichern.

Parquet ermöglicht effiziente Abfragen spezifischer Spalten in einer Tabelle, anstatt die ganze Tabelle zu lesen. Dadurch eignet sich das Format gut für die Big Data-Verarbeitung. Parquet unterstützt auch die effiziente Komprimierung und Verschlüsselung von Daten. Dadurch kann der Speicherplatz weiter reduziert und die Abfrageleistung gesteigert werden.

Erstellen von Parquet-Dateien

Sie können Parquet-Dateien mit dem Befehl Store im Skript erstellen. Dazu definieren Sie im Skript, dass eine bereits eingelesene Tabelle oder ein Teil davon in eine Datei exportiert werden soll, deren Namen und Speicherort Sie bestimmen. Sie können die zu speichernden Daten in Daten in Parquet-Dateien verschachteln.

Weitere Informationen finden Sie unter Store.

Daten aus Parquet-Dateien einlesen

Sie können Daten aus einer Parquet-Datei genau wie aus jeder anderen von Qlik Sense unterstützten Datendatei lesen. Dies umfasst Datenmanager, Dateneditor oder das Hinzufügen von Daten zu einer neuen App.

Weitere Informationen finden Sie unter Laden von Daten aus Dateien.

Sie können auch Daten aus einer Parquet-Datei mit dem Befehl LOAD in das Datenladeskript laden. Hier ein Beispiel:

LOAD * from [lib://DataFiles/xyz.parquet] (parquet);

Weitere Informationen finden Sie unter Load.

Laden von Daten aus verschachtelten Parquet-Dateien

Wenn eine Parquet-Datei verschachtelte Daten enthält, muss sie in mehreren load-Anweisungen geladen werden, wobei jede angibt, welcher Teilsatz in welche Tabelle geladen wird. Der Spezifikator Table is wird zum Angeben eines Pfad zum Gruppenknoten des zu ladenden Schemas verwendet.

Sie können den Spezifikator Trennzeichen ist verwenden, um anzugeben, wie Knoten kombiniert werden sollten. Ein Befehl LOAD, der eine Datei mit verschachtelten Daten ohne „Trennzeichen ist“ lädt, verwendet diesen Wert, der von der Skriptvariablen FieldNameDelimiter angegeben wird. Wenn kein Trennzeichen angegeben ist und FieldNameDelimiter nicht festgelegt ist, ist das Standardtrennzeichen '.'.

Nur Knoten, die dem Table is-Pfad entsprechen, werden geladen.

Datenknoten werden ohne Verschachtelung in eine Datei geladen.

Mit Gruppenknoten werden die Felder in der Gruppe gruppiert, indem ihr Name zum Feldnamen hinzugefügt wird. Beispielsweise wird eine Gruppe mit field1 und field2 als group.field1 und group.field2 geladen.

Listenknoten generieren Schlüsselfelder, die zum Verknüpfen der Tabellen verwendet werden. Beispiel: %Key_group.list. Alle Gruppen oder Datenknoten in der Liste müssen in einer getrennten load-Anweisung geladen werden. Ein Schlüsselfeld zur übergeordneten Liste wird ebenfalls hinzugefügt.

Die folgenden Beispiele zeigen die gleiche verschachtelte Parquet-Datei, die im Beispiel in Speichern von verschachtelten Daten in Parquet-Dateien erstellt wurde, mit Datenmanager und Dateneditor in eine App geladen (mit dem Standard-Skript aus „Daten auswählen“ und benutzerdefinierten Skriptteilen).

Beispiel: Datenmanager

Wenn Sie customer.parquet in Datenmanager laden und alle empfohlenen Verknüpfungen anwenden, erhalten Sie folgendes Datenmodell:

Datenmodell für das Laden von company.parquet mit Datenmanager

Das Datenmodell zeigt die Tabellen „company:salesrep.salesrep“, „company“, „company:headquarter.headquarter“ und „company:headquarter.headquarter.city:region.region“

Beispiel: Dateneditor (Daten auswählen)

Wenn Sie die Daten mit Daten auswählen in Dateneditor laden, erhalten Sie folgendes Skript:

LOAD company, contact, "%Key_company:headquarter", "%Key_company:salesrep" FROM [lib://DataFiles/company.parquet] (parquet); LOAD country, city, "%Key_city:region", "%Key_company:headquarter" FROM [lib://DataFiles/company.parquet] (parquet, table is [company:headquarter.headquarter]); LOAD region, "%Key_city:region" FROM [lib://DataFiles/company.parquet] (parquet, table is [company:headquarter.headquarter.city:region.region]); LOAD salesrep, "%Key_company:salesrep" FROM [lib://DataFiles/company.parquet] (parquet, table is [company:salesrep.salesrep]);

Das Datenmodell sieht jetzt in Datenmodellansicht folgendermaßen aus.

Datenmodell für das Laden von „company.parquet“ mit Daten auswählen in Dateneditor

Datenmodell mit den Tabellen „salesrep“, „company“, „headquarter“ und „region“.

Beispiel: Dateneditor (benutzerdefiniertes Ladeskript)

Wenn Sie ein benutzerdefiniertes Ladeskript verwenden, haben Sie mehr Kontrolle darüber, wie die Felder und Tabellen aus customer.parquet geladen werden. Mit dem folgenden Ladeskript werden die Tabellen und Felder aus company.parquet geladen:

LOAD * FROM [lib://DataFiles/company.parquet] (parquet); LOAD *, Lookup('company', '%Key_company:salesrepo', [%Key_company:salesrep], 'company') as company; LOAD * FROM [lib://DataFiles/company.parquet] (parquet, table is [company:salesrep.salesrep]); DROP FIELD [%Key_company:salesrep]; LOAD *, Lookup('company', '%Key_company:headquarter', [%Key_company:headquarter], 'company') as company; LOAD * FROM [lib://DataFiles/company.parquet] (parquet, table is [company:headquarter.headquarter]); DROP FIELD [%Key_company:headquarter]; LOAD *, Lookup('city', '%Key_city:region', [%Key_city:region], 'headquarter') as city; LOAD * FROM [lib://DataFiles/company.parquet] (parquet, table is [company:headquarter.headquarter.city:region.region]); DROP FIELD [%Key_city:region];

Dies generiert das folgende Datenmodell, das mit dem ursprünglichen Datenmodell vor Speichern der Daten in der Parquet-Datei identisch ist.

Datenmodell für das Laden von company.parquet mit einem benutzerdefinierten Skript in Dateneditor

Datenmodell mit den Tabellen „headquarter“, „region“, „salesrep“ und „company“, das das Datenmodell aus der Quell-App genau spiegelt.

Beschränkungen

Parquet-Dateien haben die folgenden Beschränkungen:

  • Parquet-Dateien mit einem int96-Zeitstempelfeld werden möglicherweise nicht korrekt geladen.

    Int96 ist ein veralteter Datentyp, der einen Zeitstempel ohne Zeitzoneninformationen enthält. Es wird ein Versuch unternommen, das Feld als UTC zu lesen, aber da es verschiedene Anbieterimplementierungen gibt, kann der Erfolg nicht garantiert werden.

    Prüfen Sie die geladenen Daten und passen Sie sie an die korrekte Zeitzone an, bei Bedarf mit einem Versatz.

Hat diese Seite Ihnen geholfen?

Wenn Sie Probleme mit dieser Seite oder ihren Inhalten feststellen – einen Tippfehler, einen fehlenden Schritt oder einen technischen Fehler –, teilen Sie uns bitte mit, wie wir uns verbessern können!