PythonでSQLクエリを柔軟かつ効果的に管理する方法 でもあげたが、SQLの結果をPythonの世界にどう統合するかはいろいろなやり方がある。

Snowflake Notebooksはそこの設計がよくできているなと感動したので、メモ。

Snowflake notebook は、

  • Markdown
  • SQL
  • Python の三つのセルが使えるが、例えば、
select
	id,
	name
from
	users

とSQLを書き、このcell の名前が cell1だとする。 cell1 のSQLを実行後、Pythonのcell でto_pandas()1 関数を利用して、以下のようにコードを書くと

df = cell1.to_pandas()

cell1のSQLの結果がdataframe として扱える!

これは、Notebookの cellごとに、SQLとPythonの関心を分離できるかつ、見た目もすっきりするのでほうと感心した設計だ。 例えば、SQLのcellを複数作っておいて、柔軟に参照するcellを切り替えていけば便利だ。

昔GCPであったNotebookのサービスを思い出したが、あれはbqのマジックコマンドが使えるというだけだったので、こっちのがよく考えられてるね

Footnotes

  1. snowflake.snowpark.DataFrame.to_pandas | Snowflake Documentation