Units - 時系列データ(ユニット形式)へのアクセスオブジェクト¶
時系列データリソース(ユニット形式)へのアクセスAPIを提供します。 ユニットは、時系列データを 時系列データオブジェクト で記載されている型 で出力するリソースです。
Request Methods¶
警告
以下のアクセスオブジェクトは、必ず client の units を使用して生成してください。
client = intdash.Client(...)
client.units.list(edge_name='test_edge', start='2020/07/01 09:00+09:00', end='2020/07/01 10:00+09:00')
- class Units(...)[ソース]¶
時系列データ(ユニット形式)へのアクセスオブジェクトです。
- list(start, end, measurement_uuid=None, edge_uuid=None, edge_name=None, id_queries=None, labels=None, limit=None, iterator=False, exit_on_error=False)[ソース]¶
時系列データ(ユニットオブジェクト)のリストを取得します。
- パラメータ
start (pandas.Timestamp) -- 取得対象期間の開始時刻
end (pandas.Timestamp) -- 取得対象期間の終了時刻
measurement_uuid (str) -- 取得元の計測のUUID
edge_uuid (str) -- 取得元のエッジのUUID
edge_name (str) -- 取得元のエッジ名
id_queries (list[IdQuery]) -- 取得対象のidのリスト
labels (list[str]) -- 取得対象のラベル名
limit (int) -- 最大取得件数
iterator (bool) -- Trueの場合、イテレータを生成します
exit_on_error (bool) -- Trueの場合、取得中にエラーが発生すると処理を中断し、中断前までのUnitのリストを返します
- 戻り値
ユニットオブジェクトのリスト
- 戻り値の型
list[Unit]
注釈
measurement_uuid
edge_uuid
edge_name
はいずれか1つを指定してください。 同時に指定された場合、measurement_uuid
>edge_uuid
>edge_name
の優先順位で参照し、低順位のものは無視されます。注釈
labels
とid_queries
両方を指定した場合、双方いずれかにあてはまるデータすべてが対象となります。 (labels
を使用する際は、別途「信号定義」を登録する必要があります。)注釈
limit
を指定しない場合、指定範囲の全データを取得します。取得データの容量が大きい場合、limit
に取得数の上限を指定しiterator
をTrue
にすることで、 上限ごとに取得するイテレーターを使用することができます。詳しくは、 チュートリアル の 時系列データを取得する を参考にしてください。注釈
サーバー側の取得処理にて例外が発生すると、例外メッセージを格納したUnitが出力され、処理自体は正常に終了します (以下サンプル参照)。この時、Unitの
data_type
はStringです。 例外発生時に処理を中断したい場合、exit_on_error
にTrue
を指定してください。サンプル
以下は、データ取得時に例外が発生した場合のサンプルです。エラーメッセージがUnitに格納されています。エラーメッセージを格納したUnitの data_type はStringです。 id には、エラーが発生したエンドポイントのnamespaceが出力されます。 Unitの内容を確認することで、再取得や原因究明に使用できます。
>>> us = lc.units.list( measurement_uuid=sample_measurement.uuid, labels=['nmea', 'test'], start=sample_measurement.basetime, end=sample_measurement.basetime + pd.Timedelta(seconds=10), exit_on_error=False )
>>> import json >>> for u in us: if u.data.data_type.value == DataType.basetime.value: continue if 'error' in u.data.id: print(u) error_message = json.loads(u.data.value)['error_description'] raise ValueError(f'contains failed data: {error_message}') # elapsed_time: 0 days 00:00:00 # channel: 1 # measurement_uuid: 3b5b9bed-d509-4198-aea0-54ee714f7a5b # data_type: string # id: intdash/measurement/get/data/error # value: {"error":"converted_error","error_description":"Error occurred in signal conversion","error_extra":{"signal_channel":1,"signal_data_id":"GPRMC","signal_data_type":2,"signal_label":"nmea"}} ValueError: contains failed data: Error occurred in signal conversion
- store(measurement_uuid, units, serial_number=0, final=True)[ソース]¶
時系列データ(ユニットオブジェクト)をサーバーへ保存します。
- パラメータ
measurement_uuid (str) -- 保存先の計測のUUID
units (list[Unit]) -- 保存するユニットオブジェクトのリスト
serial_number (int) -- セクションの通し番号
final (bool) -- 最終フラグ
注釈
一回の処理に指定できる
units
の容量は2GBまでです。2GBを超える場合は、store()
を複数回実行してください。
Response¶
取り扱うデータ型を示すオブジェクトについては、別途 時系列データオブジェクト を参照してください。
- class Unit(...)[ソース]¶
Unitリソースを表すオブジェクトです。
- elapsed_time¶
経過時間
- Type
pandas.Timedelta
- channel¶
チャンネル番号
- Type
int
- data¶
データ
- Type
data.Data
注釈
リクエストパラメーターオブジェクトは DataPoints と同じオブジェクトを使用します。 詳しくは DataPoints - 時系列データ(データポイント形式)へのアクセスオブジェクト を確認してください。