
はじめに
こんにちは、NRIでAIソリューションの導入支援を担当している加瀬です。
皆さんはSnowflakeとDataiku(データイク)というソリューションを耳にしたことはありますか。Snowflakeとはデータウェアハウス(通称DWH)をはじめとしたSaaS型のAI・データプラットフォームです。ストレージ(データ保管)とコンピュート(計算処理)が分離されたアーキテクチャを採用していることが特徴で、コンピュートである仮想ウェアハウスは柔軟にスケールが可能です。一方、Dataikuは、DWHなどのデータソースへの接続からデータ準備、分析、および機械学習モデルの開発・運用機能を兼ね備えたエンドツーエンドの統合プラットフォームです。
いずれも導入企業が増えてきており、注目が高まりつつあるソリューションだと思います。そしてSnowflakeとDataikuはネイティブ連携が可能です。私も業務でSnowflakeとDataikuを連携した実績があります。
しかしソリューション同士を繋げる際に、双方の製品知識が必要になる、という壁があります。私自身もDataikuは一定知識を獲得してきましたが、Snowflakeとの連携となると、ネットワークや権限に関するエラーで苦しめられました。今回はその中の1つであるSnowflakeのLLM機能をDataikuで使おうとしたときの経験をもとに記事にしようと思い立ちました。少しでも読者の方々のご参考となれば幸いです。
SnowflakeとDataikuを接続する
今回対象とするのはSnowflake CortexとDataiku LLMメッシュです。
Snowflake Cortexとは
Snowflake Cortex(以後Cortex)は、SnowflakeにおけるLLMに特化したフルマネージドのサービスメニューです。なかでもLLM関数は、SnowflakeがホストするLLMに対してSQLを用いて自然言語のデータをクエリすることができます。扱えるモデルにはMistral、Meta、Googleといった他社のLLMに加えて、Snowflake開発のSnowflake Arcticが含まれています。
Dataiku LLMメッシュとは
LLMメッシュとは、Dataikuにおけるアプリケーションから各種生成AIへのアクセスを標準化する機能群です。例えば他社のLLMプロバイダが提供するモデルの登録やAPIキーの秘匿化、コスト管理、PII検知、パフォーマンス管理、RAG(Retrieval-Augmented Generation)をサポートしています。
前提として2025/03/06時点でのバージョンと以下のエディションにもとづきます。
- Snowflake バージョン9.5.1(Business Critical Edition)
- Dataikuバージョン13.4.1 (Cloud Stacks for AWS、Enterprise Edition)
早速、SnowflakeとDataikuを繋げて、DataikuでCortexを使うため以下①②の作業を行っていきます。
①(Snowflakeで実施)Snowflakeオブジェクトの準備
②(Dataikuで実施)Snowflakeコネクション、Snowflake Cortexコネクション作成
Snowflakeにおけるデータベース、スキーマ、ウェアハウスなどの要素をオブジェクトと指します。またDataikuのコネクションは外部のデータソースに接続するための定義情報です。
①Snowflakeオブジェクトの準備
まず、本記事でDataikuがアクセスするためのデータベース、スキーマ、ウェアハウス、ロール、ユーザーをSnowflakeで作成します。また、作成したこれらのSnowflakeオブジェクトについて適切な権限を割り当ても必要です。オブジェクトの作成に使用したSQL文は下図の通りです。

ポイントは38-43行目と50行目です。前者はSnowflakeユーザーがデータベースやスキーマを使えるよう権限の割当てを行っています。後者はCortexのLLM関数へのアクセスが必要なため、ロールにSNOWFLAKE.CORTEX_USERというデータベースロールを付与しています。これがなければCortexにアクセスができません。私は当初Snowflakeのなかでも特に権限にまつわるロールに関して知識がなかったため、何をすればいいのかわかりませんでしたが、権限の割当てが必要であることに気づき、試行錯誤の上オブジェクト作成に成功しました。特に任意のSnowflakeユーザーがCortexを使用できるわけではなく、きちんと権限を与えないとCortexのLLMを扱えないという点がハマりポイントではないでしょうか。
② Snowflakeコネクション、Snowflake Cortexコネクション作成
続いてDataiku側の作業に移ります。コネクション管理画面から2つコネクションを作成していきます。1つめはデータベースにアクセスするためのSnowflakeコネクション、もう1つはCortexにアクセスするためのSnowflake Cortexコネクションです。

理由は後述しますが、先にSnowflakeコネクションから作成していきます。Snowflakeアカウント情報をHostに、①で作成したオブジェクト情報をそれぞれの項目に入力していきます。

一通り項目を入力できたら「TEST」をクリックして接続チェックします。「Connection OK」と表示されたら、そのまま「CREATE」をクリックしてコネクション作成していきます。
私が初めてSnowflakeコネクションを作成したときはネットワークに関するエラーが出てしまい、パニックになりました。原因はUse global proxy settingsというパラメータにチェックが入っていたためです。当時Dataikuは閉域ネットワーク内で稼働しており、SnowflakeへはPrivate Linkと呼ばれるインターネットに出ることのない閉域接続をしていたにも関わらず、プロキシサーバを抜けてインターネットから接続を試みようとしたのでエラーになりました。皆さんのSnowflakeがパブリック(インターネット)かプライベートかによって、このパラメータをチェックいただくとよいでしょう。
最後にSnowflake Cortexコネクションを作成します。先にSnowflakeコネクションを作成した理由は、Snowflake CortexコネクションはCortexにアクセスするユーザー情報をSnowflakeコネクションに設定したユーザーに紐づけて使用するためです。

Snowflakeの東京リージョンで使用できるモデルを登録していきます(2025/03/06現在)。各リージョンで使用可能なモデルはこちら*1のページを参照してください。ここもよくあるパニックポイントで、リージョンに対応していないモデルにチェックが入っているとコネクションのTESTでエラーが発生します。Snowflakeもリージョンという概念があるのか、という気づきを得たきっかけでした。
モデル登録ページでは会話モデルのほか、埋め込みモデルも選択できます。また『Usable models』にないモデルで、同リージョンで使用可能な場合は『Custom models』で追加できます。こちらも「TEST」をクリックして問題がなければ「CREATE」で作成していきます。

以上でDataikuとSnowflake(ならびにCortex)の繋ぐことができました。
DataikuのPrompt StudioからSnowflake Cortex LLM関数を試す
Snowflake Cortexコネクションを通じて登録したLLM関数を試していきます。今回はPrompt Studio(プロンプトスタジオ)を使用します。Prompt Studioとは、Dataikuのなかでプロンプトを試行錯誤したり、複数のモデルの応答を比較したりする場所です。
今回は商品レビューデータに対してCortex LLM関数を使って、いくつかのカテゴリに分けて要約をさせてみます。



プロンプトのコピーとチューニング、履歴の管理、プロンプト間の応答の比較といったLLM活用で欠かせない機能がGUIで簡易的に行えます。特にSnowflake Cortexコネクションには複数モデルを登録しているため、モデル切替や精度比較も容易です。図6の3枚目で示す通りPrompt Studioではより好ましいプロンプトとLLMを選択できるように、LLMの出力結果の比較ができます。
さいごに
いかがでしたでしょうか?
SnowflakeやDataikuなどのソリューションがネイティブ連携をサポートしているというケースは増えています。しかし、いざ連携となると思うように進まないことも多々あります。特にフルマネージドなSaaSではなく、パブリッククラウドで構築する場合はソリューションに関するアプリケーションと基盤に関する知識もフル活用して臨みます。
私たちのチームでは、Snowflakeと、AWSに構築したDataikuを連携してきた実績があります。またDataikuなどのプラットフォームを活用して、お客様のデータ分析・AI活用の民主化、ひいてはLLM活用の伴走支援もご提案しています。お困りのことなどありましたらお気軽にご相談ください。
お問い合わせ
atlax では、ソリューション・サービス全般に関するご相談やお問い合わせを承っております。
関連リンク・トピックス
・atlax / ソリューション / AI活用(NRI Solution Aiページへ)
・2023/11/16 非構造化データから構造化データへ~Amazon Bedrock での Claude 利活用~
※ 記載された会社名 および ロゴ、製品名などは、該当する各社の登録商標または商標です。
※ アマゾン ウェブ サービス、Amazon Web Services、AWS および ロゴは、米国その他の諸国における、Amazon.com, Inc.またはその関連会社の商標です。
※ Microsoft、Azure は、米国 Microsoft Corporation の米国およびその他の国における登録商標または商標です。
※ Google Cloud、Looker、BigQuery および Chromebook は、Google LLC の商標です。
※ Oracle、Java、MySQL および NetSuite は、Oracle Corporation、その子会社および関連会社の米国およびその他の国における登録商標です。NetSuite は、クラウド・コンピューティングの新時代を切り開いたクラウド・カンパニーです。
*1:Large Language Model (LLM) Functions (Snowflake Cortex) | Availability https://docs.snowflake.com/en/user-guide/snowflake-cortex/llm-functions#availability

お問い合わせ