

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

**前提条件**

読み取り元の ServiceNow Tables オブジェクト。pa\_bucket や Incident などのオブジェクト名が必要になります。

**例**:

```
servicenow_read = glueContext.create_dynamic_frame.from_options(
    connection_type="servicenow",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "pa_buckets",
        "API_VERSION": "v2"
        "instanceUrl": "https://<instance-name>.service-now.com"
    }
)
```

**ServiceNow エンティティとフィールドの詳細**:

次のエンティティについて、ServiceNow はメタデータを動的に取得するためのエンドポイントを備えているため、オペレータのサポートは各エンティティのデータ型レベルでキャプチャされます。



- **表 (動的エンティティ)**
  - **データ型:** 整数 / **サポートされている演算子:**  =, \!=, <, <=, >, >=, BETWEEN
  - **データ型:** BigDecimal / **サポートされている演算子:**  =, \!=, <, <=, >, >=, BETWEEN
  - **データ型:** 浮動小数点数 / **サポートされている演算子:** =, \!=, <, <=, >, >=, BETWEEN
  - **データ型:** Long / **サポートされている演算子:** =, \!=, <, <=, >, >=, BETWEEN
  - **データ型:** 日付 / **サポートされている演算子:** =, \!=, <, <=, >, >=, BETWEEN
  - **データ型:** DateTime / **サポートされている演算子:** =, \!=, <, <=, >, >=, BETWEEN
  - **データ型:** ブール値 / **サポートされている演算子:**  =, \!=
  - **データ型:** 文字列 / **サポートされている演算子:** =、\!=、<、<=、>、>=、BETWEEN、LIKE
  - **データ型:** Struct / **サポートされている演算子:** 該当なし



**注記**  
構造体データ型は、コネクタの応答で文字列データ型に変換されます。

**注記**  
`DML_STATUS` は、CREATED/UPDATED レコードの追跡に使用される追加のユーザー定義属性です。

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

**フィールドベースのパーティショニング**:

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



- **動的エンティティ**
  - **パーティション分割フィールド:** sys\_mod\_count / **データ型:** 整数
  - **パーティション分割フィールド:** sys\_created\_on、sys\_updated\_on / **データ型:** DateTime


+ `PARTITION_FIELD`: クエリのパーティション化に使用するフィールドの名前。
+ `LOWER_BOUND`: 選択したパーティションフィールドの**包括的な**下限値。

  Datetime フィールドでは、SPark SQL クエリで使用される Spark タイムスタンプ形式を受け入れます。

  有効な値の例は次のとおりです:

  ```
  "2024-01-30T06:47:51.000Z"
  ```
+ `UPPER_BOUND`: 選択したパーティションフィールドの**排他的**上限値。
+ `NUM_PARTITIONS`: パーティション数。

次の表に、エンティティパーティション分割フィールドのサポートの詳細を示します:

例:

```
servicenow_read = glueContext.create_dynamic_frame.from_options(
    connection_type="servicenow",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "pa_buckets",
        "API_VERSION": "v2",
        "instanceUrl": "https://<instance-name>.service-now.com"
        "PARTITION_FIELD": "sys_created_on"
        "LOWER_BOUND": "2024-01-30T06:47:51.000Z"
        "UPPER_BOUND": "2024-06-30T06:47:51.000Z"
        "NUM_PARTITIONS": "10"
    }
```

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

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

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

例:

```
servicenow_read = glueContext.create_dynamic_frame.from_options(
    connection_type="servicenow",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "pa_buckets",
        "API_VERSION": "v2",
        "instanceUrl": "https://<instance-name>.service-now.com"
        "NUM_PARTITIONS": "2"
    }
```