Verwalten des regelmäßigen Ladens von Daten

Dieses Thema enthält bewährte Verfahren, allgemeine Richtlinien und wichtige Hinweise für die Verwaltung des regelmäßigen Ladens von Daten.

Unter diesem Thema:

Partitionieren von Staging-Datendateien

Bei der Planung des regelmäßigen Ladens von Daten wie ETL (Extrahieren, Transformieren, Laden) von Prozessen oder dem regelmäßigen Import von maschinell generierten Daten ist es wichtig, die Daten in Ihrem internen (d. h. Snowflake) Stagingbereich oder an Ihrem externen Speicherort (S3-Buckets oder Azure-Container) unter Verwendung von logischen, granularen Pfaden zu partitionieren. Erstellen Sie eine Partitionsstruktur, die Details wie Anwendung oder Speicherort sowie das Datum, an dem die Daten geschrieben wurden, identifiziert. Sie können dann jeden Bruchteil der partitionierten Daten mit einem einzigen Befehl in Snowflake kopieren. Wenn Sie anfangs Ihre Tabellen füllen, können Sie Daten stunden-, tage-, monats- oder sogar jahresweise nach Snowflake kopieren.

Einige Beispiele für partitionierte S3-Buckets mit Pfaden:

s3://bucket_name/application_one/2016/07/01/11/

s3://bucket_name/application_two/location_one/2016/07/01/14/

Wobei:

application_one, application_two, location_one usw.

Identifizieren von Details für die Quelle aller Daten im Pfad. Die Daten können nach dem Datum organisiert werden, an dem sie geschrieben wurden. Ein optionales 24-Stunden-Verzeichnis reduziert die Datenmenge in jedem Verzeichnis.

Bemerkung

S3 sendet eine Verzeichnisliste mit jeder COPY-Anweisung, die von Snowflake verwendet wird, sodass die Reduzierung der Anzahl der Dateien in jedem Verzeichnis die Leistung Ihrer COPY-Anweisungen verbessert. Sie können sogar erwägen, Unterordner mit Schritten von 10–15 Minuten innerhalb der Ordner für jede Stunde zu erstellen.

Ebenso können Sie auch einen Pfad hinzufügen, wenn Sie Dateien in einem internen Stagingbereich bereitstellen. Beispiel:

PUT file:///tmp/file_20160701.11*.csv @my_stage/<application_one>/<location_one>/2016/07/01/11/;
Copy

Laden von bereitgestellten Daten

Laden Sie organisierte Datendateien in Snowflake-Tabellen, indem Sie den genauen Pfad zu den Stagingdateien angeben. Weitere Informationen finden Sie unter Organisieren von Daten nach Pfaden.

Entfernen geladener Datendateien

Wenn Daten aus Stagingdateien erfolgreich geladen wurden, sollten Sie erwägen, die Stagingdateien zu entfernen, um sicherzustellen, dass die Daten nicht versehentlich erneut geladen (dupliziert) werden.

Bemerkung

Entfernen Sie die Stagingdateien erst, wenn die Daten erfolgreich geladen wurden. Um zu prüfen, ob die Daten erfolgreich geladen wurden, verwenden Sie den Befehl COPY_HISTORY. Überprüfen Sie die Spalte STATUS, um festzustellen, ob die Daten aus der Datei geladen wurden. Beachten Sie, dass bei einem Status von Load in progress durch das Entfernen der Stagingdatei die Daten möglicherweise nur teilweise geladen werden und es zu Datenverlusten kommen kann.

Stagingdateien können aus einem Snowflake-Stagingbereich (Benutzer-Stagingbereich, Tabellen-Stagingbereich oder benannter Stagingbereich) mit den folgenden Methoden gelöscht werden:

  • Dateien, die erfolgreich geladen wurden, können während eines Ladevorgangs aus dem Stagingbereich gelöscht werden, indem Sie die Kopieroption PURGE im Befehl COPY INTO <Tabelle> angeben.

  • Nachdem das Laden abgeschlossen ist, verwenden Sie den Befehl REMOVE, um die Dateien aus dem Stagingbereich zu entfernen.

Das Entfernen von Dateien stellt sicher, dass sie nicht versehentlich erneut geladen werden. Es verbessert auch die Ladeleistung, da es die Anzahl der Dateien reduziert, die COPY-Befehle scannen müssen, um zu überprüfen, ob bereits vorhandene Dateien in einem Stagingbereich bereits geladen wurden.