注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
FoundryTS は、時系列データに対してクエリを実行する Python ライブラリで、 Code Repositories、 Code Workbooks、Code Workspaces と統合されています。
詳細は 時系列のドキュメンテーション をご覧ください。
まず始めに、すでに Python コードリポジトリのセットアップ を完了していることを確認してください。
ライブラリ パネルを使用して、foundryts
、transforms-timeseries
、transforms-objects
のライブラリをリポジトリに追加します。
次に、以下の手順に従って、クエリ対象のオブジェクトタイプをリポジトリにインポートし、プロジェクト参照を更新します:
この例では、Ticker name
プロパティを持つ Stock series
オブジェクトタイプから始めます。目的は、Technology
セクターのすべてのシリーズを見つけて、その時間範囲を計算することです。
まず、変換の入力と出力を定義します。Stock series
オブジェクトタイプをオブジェクト入力として宣言し、時間シリーズ同期を時間シリーズ入力として宣言します。
Copied!1 2 3 4 5 6 7 8 9
@transform( output=Output("/Users/jdoe/foundryts-test-energy-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 のインスタンスを初期化します。この関数は、オブジェクトタイプ、時間系列同期、および出力を引数として取ることに注意してください。
def compute(ctx, ts, objects, output):
# FoundryTS()関数を用いて新たな時間系列オブジェクトを作成します。
fts = FoundryTS()
次に、Technology
セクターの Stock series
オブジェクトを検索します。検索結果の各シリーズを、その時間範囲(最も早い時点と最も遅い時点のタイムスタンプ)にマップします。
# エネルギーセクターに関連する時系列データを検索するコード
search_result = fts.search.series(
(ontology('sector') == 'energy'), # エネルギーセクターに関連するデータを検索条件に設定
object_types=['timeseries-demo-stock-series'] # 時系列データのタイプを指定
).map(F.time_extent()) # 検索結果の各時系列データの時間範囲を取得
最後に、データフレームを出力データセットに書き込みます。
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
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-energy-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): fts = FoundryTS() # FoundryTSオブジェクトを作成します # 'sector'が'energy'である時系列データを検索し、その時間範囲をマッピングします search_result = fts.search.series( (ontology('sector') == 'energy'), object_types=['timeseries-demo-stock-series'] ).map(F.time_extent()) df = search_result.to_dataframe() # 検索結果をデータフレームに変換します output.write_dataframe(df) # データフレームを出力します
これが出力データセットの見た目です。