ポイント: 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までご連絡ください。)
追加リソース
このようなチュートリアルをさらに探求するには、これらのリソースを探索してください:
Snowflakeガイド
- Snowflake 101: Snowflakeデータクラウドの紹介
- Amazon S3データをSnowflakeにインポートする方法
- SnowflakeでJSONデータをクエリする方法
- S3からSnowflakeへのCSVファイルの読み込み
- Snowflake: 分析および統計関数の使用
- Snowflakeウィンドウ関数: Partition ByおよびOrder By
- Snowflakeラグ関数と移動平均
- Snowflake SQL集約関数とテーブル結合
- Snowflakeにおけるユーザー定義関数(UDF)
- Snowflakeストリームの作成と使用
- Snowflakeにおけるストアドプロシージャの使用
- Snowflake vs Redshift: 違いと選び方
これらの投稿は私自身のものであり、必ずしもBMCの立場、戦略、または意見を表すものではありません。