Lectura de entidades de SAP OData - AWS Glue

Lectura de entidades de SAP OData

Requisito previo

Un objeto de SAP OData desde el cual desearía leer. Necesitará el nombre del objeto o conjunto de entidades, por ejemplo, /sap/opu/odata/sap/API_SALES_ORDER_SRV/A_SalesOrder.

Ejemplo:

sapodata_read = glueContext.create_dynamic_frame.from_options( connection_type="SAPOData", connection_options={ "connectionName": "connectionName", "ENTITY_NAME": "entityName" }, transformation_ctx=key)

Detalles de la entidad y del campo de SAP OData:

Entidad Tipo de datos Operadores admitidos
Tablas (entidades dinámicas) Cadena =, !=, >, >=, <, <=, BETWEEN, LIKE
Entero =, !=, >, >=, <, <=, BETWEEN, LIKE
Largo =, !=, >, >=, <, <=, BETWEEN, LIKE
Doble =, !=, >, >=, <, <=, BETWEEN, LIKE
Date =, !=, >, >=, <, <=, BETWEEN, LIKE
DateTime =, !=, >, >=, <, <=, BETWEEN, LIKE
Booleano =, !=
Struct =, !=, >, >=, <, <=, BETWEEN, LIKE

Consultas de particionamiento

Partición basada en campos:

Puede proporcionar las opciones adicionales de Spark PARTITION_FIELD, LOWER_BOUND, UPPER_BOUND y NUM_PARTITIONS si quiere utilizar la simultaneidad en Spark. Con estos parámetros, la consulta original se dividiría en un número NUM_PARTITIONS de subconsultas que las tareas de Spark pueden ejecutar simultáneamente. Los campos Entero, Fecha y hora y Fecha admiten la partición basada en campos en el conector SAP OData.

  • PARTITION_FIELD: el nombre del campo que se utilizará para particionar la consulta.

  • LOWER_BOUND: un valor de límite inferior inclusivo del campo de partición elegido.

    En el campo DateTime, aceptamos el formato de marca de tiempo de Spark que se utiliza en las consultas de Spark SQL.

    Ejemplos de valor válido:

    "2000-01-01T00:00:00.000Z"
  • UPPER_BOUND: un valor límite superior exclusivo del campo de partición elegido.

  • NUM_PARTITIONS: el número de particiones.

  • PARTITION_BY: el tipo de partición que se hará. En caso de partición basada en campos, se debe pasar “FIELD”.

Ejemplo:

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)

Partición basada en registros:

La consulta original se dividiría en un número NUM_PARTITIONS de subconsultas que las tareas de Spark pueden ejecutar simultáneamente.

La partición basada en registros solo se admite para entidades que no son de ODP, ya que la paginación en las entidades de ODP se admite a través del siguiente token o token de omisión.

  • PARTITION_BY: el tipo de partición que se hará. En caso de partición basada en registros, se debe usar “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)