3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

あなたはSnowflake Tシャツの買い方を知っているか?それとCONNECT BY

Posted at

この記事は何?

Snowflake Advent Calendar 2021 の3日目の記事です。
今日の記事は小ネタ&出オチです。

あなたは Snowflake を知っているか?

新進気鋭のSnowflake、昨年はニューヨーク証券取引所に上場もはたしたユニコーン企業です。
製品カテゴリはDWH(データウェアハウス)。
要するに超高速なデータベース製品。

さばけるデータスケールは数百億行以上だったり、ペタクラスだったり、これまで世の中に革命を起こした最強のデータベースです。

そんな Snowflake ですが、実はグッズが売ってます。

そんなイケてる Snowflake 皆さんファンになっちゃいますよね?
なっちゃいますよね?

ファンですよね?

そんなあなたに、実はグッズが売っているんです。

https://www.snowflake-store.com/
Snowflake_Snowstore_-_Snow_gear_for_Snowflake_partners.png

おすすめ

おすすめは上記のスクショにも載ってますが、「PRAY FOR SNOW TEE」です。
なんとなく Oracle への当てこすりかなって気持ちになりますよね。

おすすめです

さて、そんなOracleを意識したSnowflakeですが

けっこう、Oracle由来かなって感じの機能が色々あります。
例えば1日目でもかいた DUAL表

今日はもう一つ紹介します。

CONNECT BY

CONNECT BY ????

これもSQLの構文です。

公式ドキュメント:CONNECT BY

構文はこんな感じ

SELECT <column_list> [ , <level_expression> ]
  FROM <data_source>
    START WITH <predicate>
    CONNECT BY [ PRIOR ] <col1_identifier> = [ PRIOR ] <col2_identifier>
           [ , [ PRIOR ] <col3_identifier> = [ PRIOR ] <col4_identifier> ]

どんなやつ?

FROM句 に指定したテーブルを START WITH の条件に指定された行を起点に、CONNECT BY に指定された結合条件で、ループのように探索していく動き方をします。

例えば、下記のようなテーブルが有るとき

Worksheet_-問題づくり__1_1__in_1_17s-_Done-2.png

こういうSQLを流すと

select employee_id, manager_id, title
  from employees
    start with title = 'President'
    connect by
      manager_id = prior employee_id
  order by employee_id;

こうなります

Worksheet_-問題づくり__1_1__in_368ms-_Done.png

Presidentから結合条件に指定された条件を使って、探索していってるのがわかるでしょうか?
再起を使った木の探索みたいですね。

SYS_CONNECT_BY_PATH

SYS_CONNECT_BY_PATH を使うと、階層構造用の文字列を生成できます。

select sys_connect_by_path(title, ' -> '), employee_id, manager_id, title
  from employees
    start with title = 'President'
    connect by
      manager_id = prior employee_id
  order by employee_id;

Worksheet_-問題づくり__1_1__in_362ms-_Done.png

あら、ちょっと便利じゃない?

まとめ

  • Snowflake ファンはグッズをご検討ください。みんなで PRAY FOR SNOW しよう!
  • CONNECT BY で木を探索できる。木構造をガンガンテーブルに突っ込もう!(会社組織とか、製品を構成する部品の依存関係とか、よくやるよね?)

さぁレッツSnowflake!!!

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?