

# Oracle NetSuite エンティティからの読み取り
<a name="oracle-netsuite-reading-from-entities"></a>

**前提条件**

読み取り元の Oracle NetSuite オブジェクト。`deposit` または `timebill` などのオブジェクト名が必要です。次の表に、サポートされているエンティティを示します。

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


| エンティティ | フィルタリング可能 | Order By をサポートする | 制限をサポートする | SELECT \$1 をサポートする | パーティション分割をサポートする | 
| --- | --- | --- | --- | --- | --- | 
| Deposit | あり | なし | あり | あり | あり | 
| Description Item | あり | なし | あり | あり | あり | 
| Inventory Item | あり | なし | あり | あり | あり | 
| Item Fulfillment | あり | なし | あり | あり | あり | 
| Item Group | あり | なし | あり | あり | あり | 
| Journal Entry | あり | なし | あり | あり | あり | 
| Non-Inventory Purchase Item | あり | なし | あり | あり | あり | 
| Non-Inventory Resale Item | あり | なし | あり | あり | あり | 
| Non-Inventory Sale Item | あり | なし | あり | あり | あり | 
| Purchase Order | あり | なし | あり | あり | あり | 
| Subsidiary | あり | なし | あり | あり | あり | 
| Vendor | あり | なし | あり | あり | あり | 
| Vendor Bill | あり | なし | あり | あり | あり | 
| Vendor Return Authorization | あり | なし | あり | あり | あり | 
| Time Bill | あり | なし | あり | あり | あり | 
| Customer Payment | あり | なし | あり | あり | あり | 
| Fulfillment Request | あり | なし | あり | あり | あり | 
| Item | はい | あり | あり | あり | あり | 
| Transaction Line | はい | あり | あり | あり | あり | 
| Transaction Accounting Line | はい | あり | あり | あり | あり | 
| Custom Record Types (動的) | はい | あり | あり | あり | あり | 

**例**:

```
netsuiteerp_read = glueContext.create_dynamic_frame.from_options(
    connection_type="netsuiteerp",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "deposit",
        "API_VERSION": "v1"
    }
)
```

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

Oracle NetSuite は、選択したエンティティで使用可能なフィールドを動的にロードします。フィールドのデータ型に応じて、次のフィルター演算子がサポートされます。


| フィールドデータタイプ | サポートされているフィルター演算子 | 
| --- | --- | 
| 文字列 | LIKE, =, \$1= | 
| 日付 | BETWEEN, =, <, <=, >, >= | 
| DateTime | BETWEEN, <, <=, >, >= | 
| 数値 |  =, \$1=, <, <=, >, >= | 
| ブール値 |  =, \$1= | 

**フィルター式のブール値に期待される入力形式**：


| エンティティ | ブール「true」値の形式 | ブール「false」値の形式 | 例 | 
| --- | --- | --- | --- | 
| Item、Transaction Line、Transaction Accounting Line、Custom Record Type の各エンティティ | T または t | F または f | isinactive = "T" または isinactive = "t" | 
| その他すべてのエンティティ | true | false | isinactive = true | 

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

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

Oracle NetSuite コネクタには動的メタデータがあるため、フィールドベースのパーティショニングでサポートされているフィールドが動的に選択されます。フィールドベースのパーティショニングは、データ型が Integer、BigInteger、Date、または DateTime のフィールドでサポートされています。

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

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

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

  ```
  "TIMESTAMP \"1707256978123\""
  "TIMESTAMP \"1702600882\""
  "TIMESTAMP '2024-02-06T22:00:00:00.000Z'"
  "TIMESTAMP '2024-02-06T22:00:00:00Z'"
  "TIMESTAMP '2024-02-06'"
  ```
+ `UPPER_BOUND`: 選択したパーティションフィールドの**排他的**上限値。
+ `NUM_PARTITIONS`: パーティション数。

例:

```
netsuiteerp_read = glueContext.create_dynamic_frame.from_options(
    connection_type="netsuiteerp",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "deposit",
        "API_VERSION": "v1",
        "PARTITION_FIELD": "id",
        "LOWER_BOUND": "1",
        "UPPER_BOUND": "10000",
        "NUM_PARTITIONS": "10"
    }
```

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

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

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

例:

```
netsuiteerp_read = glueContext.create_dynamic_frame.from_options(
    connection_type="netsuiteerp",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "deposit",
        "API_VERSION": "v1",
        "NUM_PARTITIONS": "3"
    }
```