{"id":47143,"date":"2023-08-16T07:53:33","date_gmt":"2023-08-16T05:53:33","guid":{"rendered":"https:\/\/www.inovex.de\/?p=47143"},"modified":"2023-10-10T10:56:53","modified_gmt":"2023-10-10T08:56:53","slug":"kontinuierlicher-import-von-daten-mit-snowpipe","status":"publish","type":"post","link":"https:\/\/www.inovex.de\/de\/blog\/kontinuierlicher-import-von-daten-mit-snowpipe\/","title":{"rendered":"Kontinuierlicher Import von Daten mit Snowpipe"},"content":{"rendered":"<p>Willkommen zu unserem ersten Artikel in einer l\u00e4ngeren Artikelserie \u00fcber die <a href=\"https:\/\/www.snowflake.com\/de\/\">Snowflake Data Cloud<\/a>, einer cloud-nativen Plattform, die separate Data Warehouses, Data Lakes und Data Marts \u00fcberfl\u00fcssig macht und eine sichere gemeinsame Nutzung von Daten im gesamten Unternehmen erm\u00f6glicht.<!--more--><\/p>\n<p>Snowflake ist seit vielen Jahren als cloud-native Data Warehouse L\u00f6sung bekannt, hat aber in den letzten Monaten viele neue Features, wie z.B. Snowpark als Spark-\u00e4hnliche Dataframe API f\u00fcr klassisches Data Engineering und Snowpark ML f\u00fcr Data Science, hinzugewonnen. Da damit viele Use-Cases erstmals auf Snowflake erm\u00f6glicht werden, die bisher traditionell auf der <a href=\"https:\/\/www.databricks.com\/\">Databricks Lakehouse Plattform<\/a> umgesetzt wurden, m\u00f6chten wir in einer Reihe an Artikeln die Features der Snowflake Data Cloud beleuchten. Ziel dieser Artikelserie ist es, einem breiteren Publikum ein umfassendes Verst\u00e4ndnis \u00fcber die Snowflake Technologien zu vermitteln, um selbst evaluieren zu k\u00f6nnen, ob Snowflake eine passende L\u00f6sung f\u00fcr den eigenen Use-Case sein kann.<\/p>\n<p>In diesem ersten Beitrag unserer Blogserie zu Snowflake schauen wir uns Snowpipe an. Snowpipe erm\u00f6glicht das Laden von Dateien, sobald sie in einem externen Cloudspeicher zur Verf\u00fcgung stehen. Entsprechende Ladestrecken k\u00f6nnen vollst\u00e4ndig automatisiert werden, indem Ereignisbenachrichtigungen verwendet werden, die \u00fcber das Eintreffen neuer Dateien informieren.<\/p>\n<p>Wir bei inovex nutzen diese Technologie, um die Daten unseres Meetingraum-Monitorings auf einfachem und schnellem Wege in Snowflake zur Verf\u00fcgung zu stellen. Hierzu werden die von einem Azure IoT Hub in einen Storage Account geschriebenen Daten kontinuierlich in eine Snowflake-Tabelle geladen.<\/p>\n<p>Anhand dieses Use Case zeigen wir Step-by-step, wie eine automatisierte Ladestrecke aus einem Azure Storage Account mit Snowpipe umgesetzt werden kann.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\"><p class=\"ez-toc-title\" style=\"cursor:inherit\"><\/p>\n<\/div><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.inovex.de\/de\/blog\/kontinuierlicher-import-von-daten-mit-snowpipe\/#Voraussetzungen\" >Voraussetzungen<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.inovex.de\/de\/blog\/kontinuierlicher-import-von-daten-mit-snowpipe\/#Die-einzelnen-Schritte-in-der-Uebersicht\" >Die einzelnen Schritte in der \u00dcbersicht<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.inovex.de\/de\/blog\/kontinuierlicher-import-von-daten-mit-snowpipe\/#Erstellen-einer-Storage-Integration\" >Erstellen einer Storage Integration<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.inovex.de\/de\/blog\/kontinuierlicher-import-von-daten-mit-snowpipe\/#Erstellen-einer-Notification-Integration\" >Erstellen einer Notification Integration<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.inovex.de\/de\/blog\/kontinuierlicher-import-von-daten-mit-snowpipe\/#Importieren-der-Daten-mit-Snowpipe\" >Importieren der Daten mit Snowpipe<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.inovex.de\/de\/blog\/kontinuierlicher-import-von-daten-mit-snowpipe\/#Fazit\" >Fazit<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"Voraussetzungen\"><\/span><b>Voraussetzungen<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Wir setzen voraus, dass die folgenden Komponenten bereits vorhanden sind:<\/p>\n<ul>\n<li>Snowflake-Zugang mit entsprechende Berechtigungen sowie Datenbank und Schema<\/li>\n<li>Azure-Zugang mit entsprechende Berechtigungen<\/li>\n<li>Storage Account auf dem kontinuierlich Daten eintreffen (kann nat\u00fcrlich auch manuell nachgeahmt werden)<\/li>\n<li>Storage Queue auf dem Storage Account<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"Die-einzelnen-Schritte-in-der-Uebersicht\"><\/span><b>Die einzelnen Schritte in der \u00dcbersicht<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ol>\n<li>Erstellen einer Storage Integration<\/li>\n<li>Erstellen einer Notification Integration<\/li>\n<li>Importieren der Daten mit Snowpipe<\/li>\n<\/ol>\n<h3><span class=\"ez-toc-section\" id=\"Erstellen-einer-Storage-Integration\"><\/span><b>Erstellen einer Storage Integration<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Zun\u00e4chst erstellen wir in Snowflake eine Storage Integration. Diese erm\u00f6glicht die Integration mit externen Cloudspeichern, in unserem Falle mit einem Azure Storage Account. Auf diesem Wege k\u00f6nnen dann Daten von dort abgerufen und dort gespeichert werden.<\/p>\n<pre class=\"show-lang:2 lang:tsql decode:true \">-- Create storage integration\r\nCREATE OR REPLACE STORAGE INTEGRATION SENSOR_DATA_INTEGRATION\r\n    TYPE = EXTERNAL_STAGE\r\n    STORAGE_PROVIDER = 'AZURE'\r\n    ENABLED = TRUE\r\n    AZURE_TENANT_ID = '&lt;tenantId&gt;'\r\n    STORAGE_ALLOWED_LOCATIONS = ('azure:\/\/&lt;storageAccountName&gt;.blob.core.windows.net\/&lt;containerName&gt;\/');<\/pre>\n<p>Die AZURE_TENANT_ID ist die ID des Office 365 Mandanten, zu dem der verwendete Storage Account geh\u00f6rt.<\/p>\n<p>In STORAGE_ALLOWED_LOCATIONS k\u00f6nnen beliebig viele Pfade angegeben werden, auf die wir Zugriff gew\u00e4hren wollen. Wir geben dort also den Pfad zu dem Container an, in den kontinuierlich Daten geliefert werden.<\/p>\n<p>Anschlie\u00dfend lassen wir uns die Storage Integration mittels DESC beschreiben:<\/p>\n<pre class=\"show-lang:2 lang:tsql decode:true \">-- Get consent url\r\nDESC STORAGE INTEGRATION SENSOR_DATA_INTEGRATION;<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-47146 size-large\" src=\"https:\/\/www.inovex.de\/wp-content\/uploads\/3_desc_integration_result-1024x272.png\" alt=\"Abfrageergebnis des DESC-Befehls\" width=\"640\" height=\"170\" srcset=\"https:\/\/www.inovex.de\/wp-content\/uploads\/3_desc_integration_result-1024x272.png 1024w, https:\/\/www.inovex.de\/wp-content\/uploads\/3_desc_integration_result-300x80.png 300w, https:\/\/www.inovex.de\/wp-content\/uploads\/3_desc_integration_result-768x204.png 768w, https:\/\/www.inovex.de\/wp-content\/uploads\/3_desc_integration_result-400x106.png 400w, https:\/\/www.inovex.de\/wp-content\/uploads\/3_desc_integration_result-360x96.png 360w, https:\/\/www.inovex.de\/wp-content\/uploads\/3_desc_integration_result.png 1260w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/p>\n<p>Der AZURE_MULTI_TENANT_APP_NAME ist der Name der Snowflake-Clientanwendung, die f\u00fcr die Storage Integration verwendet wird. Diesen werden wir brauchen, um der Anwendung im Azure Portal die ben\u00f6tigten Berechtigungen zu erteilen.<\/p>\n<p>Die AZURE_CONSENT_URL zeigt die URL zu einer Microsoft-Berechtigungsanforderungsseite.<\/p>\n<p>Geben wir diese in unseren Browser ein, werden wir aufgefordert, der Clientanwendung die ben\u00f6tigten Berechtigungen zu erteilen:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-47148 size-medium\" src=\"https:\/\/www.inovex.de\/wp-content\/uploads\/4_storage_consent-233x300.png\" alt=\"Microsoft-Berechtigungsanforderungsseite\" width=\"233\" height=\"300\" srcset=\"https:\/\/www.inovex.de\/wp-content\/uploads\/4_storage_consent-233x300.png 233w, https:\/\/www.inovex.de\/wp-content\/uploads\/4_storage_consent-400x515.png 400w, https:\/\/www.inovex.de\/wp-content\/uploads\/4_storage_consent-360x463.png 360w, https:\/\/www.inovex.de\/wp-content\/uploads\/4_storage_consent.png 468w\" sizes=\"auto, (max-width: 233px) 100vw, 233px\" \/><\/p>\n<p>Wir akzeptieren die Vergabe dieser Berechtigungen und werden im Anschluss auf die Snowflake-Website weitergeleitet.<\/p>\n<p>Damit die Anwendung die Daten in unserem Storage Account lesen darf, f\u00fcgen wir ihn im Access Control (IAM) Blade des Storage Accounts mit der Rolle \u201cStorage Blob Data Reader\u201c hinzu:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-47150 size-full\" src=\"https:\/\/www.inovex.de\/wp-content\/uploads\/5_storage_permission.png\" alt=\"App mit der Berechtigung Storage Blob Data Reader\" width=\"758\" height=\"115\" srcset=\"https:\/\/www.inovex.de\/wp-content\/uploads\/5_storage_permission.png 758w, https:\/\/www.inovex.de\/wp-content\/uploads\/5_storage_permission-300x46.png 300w, https:\/\/www.inovex.de\/wp-content\/uploads\/5_storage_permission-400x61.png 400w, https:\/\/www.inovex.de\/wp-content\/uploads\/5_storage_permission-360x55.png 360w\" sizes=\"auto, (max-width: 758px) 100vw, 758px\" \/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Erstellen-einer-Notification-Integration\"><\/span><b>Erstellen einer Notification Integration<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Eine Notification Integration ist ein Snowflake-Objekt, das als Schnittstelle zwischen Snowflake und Cloud-Messagingdiensten dient. F\u00fcr unser Szenario bedeutet dies, dass Snowflake von einer Azure Storage Queue \u00fcber das Eintreffen neuer Daten auf dem Storage Account benachrichtigt wird. Auf diese Benachrichtigung setzen wir dann eine Pipe, die automatisch die neuen Daten importieren wird.<\/p>\n<p>Das Erstellen einer Notification Integration ist \u00e4hnlich dem Erstellen einer Storage Integration. Zuerst legen wir das Objekt in Snowflake an:<\/p>\n<pre class=\"show-lang:2 lang:tsql decode:true \">-- Create notification integration\r\nCREATE OR REPLACE NOTIFICATION INTEGRATION SENSOR_DATA_QUEUE\r\n    TYPE = QUEUE\r\n    NOTIFICATION_PROVIDER = AZURE_STORAGE_QUEUE\r\n    ENABLED = true\r\n    AZURE_TENANT_ID = '&lt;tenantId&gt;'\r\n    AZURE_STORAGE_QUEUE_PRIMARY_URI = 'https:\/\/&lt;storageAccountName&gt;.queue.core.windows.net\/&lt;storageQueueName&gt;';<\/pre>\n<p>Wie zuvor ist die AZURE_TENANT_ID die ID des Office 365 Mandanten, zu dem der verwendete Storage Account geh\u00f6rt.<\/p>\n<p>In AZURE_STORAGE_QUEUE_PRIMARY_URI tragen wir die URL der Azure Storage Queue auf unserem Storage Account ein.<\/p>\n<p>Mit DESC sehen wir den Namen der Snowflake-Clientanwendung und holen uns die Consent URL:<\/p>\n<pre class=\"show-lang:2 lang:tsql decode:true \">-- Get consent url\r\nDESC NOTIFICATION INTEGRATION SENSOR_DATA_QUEUE;<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-47152 size-large\" src=\"https:\/\/www.inovex.de\/wp-content\/uploads\/8_desc_integration_result-1024x182.png\" alt=\"Abfrageergebnis des DESC-Befehls\" width=\"640\" height=\"114\" srcset=\"https:\/\/www.inovex.de\/wp-content\/uploads\/8_desc_integration_result-1024x182.png 1024w, https:\/\/www.inovex.de\/wp-content\/uploads\/8_desc_integration_result-300x53.png 300w, https:\/\/www.inovex.de\/wp-content\/uploads\/8_desc_integration_result-768x137.png 768w, https:\/\/www.inovex.de\/wp-content\/uploads\/8_desc_integration_result-400x71.png 400w, https:\/\/www.inovex.de\/wp-content\/uploads\/8_desc_integration_result-360x64.png 360w, https:\/\/www.inovex.de\/wp-content\/uploads\/8_desc_integration_result.png 1253w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/p>\n<p>Ab in den Browser damit und die angeforderten Berechtigungen akzeptieren:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-47154 size-medium\" src=\"https:\/\/www.inovex.de\/wp-content\/uploads\/9_queue_consent-236x300.png\" alt=\"Microsoft-Berechtigungsanforderungsseite\" width=\"236\" height=\"300\" srcset=\"https:\/\/www.inovex.de\/wp-content\/uploads\/9_queue_consent-236x300.png 236w, https:\/\/www.inovex.de\/wp-content\/uploads\/9_queue_consent-400x508.png 400w, https:\/\/www.inovex.de\/wp-content\/uploads\/9_queue_consent-360x457.png 360w, https:\/\/www.inovex.de\/wp-content\/uploads\/9_queue_consent.png 469w\" sizes=\"auto, (max-width: 236px) 100vw, 236px\" \/><\/p>\n<p>Im Access Control (IAM) Blade der Storage Queue muss die Anwendung nun noch mit der Rolle \u201cStorage Queue Data Contributor\u201c hinzugef\u00fcgt werden:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-47156 size-full\" src=\"https:\/\/www.inovex.de\/wp-content\/uploads\/10_queue_permission.png\" alt=\"App mit der Berechtigung Storage Queue Data Contributor\" width=\"677\" height=\"102\" srcset=\"https:\/\/www.inovex.de\/wp-content\/uploads\/10_queue_permission.png 677w, https:\/\/www.inovex.de\/wp-content\/uploads\/10_queue_permission-300x45.png 300w, https:\/\/www.inovex.de\/wp-content\/uploads\/10_queue_permission-400x60.png 400w, https:\/\/www.inovex.de\/wp-content\/uploads\/10_queue_permission-360x54.png 360w\" sizes=\"auto, (max-width: 677px) 100vw, 677px\" \/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Importieren-der-Daten-mit-Snowpipe\"><\/span><b>Importieren der Daten mit Snowpipe<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>F\u00fcr den Import der Daten in unsere Snowflake-Instanz m\u00fcssen wir dort nun noch eine Stage, ein File Format, eine Tabelle und eine Pipe anlegen:<\/p>\n<pre class=\"show-lang:2 lang:tsql decode:true \">-- Create stage\r\nCREATE OR REPLACE STAGE SENSOR_DATA_STAGE\r\n    URL = 'azure:\/\/&lt;storageAccountName&gt;.blob.core.windows.net\/&lt;containerName&gt;\/'\r\n    STORAGE_INTEGRATION = SENSOR_DATA_INTEGRATION;<\/pre>\n<p>Diese externe Stage zeigt auf den Container unseres Storage Accounts, in den die kontinuierliche Datenlieferung erfolgt.<br \/>\nAls STORAGE_INTEGRATION geben wir die zuvor erstellte Storage Integration an.<\/p>\n<pre class=\"show-lang:2 lang:tsql decode:true \">-- Create a json file format\r\nCREATE OR REPLACE FILE FORMAT SENSOR_DATA_FORMAT\r\n    TYPE = JSON\r\n    BINARY_FORMAT = BASE64;<\/pre>\n<p>Das File Format beschreibt die Struktur der zu ladenden Daten.<br \/>\nIn unserem Falle sind dies base64-kodierte json-Dateien.<\/p>\n<pre class=\"show-lang:2 lang:tsql decode:true \">-- Create table for json data\r\nCREATE OR REPLACE TABLE SENSOR_DATA_RAW (\r\n    BODY VARIANT\r\n);<\/pre>\n<p>In diese Tabelle wird die Pipe die auf dem Storage Account ankommenden Daten schreiben.<br \/>\nDa wir base64-kodierte json-Dateien laden, besteht sie lediglich aus einer einzigen Spalte vom Typ VARIANT.<\/p>\n<pre class=\"show-lang:2 lang:tsql decode:true \">-- Create pipe\r\nCREATE OR REPLACE PIPE SENSOR_DATA_PIPE\r\n    INTEGRATION = 'SENSOR_DATA_QUEUE'\r\n    AUTO_INGEST = true\r\n    AS COPY INTO SENSOR_DATA_RAW\r\n    FROM @SENSOR_DATA_STAGE\r\n    FILE_FORMAT = SENSOR_DATA_FORMAT;<\/pre>\n<p>Die Pipe erstellen wir auf der SENSOR_DATA_QUEUE und lassen sie einen COPY INTO Befehl ausf\u00fchren.<\/p>\n<p>Jedes BlobCreated Event unserer Storage Queue wird nun dazu f\u00fchren, dass die Pipe ausgef\u00fchrt wird und die neu hinzugekommenen Daten aus der externen Stage in die zuvor angelegte Tabelle geschrieben werden.<\/p>\n<p>Um die komplette Historie der Daten und damit alle bereits im Azure Storage Account liegenden Daten zu laden, f\u00fchren wir einen Refresh der Pipe aus:<\/p>\n<pre class=\"show-lang:2 lang:tsql decode:true \">-- Load the history\r\nALTER PIPE SENSOR_DATA_PIPE REFRESH;<\/pre>\n<p>Nun werden die Daten nach und nach in der zuvor angelegten Tabelle eintreffen:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-47158 size-full\" src=\"https:\/\/www.inovex.de\/wp-content\/uploads\/orig_16_data.png\" alt=\"Enkodierte Sensordaten in einer Snowflake-Tabelle\" width=\"841\" height=\"241\" srcset=\"https:\/\/www.inovex.de\/wp-content\/uploads\/orig_16_data.png 841w, https:\/\/www.inovex.de\/wp-content\/uploads\/orig_16_data-300x86.png 300w, https:\/\/www.inovex.de\/wp-content\/uploads\/orig_16_data-768x220.png 768w, https:\/\/www.inovex.de\/wp-content\/uploads\/orig_16_data-400x115.png 400w, https:\/\/www.inovex.de\/wp-content\/uploads\/orig_16_data-360x103.png 360w\" sizes=\"auto, (max-width: 841px) 100vw, 841px\" \/><\/p>\n<p>Um die Ausf\u00fchrungen der Pipe anzusehen, kann beispielsweise die Tabellenfunktion PIPE_USAGE_HISTORY verwendet werden:<\/p>\n<pre class=\"show-lang:2 lang:tsql decode:true \">-- Check pipe executions\r\nSELECT *\r\nFROM table(information_schema.pipe_usage_history(\r\n    date_range_start =&gt; dateadd('day', -70, current_date()),\r\n    date_range_end =&gt; current_date(),\r\n    pipe_name =&gt; 'SENSOR_DATA_PIPE'));<\/pre>\n<p>Um keine unn\u00f6tigen Kosten zu verursachen, sollte abschlie\u00dfend die automatische Ausf\u00fchrung der Pipe ausgesetzt werden:<\/p>\n<pre class=\"show-lang:2 lang:tsql decode:true\">-- Suspend pipe\r\nALTER PIPE SENSOR_DATA_PIPE SET PIPE_EXECUTION_PAUSED = TRUE;<\/pre>\n<h2><span class=\"ez-toc-section\" id=\"Fazit\"><\/span><b>Fazit<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Snowpipes bieten eine einfache und schnelle M\u00f6glichkeit, die Integration strukturierter und semi-strukturierter Daten aus externen Cloudspeichern zu automatisieren. So k\u00f6nnen zeitkritische Anwendungen in real-time oder near real-time mit Daten versorgt werden.<\/p>\n<p>Aufgrund der nahtlosen Integration von Snowflake mit den Cloud-Messagingdiensten k\u00f6nnen Unternehmen den manuellen Entwicklungsaufwand gering halten und dennoch eine kontinuierliche Versorgung aller Anwendungen mit den relevanten Daten gew\u00e4hrleisten. Die serverlose Architektur von Snowflake Snowpipes vereinfacht die Nutzung im Vergleich zu \u00e4hnlichen Technologien auf Azure oder Databricks, da sie automatische Skalierung bieten und einen geringen Verwaltungsaufwand ben\u00f6tigen, ohne dass Nutzer sich um die Provisionierung oder Verwaltung von Servern k\u00fcmmern m\u00fcssen. Ferner machen Skalierbarkeit und Kosteneffizienz sie zu einem hervorragenden Werkzeug f\u00fcr Entwicklungsteams, die effiziente und robuste Datenverarbeitungsprozesse etablieren wollen.<\/p>\n<p><b>Links<br \/>\n<\/b><a href=\"https:\/\/docs.snowflake.com\/en\/user-guide\/data-load-snowpipe-intro\">https:\/\/docs.snowflake.com\/en\/user-guide\/data-load-snowpipe-intro<\/a><br \/>\n<a href=\"https:\/\/docs.snowflake.com\/en\/sql-reference\/sql\/create-storage-integration\">https:\/\/docs.snowflake.com\/en\/sql-reference\/sql\/create-storage-integration<\/a><br \/>\n<a href=\"https:\/\/docs.snowflake.com\/en\/sql-reference\/sql\/create-notification-integration\">https:\/\/docs.snowflake.com\/en\/sql-reference\/sql\/create-notification-integration<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Willkommen zu unserem ersten Artikel in einer l\u00e4ngeren Artikelserie \u00fcber die Snowflake Data Cloud, einer cloud-nativen Plattform, die separate Data Warehouses, Data Lakes und Data Marts \u00fcberfl\u00fcssig macht und eine sichere gemeinsame Nutzung von Daten im gesamten Unternehmen erm\u00f6glicht.<\/p>\n","protected":false},"author":395,"featured_media":47266,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"ep_exclude_from_search":false,"footnotes":""},"tags":[1108],"service":[446,414,411],"coauthors":[{"id":395,"display_name":"Tobias Hoffmann","user_nicename":"thoffmann"}],"class_list":["post-47143","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-snowflake","service-business-intelligence","service-cloud","service-data-engineering"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Kontinuierlicher Import von Daten mit Snowpipe - inovex GmbH<\/title>\n<meta name=\"description\" content=\"Snowpipe erm\u00f6glicht das vollst\u00e4ndig automatisierte Laden von Dateien, sobald diese in einem externen Cloudspeicher zur Verf\u00fcgung stehen.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.inovex.de\/de\/blog\/kontinuierlicher-import-von-daten-mit-snowpipe\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kontinuierlicher Import von Daten mit Snowpipe - inovex GmbH\" \/>\n<meta property=\"og:description\" content=\"Snowpipe erm\u00f6glicht das vollst\u00e4ndig automatisierte Laden von Dateien, sobald diese in einem externen Cloudspeicher zur Verf\u00fcgung stehen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.inovex.de\/de\/blog\/kontinuierlicher-import-von-daten-mit-snowpipe\/\" \/>\n<meta property=\"og:site_name\" content=\"inovex GmbH\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/inovexde\" \/>\n<meta property=\"article:published_time\" content=\"2023-08-16T05:53:33+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-10-10T08:56:53+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.inovex.de\/wp-content\/uploads\/header-snowflake-2.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Tobias Hoffmann\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.inovex.de\/wp-content\/uploads\/header-snowflake-2-1024x576.png\" \/>\n<meta name=\"twitter:creator\" content=\"@inovexgmbh\" \/>\n<meta name=\"twitter:site\" content=\"@inovexgmbh\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Tobias Hoffmann\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"7\u00a0Minuten\" \/>\n\t<meta name=\"twitter:label3\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data3\" content=\"Tobias Hoffmann\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/kontinuierlicher-import-von-daten-mit-snowpipe\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/kontinuierlicher-import-von-daten-mit-snowpipe\\\/\"},\"author\":{\"name\":\"Tobias Hoffmann\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/person\\\/93608d81688ba211c131a709fb43c5a2\"},\"headline\":\"Kontinuierlicher Import von Daten mit Snowpipe\",\"datePublished\":\"2023-08-16T05:53:33+00:00\",\"dateModified\":\"2023-10-10T08:56:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/kontinuierlicher-import-von-daten-mit-snowpipe\\\/\"},\"wordCount\":1096,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/kontinuierlicher-import-von-daten-mit-snowpipe\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/header-snowflake-2.png\",\"keywords\":[\"Snowflake\"],\"articleSection\":[\"Analytics\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/kontinuierlicher-import-von-daten-mit-snowpipe\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/kontinuierlicher-import-von-daten-mit-snowpipe\\\/\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/kontinuierlicher-import-von-daten-mit-snowpipe\\\/\",\"name\":\"Kontinuierlicher Import von Daten mit Snowpipe - inovex GmbH\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/kontinuierlicher-import-von-daten-mit-snowpipe\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/kontinuierlicher-import-von-daten-mit-snowpipe\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/header-snowflake-2.png\",\"datePublished\":\"2023-08-16T05:53:33+00:00\",\"dateModified\":\"2023-10-10T08:56:53+00:00\",\"description\":\"Snowpipe erm\u00f6glicht das vollst\u00e4ndig automatisierte Laden von Dateien, sobald diese in einem externen Cloudspeicher zur Verf\u00fcgung stehen.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/kontinuierlicher-import-von-daten-mit-snowpipe\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/kontinuierlicher-import-von-daten-mit-snowpipe\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/kontinuierlicher-import-von-daten-mit-snowpipe\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/header-snowflake-2.png\",\"contentUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/header-snowflake-2.png\",\"width\":1920,\"height\":1080,\"caption\":\"Das Snowflake-Logo auf hellblauem Hintergrund\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/kontinuierlicher-import-von-daten-mit-snowpipe\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kontinuierlicher Import von Daten mit Snowpipe\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#website\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/\",\"name\":\"inovex GmbH\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#organization\",\"name\":\"inovex GmbH\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/inovex-logo-16-9-1.png\",\"contentUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/inovex-logo-16-9-1.png\",\"width\":1921,\"height\":1081,\"caption\":\"inovex GmbH\"},\"image\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/inovexde\",\"https:\\\/\\\/x.com\\\/inovexgmbh\",\"https:\\\/\\\/www.instagram.com\\\/inovexlife\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/inovex\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UC7r66GT14hROB_RQsQBAQUQ\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/person\\\/93608d81688ba211c131a709fb43c5a2\",\"name\":\"Tobias Hoffmann\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2255108172951bd335d0bc3d61cf3f88ac581e031dab8c4e1dd201b7651bb20f?s=96&d=retro&r=gcaab24a3323d29e79ed626f5449d1851\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2255108172951bd335d0bc3d61cf3f88ac581e031dab8c4e1dd201b7651bb20f?s=96&d=retro&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2255108172951bd335d0bc3d61cf3f88ac581e031dab8c4e1dd201b7651bb20f?s=96&d=retro&r=g\",\"caption\":\"Tobias Hoffmann\"},\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/author\\\/thoffmann\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Kontinuierlicher Import von Daten mit Snowpipe - inovex GmbH","description":"Snowpipe erm\u00f6glicht das vollst\u00e4ndig automatisierte Laden von Dateien, sobald diese in einem externen Cloudspeicher zur Verf\u00fcgung stehen.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.inovex.de\/de\/blog\/kontinuierlicher-import-von-daten-mit-snowpipe\/","og_locale":"de_DE","og_type":"article","og_title":"Kontinuierlicher Import von Daten mit Snowpipe - inovex GmbH","og_description":"Snowpipe erm\u00f6glicht das vollst\u00e4ndig automatisierte Laden von Dateien, sobald diese in einem externen Cloudspeicher zur Verf\u00fcgung stehen.","og_url":"https:\/\/www.inovex.de\/de\/blog\/kontinuierlicher-import-von-daten-mit-snowpipe\/","og_site_name":"inovex GmbH","article_publisher":"https:\/\/www.facebook.com\/inovexde","article_published_time":"2023-08-16T05:53:33+00:00","article_modified_time":"2023-10-10T08:56:53+00:00","og_image":[{"width":1920,"height":1080,"url":"https:\/\/www.inovex.de\/wp-content\/uploads\/header-snowflake-2.png","type":"image\/png"}],"author":"Tobias Hoffmann","twitter_card":"summary_large_image","twitter_image":"https:\/\/www.inovex.de\/wp-content\/uploads\/header-snowflake-2-1024x576.png","twitter_creator":"@inovexgmbh","twitter_site":"@inovexgmbh","twitter_misc":{"Verfasst von":"Tobias Hoffmann","Gesch\u00e4tzte Lesezeit":"7\u00a0Minuten","Written by":"Tobias Hoffmann"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.inovex.de\/de\/blog\/kontinuierlicher-import-von-daten-mit-snowpipe\/#article","isPartOf":{"@id":"https:\/\/www.inovex.de\/de\/blog\/kontinuierlicher-import-von-daten-mit-snowpipe\/"},"author":{"name":"Tobias Hoffmann","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/person\/93608d81688ba211c131a709fb43c5a2"},"headline":"Kontinuierlicher Import von Daten mit Snowpipe","datePublished":"2023-08-16T05:53:33+00:00","dateModified":"2023-10-10T08:56:53+00:00","mainEntityOfPage":{"@id":"https:\/\/www.inovex.de\/de\/blog\/kontinuierlicher-import-von-daten-mit-snowpipe\/"},"wordCount":1096,"commentCount":0,"publisher":{"@id":"https:\/\/www.inovex.de\/de\/#organization"},"image":{"@id":"https:\/\/www.inovex.de\/de\/blog\/kontinuierlicher-import-von-daten-mit-snowpipe\/#primaryimage"},"thumbnailUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/header-snowflake-2.png","keywords":["Snowflake"],"articleSection":["Analytics"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.inovex.de\/de\/blog\/kontinuierlicher-import-von-daten-mit-snowpipe\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.inovex.de\/de\/blog\/kontinuierlicher-import-von-daten-mit-snowpipe\/","url":"https:\/\/www.inovex.de\/de\/blog\/kontinuierlicher-import-von-daten-mit-snowpipe\/","name":"Kontinuierlicher Import von Daten mit Snowpipe - inovex GmbH","isPartOf":{"@id":"https:\/\/www.inovex.de\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.inovex.de\/de\/blog\/kontinuierlicher-import-von-daten-mit-snowpipe\/#primaryimage"},"image":{"@id":"https:\/\/www.inovex.de\/de\/blog\/kontinuierlicher-import-von-daten-mit-snowpipe\/#primaryimage"},"thumbnailUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/header-snowflake-2.png","datePublished":"2023-08-16T05:53:33+00:00","dateModified":"2023-10-10T08:56:53+00:00","description":"Snowpipe erm\u00f6glicht das vollst\u00e4ndig automatisierte Laden von Dateien, sobald diese in einem externen Cloudspeicher zur Verf\u00fcgung stehen.","breadcrumb":{"@id":"https:\/\/www.inovex.de\/de\/blog\/kontinuierlicher-import-von-daten-mit-snowpipe\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.inovex.de\/de\/blog\/kontinuierlicher-import-von-daten-mit-snowpipe\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.inovex.de\/de\/blog\/kontinuierlicher-import-von-daten-mit-snowpipe\/#primaryimage","url":"https:\/\/www.inovex.de\/wp-content\/uploads\/header-snowflake-2.png","contentUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/header-snowflake-2.png","width":1920,"height":1080,"caption":"Das Snowflake-Logo auf hellblauem Hintergrund"},{"@type":"BreadcrumbList","@id":"https:\/\/www.inovex.de\/de\/blog\/kontinuierlicher-import-von-daten-mit-snowpipe\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.inovex.de\/de\/"},{"@type":"ListItem","position":2,"name":"Kontinuierlicher Import von Daten mit Snowpipe"}]},{"@type":"WebSite","@id":"https:\/\/www.inovex.de\/de\/#website","url":"https:\/\/www.inovex.de\/de\/","name":"inovex GmbH","description":"","publisher":{"@id":"https:\/\/www.inovex.de\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.inovex.de\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/www.inovex.de\/de\/#organization","name":"inovex GmbH","url":"https:\/\/www.inovex.de\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/logo\/image\/","url":"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/03\/inovex-logo-16-9-1.png","contentUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/03\/inovex-logo-16-9-1.png","width":1921,"height":1081,"caption":"inovex GmbH"},"image":{"@id":"https:\/\/www.inovex.de\/de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/inovexde","https:\/\/x.com\/inovexgmbh","https:\/\/www.instagram.com\/inovexlife\/","https:\/\/www.linkedin.com\/company\/inovex","https:\/\/www.youtube.com\/channel\/UC7r66GT14hROB_RQsQBAQUQ"]},{"@type":"Person","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/person\/93608d81688ba211c131a709fb43c5a2","name":"Tobias Hoffmann","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/2255108172951bd335d0bc3d61cf3f88ac581e031dab8c4e1dd201b7651bb20f?s=96&d=retro&r=gcaab24a3323d29e79ed626f5449d1851","url":"https:\/\/secure.gravatar.com\/avatar\/2255108172951bd335d0bc3d61cf3f88ac581e031dab8c4e1dd201b7651bb20f?s=96&d=retro&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2255108172951bd335d0bc3d61cf3f88ac581e031dab8c4e1dd201b7651bb20f?s=96&d=retro&r=g","caption":"Tobias Hoffmann"},"url":"https:\/\/www.inovex.de\/de\/blog\/author\/thoffmann\/"}]}},"_links":{"self":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/47143","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/users\/395"}],"replies":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/comments?post=47143"}],"version-history":[{"count":6,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/47143\/revisions"}],"predecessor-version":[{"id":47809,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/47143\/revisions\/47809"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/media\/47266"}],"wp:attachment":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/media?parent=47143"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/tags?post=47143"},{"taxonomy":"service","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/service?post=47143"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/coauthors?post=47143"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}