Snowflake Summit 直前！データアプリケーション機能をおさらいしておこう

# はじめに
本記事は、データクラウド／データアプリケーション機能を動作イメージを含めながらざっくりと紹介する記事です。特にサミット直前のおさらい（今そもそもどんな機能があるんだっけ？）をしておくためにもご活用いただけるように記載いたしました！
- [Snowpark for Python](https://qiita.com/toru_hiyama/items/190957d3af1514e640d4#snowpark-for-python)
- [Streamlit in Snowflake](https://qiita.com/toru_hiyama/items/190957d3af1514e640d4#streamlit-in-snowflakesis)
- [Snowflake Notebooks](https://qiita.com/toru_hiyama/items/190957d3af1514e640d4#snowflake-notebooks)
- [Snowflake Cortex](https://qiita.com/toru_hiyama/items/190957d3af1514e640d4#snowflake-cortex)
- [Snowpark Container Services](https://qiita.com/toru_hiyama/items/190957d3af1514e640d4#snowpark-container-servicesspcs)
- [Hybrid Table](https://qiita.com/toru_hiyama/items/190957d3af1514e640d4#hybrid-tableunistore)

また、サミットのオンライン配信については[こちらの記事](https://qiita.com/toru_hiyama/items/116a5424b3f0b1fbd77f?utm_campaign=post_article&utm_medium=twitter&utm_source=twitter_share#ライブストリーム配信について)にまとめていますので、あわせてご確認ください！

# Snowpark for Python
何をするにしても、まずはここを抑えておくことで、Snowflake のデータアプリケーション構築が楽になります。リリース当初は Python コネクタや Snowpark だけでしたが、いまや Python API や ML API も追加されています。

しかし、その影響もあり、Snowflake × Python でどんなライブラリがあるの？何を使えばいいの？という声を聞くことも多くなりました。そこで、Snowflake はこんな図を用意してくれています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3540224/fd08b476-f059-1ec6-2e46-9335b0a76d29.png)
[Snowflake Python API: Managing Snowflake objects with Python](https://docs.snowflake.com/en/developer-guide/snowflake-python-api/snowflake-python-overview)

ライブラリをインポートするときは、上図に則って使えばよいです。

ライブラリでいうと下記のとおりです。
- snowflake-connector-python
- snowflake-snowpark-python
- snowflake-ml-python
- snowflake（Python API：Core／Apps／Streamlit）

### Python コネクタ／Snowpark Python
Pythonコネクタは、原始的なデータベース接続ライブラリです。Snowparkは、Snowflakeとプッシュダウンの効くデータフレームや、Snowflake上にPython関数を定義するための機能を持つライブラリです。これらの違いは多々ありますが、特に、ローカルでデータを処理するのか、リモート側（Snowflake）でデータを処理するのかという違いが大きいです。

例えば、下記は Snowpark for Python でテーブルを取得するコードです。
```python
import snowflake.snowpark as snowpark
from snowflake.snowpark.functions import col

df = session.table("information_schema.packages").filter(col("language") == "python")
df.show()
```

<details><summary>結果例</summary>

| PACKAGE_NAME  | VERSION     | LANGUAGE | RUNTIME_VERSION |
|---------------|-------------|----------|-----------------|
| abseil-cpp    | 20200923.3  | python   | NULL            |
| abseil-cpp    | 20210324.2  | python   | NULL            |
| abseil-cpp    | 20211102.0  | python   | NULL            |
| abseil-cpp    | 20230802.0  | python   | NULL            |
| absl-py       | 0.10.0      | python   | 3.8              |
| absl-py       | 0.12.0      | python   | 3.10             |
| absl-py       | 1.3.0       | python   | 3.10             |
| absl-py       | 1.3.0       | python   | 3.11             |
| absl-py       | 1.3.0       | python   | 3.8              |
| absl-py       | 1.3.0       | python   | 3.9              |
</details>

この df オブジェクトによるクエリ（今回だと filter()など）は、Snowflake 側で SQL として実行されており、ローカル側のリソースを使用する必要がほぼありません。


### Snowflake ML
Snowflake ML は、Snowflake とネイティブに統合された scikit-learn や xgboost などのライブラリや MLflow と似た API を持つ MLOps に関するライブラリ、そして最新の Cortex を関数として扱えるライブラリを含みます。

このライブラリにより、データ加工・ML パイプラインの定義を Python で記述でき、その実行は Snowpark DataFrame 同様に、Snowflake 側にプッシュダウンすることができます。

### Python API
これまで紹介したライブラリが**データ**を扱うためのものだったのに対し、Snowflake ライブラリは**リソース**を扱うためのライブラリとなります。Python 関数で、簡単に Snowflake オブジェクトを作成・削除、一覧化、起動・停止することができます。

例えば、下記はウェアハウスを一覧化し、その詳細を確認するコードです。
```python
from snowflake.core import Root
from snowflake.core.warehouse import Warehouse, WarehouseCollection

warehouses: WarehouseCollection = root.warehouses
wh_iter = warehouses.iter(like="%")

for wh_obj in wh_iter:
    print(wh_obj.name)
    wh = root.warehouses[wh_obj.name].fetch()
    print(wh.to_dict())
```

<details><summary>結果例</summary>
COMPUTE_WH

{'name': 'COMPUTE_WH', 'warehouse_type': 'STANDARD', 'warehouse_size': 'X-Small', 'max_cluster_count': 1, 'min_cluster_count': 1, 'scaling_policy': 'STANDARD', 'auto_suspend': 180, 'auto_resume': 'true', 'resource_monitor': 'null', 'enable_query_acceleration': 'false', 'query_acceleration_max_scale_factor': 8, 'type': 'STANDARD', 'size': 'X-Small'}
</details>



これらの Snowflake Python ライブラリを使って、Snowflake のデータ・リソースの双方を、Python で幅広く操作できることがおわかりいただけると思います。

Python でこうした操作が行えることで、上記のように動的な処理や Python の豊富なライブラリを活用することができます。もちろん、SQL が苦手なユーザーが Python で Snowflake を操作できることも重要なポイントです。


# Streamlit in Snowflake（SiS）
Snowflake で、Python の Web アプリフレームワークである Streamlit をホストしてくれる機能です。インタラクティブなデータ可視化アプリケーションだけでなく、先述の Python API を使って Snowflake のリソースを操作するアプリケーションを構築することも一部ですが可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3540224/5583d1d7-74ac-86ae-e996-28e29acee079.png)

# Snowflake Notebooks
サミット直前ですが、すでに Public Preview となり、かなりの盛りあがりを見せるこの Snowflake Notebooks です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3540224/80028069-bc18-45cb-4dde-80e7d469f70c.png)

Python や SQL による分析をノートブック形式に行うことができる機能です。非常に使いやすい UI で、洗練されています。ショートカットキーも豊富ですし、SQL セルの結果を Python から参照できるなど驚きの機能もあります！

コストの部分も最適化されています。どうしてもノートブックの起動（セルの実行とセッションの維持）にウェアハウスコストは掛かってしまうのですが、停止後もコーディングや描画した結果の確認は行えます。

# Snowflake Cortex
Cortexは、ML系機能とLLM系機能があり、ML では学習と推論を行え、LLM では推論のみ行えます。これらは、Snowflake によるマネージドサービスのため、対象となるデータさえあれば、SQL コマンドを実行するだけで操作が行えます。

## Cortex ML
Cortex ML には、時系列予測と分類機能があり、その双方で現在保有するデータをもとに機械学習モデルの訓練が行えます。もちろん、そのモデルを使用して簡単に推論も行えます。

今回は時系列予測について確認してみます。ここで、下記のようなテーブル `v1` があるとします。
<details><summary>v1 テーブル</summary>

| DATE                    | SALES |
|-------------------------|-------|
| 2020-01-01 00:00:00.000 | 2     |
| 2020-01-02 00:00:00.000 | 3     |
| 2020-01-03 00:00:00.000 | 4     |
| 2020-01-04 00:00:00.000 | 5     |
| 2020-01-05 00:00:00.000 | 6     |
| 2020-01-06 00:00:00.000 | 7     |
| 2020-01-07 00:00:00.000 | 8     |
| 2020-01-08 00:00:00.000 | 9     |
| 2020-01-09 00:00:00.000 | 10    |
| 2020-01-10 00:00:00.000 | 11    |
| 2020-01-11 00:00:00.000 | 12    |
| 2020-01-12 00:00:00.000 | 13    |
</details>

このテーブルに対して、下記の SQL コマンドで、時系列予測モデルを構築することができます。
```sql
CREATE SNOWFLAKE.ML.FORECAST model(
  INPUT_DATA => TABLE(v1),
  TIMESTAMP_COLNAME => 'date',
  TARGET_COLNAME => 'sales'
);
```

そして、下記のようにN個（今回は3を指定）の推論点を指定して呼び出すことができます。
```sql
CALL model!FORECAST(FORECASTING_PERIODS => 3);
```

上記の出力結果は下記のようになりました。若干の誤差は生じているものの、LOWER_BOUND と UPPER_BOUND という予測区間の中には収まっていることが分かります。（元データを見ると、真値は上から 14,15,16 となりそうです）
| TS                      | FORECAST | LOWER_BOUND  | UPPER_BOUND  |
|-------------------------|----------|--------------|--------------|
| 2020-01-13 00:00:00.000 | 14       | 13.470749235 | 14.529250765 |
| 2020-01-14 00:00:00.000 | 14.5     | 13.867424344 | 15.132575656 |
| 2020-01-15 00:00:00.000 | 15.75    | 15.028752783 | 16.471247217 |





## Cortex LLM
Cortex LLM には、非常に多岐に渡る機能がありますが、それらはすべて LLM を活用している・するためのものです。例えば、**チャット形式の出力が得られる COMPLETE 関数や、感情分析を行える SENTIMENT 関数、翻訳（TRANSLATE）、要約（SUMMARIZE）関数**などがあります。また、**RAG を実装するためのベクトル化（EMBED）関数**もあります。

この Cortex LLM の機能一覧を[Haruki Murakoshiさん](https://twitter.com/hrk_mrks)が[記事にしてくださっている](https://zenn.dev/hrk_mrks/articles/2919c4ad9f15c7)ので、そちらも必見です！

Snowflake での LLM で気に入っている点は、まず誰でも簡単に様々なオープンモデルを使えることです。Complete 関数では、引数に指定するだけで、LlamaやReka、Mistral、そしてSnowflake謹製のLLMモデルであるArcticなどのLLMが使えます。

また、Snowflake ならではとして、テーブルデータに対して、下図のようにバッチ的に処理できることも面白さの一つです。しかもそれが、SQL関数を使うのと同じ形式で行えるのだから驚きです。

例として、下記のようなメッセージ文を持つテーブルがあったとします。
<details><summary>messages テーブル</summary>

| MESSAGE                                                    |
|------------------------------------------------------------|
| こんにちは！お元気ですか？                                        |
| この商品はとても使いやすく、コスパも良いです！                                 |
| この商品には大変満足しました。迅速な対応をしています。                         |
</details>

今回は、SENTIMENT 関数を試しに使ってみます。なお、SENTIMENT 関数は現在英語にしか対応していないため、一度英語に翻訳してからSENTIMENT 関数に入力しています。
```sql
select
    message,
    snowflake.cortex.sentiment(message),
    snowflake.cortex.sentiment(snowflake.cortex.translate(message, 'ja', 'en'))
from messages;
```

その結果が下表です。英語に翻訳したことで、正しく値が算出されていますね。
| MESSAGE                                      | SENTIMENT_JA  | SENTIMENT_EN |
|----------------------------------------------|---------------|--------------|
| こんにちは！お元気ですか？                          | -0.32776538   | 0.16710834   |
| この商品はとても使いやすく、コスパも良いです！            | -0.21443292   | 0.8582637    |
| この商品には大変満足しました。迅速な対応をしています。  | -0.16402386   | 0.8518236    |

このように、SQL 関数として Snowflake と相性の良いように提供されているため、複数のレコードに対する処理も通常の SQL と同様に記述できます。


さらに、SQL 関数である CONCAT 関数と組み合わせることで、各レコードにリテラル文字列を組み合わせることも出来ます。これにより、プロンプトによる指示や RAG の実装も容易に行えてしまいます。

先程の例と同じテーブルに対して、下記の SQL を実行します。今回は、`||`により文字列を結合しています（CONCAT 関数と同じ）。
```sql
select
    message,
    '次の文章をドイツ語に翻訳してください（翻訳後の文章のみ出力）' || message as MESSAGE_CONCATED,
    snowflake.cortex.complete('llama2-70b-chat', '次の文章をドイツ語に変換してください（翻訳後の文章のみ出力）：' || message) AS TRANSLATED_BY_COMPLETE,
    snowflake.cortex.translate(message, 'ja', 'de') AS TRANSLATED_BY_TRANSLATE
from messages;
```

その結果が下表です。適切に文字列が結合され、プロンプトとして渡すことができています。今回の例であれば翻訳関数のほうが適していますが、様々な用途が考えられそうですね！
| MESSAGE                                      | MESSAGE_CONCATED                                       | TRANSLATED_BY_COMPLETE                                                            | TRANSLATED_BY_TRANSLATE                                         |
|----------------------------------------------|--------------------------------------------------------|-----------------------------------------------------------------------------------|-----------------------------------------------------------------|
| こんにちは！お元気ですか？                          | 次の文章をドイツ語に翻訳してください（翻訳後の文章のみ出力）：こんにちは！お元気ですか？                     | Hallo! Wie geht es Ihnen?                                                        | Hallo! Gutes?                                                   |
| この商品はとても使いやすく、コスパも良いです！            | 次の文章をドイツ語に翻訳してください（翻訳後の文章のみ出力）：この商品はとても使いやすく、コスパも良いです！ | Dieses Produkt ist sehr einfach zu bedienen und bietet eine gute Kost-Leistungs-Relation! | Dieses Produkt ist sehr einfach zu bedienen und auch Kospa gut! |
| この商品には大変満足しました。迅速な対応をしています。  | 次の文章をドイツ語に翻訳してください（翻訳後の文章のみ出力）：この商品には大変満足しました。迅速な対応をしています。 | Ich bin sehr zufrieden mit diesem Produkt. Es gibt eine schnelle Reaktion.        | Ich bin sehr zufrieden mit diesem Produkt. Wir reagieren schnell. |



### Vectorデータベース
Cortex LLMから遅れること数ヶ月、主にLLMのRAGで使用するベクターデータ型が登場しました。テキストをベクトル埋め込みという技術によりベクトル化（数値のリスト）することで、ある異なるテキストとの意味的な類似度を数値で算出することができます。

また、この類似度の算出にはコサイン類似度などの関数を使用しますが、こういった関数もあわせて登場しています。

例えば、先程のメッセージテーブルに対して EMBED 関数を実行してみます。さらに、Hi!というテキストに対してもベクトル化をほどこし、それらについてコサイン類似度を算出してみます。
```sql
select 
    message, 
    snowflake.cortex.embed_text_768('snowflake-arctic-embed-m', 'Hi!') as hi_embeded,
    snowflake.cortex.embed_text_768('snowflake-arctic-embed-m', snowflake.cortex.translate(message, 'ja', 'en')) as message_embeded,
    vector_cosine_similarity(hi_embeded, message_embeded) as similarity
from messages;
```

その結果が下図です。１レコード目の類似度が最も高くなっており、文意からもそれは正しいように思われます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3540224/6e9df671-68fa-8169-1992-881bf35d62a0.png)




# Snowpark Container Services（SPCS）
Snowflake が管理するフルマネージドのコンテナサービスです。常時起動型の Web サービスのホストやバッチ実行型のジョブ機能があります。また、Snowflake の SQL から Web サービスへのリクエストやバッチ実行を行うこともできます。

Snowpark Container を扱うための主なオブジェクトは下記となります。
- **イメージリポジトリ**（Docker イメージの格納先）
- **コンピュートプール**（サービス・ジョブの実行環境）
- **サービス・サービス関数・ジョブ**（コンテナの集合体）

長くなってしまうのでデモは割愛しますが、docker コマンドや上記のオブジェクトの作成コマンドさえ抑えれば、簡単にコンテナを動作させられます。そのため、何でも Snowflake で動かせるようになった！というのが正直なところで、それこそ自前の LLM モデルサービスの構築なんかもできるようになっています👀

# Hybrid Table（Unistore）
一般的にはHTAPと呼ばれる、OLTPとOLAPの双方のワークロードを一つのテーブルで担うことができるSnowflakeの新しいテーブルタイプです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3540224/7136e405-7e62-29aa-e121-f661d19aa08b.png)
[Hybrid tables - Architecture](https://docs.snowflake.com/en/user-guide/tables-hybrid#architecture)

Hybrid Tableは、各クエリを数十ミリ秒で処理可能であり、最大1000クエリ/秒（QPS）のパフォーマンスを実現します。これは、従来のSnowflakeのカラムナーテーブルに比べて、格段に速いです。

Search Optimization Serviceなどで高速化も可能でしたが、それはあくまでも検索自体の高速化を望むもので、**Hybrid Table では検索に加え読み書きのスピードが大幅に高速化**されています。

もちろん、**分析的なクエリについても従来のカラムナーテーブルと同様に高速**です。

ただし、データ量やQPSの増加により、性能は劣化していくことが想定されるので、高負荷なワークロードで使うことは避けましょう。あくまでも、現時点では軽量なアプリケーショントランザクション、データ加工のステータス管理などの用途が想定されているようです。

また、Hybrid Table は、`CREATE HYBRID TABLE` コマンドにより簡単に作成することができます。利用時も、通常の SQL クエリで SELECT や INSERT 文を実行できます。

# DevOps／MLOps
最後に、DevOps／MLOps 系の機能の紹介をしておきます。DevOps としては Git Integration や Snowflake CLI が、MLOps としては Model Registry や Feature Store が Preview 状態となっています。Snowflake で SQL ファイルや関数、機械学習モデルを扱うにあたって、必須だけれども存在しなかった機能が、もうすぐそこまで来ている状態です！

# おわりに
Snowflakeのアプリケーション系の機能について、機能の概要をざっくり理解いただけたでしょうか？この内容をもとに、もっと Snowflake Data Cloud Summit 2024 を楽しめるようになっていますと、幸いです。

こんな機能についても知りたい！この機能のここってどうなってるの？など気になることがあれば、ぜひお気軽に[X/Twitter](https://twitter.com/toru_data)や[SnowVillage](https://usergroups.snowflake.com/snowvillage/)などでお声がけください。

また、[2023年以前のこうしたデータアプリケーション系機能のリリースについてまとめた記事を公開しています](https://qiita.com/toru_hiyama/items/811c6e5cacc6b4922371)ので、そちらもよろしければご参照ください。


## 仲間募集

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><div>

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

</div></details>


<details><summary> TDFⓇ-AM（Trusted Data Foundation - Analytics Managed Service）について</summary><div>

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

</div></details>


<details><summary>NTTデータとTableauについて </summary><div>

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

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

</div></details>


<details><summary>NTTデータとAlteryxについて </summary><div>
Alteryxは、業務ユーザーからIT部門まで誰でも使えるセルフサービス分析プラットフォームです。

Alteryx導入の豊富な実績を持つNTTデータは、最高位にあたるAlteryx Premiumパートナーとしてお客さまをご支援します。

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

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

</div></details>

<details><summary>NTTデータとDataRobotについて </summary><div>
DataRobotは、包括的なAIライフサイクルプラットフォームです。

NTTデータはDataRobot社と戦略的資本業務提携を行い、経験豊富なデータサイエンティストがAI・データ活用を起点にお客様のビジネスにおける価値創出をご支援します。

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

</div></details>

<details><summary> NTTデータとInformaticaについて</summary><div>

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

</div></details>

<details><summary>NTTデータとSnowflakeについて </summary><div>
NTTデータでは、Snowflake Inc.とソリューションパートナー契約を締結し、クラウド・データプラットフォーム「Snowflake」の導入・構築、および活用支援を開始しています。

NTTデータではこれまでも、独自ノウハウに基づき、ビッグデータ・AIなど領域に係る市場競争力のあるさまざまなソリューションパートナーとともにエコシステムを形成し、お客さまのビジネス変革を導いてきました。
Snowflakeは、これら先端テクノロジーとのエコシステムの形成に強みがあり、NTTデータはこれらを組み合わせることでお客さまに最適なインテグレーションをご提供いたします。

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

</div></details>