【データパイプライン会】Snowflake AI Data Cloud 勉強会 #2 レポート

# はじめに
[SnowVillage](https://usergroups.snowflake.com/snowvillage/) の #ai-datacloud チャンネルにて、定期的に「AI DATA CLOUD勉強会」と称した勉強会を開催しています。[第一回の様子はこちら](https://qiita.com/ak-sakatoku/items/f6e1e01c6c7d5b5e1e4b) （サミットのWhat's Newセッションをそれぞれ紹介するという内容でした。）

第二回は、その続きとして、データパイプラインに関するWhat's Newセッションについて紹介・ディスカッションし合いました。


# What's New: Orchestration in Snowflake
下記の記事の筆者である六車さんより、Snowflakeのオーケストレーション関連の新機能について紹介いただきました。

https://zenn.dev/musyu/articles/61a8ae2f25461e

## Task Graph in Snowsight（Public Preview）
SnowsightのGUIでタスクグラフを表示・管理できる機能です。

https://docs.snowflake.com/en/user-guide/ui-snowsight-tasks

従来までも親グラフ・子グラフなどのオーケストレーションは行えたのですが、それはSQLでの操作・参照のみでした。

現時点では主に表示がメインのようですが、今後の拡張が楽しみな機能です！（UIによるタスク操作の強化も予定されているようです）

## Serverless Task Flex（Private Preview）
サミットのキーノートでも触れられた、最大42%のコスト削減につながり、4時間以内のウィンドウの中で終わることを目指すタスクです。

終了目標時間のウィンドウの幅は、ミニマムが4時間で、4時間以上も設定可能なようです。


## Triggered Task（Public Preview）
ストリームに新しいデータが存在するときに起動されるタスクです。

https://docs.snowflake.com/en/user-guide/tasks-intro#label-tasks-triggered

通常のタスクが定期実行（1分に1回）やCRON式（N日のHH時00分）により実行されるのに対して、これは、ストリーム（テーブルの変更履歴を管理する機能）にデータがあるとき、すなわち元のテーブルに変更があったときに実行されるものとなります。

このとき、ストリームにデータが生じるまでは、ウェアハウスは起動しないため非常にリーズナブルです。

## Task Graph Observability by Snowflake Trail
タスクがいつ開始・終了されたかや、実行時間の推移なども確認できるようになる機能です。
裏側は、Snowflake Trailによって実現されているとのことでした。


## まとめ
Snowflake上でオーケストレーションが使えるのは非常に嬉しく、Snowflakeさえ導入したら他のサービスやOSSを導入する必要なく、データ分析基盤に必須なデータパイプラインの機能をサクッと使えるのは楽になる、とのことでした。筆者である私も同様の感想を抱きました。

ただし、まだPublic Previewだったり今後の機能拡張があったりと発展途上な機能なので、これからの発展を楽しみにしましょう！

## Q&A
- Q. Dynamic TableとTaskは繋がりますか？
A. 繋がります！
- Q. もしTriggered Taskの源泉にSnowpipe（ニアリアルのストリーミングサービス）を使ったら、何度も起動しちゃう？
A. 確かに・・・！要調査とします。
- Q. タスクグラフのUIの表示期限ってありますか？
A. TASK_HISTORY関数なら前後7日で、TASK_HISTORYビューなら過去1年間なので、UIによって見える範囲が異なるはず。
- Q. Snowflakeの外のデータをオーケストレーションするSnowflakeの機能はあるか？（Databricksも同じことを言われている）
A. 今のところはなさそう。（External Network Accessで外部のパイプラインツールのAPIを叩くとかはできるかも？！そこまでやるかはさておき。）


# What's New: Pandas API
続いては、下記の私の記事についての紹介をさせていただきました。

https://qiita.com/toru_hiyama/items/11aca036b3af2d20c106

## Pandas API（Public Preview）
シングルノードでしか動作しないPandasを、Snowflakeのリソース上でSQLとして動作させられるようになる機能です。

https://docs.snowflake.com/developer-guide/snowpark/python/snowpark-pandas

言うなれば、Snowpark DataFrame（Spark形式のDataFrame）のPandas版。

それが、Snowflake NotebooksやStreamlit in Snowflakeでも使えるようになったよというお話をしました。

## Q&A
- Q. Pandas APIの裏側で動くウェアハウスってどこで選ぶの？
A. NotebooksやSiSだとGUIでウェアハウスを選択できて、ローカルからであればSnowparkのセッションを貼るときに指定できる
- Q. Pandas遅いイメージだけど、これは記述だけPandasで性能は良い感じなのでしょうか？
A. Yesです！裏側は完全にSQLなので、Snowflakeの性能やスケーラブルさを活かすことができます。
- Q. Pandasのカバレッジ45%とのことだけど、Hiyamaさん的に何か使えなくて困りそうな関数はありますか？
A. （探しながら・・・）あんまりないかも。一個思ったのは、Window関数のcountかもしれません。
- Q. DatabricksのPandas APIとの違いは？
A. 抽象的な話ではほぼ同じで、中身は若干違うかも。→中身はやはり違うようで、Snowflakeでは裏側はSQLが実行されて、DatabricksではSparkが実行される。また、Databricksのほうが進んでおり、2022年頃で85%のAPIカバレッジとのこと！


# 次回予告
次回は7/17（水）20:00～で、SnowflakeとDatabricksについてディスカッションする会となります。DWHに特化していたSnowflakeとDSに特化していたDatabricksが、それぞれお互いの領域に踏み込んできている昨今、非常に気になる話題です！

# おわりに
AI Data Cloud 勉強会は、ゆるい雰囲気で基礎的な部分から濃い部分まで質問・議論し合える勉強会となっています。

ご興味のある方は、[SnowVillage](https://usergroups.snowflake.com/snowvillage/) の #ai-datacloud チャンネルからご参加ください！

定期枠は現在のところ、第三水曜日の20時からとしています。