

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 從 Oracle NetSuite 實體中讀取
<a name="oracle-netsuite-reading-from-entities"></a>

**必要條件**

您想要從中讀取的 Oracle NetSuite 物件。您將需要物件名稱，例如 `deposit` 或 `timebill`。下表顯示支援的實體。

**來源的支援實體**：


| 實體 | 可以篩選 | 支援排序依據 | 支援限制 | 支援 SELECT \$1 | 支援分區 | 
| --- | --- | --- | --- | --- | --- | 
| 訂金 | 是 | 否 | 是 | 是 | 是 | 
| 說明項目 | 是 | 否 | 是 | 是 | 是 | 
| 庫存項目 | 是 | 否 | 是 | 是 | 是 | 
| 項目履行 | 是 | 否 | 是 | 是 | 是 | 
| 項目群組 | 是 | 否 | 是 | 是 | 是 | 
| 日誌項 | 是 | 否 | 是 | 是 | 是 | 
| 非庫存購買項目 | 是 | 否 | 是 | 是 | 是 | 
| 非庫存轉售項目 | 是 | 否 | 是 | 是 | 是 | 
| 非庫存銷售項目 | 是 | 否 | 是 | 是 | 是 | 
| 購買訂單 | 是 | 否 | 是 | 是 | 是 | 
| 附屬公司 | 是 | 否 | 是 | 是 | 是 | 
| 廠商 | 是 | 否 | 是 | 是 | 是 | 
| 廠商帳單 | 是 | 否 | 是 | 是 | 是 | 
| 供應商退貨授權 | 是 | 否 | 是 | 是 | 是 | 
| 時間帳單 | 是 | 否 | 是 | 是 | 是 | 
| 客戶付款 | 是 | 否 | 是 | 是 | 是 | 
| 履行請求 | 是 | 否 | 是 | 是 | 是 | 
| 項目 | 是 | 是 | 是 | 是 | 是 | 
| 交易行 | 是 | 是 | 是 | 是 | 是 | 
| 交易會計行 | 是 | 是 | 是 | 是 | 是 | 
| 自訂記錄類型 (動態) | 是 | 是 | 是 | 是 | 是 | 

**範例**：

```
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 會在選取的實體下動態載入可用欄位。視欄位的資料類型而定，其支援下列篩選條件運算子。


| 欄位資料類型 | 支援的篩選條件運算子 | 
| --- | --- | 
| String | LIKE, =, \$1= | 
| Date | BETWEEN, =, <, <=, >, >= | 
| DateTime | BETWEEN, <, <=, >, >= | 
| 數值 |  =, \$1=, <, <=, >, >= | 
| Boolean |  =, \$1= | 

**篩選條件表達式中布林值的預期輸入格式**：


| 實體 | 布林值 "true" 值格式 | 布林值 "false" 值格式 | 範例 | 
| --- | --- | --- | --- | 
| 「項目」、「交易行」、「交易會計行」和「自訂記錄類型」實體 | 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"
    }
```