

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Lecture à partir de Salesforce
<a name="salesforce-reading-from-entities"></a>

**Prérequis**

Un objet Salesforce à partir duquel vous souhaitez lire. Vous aurez besoin du nom de l’objet, comme `Account`, `Case` ou `Opportunity`.

**Exemple :**

```
salesforce_read = glueContext.create_dynamic_frame.from_options(
    connection_type="salesforce",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "Account",
        "API_VERSION": "v60.0"
    }
)
```

## Requêtes de partitionnement
<a name="salesforce-reading-partitioning-queries"></a>

Vous pouvez indiquer les options Spark supplémentaires `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` et `NUM_PARTITIONS` si vous souhaitez utiliser la simultanéité dans Spark. Avec ces paramètres, la requête d’origine serait divisée en `NUM_PARTITIONS` nombres de sous-requêtes pouvant être exécutées simultanément par les tâches Spark.
+ `PARTITION_FIELD` : le nom du champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND` : une valeur limite inférieure **inclusive** du champ de partition choisi.

  Pour les champs Date ou Timestamp, le connecteur accepte le format d’horodatage Spark utilisé dans les requêtes SQL Spark.

  Exemples de valeurs valides :

  ```
  "TIMESTAMP \"1707256978123\""
  "TIMESTAMP '2018-01-01 00:00:00.000 UTC'"
  "TIMESTAMP \"2018-01-01 00:00:00 Pacific/Tahiti\"" 
  "TIMESTAMP \"2018-01-01 00:00:00\""
  "TIMESTAMP \"-123456789\" Pacific/Tahiti"
  "TIMESTAMP \"1702600882\""
  ```
+ `UPPER_BOUND` : une valeur limite supérieure **exclusive** du champ de partition choisi.
+ `NUM_PARTITIONS` : le nombre de partitions.
+  `TRANSFER_MODE` : prend en charge deux modes : `SYNC` et `ASYNC`. La valeur par défaut est `SYNC`. Lorsque cette option est définie sur `ASYNC`, la requête Bulk API 2.0 sera utilisée pour le traitement. 

Exemple :

```
salesforce_read = glueContext.create_dynamic_frame.from_options(
    connection_type="salesforce",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "Account",
        "API_VERSION": "v60.0",
        "PARTITION_FIELD": "SystemModstamp",
        "LOWER_BOUND": "TIMESTAMP '2021-01-01 00:00:00 Pacific/Tahiti'",
        "UPPER_BOUND": "TIMESTAMP '2023-01-10 00:00:00 Pacific/Tahiti'",
        "NUM_PARTITIONS": "10",
        "TRANSFER_MODE": "ASYNC" 
    }
)
```

## Option FILTER\$1PREDICATE
<a name="salesforce-filter-predicate"></a>

**FILTER\$1PREDICATE** : il s’agit d’un paramètre facultatif. Cette option est utilisée pour le filtre de requêtes.

Exemples de **FILTER\$1PREDICATE** :

```
     Case 1: FILTER_PREDICATE with single criterion
     Examples: 	
       LastModifiedDate >= TIMESTAMP '2025-04-01 00:00:00 Pacific/Tahiti'
       LastModifiedDate <= TIMESTAMP "2025-04-01 00:00:00"
       LastModifiedDate >= TIMESTAMP '2018-01-01 00:00:00.000 UTC'
       LastModifiedDate <= TIMESTAMP "-123456789 Pacific/Tahiti"
       LastModifiedDate <= TIMESTAMP "1702600882"

     Case 2: FILTER_PREDICATE with multiple criteria
     Examples: 
       LastModifiedDate >= TIMESTAMP '2025-04-01 00:00:00 Pacific/Tahiti' AND Id = "0012w00001CotGiAAJ"
       LastModifiedDate >= TIMESTAMP "1702600882" AND Id = "001gL000002i26MQAQ"

     Case 3: FILTER_PREDICATE single criterion with LIMIT
     Examples: 
       LastModifiedDate >= TIMESTAMP "1702600882" LIMIT 2

     Case 4: FILTER_PREDICATE with LIMIT
     Examples: 
       LIMIT 2
```