S3からSnowflakeへのCSVファイルの読み込み

S3からSnowflakeへのCSVファイルの読み込み

  • オーケストレーション
6分で読めます 更新日 Oct 13, 2020

ポイント: Amazon S3からSnowflakeへのCSVファイルの読み込みは、テーブル作成とデータコピーの詳細な手順を含み、データ処理のためのコードスニペットも提供します。このチュートリアルは、CSVデータを効率的に管理するための実践的なガイダンスを提供します。

  • CSVファイルをSnowflakeに読み込むためのステップバイステップの指示。
  • S3からデータをコピーするためのテーブル作成とコード例。

このチュートリアルでは、Amazon S3からSnowflakeテーブルにCSVファイルを読み込む方法を示します。

私たちはまた、JSONファイルをSnowflakeに読み込む方法についても説明しました。

サンプルデータ

この例を進めるために、いくつかのデータが必要です。ここから1,000の天気記録をダウンロードしてください。(私たちは、OpenWeatherからキプロスのパフォスについての20年分の天気データを購入しました。これはCSV形式に変換された1,000レコードの小さなサブセットです。)

このデータを次のようにAmazon S3にアップロードしてください:

    aws s3 cp paphosWeather.csv s3://gluebmcwalkerrowe/paphosWeather.csv

Snowflakeにテーブルを作成

残念ながら、Snowflakeはヘッダーレコードを読み取ってテーブルを自動的に作成しません。(おそらく、列のデータ型、数値精度、およびサイズを定義することを好むためです。)

    create table weather(
dt integer,
temp decimal(6,2),
temp_min decimal(6,2),
temp_max decimal(6,2),
pressure int,
humidity int,
speed decimal(6,2),
deg int,
main varchar(50),
description varchar(50))

データファイルをSnowflakeステージエリアにコピー

次に、次のようにSnowflakeステージエリアを作成します。

あなたのSnowflake認証情報が何であれ、問題ありません。Amazon AWSの認証情報を入力してください。実際、Snowflakeの認証情報を探す場所はありません。なぜなら、Snowflakeのインスタンス上で実行していても、Amazon IAMの認証情報と同じだからです。

    create or replace stage paphosweather
url='s3://gluebmcwalkerrowe/paphosWeather.csv'
credentials=(aws_key_id='xxxxxxx' aws_secret_key='xxxxxxx')

今、上記で作成したテーブルにデータをコピーしてください。

    copy into weather
  from 's3://gluebmcwalkerrowe/paphosWeather.csv' 
  credentials=(aws_key_id='xxxxxxx' aws_secret_key='xxxxxxxx')
  file_format = (type = csv field_delimiter = ',' skip_header = 1);

エポック時間を読み取り可能な形式に変換

dt列はエポック時間で、1970年1月1日以降の秒数です。次のようにして、読み取り可能な形式(例: 2000-01-01 01:00:00.000)に変換できます。

    select to_timestamp(dt) from weather

Snowflakeの日付と時刻の形式

Snowflakeは、日付と時刻の値をインポートする際にいくつかの制限があるようです。私が持っていたデータには、エポック時間()とこの形式の時間が含まれていました:

2020-09-12 23:00:00 +0000 UTC

私はこれを次の形式に変換しました。ここで+00.00はhh:mmのタイムゾーンオフセットを意味します:

2020-09-12 23:00:00+00:00

この形式も利用可能で、タイムゾーンを完全に省略します:

2020-09-12 23:00:00

これらの値を読み込むことができなかったため、エポック時間を使用しました。(これが機能する場合は、blogs@bmc.comまでご連絡ください。)

2020-09-12 23:00:00+00:00は、CSVファイルを読み込む前にalter session timestampステートメントを使用して設定するフォーマットに一致する必要があります:

    alter session set TIMESTAMP_INPUT_FORMAT = 'yyyy-mm-dd HH24:MI:SS+TZH:TZM'

しかし、Snowflakeは一致しないとエラーを返しました。それは意味を成しません。なぜなら、このステートメントは問題なく動作したからです:

    select to_timestamp('2000-01-01 00:00:00+00:00', 'yyyy-mm-dd HH24:MI:SS+TZH:TZM');

さらに調査したところ、Snowflakeの日付時刻形式はミリ秒やタイムゾーンオフセットをサポートしていないことが文書に記載されているのを見ました。しかし、日付のその部分を省略してもエラーが発生しました。タイムスタンプ形式も機能しませんでした。(再度、これがうまくいく場合は、blogs@bmc.comまでご連絡ください。)

追加リソース

このようなチュートリアルをさらに探求するには、これらのリソースを探索してください:

これらの投稿は私自身のものであり、必ずしもBMCの立場、戦略、または意見を表すものではありません。

オーケストレーションの関連記事

BMCからのさらなる情報に興味がありますか?

ザ・ブリーフは、メインフレームとエンタープライズオーケストレーションに関する月刊メールです:研究、顧客ストーリー、製品ニュース、イベント。

このオファーに登録することで、あなたはBMCのプライバシーポリシーを読み、同意したことを確認します。

ザ・ブリーフに登録しました

ザ・ブリーフは、メインフレームとエンタープライズオーケストレーション—BMC AMIおよびControl-M—に関するアナリストの研究、顧客の展開、両者にわたるイベントを網羅しています。