時系列データ
Overview
このガイドでは、 PyMongoを使用して 時系列データ を保存し、操作する方法を学習できます。
時系列データは、次のコンポーネントで構成されています。
測定値
測定のタイムスタンプ
測定を説明するメタデータ
次の表では、時系列データを保存できるサンプル状況について説明します。
状況 | 測定値 | Metadata |
---|---|---|
業種別の月間売上の記録 | USD 建てでの収益 | 会社、国 |
気象変化の追跡 | 降量レベル | ロケーション、センサータイプ |
家一軒の価格の変動を記録する | 月額料金 | ロケーション、通貨 |
時系列コレクションの作成
重要
時系列コレクション用のサーバー バージョン
時系列コレクションを作成して操作するには、MongoDB Server 5.0以降を実行している配置に接続する必要があります。
時系列コレクションを作成するには、次の引数を create_collection()
メソッドに渡します。
作成する新しいコレクションの名前
timeseries
argument
timeseries
引数のタイプは dict
です。これには、次のフィールドが含まれています。
timeField
: 各 時系列ドキュメントのタイムスタンプを保存するフィールドを指定します。metaField
: 各 時系列ドキュメントのメタデータを保存するフィールドを指定します。granularity
: 連続するタイムスタンプ間のおおよその時間を指定します。 指定できる値は、'seconds'
、'minutes'
、'hours'
です。bucketMaxSpanSeconds
: 同じバケット内のタイムスタンプ間の最大時間を設定する。bucketRoundingSeconds
: MongoDBが新しいバケットの最小タイムスタンプを設定するときに切り捨てる秒数を設定します。bucketMaxSpanSeconds
と等しくなければなりません。
これらのフィールドの詳細については、 コマンド フィールドを参照してください。
例
次の例では、timeField
オプションを "timestamp"
に設定して、october2024
という名前の時系列コレクションを作成します。
database = client.get_database("weather") time_series_options = { "timeField": "timestamp" } database.create_collection("october2024", timeseries=time_series_options)
コレクションが正常に作成されたかどうかを確認するには、データベースのすべてのコレクションのリストを取得し、コレクション名でフィルタリングします。
print(list(database.list_collections(filter={'name': 'october2024'})))
{ "name": "october2024", "type": "timeseries", "options": { "timeseries": { "timeField": "timestamp", "granularity": "seconds", "bucketMaxSpanSeconds": 3600 } }, "info": { "readOnly": False } }
時系列データの保存
時系列コレクションにデータを挿入するには、 insert_one()
またはinsert_many()
メソッドを使用し、挿入された各ドキュメントで測定値、タイムスタンプ、メタデータを指定します。
ドキュメントの挿入の詳細については、「 ドキュメントの挿入 」を参照してください。
例
この例では、ニューヨーク市の温度データを、october2024
時系列コレクションの作成 で作成された 時系列コレクションに挿入します。各ドキュメントには、次のフィールドが含まれています。
temperature
、温度測定値を華氏単位で保存location
、場所のメタデータを保存するtimestamp
は、測定タイムスタンプを保存します
from datetime import datetime collection = database["october2024"] document_list = [ { "temperature": 77, "location": "New York City", "timestamp": datetime(2024, 10, 22, 6, 0, 0) }, { "temperature": 74, "location": "New York City", "timestamp": datetime(2024, 10, 23, 6, 0, 0) } ] collection.insert_many(document_list)
時系列データのクエリ
時系列コレクションに保存されているデータをクエリするには、他のコレクションに対して読み取りまたは集計操作を実行するときに使用するのと同じ構文と規則を使用します。 これらの操作の詳細については、「 MongoDBからのデータの読み取り 」および「 集計によるデータの変換 」を参照してください。
詳細情報
このガイドの概念の詳細については、次のMongoDB Serverマニュアル エントリを参照してください。
API ドキュメント
このガイドで言及されているメソッドについて詳しくは、次のAPIドキュメントを参照してください。