SnowflakeのSemantic Viewを結合するツールを作りました
前置き
こんにちは。さすらいのデータエンジニアのこみぃです。
皆様、Snowflakeの最新機能であるSemantic Viewの整備に尽力されている昨今と思いますが、進捗はいかがでしょうか?
今日はそんなみなさまの作業を便利にするかもしれないツールを作ったので紹介しようと思います。
Semantic ViewとCortex Analyst
SnowflakeにはCortex Analystという、データに対して自然言語で問い合わせるとSQLを生成してデータを抽出してくれる生成AIの機能があります。
そして、生成AIが自然言語をSQLに変換するには、データの説明書が必要です。これらはSemantic Modelと呼ばれます。
Semantic ViewはこのSemantic ModelをSnowflakeのオブジェクトとして提供する機能で、SnowflakeのMarketplaceで提供されるデータにはこのSemantic Viewも提供されているデータがあります。
具体的には、このあたりに「Cortex AI Ready」タグがついてれば、Semantic Viewがついてます。
大いなる生成AIの流れを考えると、今後はデータプロバイダーはSemantic Viewも付与したデータを提供するのが一般的になってくるでしょう。
このお話の詳細な説明をいかにも書いてますので、詳しく知りたい方はそちらも参照してください。
現在の問題点
Semantic Viewが一つしか読み込めない
データプロバイダーはSemantic Viewを付与してデータを提供する。
自分たちは自社のデータに対してSemantic Viewを作成する。
つまり、、
しかし、Cortex Analystは現在はSemantic Viewを一つしか読み込めません。つまり、何かしらの形でSemantic Viewを一つに結合する必要があります。
Semantic Viewを結合するのがファイルを手作業で編集するしかない
そんな状況なので、2つの結合する方法をSnowflakeが提供してくれていても良さそうなのですが、実は現状はその方法がなく、手作業で編集するしかない状況です。
これは困る。
ツール作りました
こんなときはエンジニアの教えにしたがいましょう。
おまえが作るんだよ!!!!
そんなわけでツールを作りました。Semantic View Combiner。
ツールの概要
ツールの使い方
使い方は簡単で
す!
組み合わせたい2つのSemantic ViewをYAML形式でダウンロードしておいてアップロード。
Semantic ViewにはJOINの情報を入れないとうまく動かないので、これを追加するために指定します。ここは残念ながら手動で設定。
今回は決済履歴っぽいデータとカレンダーのデータの結合なんで、日付の列同士をJOINする感じになりますね。
あとはYAMLファイルをダウンロードしてSnowflakeで使えばOK
ね、簡単でしょ?
ローカルで動かしたい方向け
会社のデータのSemantic Viewなどをsteramlit.ioにアップロードするのが不安という兄貴姉貴たちもいらっしゃると思います。そういう方向けにはソースコードも公開してますので、適宜cloneして使ってみてください。
こちらはstreamlit.ioの右上からもいけます。
(バグがあったら直してプルリクしてくれよな!!)
Snowflakeの今後の展望に期待すること
Semantic Viewを複数読めるようになること
Snowflake Marketplaceはデータの共有のプラットフォームで、そこにSemantic Viewの付与もできるようにしたということは、中の人達もデータプロバイダー側のSemantic Viewと自社のSemantic Viewがある状況は想定していると思います。
であれば、今回のツールのようにわざわざ結合せずとも、さっと両方合わせて使えるようになってくれるといいなと思います。
結合が自動でできればベストですが、複数を読み込むようにできると嬉しいところですね。
Snowflake Intelligenceのさらなるパワーアップ
Cortex AnalystはSQLを自然言語から書いてくれるくらいのツールですが、Snowflake Intelligenceはそれらをツールとして用いてさらなるインサイトを提供してくれるツール。
ふんわりした質問に対してデータを抽出しながら示唆だしくらいまでやってくれるともう本当にすごい感じですよね
本日のまとめ
そんなわけで、本日のまとめはこちらです。
Snowflakeを使ってるならMarketplaceを活用しよう
結びの言葉
そんなわけで、生成AI活用を引き続き頑張っていきましょう。
本日はこのあたりで。
それじゃあ、バイバイ!