[新機能]Snowflakeでアカウント内オブジェクト・マーケットプレイス・公式ドキュメント・ナレッジベースに対する検索を一度に行える「Universal Search」を試してみた

2024.02.23

さがらです。

先日、Snowflakeの新機能としてUniversal SearchがAWSの一部リージョンでパブリックプレビューとなりました。

本機能を早速試してみたので、その内容をまとめてみます。

改めてUniversal Searchですが、アカウント内のデータベースオブジェクト、Snowflake マーケットプレイスで利用可能なData Products、関連するSnowflakeドキュメント、関連するSnowflakeコミュニティのKnowledge Baseの記事、に対し迅速かつ簡単に検索できる機能です。

Universal Searchの検索性能の面白いところは大きく以下の2点が挙げられます。

  • 検索した用語と異なる名称のオブジェクトでも検索可能(スペルを間違えたり、検索後の一部だけを入力しても有用な検索結果が得られる)
  • 単語ベースでの検索だけでなく、「sales opportunities that are likely to close」など自然な会話に近い文章表現での検索も可能

対応するオブジェクト・ページ

2024年2月23日時点では、以下のオブジェクト・ページの検索に対応しているようです。

  • Databases
  • Schemas
  • Tables
  • Views
  • User-defined functions (UDF) and stored procedures
  • Data products offered on the Snowflake Marketplace
  • Documentation pages on https://docs.snowflake.com and https://other-docs.snowflake.com
  • Knowledge Base articles on https://community.snowflake.com/

また、公式ドキュメントでは「Universal Search is optimized for search terms in English」とも書かれていたので、基本的には英語に最適化されているようです。

対応するリージョン

2024年2月23日時点では、以下の6つのリージョンでのみ使用可能です。

  • AWS US West (Oregon)
  • AWS US East (N. Virginia)
  • Azure East US 2 (Virginia)
  • Azure West Europe (Netherlands)
  • AWS EU (Frankfurt)
  • AWS Asia Pacific (Sydney)

公式Doc

試してみた

ということで早速Universal Searchを試してみます!

前提条件

今回検証したSnowflakeの環境は、リージョンAWS Asia Pacific (Sydney)で、新しくSnowflakeのトライアルアカウントを作った環境となります。

また、日本語の情報を持つテーブルについては事前に以下のクエリを実行して、日本語のタグとコメントを付与したテーブルを作成しておきます。注意事項としては、これらのテーブルは作成直後にはUniversal Searchでは検索結果に出てこず、私の場合はテーブル作成後4時間経過後に検索結果に出てくるようになりました。 ※本事象については公式Docでも言及あります。

USE ROLE accountadmin;

USE WAREHOUSE compute_wh;

CREATE OR REPLACE DATABASE tasty_bytes_sample_data;

CREATE OR REPLACE SCHEMA tasty_bytes_sample_data.raw_pos;

CREATE TAG confidential COMMENT = '機密情報を管理するタグ';

CREATE OR REPLACE TABLE tasty_bytes_sample_data.raw_pos.menu
(
    menu_id NUMBER(19,0) COMMENT 'メニューID',
    menu_type_id NUMBER(38,0) COMMENT 'メニュータイプID',
    menu_type VARCHAR(16777216) COMMENT 'メニュータイプ名称',
    truck_brand_name VARCHAR(16777216) COMMENT 'ブランド名称',
    menu_item_id NUMBER(38,0) COMMENT 'アイテムID',
    menu_item_name VARCHAR(16777216) COMMENT 'アイテム名称',
    item_category VARCHAR(16777216) COMMENT 'アイテムカテゴリ',
    item_subcategory VARCHAR(16777216) COMMENT 'アイテムサブカテゴリ',
    cost_of_goods_usd NUMBER(38,4)  WITH TAG (confidential = '価格情報') COMMENT '原価(単位:USD)',
    sale_price_usd NUMBER(38,4) WITH TAG (confidential = '価格情報') COMMENT '販売単価(単位:USD)',
    menu_item_health_metrics_obj VARIANT COMMENT 'アイテムのヘルスメトリクス'
)
COMMENT = 'さがら小売店のPOSのデータをまとめたテーブル';


CREATE OR REPLACE STAGE tasty_bytes_sample_data.public.blob_stage
url = 's3://sfquickstarts/tastybytes/'
file_format = (type = csv);

LIST @tasty_bytes_sample_data.public.blob_stage/raw_pos/menu/;


COPY INTO tasty_bytes_sample_data.raw_pos.menu
FROM @tasty_bytes_sample_data.public.blob_stage/raw_pos/menu/;

Universal Searchの使用手順

Universal Searchは、画面左のメニュー一覧のSearchを押した後、右側に検索画面が表示されるので、あとは検索ウインドウで入力してEnterキーを押すだけです!インターネットブラウザのような感覚で検索できます。

英語の単語ベースで検索

まず、先程自前で作成したテーブル名とそのカラムに含まれるMENUで検索してみます。

すると、下図のようにMENUテーブルがヒットしました。さらに、カラム名にもMENUが含まれているため、RELEVANT COLUMNSに該当するカラムも表示されています。

またMarketplaceに存在するデータが検索にかかるかを見るためweatherと入力して検索してみると、海外の企業が提供している天気のデータや、OpenWeatherMapのデータに関するSnowflake公式ドキュメントがヒットしました。また、検索結果をスクロールしていくと、ウェザーニューズ社やtruestar社がMarketplaceで提供しているデータも出てきました。

英語の文章ベースで検索

Information about the weather in Japanと検索すると、下図のようにZeal社、ウェザーニューズ社、Truestar社、M Data社のデータがヒットしました。

best practice of taskと検索すると、下図のようにタスクに関するSnowflake公式ドキュメントだけでなく、「How to schedule and run a dynamic stored procedure using TASK」のようにKnowledge Baseの記事もヒットしました。一方でData Productsはあまり関連性の高くない情報がヒットしていますね。

Where to use clusteringと検索すると、下図のようにクラスタリングに関するSnowflake公式ドキュメントだけでなく、「Understanding Micro-partitions and Data Clustering」のようにKnowledge Baseの記事もヒットしました。一方でData Productsはあまり関連性の高くない情報がヒットしていますね。

日本語の単語ベースで検索

自前で作成したテーブルに付与したタグ「confidential.価格情報」でヒットするかを見るため、価格情報と検索してみます。すると、下図のように「confidential.価格情報」を付与したカラムと併せて、MENUテーブルが出てきました。 ※このタグを付与していないMENU_ITEM_HEALTH_METRICS_OBJカラムまでヒットしたのはなぜかわかりませんが…

自前で作成したテーブルのコメントに含まれている「さがら」で検索してみます。すると、MENUテーブルがちゃんとヒットしました。

自前で作成したテーブルのカラムのコメントに含まれている「メニュー」で検索してみます。しかし、この場合は1件もヒットしませんでした。どうやらカラムに対するコメントは検索対象となっていないようです。

Marketplaceに存在するデータが検索にかかるかを見るため天気と入力して検索してみると、ウェザーニューズ社やtruestar社がMarketplaceで提供しているデータが出てきました!特にtruestar社のデータは該当するテーブルまでヒットしました。

日本語の文章ベースで検索

日本の天気の情報と検索すると、少し順番は異なるものの英語でInformation about the weather in Japanで検索したときと同じData Productsが表示されました。

タスクについてのベストプラクティスと検索すると、best practice of taskで検索したときとは全く異なりドキュメントやKnowledge Baseの記事はヒットせず、Data Productsもあまり関連性のない情報がヒットしました。

クラスタリングの使い所と検索すると、Where to use clusteringで検索したときとは全く異なりドキュメントやKnowledge Baseの記事はヒットせず、Data Productsもあまり関連性のない情報がヒットしました。

所感

実際にUniversal Searchを試してみての所感は以下となります。

  • 英語での検索は、単語ベースでも文章ベースでも精度が高いと感じた
  • 日本語での検索は、「Markeplaceでの説明文やData Dictionary」「テーブルに対するコメント」「タグのVALUE」で日本語を用いていればそれなりの精度で結果を返してくれるが、「カラムに対する日本語コメント」「日本語で情報がないMarketplaceのData ProductsやSnowflake公式ドキュメント」はヒットしてくれない
  • これまでMarketplaceの画面で検索するしかなかったData Productsの情報を簡単に検索できるようになったのはとてもありがたい。これまでよりもMarketplaceで公開されているData Productsのことを知りやすくなったため、よりMarketplace経由での問い合わせが増えることも十分に考えられる
  • Snowflake公式ドキュメントやKnowledge Baseの情報などから検索結果を得たい場合には、インターネットブラウザで検索するよりもUniversal Searchで検索するほうが手軽でノイズとなる情報も少なくて便利だと感じた

まだTokyo・Osakaリージョンでは使えませんが、英語で検索する場合には手軽ですし精度も高いためすぐにでも使える機能だと感じました!ぜひお試しください。