Ga naar hoofdinhoud Ga naar aanvullende inhoud

Werken met Apache Parquet-bestanden

Apache Parquet is een opslagindeling met kolommen, wat zeer efficiënt is voor het opslaan en doorzoeken van grote gegevensverzamelingen. In Qlik Sense kunt u lezen vanuit Parquet-bestanden en tabellen opslaan als Parquet-bestanden.

Met Parquet kunnen specifieke kolommen in een tabel efficiënt worden doorzocht in plaats van dat de volledige tabel gelezen moet worden. Daarom is het zeer geschikt om te gebruiken voor de verwerking van big data. Parquet ondersteunt ook efficiënte compressie en versleuteling van gegevens. Dit vermindert de benodigde opslagruimte en verbetert de queryprestaties.

Parquet-bestanden maken

U kunt Parquet-bestanden maken met behulp van de opdracht Store in het script. U geeft in het script aan dat u een eerder gelezen tabel of deel ervan wilt exporteren naar een expliciet genoemd bestand op een locatie van uw keuze. U kunt de gegevens die u opslaat in Parquet-bestanden nesten.

Ga voor meer informatie naar Store.

Gegevens uit Parquet-bestanden lezen

U kunt gegevens lezen vanuit een Parquet-bestand net als andere gegevensbestanden die door Qlik Sense worden ondersteund. Dit heeft betrekking op Gegevensbeheer, de editor voor laden van gegevens of als u gegevens toevoegt aan een nieuwe app.

Ga voor meer informatie naar Gegevens uit bestanden laden.

U kunt ook gegevens laden vanuit een Parquet-bestand in het load-script voor gegevens met de opdracht LOAD. Bijvoorbeeld:

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

Ga voor meer informatie naar Load.

Gegevens laden uit geneste Parquet-bestanden

Als een Parquet-bestand geneste gegevens bevat, moet het in meerdere LOAD-instructies worden geladen, waarbij elke instructie specificeert welke subverzameling in een tabel moet worden geladen. De Table is-specificatie wordt gebruikt om een pad naar het groepsknooppunt in het te laden schema aan te duiden.

U kunt de specificatie Scheidingsteken is gebruiken om op te geven hoe knooppunten gecombineerd moeten worden. Een LOAD opdracht die een bestand laadt met geneste gegevens zonder scheidingsteken, gebruikt de waarde die is opgegeven door de scriptvariabele FieldNameDelimiter. Als er geen scheidingsteken is opgegeven en FieldNameDelimiter niet is ingesteld, dan wordt het standaard scheidingsteken '.'.

Alleen knooppunten die overeenkomen met het Table is-pad, worden geladen.

Gegevensknooppunten worden zonder nesten in een bestand geladen.

Groepsknooppunten groeperen de velden in een groep door hun naam toe te voegen aan de veldnaam. Bijvoorbeeld: een groep met field1 en field2 worden geladen als group.field1 en group.field2.

Lijstknooppunten genereren sleutelvelden die worden gebruikt om de tabellen te verbinden. Bijvoorbeeld: %Key_group.list. Alle groeps- of gegevensknooppunten in de lijst moeten in een afzonderlijke LOAD-instructie worden geladen. Er wordt ook een sleutelveld naar de bovenliggende lijst toegevoegd.

De volgende voorbeelden tonen hetzelfde, geneste Parquet-bestand, gemaakt in het voorbeeld in Geneste gegevens opslaan in Parquet-bestanden, geladen in een app, met Gegevensbeheer en Editor voor laden van gegevens (met het standaardscript uit Gegevens en aangepast script selecteren).

Voorbeeld: Gegevensbeheer

Als u customer.parquet in Gegevensbeheer laadt en alle aanbevolen koppelingen toepast, krijgt u het volgende gegevensmodel:

Gegevensmodel voor het laden van company.parquet met Gegevensbeheer

Het gegevensmodel toont de tabellen company:salesrep.salesrep, company, company:headquarter.headquarter en company:headquarter.headquarter.city:region.region

Voorbeeld: Editor voor laden van gegevens (Gegevens selecteren)

Als u de gegevens laadt met Gegevens selectere in Editor voor laden van gegevens, resulteert dat in het volgende script:

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

Het gegevensmodel ziet er nu als volgt uit in Gegevensmodelviewer.

Het gegevensmodel voor het laden van company.parquet met Gegevens selecteren in Editor voor laden van gegevens

Het gegevensmodel toont de tabellen salesrep, company, headquarter en region.

Voorbeeld: Editor voor laden van gegevens (Aangepast load-script)

Als u een aangepast load-script gebruikt, hebt u meer controle over hoe de velden en tabellen uit customer.parquet worden geladen. Het volgende load-script laadt de tabellen en velden uit company.parquet:

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];

Dit resulteert in het volgende gegevensmodel, dat identiek is aan het oorspronkelijke gegevensmodel van voordat de gegevens werden opgeslagen in het Parquet-bestand.

Het gegevensmodel voor het laden van company.parquet met een aangepast script in Editor voor laden van gegevens

Het gegevensmodel met de tabellen headquarter, region, salesrep en company, waarmee het exacte gegevensmodel uit de bronapp wordt weerspiegeld.

Beperkingen

Parquet-bestanden hebben de volgende beperkingen:

  • Parquet-bestanden die een int96-tijdstempelveld bevatten worden mogelijk niet correct geladen.

    Int96 is een verouderd gegevestype dat een tijdstempel zonder tijdzonegegevens bevat. Er wordt een poging gedaan om het veld als UTC te lezen, maar vanwege verschillende implementaties van de leverancier kan succes niet worden gegarandeerd.

    Controleer de geladen gegevens en wijzig de tijdzone in de juiste tijdzone met indien nodig een marge.

Was deze pagina nuttig?

Als u problemen ervaart op deze pagina of de inhoud onjuist is – een typfout, een ontbrekende stap of een technische fout – laat het ons weten zodat we dit kunnen verbeteren!