DDBM Blog

Hoe bestanden lezen van een Snowflake Internal Stage in Coalesce.io

Geschreven door Darko Monzio Compagnoni | 22 Oct, 2024

Wanneer je met Snowflake en Coalesce.io werkt om een moderne gegevenspijplijn te bouwen, is een van de meest essentiële taken het lezen van bestanden uit de interne fasen van Snowflake. Deze stages dienen als ingang voor het uploaden van gegevens in Snowflake voordat ze verder worden verwerkt en getransformeerd. In dit artikel laat ik zien hoe je op effectieve wijze bestanden uit een Snowflake interne stap in Coalesce.io kunt lezen, inclusief de benodigde commando's en stappen om je pijplijn soepel te laten werken.

Coalesce

Coalesce.io wint snel aan populariteit in de wereld van data engineering vanwege de gebruiksvriendelijke interface en de mogelijkheid om gegevens te transformeren op verschillende platforms, waaronder Snowflake. Snowflake biedt op zijn beurt robuuste staging-mogelijkheden waarmee gebruikers gegevens tijdelijk kunnen laden en opslaan. Door beide platforms samen te gebruiken, ontstaat een naadloze en efficiënte pijplijn.

Om gegevens van een interne Snowflake-stage in Coalesce.io te integreren, hebt u het knooppunt CopyInto van Coalesce.io nodig, dat is afgeleid van de opdracht COPY INTO van Snowflake.

Laten we eens kijken hoe dit proces werkt, te beginnen met de basis.

De opdracht COPY INTO van Snowflake begrijpen

De opdracht COPY INTO wordt in Snowflake gebruikt om gegevens van een stap in een tabel te laden. De interne fasen in Snowflake fungeren als tijdelijke opslag voor gegevensbestanden voordat ze in een Snowflake-tabel worden geladen. Om bestanden uit een interne stap te lezen, gebruiken we de opdracht COPY INTO, die de bronstap en de doeltabel specificeert.

Hier volgt een basisvoorbeeld van de opdracht COPY INTO:

COPY INTO my_table

VAN @mijn_interne_stage/bestand.csv

FILE_FORMAT = (TYPE = 'CSV' FIELD_OPTIONALLY_ENCLOSED_BY = '"');

Dit commando laadt gegevens van my_internal_stage in my_table met het opgegeven bestandsformaat. Het commando is in hoge mate aanpasbaar en maakt filteren van gegevens op basis van bestandsnamen, bestandstypen en meer mogelijk. Lees meer over de opdracht COPY INTO in de Snowflake-documentatie.

Externe gegevenspakket van Coalesce

In Coalesce.io biedt het Externe gegevenspakket hulpmiddelen voor het laden en verwerken van externe gegevens in Snowflake, inclusief automatische schema-detectie, gegevensimport en -export, API-connectiviteit en ondersteuning voor het parsen van Excel-bestanden.

Meer specifiek bevat het

Voor deze use case zullen we ons richten op de CopyInto node. Lees hier hoe je de pakketten van Coalesce installeert en beheert.

Coalesce's CopyInto knooppunt.

Laten we naar de praktijk gaan. Neem de Internal Stage SUPERSTORE, die het bestand orders.json bevat:

  1. Eerst moet ik ervoor zorgen dat de Snowflake Role die ik gebruik in Coalesce (die ik COALESCE_ROLE zal noemen) alle subsidies heeft om van deze stage te lezen.
    GRANT READ ON STAGE RAW.STAGING.SUPERSTORE TO ROLE COALESCE_ROLE;
  2. Ten tweede moet ik ervoor zorgen dat ik een Opslaglocatie heb aangemaakt in Coalesce, die ik SRC (Source) zal noemen, die verwijst naar de database (RAW) en het schema (STAGING) waar de interne stap SUPERSTORE zich bevindt:
  3. De derde stap is het maken van een CopyInto node, die ik voor het gemak heb hernoemd naar "READ_FROM_JSON_ORDERS":
  4. Nadat je het knooppunt hebt gemaakt (je ziet het in de Browser Graph onder het tabblad Build), is het tijd om het te configureren. Dubbelklik op het knooppunt en stel het volgende in:
    • Zorg er onder Node-eigenschappen voor dat de opslaglocatie de plaats is waar je je nodes wilt materialiseren (in mijn geval heb ik SRC geselecteerd).
    • Onder Algemene opties kun je kiezen hoe je de node wilt materialiseren. Ik heb tabel geselecteerd voor mijn project.
    • Schakel onder Source data de optie "Internal or External Stage" in en vul de velden in met de juiste Opslaglocatie (SRC), de Etagenaam (superstore) en de Bestandsnaam omgeven door enkele aanhalingstekens ('orders.json').
    • Selecteer onder Bestandsindeling de optie Bestandsindeling waarden en vervolgens JSON (of een andere bestandsindeling, afhankelijk van de indeling van het bestand in je interne stap.
    • Voeg andere aangepaste gedragsinstellingen toe onder Bestandsindeling en Kopieer naar opties. Raadpleeg de Snowflake-documentatie voor meer informatie over de gedragsinstellingen.
  5. Nu je knooppunt bestaat, kun je de gebruikelijke Validate Create, Create, Validate Run en Run uitvoeren.
  6. Controleer in Snowflake of uw tabellen zijn aangemaakt. Coalesce maakt automatisch een kolom Variant om de JSON-gegevens op te slaan, klaar om te worden geflatteerd.

Wat is het volgende?

Nu is het tijd om te beginnen met het transformeren van gegevens. Om dit te doen, maak je een Staging node (STG_NODE), van waaruit je automatisch de gegevens in JSON-structuur kunt parsen in de Variant-kolom van de READ_FROM_JSON_ORDERS die je zojuist hebt gemaakt:

Door het knooppunt STG_ORDERS te openen en met de rechtermuisknop op de kolom Variant te klikken, kunt u de optie Mappings afleiden selecteren. Hierdoor worden de gegevens in JSON-indeling automatisch afgevlakt in kolommen en rijen.

Vanaf dit moment kunt u doorgaan met het bouwen van uw gegevenspijplijn door feiten, dimensies, Views en meer te creëren.

 

Bannerfoto door Maksym Kaharlytskyi op Unsplash