Units - 時系列データ(ユニット形式)へのアクセスオブジェクト

時系列データリソース(ユニット形式)へのアクセスAPIを提供します。 ユニットは、時系列データを 時系列データオブジェクト で記載されている型 で出力するリソースです。

Request Methods

警告

以下のアクセスオブジェクトは、必ず clientunits を使用して生成してください。

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 の優先順位で参照し、低順位のものは無視されます。

注釈

labelsid_queries 両方を指定した場合、双方いずれかにあてはまるデータすべてが対象となります。 (labels を使用する際は、別途「信号定義」を登録する必要があります。)

注釈

limit を指定しない場合、指定範囲の全データを取得します。取得データの容量が大きい場合、limit に取得数の上限を指定し iteratorTrue にすることで、 上限ごとに取得するイテレーターを使用することができます。詳しくは、 チュートリアル時系列データを取得する を参考にしてください。

注釈

サーバー側の取得処理にて例外が発生すると、例外メッセージを格納したUnitが出力され、処理自体は正常に終了します (以下サンプル参照)。この時、Unitの data_type はStringです。 例外発生時に処理を中断したい場合、 exit_on_errorTrue を指定してください。

サンプル

以下は、データ取得時に例外が発生した場合のサンプルです。エラーメッセージが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 - 時系列データ(データポイント形式)へのアクセスオブジェクト を確認してください。