Snowflake NotebooksでGit連携機能を使ってみた

2024.06.01

こんちには。

データアナリティクス事業本部 機械学習チームの中村(nokomoro3)です。

今回はSnowflake NotebooksのGit連携機能を使ってみたいと思います。

前回記事の続きですので、セットアップなどは以下の記事もご参考にされてください。

冒頭まとめ

  • Git連携機能の概要
    • レポジトリのフォルダとSnowflake Notebookを紐づけられる
      • つまり複数のSnowflake Notebookを1つのレポジトリに連携可能
    • environment.ymlも保存できるので便利
    • mainブランチ以外も紐づけられるが、同時に複数ブランチはできないので接続を再設定する必要がある
    • Privateレポジトリでも設定で連携可能
  • 設定方法
    • アクセスはGitHubのAccess Tokenなどを使用
    • いくつかのリソースを作成するためSQL Worksheetでの作業が必要

使ってみる

Notebookの作成

とりあえず以下のような設定でNotebookを作成した状況とします。

snowflake-notebook-git-integration_2024-05-31-23-10-06

GitHubの準備

GitHub側で準備をしていきます。以下のようにレポジトリの作成を作成します。
Snowflakeにとっては、ブランチがある状態である必要がありますので「Add a README file」にチェックを入れています。
また、レポジトリはPublicではなくPrivateにして試しています。

snowflake-notebook-git-integration_2024-05-31-23-13-08

次に、Personal Access Tokenを作成します。ログインした状態で以下にアクセスします(ちょっと場所を探すのに手間取りました)。

こちらのページで、Fine-granted tokensを「Generate new token」を押下して作成します。

snowflake-notebook-public-preview_2024-05-31-19-51-28

トークン名を入力します。

snowflake-notebook-git-integration_2024-05-31-23-15-59

アクセスできるブランチを指定できるので、「Only select repositories」をチェックし、先ほど作成したレポジトリを指定します。

snowflake-notebook-git-integration_2024-05-31-23-17-06

必要十分かはわかりませんが、PermissionsにはContentsを「Read and write」を付けます。

snowflake-notebook-git-integration_2024-05-31-23-18-19

最後に「Generate token」を押下します。

snowflake-notebook-git-integration_2024-05-31-23-18-53

作成されたトークンをコピーできますので、控えておきます。(Snowflake側で使用します)

snowflake-notebook-git-integration_2024-05-31-23-19-45

Snowflake側の設定

必要十分かは分かってないのですが、以下のドキュメントに従ってGitへのアクセスを設定します。

以降、SQL Worksheetで作業をします。

まずは以下の git_secret というSECRETを作成します。

CREATE OR REPLACE SECRET git_secret
  TYPE = password
  USERNAME = 'cm-nakamura-shogo'
  PASSWORD = '先ほど控えたトークン';

作成の確認をします。

SHOW SECRETS;

snowflake-notebook-git-integration_2024-05-31-23-27-04

以下の git_api_integration を作成します。先ほどのSECRETもここで指定します。

CREATE OR REPLACE API INTEGRATION git_api_integration
  API_PROVIDER = git_https_api
  API_ALLOWED_PREFIXES = ('https://github.com/cm-nakamura-shogo')
  ALLOWED_AUTHENTICATION_SECRETS = (git_secret)
  ENABLED = TRUE;

作成の確認をします。

SHOW INTEGRATIONS;

snowflake-notebook-git-integration_2024-05-31-23-29-08

以上で、準備は完了です。

Notebookからの接続

Notebookを開いて左上の「Connect Git Repository」をクリックします。

snowflake-notebook-git-integration_2024-05-31-23-31-11

「Create Git repository」をクリックします。

snowflake-notebook-git-integration_2024-05-31-23-57-52

接続設定の画面が開きますので、名前を付けて以下を設定します。
ここで、先ほど作成した GIT_API_INTEGRATIONGIT_SECRET を選択します。また接続情報を保存するデータベースとスキーマを指定します。

snowflake-notebook-git-integration_2024-06-01-00-07-19

「Create」を押下すると以下のようにレポジトリの内容が読み込まれますので、保存先のフォルダを選択します。ブランチが複数ある場合はブランチを指定することもできるようです。

snowflake-notebook-git-integration_2024-06-01-00-08-41

選択すると最初にアップロードのためのCommit画面が出力されますので、コミットメッセージやAuthorの情報、作成したアクセストークンをここでも入力して、Commitを押下します。

snowflake-notebook-git-integration_2024-06-01-00-10-17

以上で、Gitレポジトリとの接続設定は完了です。

GitHub上で状況確認

再度、GitHub上にアクセスすると以下のようにNotebookの名前でフォルダが作成されており、そちらにipynbファイルなどが格納されていました。
environment.yml なども格納されていますので、パッケージ管理もGitでできて非常によさそうです。

snowflake-notebook-git-integration_2024-06-01-00-12-14

接続後のNotebook上での操作

接続後のNotebookの画面は以下のようになっておりまして、例えば変更の取り込みが「Pull」などから実施できます。

snowflake-notebook-git-integration_2024-06-01-00-13-51

変更を反映するには右上の「Commit」を押下することで実現できます。今回セルを追加してコミットをしてみます。

snowflake-notebook-git-integration_2024-06-01-00-15-05

「Commit」押下後は以下のようなダイアログが出ますので、最初の接続時と同様に必要情報を入力して、最後の「Commit」を押下します。

snowflake-notebook-git-integration_2024-06-01-00-16-22

コミット後、GitHub上で確認すると以下のようにセルが追加されていることが確認できました。

snowflake-notebook-git-integration_2024-06-01-00-17-52

参考:異なるブランチとの接続

今回はmainブランチで確認しましたが、Gitレポジトリに複数のブランチがある場合、接続時に選択することで別ブランチと連携することも可能です。

snowflake-notebook-git-integration_2024-06-01-08-57-58

まとめ

いかがでしたでしょうか。

まだシンプルな印象がありますが必要な機能は既に揃っている印象を受けました。

Snowflake Notebooks含めて開発がよりやりやすくなる機能と感じましたので、今後も期待したいと思います。

参考