Databricks Marketplace から Shutterstock のデータをさわってみる

# はじめに

株式会社NTTデータ [デジタルサクセスソリューション事業部](https://enterprise-aiiot.nttdata.com/) で Databricks や AWS を推進している [nttd-saitouyun](https://qiita.com/nttd-saitouyun) です。

今回は社内の勉強向けに作った**デモをご紹介します**。

このデモは、**Databricks のマーケットプレイスで公開される Shutterstock のデータ（非構造データを含む）を探索しながら以下の点を理解するものです**。
- Databricks Marketplace の使い方【★】
- Shutterstock のデータの扱い方【★】
- 生成AIを活用したノーコードのデータ探索【★】
- 生成AIを活用したノーコードのデータエンジニアリング
- ベクトル検索によるあいまい検索
- 画像のデータ処理

本書では【★】の項目について記載します。続きが気になる方は近日公開する記事をご覧ください！




# Databricks Marketplace とは

![marketplace-header](https://demo-saitouyun.github.io/databricks-demo/demo001/marketplace-header.jpg)

Databricks Marketplace については[公式サイトの紹介ページ](https://www.databricks.com/jp/product/marketplace)をご覧ください。

Databricks Marketplace では、データ共有機能（Delta Sharing）によって、データセットだけでなく、ノートブック（データをどのように扱うかを記したプログラム）、AIモデルなどの分析資産を共有することができます。共有物は無料のものと有償のものがあります。

様々な企業から提供されているデータやAIを即座に利用できるため、データ分析が加速すること間違いなしです。

私もデモなどを作る際に Kaggleのデータセットと共にお世話になっています🙇‍♂️

<br>

それでは本編に入ります。

# マーケットプレイスでデータを見つける

以下のリンクからマーケットプレイスにアクセスし、公開されている様々なデータを見てみましょう。

https://marketplace.databricks.com/

今回は、DATA + AI Summit 2024 でも話題となった「Shutterstock」のデータを見てみます。

**Shutterstock（シャッターストック）** は、アメリカのニューヨークに本社を置くストックフォト企業で、3億5000万点以上のロイヤルティフリーのストックフォト、ベクター画像、イラストをインターネット経由で提供します。

![Shutterstock_image](https://demo-saitouyun.github.io/databricks-demo/demo001/Shutterstock_image.jpg)

Shutterstock について：https://www.shutterstock.com/ja/

[こちらのリンク](https://marketplace.databricks.com/details/3da47c97-478c-4935-a0e7-c61502c7c7b7/Shutterstock_Free-Sample-Dataset-1000-High-Resolution-Images-Metadata)へアクセスし、右上の「Get access」ボタンをクリックします。
Databricksのアカウントへログイン画面に遷移しますのでログインすれば、すぐにデータを利用することができます！

![Shutterstock_image](https://demo-saitouyun.github.io/databricks-demo/demo001/Shutterstock_marketplace.jpg)

Databricksワークスペースにカタログが追加され、**データが使えるようになりました。**

![Shutterstock_import](https://demo-saitouyun.github.io/databricks-demo/demo001/Shutterstock_import.jpg)

提供されたデータセットには、3つのテーブルと1つのボリューム（ Databricksの非構造データを格納するフォルダ）が含まれています。

<br>

<img src="https://demo-saitouyun.github.io/databricks-demo/demo001/Shutterstock_sample_data.jpg" width="300">

<br>

従来であれば、構造化データはDWH上のテーブルで管理し、非構造化データはクラウドのオブジェクトストレージで管理する必要があるため、各サービスを行ったり来たりする必要がありますが、**Databricks では構造化データと非構造化データをワンプラットフォームで管理できるのが利点です。**

**データ共有も構造化データだけでなく、非構造化データも扱えますし、AIモデルの共有も行える点が特徴です**。

本書では扱いませんが、アクセス制御も構造化データと非構造化データで１つのセキュリティモデルで対応できる点も大きなメリットです。

# データを探索する


1つ目のテーブル「set1_image_asset_metadata」のデータをのぞいてみましょう。

カタログエクスプローラから対象のテーブルを選択し、「概要」タブからデータの構造を、「サンプルデータ」タブから実データを見ることができます。

【概要】

<img src="https://demo-saitouyun.github.io/databricks-demo/demo001/image_asset_metadata_overview.jpg">

<br>
<br>


【サンプルデータ】

<img src="https://demo-saitouyun.github.io/databricks-demo/demo001/image_asset_metadata_sampledata.jpg">

<br>
<br>

「set1_image_asset_metadata」は、画像ファイルの説明やタグ（キーワード）などのメタデータを保持しているテーブルのようです。


もう少しデータの詳細を知るために、データのサマリを見てみましょう。ここで**自然言語(生成AI)を使ってノーコードで操作してみます**。

コードのセルを挿入し、以下の文言を入力し、「送信」ボタンを押してみましょう。コードが生成されます。（長いテーブル名はカタログのテーブル名の横にコピーボタンがあります。）

>shutterstock_free_sample_dataset_1000_high_resolution_images_metadata.sample_datasets.set1_image_asset_metadata のサマリーを知りたいです。

以下のようなコードが生成されます。
<img src="https://demo-saitouyun.github.io/databricks-demo/demo001/summary_data_with_genai.jpg">

「承認」ボタンを押し、コードを確定させ、実行してみましょう。うまく動きました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3118781/403129a6-5058-7b2b-cbf1-eac622bf137e.png)


1000ファイル分のメタデータがあることがわかります。

同様に、「set1_image_file_metadata」についても見てみましょう。

このノートブックからもデータを見ることができます。同じように自然言語で以下の文言を入力してみましょう。

>shutterstock_free_sample_dataset_1000_high_resolution_images_metadata.sample_datasets.set1_image_file_metadataの中身を見たい。

同様にコードが生成されるので、

<img src="https://demo-saitouyun.github.io/databricks-demo/demo001/select_data_with_genai.jpg">

実行します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3118781/0295aa8f-52ac-44c2-f532-42eada13f32c.png)

同様にサマリ（統計データ）も見てみましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3118781/a1307c2f-c85d-1a59-2e4f-d5a5af4d6e70.png)

おっと、レコード数が2200で1000以上ありました。なぜでしょう。

データの中身をさーっと見てみると、同じASSET_IDに対して、ASSET_FILE_SIZEが、「medium_jpg」「huge_jpg」「vector_eps」の３種類あるものがありそうです。

３種類のデータがどれだけあるのか見てみます。これまで同様に以下の文言を入れてみましょう。

>shutterstock_free_sample_dataset_1000_high_resolution_images_metadata.sample_datasets.set1_image_file_metadataのASSET_FILE_SIZEの値ごとの数が知りたい。

以下のコードが出力されました。

<img src="https://demo-saitouyun.github.io/databricks-demo/demo001/groupby_data_with_genai.jpg">

GroupByの集計コードが正しく生成されましたね！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3118781/af044fc1-55ab-1403-2503-e9a72b2d0ac7.png)

上の結果から、各1000画像に対して、jpegの高画質・中画質の画像があり、いくつかの画像にはepsのファイルが存在することがわかりました。

同様に「set1_image_model_metadata」も見ていきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3118781/72c54d3e-b470-549b-6099-e9f5a9400d65.png)

こちらも同様にサマリを出します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3118781/da5b7fe6-7048-42a1-be68-28776cc23747.png)

184レコードあります。データの中身を見ると画像に写っている人（モデル）の情報のようです。

ASSET_IDが「254230615」のレコードが5つありますね。どのような写真か見てみましょう。カタログエクスプローラから簡単にデータを見ることができます。

1. ボリューム「set1_image_files」を選択
1. 「eps」「medium」「huge」のフォルダがあるので「medium」を選択
1. 「254230615」で検索
1. 「︙」から「ファイルをダウンロード」


<img src="https://demo-saitouyun.github.io/databricks-demo/demo001/explore_volume.jpg">

確かに5名の人物が写っている画像でした。

<br>

# ここまでのまとめ
以上で Shutterstock の３つのテーブルがどのようなメタデータであることや、ボリュームには画像が３つのファイルフォーマットで保存されていることがわかりました。

また、メタデータから欲しい写真をピンポイントでダウンロードして確認することもできました。

データの使い方がわかったので、次回は、引き続きノーコードでより複雑な処理をしてみたいと思います。


# おわりに

この記事では、**マーケットプレイスから簡単に構造化データ・非構造化データを取り込み**、そのデータについて**データカタログや自然言語を使ってデータ探索をし、データの使い方などの理解度を高めました**。（本当はマーケットプレイスの説明欄にもう少し詳しく書いてもらえるとありがたいなとは思いましたが😅）

Databricks を活用すると、**簡単に高品質なデータを取り込み、ノーコードでデータの探索を行うことできる**ことをご理解いただければ幸いです。



# 仲間募集
NTTデータ デザイン＆テクノロジーコンサルティング事業本部 では、以下の職種を募集しています。

<details><summary> 1. クラウド技術を活用したデータ分析プラットフォームの開発・構築(ITアーキテクト/クラウドエンジニア) </summary>
クラウド／プラットフォーム技術の知見に基づき、DWH、BI、ETL領域におけるソリューション開発を推進します。

https://enterprise-aiiot.nttdata.com/recruitment/career_sp/cloud_engineer

</details>

<details><summary> 2. データサイエンス領域（データサイエンティスト／データアナリスト） </summary>
データ活用／情報処理／AI／BI／統計学などの情報科学を活用し、よりデータサイエンスの観点から、データ分析プロジェクトのリーダーとしてお客様のDX／デジタルサクセスを推進します。

https://enterprise-aiiot.nttdata.com/recruitment/career_sp/datascientist

</details>

<details><summary> 3.お客様のAI活用の成功を推進するAIサクセスマネージャー </summary>
DataRobotをはじめとしたAIソリューションやサービスを使って、
お客様のAIプロジェクトを成功させ、ビジネス価値を創出するための活動を実施し、
お客様内でのAI活用を拡大、NTTデータが提供するAIソリューションの利用継続を推進していただく人材を募集しています。

https://nttdata.jposting.net/u/job.phtml?job_code=804

</details>

<details><summary> 4.DX／デジタルサクセスを推進するデータサイエンティスト《管理職/管理職候補》 </summary>
データ分析プロジェクトのリーダとして、正確な課題の把握、適切な評価指標の設定、分析計画策定や適切な分析手法や技術の評価・選定といったデータ活用の具現化、高度化を行い分析結果の見える化・お客様の納得感醸成を行うことで、ビジネス成果・価値を出すアクションへとつなげることができるデータサイエンティスト人材を募集しています。

https://nttdata.jposting.net/u/job.phtml?job_code=898

</details>

# ソリューション紹介
<details><summary> Trusted Data Foundationについて </summary>
～データ資産を分析活用するための環境をオールインワンで提供するソリューション～

https://enterprise-aiiot.nttdata.com/tdf/
最新のクラウド技術を採用して弊社が独自に設計したリファレンスアーキテクチャ（Datalake+DWH+AI/BI）を顧客要件に合わせてカスタマイズして提供します。
可視化、機械学習、DeepLearningなどデータ資産を分析活用するための環境がオールインワンで用意されており、これまでとは別次元の量と質のデータを用いてアジリティ高くDX推進を実現できます。

</details>

<details><summary> NTTデータとDatabricksについて </summary>
NTTデータは、お客様企業のデジタル変革・DXの成功に向けて、「databricks」のソリューションの提供に加え、情報活用戦略の立案から、AI技術の活用も含めたアナリティクス、分析基盤構築・運用、分析業務のアウトソースまで、ワンストップの支援を提供いたします。

 https://enterprise-aiiot.nttdata.com/service/databricks

</details>

<details><summary> TDF-AM（Trusted Data Foundation - Analytics Managed Service）について </summary>
～データ活用基盤の段階的な拡張支援（Quick Start) と保守運用のマネジメント（Analytics Managed）をご提供することでお客様のDXを成功に導く、データ活用プラットフォームサービス～

https://enterprise-aiiot.nttdata.com/service/tdf/tdf_am
TDF-AMは、データ活用をQuickに始めることができ、データ活用の成熟度に応じて段階的に環境を拡張します。プラットフォームの保守運用はNTTデータが一括で実施し、お客様は成果創出に専念することが可能です。また、日々最新のテクノロジーをキャッチアップし、常に活用しやすい環境を提供します。なお、ご要望に応じて上流のコンサルティングフェーズからAI/BIなどのデータ活用支援に至るまで、End to Endで課題解決に向けて伴走することも可能です。

</details>

</details>

<details><summary> NTTデータとSnowflakeについて </summary>
NTTデータでは、Snowflake Inc.とソリューションパートナー契約を締結し、クラウド・データプラットフォーム「Snowflake」の導入・構築、および活用支援を開始しています。
NTTデータではこれまでも、独自ノウハウに基づき、ビッグデータ・AIなど領域に係る市場競争力のあるさまざまなソリューションパートナーとともにエコシステムを形成し、お客さまのビジネス変革を導いてきました。
Snowflakeは、これら先端テクノロジーとのエコシステムの形成に強みがあり、NTTデータはこれらを組み合わせることでお客さまに最適なインテグレーションをご提供いたします。

https://enterprise-aiiot.nttdata.com/service/snowflake

</details>

</details>

<details><summary> NTTデータとInformaticaについて </summary>
データ連携や処理方式を専門領域として10年以上取り組んできたプロ集団であるNTTデータは、データマネジメント領域でグローバルでの高い評価を得ているInformatica社とパートナーシップを結び、サービス強化を推進しています。

https://enterprise-aiiot.nttdata.com/service/informatica

</details>

</details>

<details><summary> NTTデータとTableauについて </summary>
ビジュアル分析プラットフォームのTableauと2014年にパートナー契約を締結し、自社の経営ダッシュボード基盤への採用や独自のコンピテンシーセンターの設置などの取り組みを進めてきました。さらに2019年度にはSalesforceとワンストップでのサービスを提供開始するなど、積極的にビジネスを展開しています。

これまでPartner of the Year, Japanを4年連続で受賞しており、2021年にはアジア太平洋地域で最もビジネスに貢献したパートナーとして表彰されました。
また、2020年度からは、Tableauを活用したデータ活用促進のコンサルティングや導入サービスの他、AI活用やデータマネジメント整備など、お客さまの企業全体のデータ活用民主化を成功させるためのノウハウ・方法論を体系化した「デジタルサクセス」プログラムを提供開始しています。

https://enterprise-aiiot.nttdata.com/service/tableau

</details>

</details>

<details><summary> NTTデータとAlteryxについて </summary>
Alteryxは、業務ユーザーからIT部門まで誰でも使えるセルフサービス分析プラットフォームです。
Alteryx導入の豊富な実績を持つNTTデータは、最高位にあたるAlteryx Premiumパートナーとしてお客さまをご支援します。

導入時のプロフェッショナル支援など独自メニューを整備し、特定の業種によらない多くのお客さまに、Alteryxを活用したサービスの強化・拡充を提供します。

https://enterprise-aiiot.nttdata.com/service/alteryx

</details>

</details>

<details><summary> NTTデータとDataRobotについて </summary>
DataRobotは、包括的なAIライフサイクルプラットフォームです。
NTTデータはDataRobot社と戦略的資本業務提携を行い、経験豊富なデータサイエンティストがAI・データ活用を起点にお客様のビジネスにおける価値創出をご支援します。

https://enterprise-aiiot.nttdata.com/service/datarobot

</details>