😄

Tableau PrepからAmazon S3に対してデータをParquet形式で出力してみた

2024/09/06に公開

カスタマーサクセスマネージャー見習いの玉井です。

TableauのVer2024.2がリリースされておりますが、このバージョンの新機能に「Amazon S3への出力」というものがあります。
https://help.tableau.com/current/prep/ja-jp/prep_save_share.htm

機能自体は読んで字の如く、Tableau Prepのフローの出力先にS3が追加されましたよ、というめちゃくちゃシンプルなものです。

ただ、クラウド上にデータ分析基盤を構築するのが当たり前なこのご時世、S3のようなクラウドストレージを活用するのはもはや避けられないところまで来ており、そこにTableau Prepで処理したデータを直接配置できるようになったのは、ものすごく大きいです。

そして、この機能のもう一つの特徴が、出力時のファイル形式としてParquet形式を選べる(もう一つはcsv)という点です。Tableauユーザーの方では馴染みのない方もいらっしゃるかもしれませんが、Parquetはオープンソースのデータファイル形式で、列志向・高圧縮・大容量でも高速…という特徴があり、データ分析には持ってこいな形式なのです。

Tableau Prepで処理したデータを、Parquet形式でS3に配置できるというのは、データ分析基盤全体にとって、大きなメリットをもたらすと思います。

そんなわけで、この記事では、Tableau Prep 2024.2で実際にS3にParquet形式でデータを出力してみようと思います。

Parquet形式の詳細について以下をどうぞ。
https://parquet.apache.org
https://www.databricks.com/jp/glossary/what-is-parquet

やってみた

とりあえず出力してみる

このためだけにイチからフローを作るのはめんどいので、サンプルで付与されているフローを使用します。

大体のフローは一番右に出力する部分があると思いますので、そこを選択し、「出力の保存先」を「データベースとクラウドストレージ」にします。

出力先の設定画面が出てきますので、「接続の追加」から「Amazon S3(出力のみ)」を選びます。

すると、S3側(AWS側)のアクセス情報を求められるので、入力します。ちなみに、出力先のバケットは予め用意しておく必要があります(出力時についてにバケット新規作成…みたいなことはできない)。

この時点でほとんどの必要項目は揃いましたが、最後に「S3 URI」を入れる必要があります。

ファイル名まで入力することになりますが、ここで一気に拡張子まで入力する必要があります。そう、ここの拡張子入力をもって、csvかParquetかを選ぶことになります。ファイル形式を別途設定する項目は無いのでご注意ください。

上記設定完了後、実際にフローを実行してみたところ、以下の通り正常にファイルがParquet形式で出力されていました。

S3に出力したParquetファイルをSnowflakeで活用する

S3にファイル出力して終わりだと、いくらなんでもさすがに味気無い…。せっかくなので、S3に出力したParquetファイルを、Snowflakeから参照してみたいと思います。

Snowflakeは、外部ステージと言う機能を利用することで、S3内に存在するファイルに対して、Snowflakeから直接読み書きする(クエリを実行する)ことができます(ちなみに、直接参照ではなく、Snowflake内部にロードすることもできます)。

https://docs.snowflake.com/ja/user-guide/data-load-s3-config-storage-integration

もちろんParquet形式のファイルも対象なので、(外部ステージの設定が済んでいたら)Tableau PrepからS3に直接ファイルを出力→即時にSnowflakeで分析することができます。

手順詳細は上記ドキュメントにありますが、以下のようにちゃんと設定が済んでいると…

SnowflakeからS3内のParquetファイルに直接クエリすることができます。

おわりに

今回はSnowflakeを利用例に挙げましたが、データ分析という領域において、S3に配置したファイルの活用方法は多岐にわたります。

最近でいえばApache IcebergなどのOpen Table Formatも話題になってきており、Amazon Athena+S3の組み合わせで、Apache Icebergを用いた簡易的なレイクハウスアーキテクチャで運用をされているところもあるかと思います。

Athenaは以前からTableauは対応していますし、S3に対してもTableau Prepでファイルを出力できるようになったので、こういった最新のアーキテクチャにもTableauを組み込むことができるようになったという意味で、今回の新機能「S3への出力」は、とても存在の大きい機能ではないかと思っています。

Discussion