# データソースの設定

> データソースの設定 - DataRobotSourceおよびBatchDataRobotSourceメソッドはDataRobotに接続し、選択したデータをDataRobotプラットフォームから取得しま
> す。DataFrameSourceメソッドは、任意のpd.DataFrameをラップして、ライブラリ互換のソースを作成します。

This Markdown file sits beside the HTML page at the same path (with a `.md` suffix). It summarizes the topic and lists links for tools and LLM context.

Companion generated at `2026-07-15T05:55:44.597025+00:00` (UTC).

## Primary page

- [データソースの設定](https://docs.datarobot.com/ja/docs/api/code-first-tools/dr-model-metrics/dmm-data-sources.html.md): Full documentation for this topic (Markdown sidecar).

## Sections on this page

- [DataRobotソースの設定](https://docs.datarobot.com/ja/docs/api/code-first-tools/dr-model-metrics/dmm-data-sources.html.md#datarobot): In-page section heading.
- [予測データのインポート](https://docs.datarobot.com/ja/docs/api/code-first-tools/dr-model-metrics/dmm-data-sources.html.md#_2): In-page section heading.
- [実測値データのエクスポート](https://docs.datarobot.com/ja/docs/api/code-first-tools/dr-model-metrics/dmm-data-sources.html.md#_3): In-page section heading.
- [トレーニングデータのエクスポート](https://docs.datarobot.com/ja/docs/api/code-first-tools/dr-model-metrics/dmm-data-sources.html.md#_4): In-page section heading.
- [結合データのエクスポート](https://docs.datarobot.com/ja/docs/api/code-first-tools/dr-model-metrics/dmm-data-sources.html.md#_5): In-page section heading.
- [DataRobotバッチデプロイソースの設定](https://docs.datarobot.com/ja/docs/api/code-first-tools/dr-model-metrics/dmm-data-sources.html.md#datarobot_1): In-page section heading.
- [DataFrameソースの設定](https://docs.datarobot.com/ja/docs/api/code-first-tools/dr-model-metrics/dmm-data-sources.html.md#dataframe): In-page section heading.
- [TimeBucketの設定](https://docs.datarobot.com/ja/docs/api/code-first-tools/dr-model-metrics/dmm-data-sources.html.md#timebucket): In-page section heading.
- [追加のDataRobotデプロイプロパティの指定](https://docs.datarobot.com/ja/docs/api/code-first-tools/dr-model-metrics/dmm-data-sources.html.md#datarobot_2): In-page section heading.

## Documentation content

最も一般的に使用されるデータソースは `DataRobotSource` です。 このデータソースはDataRobotに接続して、DataRobotプラットフォームから選択された予測データを取得します。 さらに3つのデフォルトデータソース `DataRobotSource` 、 `BatchDataRobotSource` 、および `DataFrameSource` が利用可能です。

> [!WARNING] 時系列のサポート
> [DataRobotモデル指標（DMM）](https://docs.datarobot.com/ja/docs/api/code-first-tools/dr-model-metrics/index.html.md) ライブラリは、時系列モデル、特に時系列モデルの [データエクスポート](https://docs.datarobot.com/ja/docs/api/code-first-tools/dr-model-metrics/dmm-data-sources.html.md#export-prediction-data) を サポートしていません 。 データのエクスポートと取得には、 [DataRobot APIクライアント](https://datarobot-public-api-client.readthedocs-hosted.com/en/latest-release/reference/mlops/data_exports.html) を使用します。

## DataRobotソースの設定

`DataRobotSource` はDataRobotに接続して、DataRobotプラットフォームから選択された予測データを取得します。 次の必須パラメーターで `DataRobotSource` を初期化します。

```
from dmm.data_source import DataRobotSource

source = DataRobotSource(
    base_url=DATAROBOT_ENDPOINT,
    token=DATAROBOT_API_TOKEN,
    deployment_id=deployment_id,
    start=start_of_export_window,
    end=end_of_export_window,
) 
```

`base_url` および `token` パラメーターを、環境変数の `os.environ['DATAROBOT_ENDPOINT']` および `os.environ['DATAROBOT_API_TOKEN']` として指定することもできます。

```
from dmm.data_source import DataRobotSource

source = DataRobotSource(
    deployment_id=deployment_id,
    start=start_of_export_window,
    end=end_of_export_window,
) 
```

次の例では、すべてのパラメーターで `DataRobotSource` を初期化します。

```
from dmm.data_source import DataRobotSource

source = DataRobotSource(
    base_url=DATAROBOT_ENDPOINT,
    token=DATAROBOT_API_TOKEN,
    client=None,
    deployment_id=deployment_id,
    model_id=model_id,
    start=start_of_export_window,
    end=end_of_export_window,
    max_rows=10000,
    delete_exports=False,
    use_cache=False,
    actuals_with_matched_predictions=True,
) 
```

| パラメーター | 説明 |
| --- | --- |
| base_url: str | DataRobot API URL（例：https://app.datarobot.com/api/v2）。 |
| token: str | APIのキーとツールからのDataRobot APIトークン。 |
| client: Optional[DataRobotClient] | base_urlおよびtokenの代わりにDataRobotClientオブジェクトを使用します。 |
| deployment_id: str | カスタム指標によって評価されるデプロイのID。 |
| model_id: Optional[str] | カスタム指標によって評価されるモデルのID。 モデルIDを指定しない場合、チャンピオンモデルIDが使用されます。 |
| start: datetime | エクスポートウィンドウの開始。 データの取得を開始する日付を定義します。 |
| end: datetime | エクスポートウィンドウの終了。 データの取得を終了する日付を定義します。 |
| max_rows: Optional[int] | 要求されたデータがメモリーに収まらない場合に、一度に取得する最大の行数。 |
| delete_exports: Optional[bool] | AIカタログで作成されたエクスポート済みデータを含むデータセットを自動的に削除するかどうか。 Trueは削除用に設定します。デフォルト値はFalseです。 |
| use_cache: Optional[bool] | 以前のエクスポートに含まれる時間範囲に対して、AIカタログに保存されている既存のデータセットを使用するかどうか。 Trueは以前のエクスポートで使用されたデータセットを使用します。デフォルト値はFalseです。 |
| actuals_with_matched_predictions: Optional[bool] | 一致する予測値なしで実測値をエクスポートするかどうか。 Falseは一致しないエクスポートを許可しません。デフォルト値はTrueです。 |

#### 予測データのインポート

`get_prediction_data` メソッドは、適切なチャンクIDがある予測データのチャンクを返します。返されるデータチャンクは、 `max_rows` パラメーターに関する行数があるpandas DataFrameです。 このメソッドは、データソースが使い切られるまでデータを返します。

```
prediction_df_1, prediction_chunk_id_1 = source.get_prediction_data()

print(prediction_df_1.head(5).to_string())
print(f"chunk id: {prediction_chunk_id_1}")

   DR_RESERVED_PREDICTION_TIMESTAMP  DR_RESERVED_PREDICTION_VALUE_high  DR_RESERVED_PREDICTION_VALUE_low date_non_unique date_random  id       年月日
0  2023-09-13 11:02:51.248000+00:00                           0.697782                          0.302218      1950-10-01  1949-01-27   1  1949-01-01
1  2023-09-13 11:02:51.252000+00:00                           0.581351                          0.418649      1959-04-01  1949-02-03   2  1949-02-01
2  2023-09-13 11:02:51.459000+00:00                           0.639347                          0.360653      1954-05-01  1949-03-28   3  1949-03-01
3  2023-09-13 11:02:51.459000+00:00                           0.627727                          0.372273      1951-09-01  1949-04-07   4  1949-04-01
4  2023-09-13 11:02:51.664000+00:00                           0.591612                          0.408388      1951-03-01  1949-05-16   5  1949-05-01
chunk id: 0 
```

データソースを使い切ると、 `None` と `-1` が返されます。

```
prediction_df_2, prediction_chunk_id_2 = source.get_prediction_data()

print(prediction_df_2)
print(prediction_chunk_id_2)

None
chunk id: -1 
```

`reset` メソッドは、使い切ったデータソースをリセットして、最初からイテレーションできるようにします。

```
source.reset() 
```

`get_all_prediction_data` メソッドは、単一のDataFrameの1つのデータソースオブジェクトで使用できるすべての予測データを返します。

```
prediction_df = source.get_all_prediction_data() 
```

### 実測値データのエクスポート

`get_actuals_data` メソッドは、適切なチャンクIDがある実測値データのチャンクを返します。返されるデータチャンクは、 `max_rows` パラメーターに関する行数があるpandas DataFrameです。 このメソッドは、データソースが使い切られるまでデータを返します。

```
actuals_df_1, actuals_chunk_id_1 = source.get_actuals_data()

print(actuals_df_1.head(5).to_string())
print(f"chunk id: {actuals_chunk_id_1}")

     association_id                  timestamp label  actuals  predictions predicted_class
0                 1  2023-09-13 11:00:00+00:00   low        0     0.302218            high
194              57  2023-09-13 11:00:00+00:00   low        1     0.568564             low
192              56  2023-09-13 11:00:00+00:00   low        1     0.569865             low
190              55  2023-09-13 11:00:00+00:00   low        0     0.473282            high
196              58  2023-09-13 11:00:00+00:00   low        1     0.573861             low
chunk id: 0 
```

postgresqlからのデータ形式で元のデータを返すには、 `return_original_column_names` パラメーターを `True` に設定します。

```
actuals_df_1, actuals_chunk_id_1 = source.get_actuals_data()

print(actuals_df_1.head(5).to_string())
print(f"chunk id: {actuals_chunk_id_1}")

     id                  timestamp label  actuals         y predicted_class
0     1  2023-09-13 11:00:00+00:00   low        0  0.302218            high
194  57  2023-09-13 11:00:00+00:00   low        1  0.568564             low
192  56  2023-09-13 11:00:00+00:00   low        1  0.569865             low
190  55  2023-09-13 11:00:00+00:00   low        0  0.473282            high
196  58  2023-09-13 11:00:00+00:00   low        1  0.573861             low
chunk id: 0 
```

単一のDataFrame内の1つのソースオブジェクトに対して使用できるすべての実測値データを返すには、 `get_all_actuals_data` メソッドを使用します。

```
actuals_df = source.get_all_actuals_data() 
```

データソースを使い切ると、 `None` と `-1` が返されます。

```
actuals_df_2, actuals_chunk_id_2 = source.get_actuals_data()

print(actuals_df_2)
print(actuals_chunk_id_2)

None
chunk id: -1 
```

`reset` メソッドは、使い切ったデータソースをリセットして、最初からイテレーションできるようにします。

```
source.reset() 
```

### トレーニングデータのエクスポート

`get_training_data` メソッドは、1回の呼び出しでトレーニングに使用されるすべてのデータを返します。 返されるデータはpandas DataFrameです。

```
train_df = source.get_training_data()
print(train_df.head(5).to_string())

      y date_random date_non_unique       年月日
0  high  1949-01-27      1950-10-01  1949-01-01
1  high  1949-02-03      1959-04-01  1949-02-01
2   low  1949-03-28      1954-05-01  1949-03-01
3  high  1949-04-07      1951-09-01  1949-04-01
4  high  1949-05-16      1951-03-01  1949-05-01 
```

### 結合データのエクスポート

`get_data` メソッドは `combined_data` を返します。これには、マージされたスコアリングデータ、予測値、および一致した実測値が含まれます。 この [MetricEvaluator](https://docs.datarobot.com/ja/docs/api/code-first-tools/dr-model-metrics/dmm-metric-evaluator.html.md) は、このメソッドをメインのデータエクスポート法として使用します。

```
df, chunk_id_1 = source.get_data()
print(df.head(5).to_string())
print(f"chunk id: {chunk_id_1}")

                          timestamp  predictions date_non_unique date_random  association_id       年月日 predicted_class label  actuals
0  2023-09-13 11:02:51.248000+00:00     0.302218      1950-10-01  1949-01-27               1  1949-01-01            high   low        0
1  2023-09-13 11:02:51.252000+00:00     0.418649      1959-04-01  1949-02-03               2  1949-02-01            high   low        0
2  2023-09-13 11:02:51.459000+00:00     0.360653      1954-05-01  1949-03-28               3  1949-03-01            high   low        1
3  2023-09-13 11:02:51.459000+00:00     0.372273      1951-09-01  1949-04-07               4  1949-04-01            high   low        0
4  2023-09-13 11:02:51.664000+00:00     0.408388      1951-03-01  1949-05-16               5  1949-05-01            high   low        0
chunk id: 0 
```

`get_all_data` は、単一のDataFrame内のそのソースオブジェクトで使用できるすべての結合データを返します。

```
df = source.get_all_data() 
```

## DataRobotバッチデプロイソースの設定

`BatchDataRobotSource` インターフェイスはバッチデプロイ用です。 次の例では、すべてのパラメーターで `BatchDataRobotSource` を初期化します。

```
from dmm.data_source import BatchDataRobotSource

source = BatchDataRobotSource(
    base_url=DATAROBOT_ENDPOINT,
    token=DATAROBOT_API_TOKEN,
    client=None,
    deployment_id=deployment_id,
    model_id=model_id,
    batch_ids=batch_ids,
    max_rows=10000,
    delete_exports=False,
    use_cache=False,
) 
```

このメソッドのパラメーターは、 `DataRobotSource` のパラメーターと類似しています。 最も重要な違いは、時間範囲（開始と終了）の代わりに、バッチIDを指定する必要があることです。 さらに、バッチソースは実測値のエクスポートをサポートしていません。

`get_prediction_data` メソッドは、適切なチャンクIDがある予測データのチャンクを返します。返されるデータチャンクは、 `max_rows` パラメーターに関する行数があるpandas DataFrameです。 このメソッドは、データソースが使い切られるまでデータを返します。

```
prediction_df_1, prediction_chunk_id_1 = source.get_prediction_data()
print(prediction_df_1.head(5).to_string())
print(f"chunk id: {prediction_chunk_id_1}")

    AGE       B  CHAS     CRIM     DIS                  batch_id    DR_RESERVED_BATCH_NAME                         timestamp   INDUS  LSTAT  MEDV    NOX  PTRATIO  RAD     RM  TAX    ZN  id
0  65.2  396.90     0  0.00632  4.0900                <batch_id>                    batch1  2023-06-23 09:47:47.060000+00:00    2.31   4.98  24.0  0.538     15.3    1  6.575  296  18.0   1
1  78.9  396.90     0  0.02731  4.9671                <batch_id>                    batch1  2023-06-23 09:47:47.060000+00:00    7.07   9.14  21.6  0.469     17.8    2  6.421  242   0.0   2
2  61.1  392.83     0  0.02729  4.9671                <batch_id>                    batch1  2023-06-23 09:47:47.060000+00:00    7.07   4.03  34.7  0.469     17.8    2  7.185  242   0.0   3
3  45.8  394.63     0  0.03237  6.0622                <batch_id>                    batch1  2023-06-23 09:47:47.060000+00:00    2.18   2.94  33.4  0.458     18.7    3  6.998  222   0.0   4
4  54.2  396.90     0  0.06905  6.0622                <batch_id>                    batch1  2023-06-23 09:47:47.060000+00:00    2.18   5.33  36.2  0.458     18.7    3  7.147  222   0.0   5
chunk id: 0

prediction_df = source.get_all_prediction_data()

source.reset()

df, chunk_id_1 = source.get_data() 
```

`get_training_data` メソッドは、1回の呼び出しでトレーニングに使用されるすべてのデータを返します。 返されるデータはpandas DataFrameです。

```
train_df = source.get_training_data() 
```

## DataFrameソースの設定

DataRobotから直接データをエクスポートしないで、（たとえば）ローカルでダウンロードした場合、そのデータセットを `DataFrameSource` にロードできます。 `DataFrameSource` メソッドは、任意の `pd.DataFrame` をラップして、ライブラリ互換のソースを作成します。 これは、独自のデータを取り込むときにライブラリを操作する最も簡単な方法です。

```
source = DataFrameSource(
    df=pd.read_csv("./data_hour_of_week.csv"),
    max_rows=10000,
    timestamp_col="date"
)

df, chunk_id_1 = source.get_data()
print(df.head(5).to_string())
print(f"chunk id: {chunk_id_1}")

                  date         y
0  1959-12-31 23:59:57 -0.183669
1  1960-01-01 01:00:02  0.283993
2  1960-01-01 01:59:52  0.020663
3  1960-01-01 03:00:14  0.404304
4  1960-01-01 03:59:58  1.005252
chunk id: 0 
```

さらに、新しいデータソース定義を作成することもできます。 新しいデータソースを定義するために、 `DataSourceBase` インターフェイスをカスタマイズして実装できます。

## TimeBucketの設定

`TimeBucket` クラス列挙（enum）は、時間経過に伴い、必要なデータ集計のきめ細かさを定義します。 デフォルトでは、 `TimeBucket` は `TimeBucket.ALL` に設定されます。 `SECOND` 、 `MINUTE` 、 `HOUR` 、 `DAY` 、 `WEEK` 、 `MONTH` 、 `QUARTER` 、または `ALL` のいずれの値も指定できます。 `TimeBucket` 値を変更するには、 `init` メソッド： `source.init(time_bucket)` を使用します。

```
# Generate a dummy DataFrame with 2 rows per time bucket (Hour in this scenario)
test_df = gen_dataframe_for_accuracy_metric(
    nr_rows=10,
    rows_per_time_bucket=2,
    prediction_value=1,
    with_actuals=True,
    with_predictions=True,
    time_bucket=TimeBucket.HOUR,
)
print(test_df)
                    timestamp  predictions  actuals
0  01/06/2005 13:00:00.000000            1    0.999
1  01/06/2005 13:00:00.000000            1    0.999
2  01/06/2005 14:00:00.000000            1    0.999
3  01/06/2005 14:00:00.000000            1    0.999
4  01/06/2005 15:00:00.000000            1    0.999
5  01/06/2005 15:00:00.000000            1    0.999
6  01/06/2005 16:00:00.000000            1    0.999
7  01/06/2005 16:00:00.000000            1    0.999
8  01/06/2005 17:00:00.000000            1    0.999
9  01/06/2005 17:00:00.000000            1    0.999

# Use DataFrameSource and load created DataFrame
source = DataFrameSource(
    df=test_df,
    max_rows=10000,
    timestamp_col="timestamp",
)
# Init source with the selected TimeBucket
source.init(TimeBucket.HOUR)
df, _ = source.get_data()
print(df)
                    timestamp predictions actuals
0  01/06/2005 13:00:00.000000           1   0.999
1  01/06/2005 13:00:00.000000           1   0.999
df, _ = source.get_data()
print(df)
                    timestamp predictions actuals
2  01/06/2005 14:00:00.000000           1   0.999
3  01/06/2005 14:00:00.000000           1   0.999

source.init(TimeBucket.DAY)
df, _ = source.get_data()
print(df)
                    timestamp predictions actuals
0  01/06/2005 13:00:00.000000           1   0.999
1  01/06/2005 13:00:00.000000           1   0.999
2  01/06/2005 14:00:00.000000           1   0.999
3  01/06/2005 14:00:00.000000           1   0.999
4  01/06/2005 15:00:00.000000           1   0.999
5  01/06/2005 15:00:00.000000           1   0.999
6  01/06/2005 16:00:00.000000           1   0.999
7  01/06/2005 16:00:00.000000           1   0.999
8  01/06/2005 17:00:00.000000           1   0.999
9  01/06/2005 17:00:00.000000           1   0.999 
```

返されたデータチャンクは、選択した `TimeBucket` に従います。 これは `MetricEvaluator` で役立ちます。 `TimeBucket` に加えて、ソースは、データチャンクを生成するとき、たとえば、上記の例と同じデータセットを使用する（ただし、 `max_rows` を `3` に設定する）とき、 `max_rows` パラメーターを順守します。

```
source = DataFrameSource(
    df=test_df,
    max_rows=3,
    timestamp_col="timestamp",
)
source.init(TimeBucket.DAY)
df, chunk_id = source.get_data()
print(df)
                    timestamp predictions actuals
0  01/06/2005 13:00:00.000000           1   0.999
1  01/06/2005 13:00:00.000000           1   0.999
2  01/06/2005 14:00:00.000000           1   0.999 
```

`DataRobotSource` では、1つのチャンクで返されるトレーニングデータのエクスポートを除き、すべてのエクスポートタイプに対して `TimeBucket` および `max_rows` パラメーターを指定できます。

## 追加のDataRobotデプロイプロパティの指定

`Deployment` クラスはヘルパークラスであり、関連するデプロイプロパティへのアクセスを提供します。 このクラスは、データを操作する適切なワークフローを選択するために、 `DataRobotSource` 内で使用されます。

```
import datarobot as dr
from dmm.data_source.datarobot.deployment import Deployment
DataRobotClient()
deployment = Deployment(deployment_id=deployment_id)

deployment_type = deployment.type()
target_column = deployment.target_column()
positive_class_label = deployment.positive_class_label()
negative_class_label = deployment.negative_class_label()
prediction_threshold = deployment.prediction_threshold()
.
.
. 
```
