

# Domo エンティティからの読み取り
<a name="domo-reading-from-entities"></a>

**前提条件**

読み取り元の Domo オブジェクト。Data Set や Data Permission Policies などのオブジェクト名が必要です。次の表に、サポートされているエンティティを示します。

**ソースに対応するエンティティ**:


| エンティティ | フィルタリング可能 | 制限をサポートする | Order By をサポートする | Select \* をサポートする | パーティション分割をサポートする | 
| --- | --- | --- | --- | --- | --- | 
| データセット | はい | あり | あり | あり | あり | 
| Data Permission Policies | なし | なし | なし | あり | なし | 

**例**:

```
Domo_read = glueContext.create_dynamic_frame.from_options(
    connection_type="domo",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "dataset",
        "API_VERSION": "v1"
    }
```

## Domo エンティティとフィールドの詳細
<a name="domo-reading-from-entities-field-details"></a>

静的メタデータを持つエンティティ:



- **Data Permission Policies**
  - **フィールド:** id / **データ型:** Long / **サポートされている演算子:** 該当なし
  - **フィールド:** type / **データ型:** 文字列 / **サポートされている演算子:** 該当なし
  - **フィールド:** 名前 / **データ型:** 文字列 / **サポートされている演算子:** 該当なし
  - **フィールド:** フィルター / **データ型:** リスト / **サポートされている演算子:** 該当なし
  - **フィールド:** ユーザー / **データ型:** リスト / **サポートされている演算子:** 該当なし
  - **フィールド:** virtualUsers / **データ型:** リスト / **サポートされている演算子:** 該当なし
  - **フィールド:** グループ / **データ型:** リスト / **サポートされている演算子:** 該当なし



次のエンティティについて、Domo はメタデータを動的に取得するエンドポイントを提供するため、演算子のサポートはエンティティのデータ型レベルでキャプチャされます。



- **データセット**
  - **データ型:** 整数 / **サポートされている演算子:** =, \!=, <, >, >=, <=
  - **データ型:** Long / **サポートされている演算子:** =, \!=, <, >, >=, <=
  - **データ型:** 文字列 / **サポートされている演算子:** =、\!=、CONTAINS
  - **データ型:** 日付 / **サポートされている演算子:**  =、>、>=、<、<=、BETWEEN
  - **データ型:** DateTime / **サポートされている演算子:**  =、>、>=、<、<=、BETWEEN
  - **データ型:** ブール値 / **サポートされている演算子:** =, \!=
  - **データ型:** 倍精度 / **サポートされている演算子:** =, \!=, <, >, >=, <=
  - **データ型:** リスト / **サポートされている演算子:** 該当なし
  - **データ型:** Struct / **サポートされている演算子:** 該当なし



## パーティショニングクエリ
<a name="domo-reading-from-partitioning"></a>

**フィールドベースのパーティション分割**

Spark で同時実行を使用する場合は、追加の Spark オプション `PARTITION_FIELD`、`LOWER_BOUND`、`UPPER_BOUND`、および `NUM_PARTITIONS` を指定できます。これらのパラメータを使用すると、元のクエリは Spark タスクで同時に実行できるサブクエリの `NUM_PARTITIONS` の数に分割されます。
+ `PARTITION_FIELD`: クエリのパーティション化に使用するフィールドの名前。
+ `LOWER_BOUND`: 選択したパーティションフィールドの**包括的な**下限値。

  DateTime フィールドでは、ISO 形式の値を受け入れます。

  有効な値の例:

  ```
  "2023-01-15T11:18:39.205Z"
  ```

  Date フィールドでは、ISO 形式の値を受け入れます。

  有効な値の例:

  ```
  "2023-01-15"
  ```
+ `UPPER_BOUND`: 選択したパーティションフィールドの**排他的**上限値。

  有効な値の例:

  ```
  "2023-02-15T11:18:39.205Z"
  ```
+ `NUM_PARTITIONS`: パーティション数。

エンティティごとのパーティション分割フィールドのサポートの詳細は、次の表にまとめられています。



- **データセット**
  - **パーティション分割フィールド:** 任意の日付/時刻ベースのフィールド [動的メタデータ] / **データ型:** DateTime
  - **パーティション分割フィールド:** 任意の日付ベースのフィールド [動的メタデータ] / **データ型:** 日付



例:

```
Domo_read = glueContext.create_dynamic_frame.from_options(
    connection_type="domo",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "dataset",
        "API_VERSION": "v1",
        "PARTITION_FIELD": "permissionTime"
        "LOWER_BOUND": "2023-01-15T11:18:39.205Z"
        "UPPER_BOUND": "2023-02-15T11:18:39.205Z"
        "NUM_PARTITIONS": "2"
    }
```

**レコードベースのパーティション分割**

Spark で並行処理を使用する場合は、追加の Spark オプション `NUM_PARTITIONS` を指定できます。これらのパラメータを使用すると、元のクエリは Spark タスクで同時に実行できるサブクエリの `NUM_PARTITIONS` の数に分割されます。

レコードベースのパーティショニングでは、存在するレコードの合計数が Domo からクエリされ、指定された `NUM_PARTITIONS` 数で割られます。その後、結果のレコード数は、各サブクエリによって同時に取得されます。

例:

```
Domo_read = glueContext.create_dynamic_frame.from_options(
    connection_type="domo",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "dataset",
        "API_VERSION": "v1",
        "NUM_PARTITIONS": "2"
    }
```