从 Oracle NetSuite 实体中读取
先决条件
您要从中读取内容的 Oracle NetSuite 对象。您将需要 deposit 或 timebill 等对象名称。下表显示支持的实体。
源支持的实体:
| 实体 | 可以筛选 | 支持排序依据 | 支持限制 | 支持 SELECT * | 支持分区 |
|---|---|---|---|---|---|
| 定金 | 是 | 否 | 是 | 是 | 是 |
| 商品描述 | 是 | 否 | 是 | 是 | 是 |
| 库存商品 | 是 | 否 | 是 | 是 | 是 |
| 商品履行 | 是 | 否 | 是 | 是 | 是 |
| 商品组 | 是 | 否 | 是 | 是 | 是 |
| 日记账条目 | 是 | 否 | 是 | 是 | 是 |
| 非库存采购商品 | 是 | 否 | 是 | 是 | 是 |
| 非库存转售商品 | 是 | 否 | 是 | 是 | 是 |
| 非库存销售商品 | 是 | 否 | 是 | 是 | 是 |
| 采购订单 | 是 | 否 | 是 | 是 | 是 |
| 子公司 | 是 | 否 | 是 | 是 | 是 |
| Vendor | 是 | 否 | 是 | 是 | 是 |
| 供应商账单 | 是 | 否 | 是 | 是 | 是 |
| 供应商退货授权 | 是 | 否 | 是 | 是 | 是 |
| 工时账单 | 是 | 否 | 是 | 是 | 是 |
| 客户付款 | 是 | 否 | 是 | 是 | 是 |
| 配送请求 | 是 | 否 | 是 | 是 | 是 |
| Item | 支持 | 是 | 是 | 是 | 是 |
| 交易明细 | 支持 | 是 | 是 | 是 | 是 |
| 交易会计明细 | 支持 | 是 | 是 | 是 | 是 |
| 自定义记录类型(动态) | 支持 | 是 | 是 | 是 | 是 |
示例:
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, =, <, <=, >, >= |
| 日期时间 | BETWEEN, <, <=, >, >= |
| 数值 | =, !=, <, <=, >, >= |
| 布尔值 | =, != |
筛选表达式中布尔值的预期输入格式:
| 实体 | 布尔值“true”的格式 | 布尔值“false”的格式 | 示例 |
|---|---|---|---|
| 项目、交易明细、交易会计明细和自定义记录类型实体 | T 或 t | F 或 f | isinactive =“T”或 isinactive =“t” |
| 所有其他实体 | true | false | isinactive = true |
对查询进行分区
基于字段的分区
Oracle NetSuite 连接器具有动态元数据,因此可以动态选择基于字段的分区所支持的字段。数据类型为整数、大整数、日期或日期时间的字段支持基于字段的分区。
如果您想在 Spark 中利用并发,可以提供其他 Spark 选项:PARTITION_FIELD、LOWER_BOUND、UPPER_BOUND 和 NUM_PARTITIONS。使用这些参数,原始查询将被拆分为 NUM_PARTITIONS 个子查询,这些子查询可以由 Spark 任务同时执行。
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。使用此参数,原始查询将被拆分为 NUM_PARTITIONS 个子查询,这些子查询可以由 Spark 任务同时执行。
在基于记录的分区中,从 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" }