LoginSignup
2
1

More than 3 years have passed since last update.

Python で Azure Cosmos DB を使用したアプリ開発を行う時の Tips

Last updated at Posted at 2020-12-19

この記事について

こちらは 求ム!Pythonを使ってAzureで開発する時のTips!【PR】日本マイクロソフト Advent Calendar 2020 19 日目の記事です。

この記事では、Azure Cosmos DBPython を使って何かする時のアレコレについてまとめています。

Azure Cosmos DB Python SDK

SQL API で構築された Azure Cosmos DB に Python で接続するには、Azure Cosmos DB Python SDK を使用することになります。
こちらのライブラリについては、PyPI で公開されているので、使用する際は一度確認してみてください。

パッケージの導入は、以下のコマンドで完了できます。

pip install azure-cosmos

Docker 上で Azure Cosmos DB Python SDK を使用

Docker Compose を使用して、Docker コンテナー内で Azure Cosmos DB Python SDK をインストールし、利用することもできます。
以下のような docker-compose.yaml を作成し、docker-compose up -d でコンテナーを起動します。

docker-compose.yaml
version: '3'

services:
  app:
    image: python:3.9
    container_name: python3
    tty: true
    volumes:
      - ./src:/home/src
      - ./pip-lib:/pip-lib
    working_dir: "/home/src"
    environment:
      PYTHONUSERBASE: /pip-lib

src フォルダ以下に、requirements.txt を作成します。このファイル内に pip freeze の仕様に従って、使用するライブラリ情報を記載していきます。
Azure Cosmos DB Python SDK の場合は、以下の通りです。

/src/requirements.txt
azure-cosmos==4.2.0

requirements.txt ファイルを作成したら、以下のコマンドを実行して、Azure Cosmos DB Python SDK をインストールします。

docker-compose run --rm app pip install -r requirements.txt --user

コマンドを実行すると、pip-lib フォルダ内に requirements.txt で指定したライブラリがインストールされるはずです。
以下のように pip list を実行すれば、インストールされていることも確認できるはずです。

docker-compose run --rm app pip list

こうすることで、Infrastructure as a Code (IaC) として、開発環境を Docker で管理、統一できるのでオススメです。
あとは、実際に Python で開発を始めるだけです。
PyPI や、Microsoft Docs のチュートリアル に、接続方法やデータの読み書きについての記載があるため、こちらを参考に Python アプリケーションを開発していきます。

Azure Cosmos DB Jupyter Notebooks

2020 年 5 月 に開催された Microsoft Build にて、Cosmos DB のデータエクスプローラーに Jupyter Notebooks 環境が組み込めるようになり、より簡単にデータ分析などを実施できるようになりました。
Azure Cosmos DB アカウント作成時に、Notebooks 機能を有効にする必要があります。

スクリーンショット 2020-12-19 23.41.13.png

なお、2020 年 12 月 19 日現在では、Jupyter Notebooks 機能はプレビュー機能のため、有効化できるリージョンに制限があります。
※日本では、東日本リージョン、西日本リージョン、どちらでも有効化できるので、あまり気にする必要はないです。

この Jupyter Notebooks 機能の便利なところは、使い慣れた Jupyter Notebook と同じ形で操作を行うことができること以外に、Jupyter Notebook のセル内で SQL も実行できるというのがあります。
また、Azure Cosmos DB の Jupyter Notebooks では、先述の Azure Cosmos DB Python SDK のバージョン 4 が一緒に組み込まれており、開発環境を構築しなくても、そのまま簡単に利用を始めることができます。

スクリーンショット 2020-12-19 23.11.37.png

%%sql --database <データベース名> --container <コンテナー名>
SELECT c.Action, c.Price as ItemRevenue, c.Country, c.Item FROM c

このような形で、セル内で SQL を使って、Azure Cosmos DB の中にあるデータを参照することができるため、機械学習など、Python でのコーディングを行う際の実データ確認が楽になります。

無論、Pandas DataFrame に、SQL の実行結果を出力させることもできます。

%%sql --database <データベース名> --container <コンテナー名> --output df_cosmos
SELECT c.Action, c.Price as ItemRevenue, c.Country, c.Item FROM c
df_cosmos.head(10)

このように、%%sql の引数に --output を追加することによって、同じ Jupyter Notebook 上で、SQL クエリの実行結果をそのまま Pandas DataFrame に投入することもできます。

おわりに

Azure Cosmos DB は NoSQL データベースのサービスです。実際にデータは溜め込むだけではなく、そこからさまざまな用途に活用していくことが重要です。
是非、Python SDK や Jupyter Notebooks 機能を活用して、Python で気軽にデータ活用を初めてみてください。

参考情報

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1