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.

InformationshinweisAlle vorhandenen Apps, die in einer Qlik Sense Version vor August 2023 erstellt wurden, müssen manuell aktualisiert werden, um die Parquet-Unterstützung zu aktivieren. Das ist sowohl für Bereitstellungen erforderlich, die auf August 2023 aktualisiert wurden, als auch beim Importieren vorhandener Apps in eine neue Bereitstellung. Weitere Informationen zum Aktualisieren der Apps finden Sie unter Aktivieren der Parquet-Dateiunterstützung für vorhandene Apps in Qlik Sense.

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 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.

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://AttachedFiles/company.parquet] (parquet); LOAD country, city, "%Key_city:region", "%Key_company:headquarter" FROM [lib://AttachedFiles/company.parquet] (parquet, table is [company:headquarter.headquarter]); LOAD region, "%Key_city:region" FROM [lib://AttachedFiles/company.parquet] (parquet, table is [company:headquarter.headquarter.city:region.region]); LOAD salesrep, "%Key_company:salesrep" FROM [lib://AttachedFiles/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://AttachedFiles/company.parquet] (parquet); LOAD *, Lookup('company', '%Key_company:salesrepo', [%Key_company:salesrep], 'company') as company; LOAD * FROM [lib://AttachedFiles/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://AttachedFiles/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://AttachedFiles/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!