

# Lectura de entidades de Oracle NetSuite
<a name="oracle-netsuite-reading-from-entities"></a>

**Requisito previo**

Un objeto de Oracle NetSuite desde el cual le gustaría leer. Necesitará el nombre del objeto, como `deposit` o `timebill`. En la siguiente tabla se muestran las entidades admitidas.

**Entidades compatibles como origen:**


| Entidad | Se puede filtrar | Admite Ordenar por | Admite límite | Admite SELECCIONAR \$1 | Admite partición | 
| --- | --- | --- | --- | --- | --- | 
| Depósito | Sí | No | Sí | Sí | Sí | 
| Artículo de la descripción | Sí | No | Sí | Sí | Sí | 
| Artículo de inventario | Sí | No | Sí | Sí | Sí | 
| Procesamiento de artículos | Sí | No | Sí | Sí | Sí | 
| Grupo de artículos | Sí | No | Sí | Sí | Sí | 
| Entrada de diario | Sí | No | Sí | Sí | Sí | 
| Artículo de compra no incluido en el inventario | Sí | No | Sí | Sí | Sí | 
| Artículo de reventa no incluido en el inventario | Sí | No | Sí | Sí | Sí | 
| Artículo de venta no incluido en el inventario | Sí | No | Sí | Sí | Sí | 
| Orden de compra | Sí | No | Sí | Sí | Sí | 
| Filial | Sí | No | Sí | Sí | Sí | 
| Proveedor | Sí | No | Sí | Sí | Sí | 
| Factura de proveedor | Sí | No | Sí | Sí | Sí | 
| Autorización de devolución del proveedor | Sí | No | Sí | Sí | Sí | 
| Factura de tiempo | Sí | No | Sí | Sí | Sí | 
| Pago de cliente | Sí | No | Sí | Sí | Sí | 
| Solicitud de cumplimiento | Sí | No | Sí | Sí | Sí | 
| Elemento | Sí | Sí | Sí | Sí | Sí | 
| Línea de transacción | Sí | Sí | Sí | Sí | Sí | 
| Línea de contabilidad de transacciones | Sí | Sí | Sí | Sí | Sí | 
| Tipos de registros personalizados (dinámicos) | Sí | Sí | Sí | Sí | Sí | 

**Ejemplo:**

```
netsuiteerp_read = glueContext.create_dynamic_frame.from_options(
    connection_type="netsuiteerp",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "deposit",
        "API_VERSION": "v1"
    }
)
```

**Detalles de la entidad y el campo de Oracle NetSuite**:

Oracle NetSuite carga dinámicamente los campos disponibles en la entidad seleccionada. Según el tipo de datos de los campos, se admiten los operadores de filtro siguientes.


| Tipo de datos de los campos | Operadores de filtro admitidos | 
| --- | --- | 
| Cadena | LIKE, =, \$1= | 
| Date | BETWEEN, =, <, <=, >, >= | 
| DateTime | BETWEEN, <, <=, >, >= | 
| Numérico |  =, \$1=, <, <=, >, >= | 
| Booleano |  =, \$1= | 

**Formato de entrada esperado para los valores booleanos en Expresión de filtro**:


| Entidad | Formato de valor booleano “true” | Formato de valor booleano “false” | Ejemplo | 
| --- | --- | --- | --- | 
| Entidades de Elemento, Línea de transacción, Línea de contabilidad de transacciones y Tipo de registro personalizado | T o t | F o f | isinactive = “T” o isinactive = “t” | 
| Todas las demás entidades | true | false | isinactive = true | 

## Consultas de partición
<a name="oracle-netsuite-reading-partitioning-queries"></a>

**Partición basada en campos**

El conector de Oracle NetSuite tiene metadatos dinámicos, de modo que los campos compatibles para la partición basada en campos se eligen de forma dinámica. La partición basada en campos se admite en los campos que tienen el tipo de datos Integer, BigInteger, Date o DateTime.

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.
+ `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.

  Para el campo de marca de tiempo, aceptamos el formato de marca de tiempo de Spark que se usa en las consultas de Spark SQL.

  Ejemplos de valores válidos:

  ```
  "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`: un valor límite superior **exclusivo** del campo de partición elegido.
+ `NUM_PARTITIONS`: el número de particiones.

Ejemplo:

```
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"
    }
```

**Partición basada en registros**

Puede proporcionar la opción adicional `NUM_PARTITIONS` de Spark si quiere usar la simultaneidad en Spark. Con estos parámetros, la consulta original se dividiría en `NUM_PARTITIONS` subconsultas que las tareas de Spark pueden ejecutar simultáneamente.

En la partición basada en registros, el número total de registros presentes se consulta desde la API de Oracle NetSuite y se divide entre el `NUM_PARTITIONS` proporcionado. A continuación, cada subconsulta obtiene simultáneamente el número de registros resultante.
+ `NUM_PARTITIONS`: el número de particiones.

Ejemplo:

```
netsuiteerp_read = glueContext.create_dynamic_frame.from_options(
    connection_type="netsuiteerp",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "deposit",
        "API_VERSION": "v1",
        "NUM_PARTITIONS": "3"
    }
```