Snowflakeのサンプルデータを一通り見てみる #SnowflakeDB

2021.12.08

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

※本エントリは、Snowflakeをより使いこなそう! Advent Calendar 2021の8日目の記事となります。

さがらです。

Snowflakeにはサンプルデータが提供されています。そのサンプルデータがどんなデータなのか、この記事でまとめてみます。

SNOWFLAKE_SAMPLE_DATAとは

SnowflakeのサンプルデータはSNOWFLAKE_SAMPLE_DATAという名前のデータベースで、データシェアリングされた形で提供されています。

データシェアリングのため、以下の特徴があります。

  • 使用中のアカウントに対するストレージ料金は発生しない
  • クエリを発行する際に必要なウェアハウスは、使用中のアカウントで準備しないといけない(クレジット消費が発生)

また、スキーマ構造は下図の通りです。大きく、TPCDS_SF...TPCH_SF...WEATHERの3種類に分かれているため、次章からそれぞれのスキーマについて説明します。

前提:TPCとは

各スキーマの説明の前に、TPCDS_SF...TPCH_SF...に関連するTPCについて簡単に説明しておきたいと思います。

まずTPCとは「Transaction Processing Performance Council」の略で、「トランザクション処理性能評議会」のことを意味しています。

そして、IT用語辞典からの引用ですが、このような機関となっています。

TPCとは、コンピュータシステムの性能評価の方法や基準などを策定する業界団体の一つ。世界の大手コンピュータメーカーやソフトウェアメーカーなどが参加しており、データベースシステムなど企業の情報システムなどで用いるシステムの性能指標の策定を行っている。

そして、実際にどういった性能指標(ベンチマーク)を提供しているのかは以下のページに記載されています。

TPCDS_SF...について

TPC-DSとは

このTPCDS_SF...は、TPCのベンチマークのうちTPC-DSに該当するデータとなっています。

公式HPのTPC-DSについての説明文を訳した文章を以下に記します。(翻訳にはDeepLを使用)

簡単に言うと、大量のデータを用いたアドホック分析やレポーティングなどを行う、ビッグデータに関するソリューションのパフォーマンスを測るベンチマークがTPC-DSです。

TPC-DSは、ビッグデータシステムを含む意思決定支援ソリューションのパフォーマンスを測定するための、事実上の業界標準ベンチマークです。現在のバージョンはv2で、クエリやデータメンテナンスなど、意思決定支援システムの一般的に適用可能な側面をモデル化しています。TPC-DSの基本的なビジネスモデルは小売製品のサプライヤーですが、データベーススキーマ、データ収集、クエリ、データメンテナンスモデル、および実装ルールは、最新の意思決定支援システムを広く代表するように設計されています。

このTPC-DSのデータの仕様については、下記のDocにまとまっています。(2021年12月8日時点でver3.2.0です。最新のDocはこちらから参照ください。)

このDocを見ると下図のようにER図が記載されており、各テーブルのリレーションがわかります。(合計7種類のER図がDoc上には用意されています。)

各テーブルのフィールド定義、主キー、外部キー、の定義もこちらのDocに書いてありますので、サンプルデータを使ったクエリを書きたい場合は是非ご覧ください。

Snowflake上のTPCDS_SF...について

TPC-DSについて説明しましたが、実際にSnowflakeでのスキーマを見ると、TPCDS_SF100TCLTPCDS_SF10TCLの2種類に分かれていると思います。

簡単に説明すると、TPCDS_SF100TCLは100TB規模のスキーマ、TPCDS_SF10TCLは10TB規模のスキーマとなっています。

TPC-DSの公式Docにも、この2種類のスキーマの各テーブルのレコード数が記載されています。(実際にSnowflakeから参照できるレコード数と若干異なるため、実際のレコード数はSnowflakeを介して確認してください

公式Docにはクエリサンプルもありますので、こちらも是非併せて御覧ください。

TPCH_SF...について

TPC-Hとは

このTPCH_SF...は、TPCのベンチマークのうちTPC-Hに該当するデータとなっています。

TPCの公式HPのTPC-Hについての説明文を訳した文章を以下に記します。(翻訳にはDeepLを使用)

簡単に言うと、大量のデータを用いたアドホック分析や複雑なクエリなど、ビッグデータを用いた意思決定支援に関するベンチマークがTPC-Hです(TPC-DSと似ていますね)。

TPC Benchmark-H(TPC-H)は、意思決定支援のためのベンチマークです。TPC-Hは、ビジネスに特化したアドホックなクエリと、同時並行的なデータ修正から構成されています。これらのクエリとデータベースに格納されているデータは、業界全体に広く関連するものが選ばれています。このベンチマークは、大量のデータを調査し、高度に複雑なクエリを実行し、重要なビジネス上の質問に回答を与える意思決定支援システムを示しています。

このTPC-Hのデータの仕様については、下記のDocにまとまっています。(2021年12月8日時点でver3.0.0です。最新のDocはこちらから参照ください。)

このDocを見ると下図のようにER図が記載されており、各テーブルのリレーションと対応する外部キーがわかります。このDocにはSnowflakeのDocには記載されていないサンプルクエリも多くありますので、参考にして頂くとよいと思います。

Snowflake上のTPCH_SF...について

TPC-Hについて説明しましたが、実際にSnowflakeでのスキーマを見ると、TPCH_SF1TPCH_SF10TPCH_SF100TPCH_SF1000の4種類に分かれていると思います。

簡単に説明すると、TPCH_SF1をベースに、10倍、100倍、1000倍にスケールしてる、という仕様です。(例:1000倍スケールはTPCH_SF1000

TPC-DSの公式Docにも、この4種類のスキーマについて。LINEITEMというテーブルをベースに各スキーマでどうスケールされているのか、具体的な数値と共に記載がされています。

公式Docにはクエリサンプルもありますので、こちらも是非併せて御覧ください。

WEATHER

WEATHERについてですが、提供が廃止されたデータとなっています。 ただし、一部のクラウドプラットフォームとリージョンにおいてはまだ閲覧できる状態です。(私もAWSのTOKYOでは見ることが出来ています。)

天気に関するデータを保持していて一見使えそうですが、公式に提供が廃止されている事と更新もリアルタイムではないことを踏まえ、本番の実業務ではこのデータは使わないように注意しましょう

次回

Snowflakeをより使いこなそう! Advent Calendar 2021、次回の9日目では、「Snowflakeでコストを概算してみよう」というタイトルで執筆します。お楽しみに!