从 ServiceNow 实体中读取
先决条件
您要从中读取内容的 ServiceNow 表对象。您将需要 pa_bucket 或 incident 等对象名称。
示例:
servicenow_read = glueContext.create_dynamic_frame.from_options( connection_type="custom.spark", connection_options={ "connectionName": "servicenow-basicAuth", "ENTITY_NAME": "pa_buckets", "API_VERSION": "v2" "instanceUrl": "https://<instance-name>.service-now.com" } )
ServiceNow 实体和字段详细信息:
对于以下实体,ServiceNow 提供用于动态获取元数据的端点,以便在每个实体的数据类型级别捕获运算符支持。
实体 | 数据类型 | 支持的运算符 |
---|---|---|
表(动态实体) | 整数 | =, !=, <, <=, >, >=, BETWEEN |
BigDecimal | =, !=, <, <=, >, >=, BETWEEN | |
浮点型 | =, !=, <, <=, >, >=, BETWEEN | |
长整型 | =, !=, <, <=, >, >=, BETWEEN | |
Date | =, !=, <, <=, >, >=, BETWEEN | |
DateTime | =, !=, <, <=, >, >=, BETWEEN | |
布尔值 | =, != | |
String | =, !=, <, <=, >, >=, BETWEEN, LIKE | |
Struct | 不适用 |
注意
在连接器的响应中,结构数据类型将转换为字符串数据类型。
注意
DML_STATUS
是用于跟踪 CREATED/UPDATED 记录的附加用户定义属性。
对查询进行分区
基于字段的分区:
如果您想在 Spark 中利用并发,可以提供其他 Spark 选项:PARTITION_FIELD
、LOWER_BOUND
、UPPER_BOUND
和 NUM_PARTITIONS
。使用这些参数,原始查询将被拆分为 NUM_PARTITIONS
个子查询,这些子查询可以由 Spark 任务同时执行。
实体名称 | 分区字段 | 数据类型 |
---|---|---|
动态实体 | sys_mod_count | 整数 |
sys_created_on、sys_updated_on | DateTime |
PARTITION_FIELD
:用于对查询进行分区的字段的名称。LOWER_BOUND
:所选分区字段的包含下限值。对于日期时间字段,我们接受 Spark SQL 查询中使用的 Spark 时间戳格式。
有效值示例:
"2024-01-30T06:47:51.000Z"
UPPER_BOUND
:所选分区字段的排除上限值。NUM_PARTITIONS
:分区的数量。
下表描述实体分区字段支持详细信息:
例如:
servicenow_read = glueContext.create_dynamic_frame.from_options( connection_type="servicenow", connection_options={ "connectionName": "connectionName", "ENTITY_NAME": "pa_buckets", "API_VERSION": "v2", "instanceUrl": "https://<instance-name>.service-now.com" "PARTITION_FIELD": "sys_created_on" "LOWER_BOUND": "2024-01-30T06:47:51.000Z" "UPPER_BOUND": "2024-06-30T06:47:51.000Z" "NUM_PARTITIONS": "10" }
基于记录的分区:
如果您想在 Spark 中利用并发,可以提供附加 Spark 选项 NUM_PARTITIONS
。使用此参数,原始查询将被拆分为 NUM_PARTITIONS
个子查询,这些子查询可以由 Spark 任务同时执行。
在基于记录的分区中,从 ServiceNow API 查询存在的记录总数,然后将其除以提供的 NUM_PARTITIONS
数字。然后,每个子查询会同时获取生成的记录数。
NUM_PARTITIONS
:分区的数量。
例如:
servicenow_read = glueContext.create_dynamic_frame.from_options( connection_type="servicenow", connection_options={ "connectionName": "connectionName", "ENTITY_NAME": "pa_buckets", "API_VERSION": "v2", "instanceUrl": "https://<instance-name>.service-now.com" "NUM_PARTITIONS": "2" }