

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Lettura da ServiceNow entità
<a name="servicenow-reading-from-entities"></a>

**Prerequisito**

Un oggetto ServiceNow Tables da cui desideri leggere. È necessario il nome dell'oggetto, come pa\_bucket o incident.

**Esempio**:

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

**ServiceNow dettagli dell'entità e del campo**:

Per le seguenti entità, ServiceNow fornisce endpoint per recuperare i metadati in modo dinamico, in modo che il supporto dell'operatore venga acquisito a livello di tipo di dati per ciascuna entità.



- **Tabelle (entità dinamiche)**
  - **Tipo di dati:** Numero intero / **Operatori supportati:**  =, \!=, <, <=, >, >=, BETWEEN
  - **Tipo di dati:** BigDecimal / **Operatori supportati:**  =, \!=, <, <=, >, >=, BETWEEN
  - **Tipo di dati:** Float / **Operatori supportati:** =, \!=, <, <=, >, >=, BETWEEN
  - **Tipo di dati:** Long / **Operatori supportati:** =, \!=, <, <=, >, >=, BETWEEN
  - **Tipo di dati:** Data / **Operatori supportati:** =, \!=, <, <=, >, >=, BETWEEN
  - **Tipo di dati:** DateTime / **Operatori supportati:** =, \!=, <, <=, >, >=, BETWEEN
  - **Tipo di dati:** Booleano / **Operatori supportati:**  =, \!=
  - **Tipo di dati:** Stringa / **Operatori supportati:** =, \!=, <, <=, >, >=, BETWEEN, LIKE
  - **Tipo di dati:** Struct / **Operatori supportati:** N/D



**Nota**  
Il tipo di dati Struct viene convertito nel tipo di dati String nella risposta del connettore.

**Nota**  
`DML_STATUS`è un attributo aggiuntivo definito dall'utente utilizzato per tenere traccia dei record. CREATED/UPDATED 

## Query di partizionamento
<a name="servicenow-reading-partitioning-queries"></a>

**Partizionamento basato sul campo**:

Puoi fornire le opzioni Spark aggiuntive `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` e `NUM_PARTITIONS` se desideri utilizzare la concorrenza in Spark. Con questi parametri, la query originale viene suddivisa in `NUM_PARTITIONS` query secondarie che possono essere eseguite contemporaneamente dalle attività Spark.



- **Entità dinamica**
  - **Campi di partizionamento:** sys\_mod\_count / **Tipo di dati:** Numero intero
  - **Campi di partizionamento:** sys\_created\_on, sys\_updated\_on / **Tipo di dati:** DateTime


+ `PARTITION_FIELD`: il nome del campo da utilizzare per partizionare la query.
+ `LOWER_BOUND`: un valore limite inferiore **inclusivo** del campo di partizione scelto.

  Per il campo Datetime, accettiamo il formato di timestamp Spark utilizzato nelle query SQL. SPark 

  Esempi di valori validi:

  ```
  "2024-01-30T06:47:51.000Z"
  ```
+ `UPPER_BOUND`: un valore limite superiore **esclusivo** del campo di partizione scelto.
+ `NUM_PARTITIONS`: il numero di partizioni.

La seguente tabella descrive i dettagli del campo di supporto del partizionamento delle entità:

Esempio:

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

**Partizionamento basato su record**:

Puoi fornire l'opzione Spark aggiuntiva `NUM_PARTITIONS` se desideri utilizzare la concorrenza in Spark. Con questo parametro, la query originale viene suddivisa in `NUM_PARTITIONS` query secondarie che possono essere eseguite contemporaneamente dalle attività Spark.

Nel partizionamento basato sui record, il numero totale di record presenti viene richiesto dall'API e diviso per il numero fornito. ServiceNow `NUM_PARTITIONS` Il numero di record risultante viene quindi recuperato contemporaneamente da ciascuna query secondaria.
+ `NUM_PARTITIONS`: il numero di partizioni.

Esempio:

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