Oracle NetSuite エンティティからの読み取り
前提条件
読み取り元の Oracle NetSuite オブジェクト。deposit または timebill などのオブジェクト名が必要です。次の表に、サポートされているエンティティを示します。
ソースに対応するエンティティ:
| エンティティ | フィルタリング可能 | Order By をサポートする | 制限をサポートする | SELECT * をサポートする | パーティション分割をサポートする |
|---|---|---|---|---|---|
| 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, =, != |
| 日付 | BETWEEN, =, <, <=, >, >= |
| DateTime | BETWEEN, <, <=, >, >= |
| 数値 | =, !=, <, <=, >, >= |
| ブール値 | =, != |
フィルター式のブール値に期待される入力形式:
| エンティティ | ブール「true」値の形式 | ブール「false」値の形式 | 例 |
|---|---|---|---|
| Item、Transaction Line、Transaction Accounting Line、Custom Record Type の各エンティティ | T または t | F または f | isinactive = "T" または isinactive = "t" |
| その他すべてのエンティティ | true | false | isinactive = true |
パーティショニングクエリ
フィールドベースのパーティション分割
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" }