本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
從 SAP OData 實體讀取
必要條件
您想要讀取的 SAP OData 物件。您需要物件/EntitySet 名稱,例如 /sap/opu/odata/sap/API_SALES_ORDER_SRV/A_SalesOrder。
範例:
sapodata_read = glueContext.create_dynamic_frame.from_options( connection_type="SAPOData", connection_options={ "connectionName": "connectionName", "ENTITY_NAME": "entityName" }, transformation_ctx=key)
SAP OData 實體和欄位詳細資訊:
實體 | 資料類型 | 支援的運算子 |
---|---|---|
資料表 (動態實體) | 字串 | =、!=、>、>=、<、<=、介於、如 |
Integer | =、!=、>、>=、<、<=、介於、如 | |
Long | =、!=、>、>=、<、<=、介於、如 | |
Double | =、!=、>、>=、<、<=、介於、如 | |
日期 | =、!=、>、>=、<、<=、介於、如 | |
DateTime | =、!=、>、>=、<、<=、介於、如 | |
Boolean | =, != | |
Struct | =、!=、>、>=、<、<=、介於、如 |
分割查詢
欄位型分割:
如果您想要NUM_PARTITIONS
在 Spark 中使用並行PARTITION_FIELD
,您可以提供其他 Spark 選項 LOWER_BOUND
UPPER_BOUND
、、 和 。透過這些參數,原始查詢會分割為 Spark 任務可同時執行的子查詢NUM_PARTITIONS
數目。Integer、Date 和 DateTime 欄位支援 SAP OData 連接器中的欄位型分割。
PARTITION_FIELD
:用於分割查詢的欄位名稱。LOWER_BOUND
:所選分割區欄位的包含下限值。針對 Datetime 欄位,我們接受 SPark SQL 查詢中使用的 Spark 時間戳記格式。
有效值的範例:
"2000-01-01T00:00:00.000Z"
UPPER_BOUND
:所選分割區欄位的專屬上限值。NUM_PARTITIONS
:分割區的數量。PARTITION_BY
:要執行的類型分割。要傳遞 "FIELD" 以欄位為基礎的分割。
範例:
sapodata= glueContext.create_dynamic_frame.from_options( connection_type="sapodata", connection_options={ "connectionName": "connectionName", "ENTITY_NAME": "/sap/opu/odata/sap/SEPM_HCM_SCENARIO_SRV/EmployeeSet", "PARTITION_FIELD": "validStartDate" "LOWER_BOUND": "2000-01-01T00:00:00.000Z" "UPPER_BOUND": "2020-01-01T00:00:00.000Z" "NUM_PARTITIONS": "10", "PARTITION_BY": "FIELD" }, transformation_ctx=key)
以記錄為基礎的分割:
原始查詢會分割為 Spark 任務可同時執行的子查詢NUM_PARTITIONS
數量。
記錄型分割僅支援非 ODP 實體,因為透過下一個字符/略過字符支援 ODP 實體中的分頁。
PARTITION_BY
:要執行的類型分割。如果以記錄為基礎的分割,則要傳遞「COUNT」。
sapodata= glueContext.create_dynamic_frame.from_options( connection_type="sapodata", connection_options={ "connectionName": "connectionName", "ENTITY_NAME": "/sap/opu/odata/sap/SEPM_HCM_SCENARIO_SRV/EmployeeSet", "NUM_PARTITIONS": "10", "PARTITION_BY": "COUNT" }, transformation_ctx=key)