DDBM Blog

Semigestructureerde data met het Variant datatype van Snowflake

Geschreven door Sebastian Wiesner | 1 Apr, 2023

Snowflake maakt de verwerking van semigestructureerde gegevens eenvoudig. Het verwerken van zowel gestructureerde als semigestructureerde gegevens in een moderne cloud-gebaseerde datawarehousing kan lastig zijn. Een van de functies van Snowflake is het gegevenstype Variant, waarmee gebruikers naast gestructureerde gegevens ook JSON, XML, Avro en andere semigestructureerde gegevensformaten kunnen opslaan en bevragen. Dit opent nieuwe mogelijkheden voor gegevensanalyse en inzichten. Gebruikers kunnen eenvoudig query's uitvoeren en inzichten afleiden uit al hun gegevens op één locatie. In deze blogpost gaan we dieper in op het Variant-gegevenstype van Snowflake. Verder kijken we hoe het Snowflake een uniek voordeel geeft ten opzichte van zijn concurrenten in de cloud datawarehousing-ruimte.

Wat is het Variant-gegevenstype?

Het Variant-gegevenstype van Snowflake is flexibel en dynamisch, waardoor gebruikers semigestructureerde gegevens kunnen opslaan zonder dat deze hoeven te worden opgeschoond. Semigestructureerde gegevens zijn gegevens die niet voldoen aan een rigide schema of structuur, zoals JSON- of XML-gegevens. Het gegevenstype Variant kan worden gebruikt om dit soort gegevens op te slaan in een kolom van een tabel in een Snowflake-database en om deze gegevens te bevragen.

Hoe werkt het?

Het Variant-gegevenstype dat kan worden gebruikt in een Snowflake-omgeving, is een veelzijdige en aanpasbare optie voor het opslaan van semigestructureerde gegevens in verschillende indelingen. Wanneer semigestructureerde gegevens worden geüpload naar Snowflake, kunnen deze automatisch worden geparseerd en opgeslagen als een variant gegevenstype. Dankzij deze functie kan Snowflake complexe gegevensstructuren met geneste en herhaalde velden efficiënt beheren. Het ondersteunt ook schema-on-read verwerking, wat betekent dat de gegevensstructuur kan worden bepaald wanneer deze wordt opgevraagd in plaats van wanneer deze wordt geladen. Variant ondersteunt meerdere gegevensbewerkingen, zoals filteren, aggregeren en query's uitvoeren. Bovendien hebben Python- en Java-scripts toegang tot de opgeslagen gegevens, waardoor het een robuuste tool is voor het analyseren van complexe gegevens. Bovendien is het Variant-gegevenstype van Snowflake geschikt voor verschillende gegevensformaten, waaronder JSON, Avro, ORC, Parquet of XML.


Afbeelding met dank aan Pixabay

Waarom is het belangrijk?

De mogelijkheid om semigestructureerde gegevens op te slaan en te bevragen wordt steeds belangrijker in het huidige datagestuurde bedrijfslandschap. Veel moderne toepassingen genereren of gebruiken semigestructureerde gegevens, zoals mobiele apps, webservices of IoT-apparaten. Door het Variant-gegevenstype te ondersteunen, stelt Snowflake gebruikers in staat om dit type gegevens op te slaan en te analyseren naast hun gestructureerde gegevens. Bovendien kunnen gebruikers met het Variant-gegevenstype in Snowflake profiteren van geavanceerde querymogelijkheden. Snowflake ondersteunt query's op semigestructureerde gegevens met een SQL-achtige syntaxis. We kunnen bijvoorbeeld de puntnotatie gebruiken om specifieke waarden te extraheren uit een JSON-object dat is opgeslagen in een Variant-kolom:

SELECT data:klant.naam, data:klant.e-mail
VAN voorbeeld_tabel

Deze query haalt de velden "naam" en "e-mail" uit een JSON-object dat is opgeslagen in de kolom "data" van de tabel "example_table".

Hoe verhoudt het gegevenstype Variant zich tot andere oplossingen voor datawarehousing?

Hoewel veel oplossingen voor datawarehousing tot op zekere hoogte semi-gestructureerde gegevens bevatten, biedt het gebruik van het Variant-gegevenstype in Snowflake verschillende onderscheidende voordelen. Het efficiënt opslaan en ophalen van semigestructureerde gegevens is één van die voordelen. Bovendien kan Snowflake semi-gestructureerde gegevens opvragen met een SQL-achtige syntaxis, wat het proces voor gebruikers stroomlijnt en gespecialiseerde programmeerkennis overbodig maakt. Hieronder vindt u een voorbeeld van hoe het gegevenstype Variant kan worden gebruikt in Snowflake:

--Tabel aanmaken met een kolom Variant
CREATE TABLE nimbus_table (nim_id INTEGER, nim_data VARIANT);

--Een rij gegevens in de tabel invoegen
INSERT INTO nimbus_table (nim_id, nim_data)
SELECT 1, PARSE_JSON(
{"klant": {"naam": "Lilya Nimbus", "e-mail": "l.nimbus@email.com"},
"product": {"naam": "CloudGenerator", "prijs": "56.50"}}');

--Selecteer gegevens over de klant uit de variantkolom
SELECT nim_data:customer.name, nim_data:customer.email
FROM nimbus_table;

--Selecteer gegevens over product uit de kolom variant
SELECT nim_data:product.name, nim_data:product.price
FROM nimbus_table;

In dit voorbeeld maken we een tabel met een kolom "nim_id" en een kolom "nim_data" van het type Variant. Vervolgens voegen we een rij gegevens in de tabel in, die een JSON-object bevat met een "klant"-object met een veld "naam" en "e-mail" en een "product"-object met "naam" en "prijs". Tot slot bevragen we de gegevens uit de tabel met behulp van de puntnotatie om de velden "naam" en "e-mail" uit het "klant"-object te halen, evenals de "naam" en "prijs" voor het "product"-object.

Praktische implicaties van Snowflakes Variant Gegevenstype voor bedrijven

Maar wat betekent de ondersteuning voor semigestructureerde gegevens in het Variant-gegevenstype van Snowflake eigenlijk voor bedrijven? Het antwoord is: heel veel! Met de opkomst van big data is de mogelijkheid om ongestructureerde en semigestructureerde gegevens te verwerken steeds belangrijker geworden. Veel waardevolle informatie wordt opgeslagen in formaten als JSON, XML en Avro, die niet eenvoudig kunnen worden opgeslagen of geanalyseerd met traditionele relationele databasemanagementsystemen.

Door bedrijven in staat te stellen semigestructureerde gegevens op te slaan en te bevragen naast gestructureerde gegevens in één datawarehouse, maakt Snowflake het eenvoudiger om inzichten af te leiden en weloverwogen beslissingen te nemen op basis van alle beschikbare gegevens.

Slotopmerkingen

Kortom, het Variant-gegevenstype van Snowflake onderscheidt zich van andere cloud-gebaseerde oplossingen voor datawarehousing door efficiënt om te gaan met semigestructureerde gegevens en tegelijkertijd schaalbaar en flexibel te blijven. Het stelt de gebruiker in staat om eenvoudig verschillende gegevensformaten te importeren, op te slaan en te bevragen, zoals JSON, Avro of Parquet. Dit kan voordelig zijn voor toepassingen die verschillende gegevensbronnen gebruiken.