search
LoginSignup
1

More than 1 year has passed since last update.

posted at

updated at

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

この記事について

こちらは 求ム!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 で気軽にデータ活用を初めてみてください。

参考情報

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
What you can do with signing up
1