先决条件
您要从中读取内容的 Oracle NetSuite 对象。您将需要 deposit
或 timebill
等对象名称。下表显示支持的实体。
源支持的实体:
实体 | 可以筛选 | 支持排序依据 | 支持限制 | 支持 SELECT * | 支持分区 |
---|---|---|---|---|---|
定金 | 是 | 否 | 是 | 是 | 是 |
商品描述 | 是 | 否 | 是 | 是 | 是 |
库存商品 | 是 | 否 | 是 | 是 | 是 |
商品履行 | 是 | 否 | 是 | 是 | 是 |
商品组 | 是 | 否 | 是 | 是 | 是 |
日记账条目 | 是 | 否 | 是 | 是 | 是 |
非库存采购商品 | 是 | 否 | 是 | 是 | 是 |
非库存转售商品 | 是 | 否 | 是 | 是 | 是 |
非库存销售商品 | 是 | 否 | 是 | 是 | 是 |
采购订单 | 是 | 否 | 是 | 是 | 是 |
子公司 | 是 | 否 | 是 | 是 | 是 |
供应商 | 是 | 否 | 是 | 是 | 是 |
供应商账单 | 是 | 否 | 是 | 是 | 是 |
供应商退货授权 | 是 | 否 | 是 | 是 | 是 |
工时账单 | 是 | 否 | 是 | 是 | 是 |
客户付款 | 是 | 否 | 是 | 是 | 是 |
配送请求 | 是 | 否 | 是 | 是 | 是 |
示例:
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, =, != |
Date | BETWEEN, =, <, <=, >, >= |
DateTime | BETWEEN, <, <=, >, >= |
数值 | =, !=, <, <=, >, >= |
布尔值 | =, != |
对查询进行分区
基于字段的分区
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
:分区的数量。
例如:
oracle-netsuite_read = glueContext.create_dynamic_frame.from_options(
connection_type="oracle-netsuite",
connection_options={
"connectionName": "connectionName",
"ENTITY_NAME": "company",
"API_VERSION": "v3",
"PARTITION_FIELD": "hs_object_id"
"LOWER_BOUND": "50"
"UPPER_BOUND": "16726619290"
"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"
}