注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

FoundryTS で time series を扱う

FoundryTS は time series データに対してクエリを実行するための Python ライブラリであり、Code RepositoriesCode Workbook と統合されています。

詳細については、FoundryTS API リファレンス をご覧ください。

Code Repositories で始める

まず、Python コード リポジトリのセットアップが完了していることを確認してください。

Libraries ペインを使用して foundrytstransforms-timeseries、および transforms-objects ライブラリをリポジトリに追加します。

コード リポジトリにライブラリを追加できる Libraries ペイン。

次に、以下の手順に従って、クエリ対象のオブジェクト タイプをリポジトリにインポートし、プロジェクト リファレンスを更新します。

  1. リポジトリの Settings タブに移動します。
  2. Ontology を選択します。
  3. オブジェクト タイプを追加します。

リソースのインポート

プロジェクト リファレンスにより、FoundryTS はプロジェクト外部のリソースにアクセスできます。このセクションでは、プロジェクト外部に存在するリソースをインポートする手順を説明します。

time series プロパティによってシリーズにアクセスする場合は、以下のリソースをインポートする必要があります。

  • オブジェクト タイプの元データセット

シリーズ ID または検索クエリによってシリーズにアクセスする場合は、以下のリソースをインポートする必要があります。

  • time series sync (このリソースの RID は次のようになります: ri.time-series-catalog.main.sync.)
  • time series sync の元データセット

Code Workbook で始める

Code Workbook では、右上のツールバーから Environment を選択し、次に Configure environment を選択して、環境に foundryts パッケージを追加します。

Conda environment の下で Customize profile を選択し、foundryts を検索して追加します。Update environment を選択して変更を保存します。

環境に foundryts パッケージを追加します。

Code Workbook の 環境構成 についてさらに学びましょう。

Workbook 入力のセットアップ

クエリ対象のオブジェクト タイプ (time series プロパティにアクセス) または time series カタログ同期 (シリーズ ID または検索クエリにアクセス) は、左側の Contents パネルから workbook 入力として追加する必要があります。

Workbook 入力をコード ワークブックに追加します。

workbook 入力として追加されたオブジェクト タイプや time series カタログ同期は、元データセットを含む同じプロジェクトにインポートする必要があります。そうしないと、foundryts で記述されたトランスフォームの実行時にエラーが発生します。プロジェクト範囲にない workbook 入力がある場合は、ワークブック ツールバーの右上の設定ドロップダウン メニューにある Project scope settings ダイアログで表示されます。

Project scope settings ダイアログに表示される workbook 入力が不足しているプロジェクト。

例: 株式データ

この例では、Ticker name プロパティを持つ Stock series オブジェクト タイプから始めます。目的は、Technology セクターのすべてのシリーズを見つけて、その time range を計算することです。

トランスフォームの入力と出力を定義することから始めます。Stock series オブジェクト タイプをオブジェクト入力として、time series sync を time series 入力として宣言します。

Copied!
1 2 3 4 5 6 7 8 9 @transform( output=Output("/Users/jdoe/foundryts-test-technology-sector"), # 出力パスを指定 ts=TimeSeriesInput('ri.time-series-catalog.main.sync.6bdbda27-29...'), # タイムシリーズデータの入力 objects=ObjectInput( object_type_rid='ri.ontology.main.object-type.4168ed49-00...', # オブジェクトタイプのリソースID ontology_rid='ri.ontology.main.ontology.00000000-00...', # オントロジーのリソースID ontology_branch_rid='ri.ontology.main.branch.00000000-00...' # オントロジーブランチのリソースID ) )

次に、トランスフォーム関数を定義し、FoundryTS のインスタンスを初期化します。この関数はオブジェクトタイプ、time series 同期、および出力を引数として受け取ります。

Copied!
1 2 3 def compute(ctx, ts, objects, output): # FoundryTS クラスのインスタンスを作成 fts = FoundryTS()

次に、Technology セクターの timeseries-demo-stock-series オブジェクトを検索します。各検索結果に対して、その series を time 範囲(最初と最新のポイントのタイムスタンプ)にマップします。

Copied!
1 2 3 4 search_result = fts.search.series( (ontology('sector') == 'Technology'), # 「sector」が「Technology」と一致するものを検索 object_types=['timeseries-demo-stock-series'] # 検索対象のオブジェクトタイプを指定 ).map(F.time_extent()) # 検索結果の時間範囲を取得

最後に、データフレームを出力データセットに書き込みます。

Copied!
1 2 df = search_result.to_dataframe() # search_resultをデータフレームに変換 output.write_dataframe(df) # データフレームを出力に書き込む

すべてを組み合わせると、完成したトランスフォームは次のようになります:

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 from transforms.api import transform, Output from transforms.timeseries import TimeSeriesInput from foundryts import FoundryTS from foundryts.search import ontology import foundryts.functions as F from transforms.objects import ObjectInput @transform( output=Output("/Users/jdoe/foundryts-test-technology-sector"), ts=TimeSeriesInput('ri.time-series-catalog.main.sync.6bdbda27-29...'), objects=ObjectInput( object_type_rid='ri.ontology.main.object-type.4168ed49-00...', ontology_rid='ri.ontology.main.ontology.00000000-00...', ontology_branch_rid='ri.ontology.main.branch.00000000-00...' ) ) def compute(ctx, ts, objects, output): # FoundryTSのインスタンスを作成 fts = FoundryTS() # "Technology"セクターのタイムシリーズを検索し、time_extent()関数をマッピング search_result = fts.search.series( (ontology('sector') == 'Technology'), object_types=['timeseries-demo-stock-series'] ).map(F.time_extent()) # 検索結果をデータフレームに変換 df = search_result.to_dataframe() # データフレームを出力 output.write_dataframe(df)

出力データセットは次のように表示されます。

A datset output after running a FoundryTS transform.