In dit blog zullen we kort de stappen doorlopen om een JSON bestand in Snowflake te krijgen en hierbij de kracht van Snowflake’s Variant columns te gebruiken.

De data

Als voorbeeld krijgen we de vraag om het volgende JSON bestand in onze Snowflake omgeving te zetten :

{
  "Roosterplanning": [
    {
      "employmentPersonNumber": "123456/1",
      "resourceBeginDate": "2020-02-01",
      "resourceEndDate": "2020-07-31",
      "resourceFunctions": "Algemeen",
      "resourceId": "8269",
      "resourceName": "Johanna"
    },
{ "employmentPersonNumber": "123457/1",
"resourceBeginDate": "2020-01-01", "resourceEndDate": "", "resourceFunctions": "Niveau 1", "resourceId": "8267", "resourceName": "Sasha" }, { "employmentPersonNumber": "123458/1",
"resourceBeginDate": "2020-02-01", "resourceEndDate": "2020-07-31", "resourceFunctions": "Algemeen", "resourceId": "8268", "resourceName": "Judith" } ] }

De eerste stap is wellicht meteen de engste stap voor een aantal :
– Download SnowSQL , de Command Line Interface client van Snowflake. We hebben gemerkt dat een hoop beginnende gebruikers van Snowflake de command line het liefste helemaal niet gebruiken maar dit is 1 van de handelingen waarbij het net wel nodig/handig is. SnowSQL is te downloaden via deze link.

Aan de slag met SnowSQL

Nadat SnowSQL is geinstalleerd kun je verbinding maken met het volgende commando :

snowsql -a -u

Hierna wordt om een wachtwoord gevraagd en kun je aan de slag.

We zouden hier nu in 1 groot blok de code kunnen plaatsen maar we lopen even stap voor stap door de code heen :

CREATE TABLE JSON_TEST (JSON VARIANT);

We maken eerst een tabel aan met een enkele Variant column genaamd JSON

CREATE FILE FORMAT JSON_FORMAT TYPE = 'JSON';

We maken de file interpreter aan

CREATE TEMPORARY STAGE JSON_STAGE
FILE_FORMAT = JSON_FORMAT;

We maken de tijdelijke stage aan waar het json bestand wordt geplaatst

PUT file:///Users/mdroog/downloads/json_example.json @JSON_STAGE

We uploaden het bestand richting de stage. Belangrijk is hier dat het filepath afhankelijk is van je eigen setup en besturingssysteem.

COPY INTO JSON_TEST
FROM @JSON_STAGE/json_example.json.gz
on_error = 'continue';

 

De resultaten

We kopiëren de gegevens van de staging naar de eerder aangemaakte tabel. Om vervolgens het volgende te kunnen zien :

En vanuit de Snowflake GUI :

We zien nu dus dat alle gegevens netjes in 1 kolom worden geplaatst.
Lees hier hoe laten we zien hoe je deze ruwe JSON vervolgens vertaald naar je daadwerkelijke eind- en bruikbare tabel!