Gå till huvudinnehåll Gå till ytterligare innehåll

Arbeta med Apache Parquet-filer

Apache Parquet är ett kolumnformat som är mycket effektivt för lagring och sökning av stora datauppsättningar. I Qlik Sense kan du läsa data från Parquet-filer och lagra tabeller som Parquet-filer.

Parquet gör det möjligt att effektivt söka efter specifika kolumner i en tabell i stället för att läsa hela tabellen. Detta gör den väl lämpad för behandling av stora datamängder. Parquet stöder också effektiv komprimering och kodning av data. Detta kan ytterligare minska lagringsutrymmet och förbättra prestanda vid sökningar.

Anteckning om informationAlla befintliga appar som skapades i en Qlik Sense-version från före augusti 2023 måste uppdateras för att få stöd för Parquet. Detta krävs både för distributioner som uppgraderats till augusti 2023 och när befintliga appar importeras till en ny distribution. Mer information om att uppdatera apparna finns i Aktivera stöd för Parquet-filer för befintliga appar i Qlik Sense.

Skapa Parquet-filer

Du kan skapa Parquet-filer med hjälp av Lagring-kommandot i skriptet. Ange i skriptet att en tabell, eller delar av en tabell, som tidigare har lästs in ska exporteras till en namngiven fil på en viss plats.Du kan nästla de data du lagrar i data i Parquet-filer.

Mer information finns i Store.

Läsa in data från Parquet-filer

Du kan ladda data från en Parquet-fil precis som alla andra datafiler som stöds av Qlik Sense. Detta inkluderar Datahanteraren, Skriptredigeraren eller när du lägger till data i en ny app.

Mer information finns i Läsa in data från filer.

Du kan också läsa in data från en Parquet-fil i dataladdningsskriptet med LOAD-kommandot. Exempel:

LOAD * from xyz.parquet (parquet);

Mer information finns i Load.

Ladda data från Parquetfiler

Om en Parquet-fil innehåller nästlade data måste den laddas i flera laddningssatser, där var och en anger vilken delmängd som ska laddas till varje tabell. Table is-specifikatorn används för att kontrollera en sökväg till gruppnoden i schemat som ska ladda.

Endast noder som matchar sökvägen Table is laddas.

Datanoder laddas till en fil utan nästling.

Gruppnoder grupperar fälten i gruppen genom att lägga till deras namn i fältnamnet. Exempelvis laddas en grupp med fält1 och fält2 som grupp.fält1 och grupp.fält2.

Listnoder genererar nyckelfält som används för att länka tabellerna. Exempelvis, %Key_group.list. Alla grupper och datanoder i listan måste laddas i en separat laddningssats. Ett nyckelfält till den överordnade listan kommer också att läggas till.

I följande exempel visas samma nästlade Parquet-fil som skapades i exemplet i Lagra nästlade data i Parquet-filer, laddad i en app med Datahanteraren och Skriptredigeraren (med standardskriptet från Välj data och anpassade skript).

Exempel: Datahanteraren

Om du laddar customer.parquet i Datahanteraren och tillämpar alla rekommenderade associationer blir resultatet följande datamodell:

Datamodell för att ladda company.parquet medDatahanteraren

Datamodell som visar tabellerna company:salesrep.salesrep, company, company:headquarter.headquarter och company:headquarter.headquarter.city:region.region

Exempel: Skriptredigeraren (Välj data)

Om du laddar data med Välj data i Skriptredigeraren blir resultatet följande 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]);

Datamodellen ser nu ut så här i Datamodellvyn.

Datamodell för att ladda company.parquet med Välj data i Skriptredigeraren

Datamodell som visas tabellerna salesrep, company, headquarter och region.

Exempel: Skriptredigeraren (Anpassat laddningsskript)

Om du använder ett anpassat laddningsskript har du mer kontroll över hur fälten och tabellerna laddas från customer.parquet. I det följande laddningsskriptet laddas tabellerna och fälten från company.parquet:

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

Resultaten i följande datamodell som är identisk till den ursprungliga datamodellen innan data lagrades i Parquet-filen.

Datamodell för att ladda company.parquet med ett anpassat skript i Skriptredigeraren

Datamodell med tabellerna headquarter, region, salesrep, and company som återspeglar den exakta datamodellen från källappen.

Begränsningar

Parquet-filer har följande begränsningar:

  • Parquet-filer som innehåller ett int96-tidsmarkörfält kanske inte laddas korrekt.

    Int96 är en föråldrad datatyp som innehåller en tidsmarkör utan information om tidszon. Ett försök kommer att göras att läsa fältet som UTC, men eftersom det finns olika implementeringar från olika leverantörer finns det ingen garanti för att det lyckas.

    Kontrollera de laddade uppgifterna och justera dem till rätt tidszon med en förskjutning om det behövs.

Var den här sidan till hjälp för dig?

Om du hittar några fel på denna sida eller i innehållet – ett stavfel, ett steg som saknas eller ett tekniskt fel – berätta för oss så att vi kan blir bättre!