SnowpipeはETLとしてどう活用できるか?
はじめに
企業ではサービスがデジタル環境で提供されたり、DXが進むにつれデータの増加が避けられない状況であり、データをうまく使えることが必須条件となりつつあります。データが増える要因をあげると
- webサイトへの流入から売上への導線を強化したい。その際Google Analyticsを使ったwebサイトの利用分析をする
- サービサイト(web)での顧客の行動分析をするためにwebサイトの各ページにJavascriptの設置によってサーバにアクションデータを蓄積した
- 商品棚にNFCタグを設置し、商品の移動や設置と共にスマートフォンのなどデバイスを経由してデータが貯まるようにした
- スマートフォンアプリのGPS情報に依って提供サービスを変える仕組みを開発した。そのため数秒おきにGPS情報がサーバに貯まる
この他にサービスの提供や工場での稼働状況などオンラインで瞬時にデータが貯まる仕組みが普及しており、これらのデータを適切に貯めて利用するサイクルが必要になっています。本記事で説明するSnowpipeはSnowflakeというクラウド上でデータを貯めて利用する仕組みへのデータの伝達の便利な方法になります。
以降ではなぜSnowflakeなのか、といったことからSnowpipeの利用方法についてご説明していきます
Snowflakeとは?
Snowflakeとはデータクラウドと称されるDWHを基盤としたデータエコシステムの仕組みを持った製品になります。
まずSnowflakeはDWHとして大規模データを扱うのに長けたツールになります。これは時として有名なクラウドDWHの性能限界をもしのぐ量を扱えるほど柔軟にスケーラビリティの性能を持っています。
またデータエコシステムとは、マーケットプレイス機能とシェアリング機能が充実していることにあります。シェアリング機能は、クラウドサービス上に立てられたSnowflake間のデータ連携を簡潔に行うサービスになり、データパイプライン設計を大幅に省くことが可能になります。
マーケットプレイスでは他社のデータを買うことが可能な機能となっています。
例えばA社のデータが必要な場合、A社とサービスを契約し、Snowflakeマーケットプレイスで必要な手続きをすることでデータを連携し、A社のデータを紐づけて返す仕組みが多くとられています。
このようにデータを貯めることからデータの流動性を高めてデータの価値をあげるには非常に有用なツールということができます。続けてこの操作を実行するSnowpipeの説明をすることでpipelineの開発が簡単であることを実感してもらいたいと思います。
Snowpipeとは?
SnowpipeとはSnowflakeのテーブルに対して継続的にデータをロードする仕組みになります。
- AWS S3に置かれたファイルをSnowflakeのテーブルにcopyする
- google cloud storageに置かれたファイルをSnowflakeのテーブルにcopyする
上記を応用することでAWS RDSに更新されたデータをSnowflakeにcopy (※厳密にはAWS DMSを使って検知)することができたり、Google Cloud(GC) BigQueryに更新されたデータをSnowflakeテーブルに更新することができます(※PIPE実行例)。
このようにすることでwebサービスから生み出されたデータをトランザクションデータベース(AWS RDSなど)へデータを更新し、この更新分をSnowflakeへDWHとしてデータの追加をすることで巨大な過去分のデータを集計かけたり、マートテーブルを作ってBIに投影することが可能になります(※トランザクションテーブルでの集計はサービスへのトラブルを起こすので、サービスと切り離された環境で集計をするといった環境を想定しています)。
CREATE PIPE PIPE_CATALOG.PIPE_SCHEMA.PIPE_NAME AUTO_INGEST=TRUE AS
COPY INTO PIPE_CATALOG.PIPE_SCHEMA.TABLE
FROM <S3 stage>
FILE_FORMAT = (TYPE = 'JSON')
;
※PIPE実行例
CREATE OR REPLACE TABLE PIPE_CATALOG.PIPE_SCHEMA.TABLE (
transaction VARIANT
);
※上記データの更新対象テーブルスキーマ
※さらに実行例をご参照したい方は公式ページ(※2)のShowpipe DDLコマンドをご覧いただくと操作の具体イメージが湧くと思いますので是非チャレンジしてみてください
SnowpipeはETLに有用なのか?
ETLはEXTRACTION(データ抽出), TRANSFORMATION(データの変形), LOAD(データのテーブルへの格納)をさします。
ETLツールはこのETLそれぞれの機能に強みを持つことで特徴を持ちます。Snowpipeは上記の通り、SnowflakeでのデータのLOADを簡潔にできる機能となります。
またTRANSFORMATIONはSnowflakeのテーブル操作によって大規模データを操作できることになるので、SnowflakeのエコシステムによりETL全体の管理をしやすくなるといえます。
当社のETLツールである「Reckoner(レコナー)」は、Snowflakeと連携し、文字列変換、結合・グループ化、フォーマット変換、バリデーション・フィルター、集計・四則演算などTRANSFORMATION(データの変形)を得意としており、SnowflakeやSnowpipeと合わせることでより強力なデータ基盤を構築することが可能になります。
Reckonerでは現在、14日間無料トライアルをご提供しておりますので、ぜひご活用ください。
参考
※1: https://docs.snowflake.com/ja/user-guide/secure-data-sharing-across-regions-plaforms.html
※2: https://docs.snowflake.com/ja/user-guide/data-load-snowpipe-intro.html
ETLツールについて詳しく知りたい、ETLツールの選び方を知りたいという方はこちらの「ETLツールとは?選び方やメリットを解説」をぜひご覧ください。