

AWS Data Pipeline non è più disponibile per i nuovi clienti. I clienti esistenti di AWS Data Pipeline possono continuare a utilizzare il servizio normalmente. [Ulteriori informazioni](https://aws.amazon.com/blogs/big-data/migrate-workloads-from-aws-data-pipeline/)

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à.

# Funzioni ed espressioni della pipeline
<a name="dp-expressions-functions"></a>

Questa sezione illustra la sintassi per l'utilizzo di espressioni e funzioni in pipeline, inclusi i tipi di dati associati.

## Tipi di dati di esempio
<a name="dp-pipeline-datatypes"></a>

I seguenti tipi di dati possono essere impostati come valori di campi.

**Topics**
+ [DateTime](#dp-datatype-datetime)
+ [Numerico](#dp-datatype-numeric)
+ [Riferimenti agli oggetti](#dp-datatype-object-reference)
+ [Periodo](#dp-datatype-period)
+ [Stringa](#dp-datatype-section)

### DateTime
<a name="dp-datatype-datetime"></a>

 AWS Data Pipeline supporta solo la data e l'ora espresse nel formato «YYYY-MM-DDTHH:MM:SS». UTC/GMT L'esempio seguente imposta il campo di un oggetto su, nel fuso orario. `startDateTime` `Schedule` `1/15/2012, 11:59 p.m.` UTC/GMT 

```
"startDateTime" : "2012-01-15T23:59:00"
```

### Numerico
<a name="dp-datatype-numeric"></a>

 AWS Data Pipeline supporta sia numeri interi che valori a virgola mobile. 

### Riferimenti agli oggetti
<a name="dp-datatype-object-reference"></a>

Un oggetto nella definizione di pipeline. Questo può essere l'oggetto corrente, il nome di un oggetto definito altrove nella pipeline o un oggetto che elenca l'oggetto corrente in un campo, a cui si fa riferimento con la parola chiave `node`. Per ulteriori informazioni su `node`, consultare [Riferimento a campi e oggetti](dp-pipeline-expressions.md#dp-pipeline-expressions-reference). Per ulteriori informazioni sui tipi di oggetti della pipeline, consulta [Riferimento all'oggetto pipeline](dp-pipeline-objects.md). 

### Periodo
<a name="dp-datatype-period"></a>

 Indica con quale frequenza deve essere eseguito un evento programmato. È espresso nel formato "*N* [`years`\$1`months`\$1`weeks`\$1`days`\$1`hours`\$1`minutes`]", dove *N* è un valore intero positivo. 

La durata minima è pari a 15 minuti, mentre la durata massima è di 3 anni.

L'esempio seguente imposta il campo `period` di un oggetto `Schedule` su 3 ore. In questo modo si crea una pianificazione che viene eseguita ogni tre ore.

```
"period" : "3 hours"
```

### Stringa
<a name="dp-datatype-section"></a>

 Valori della stringa standard. Le stringhe devono essere racchiusi tra doppie virgolette ("). È possibile utilizzare la barra rovesciata (\$1) per ignorare i caratteri in una stringa. Le stringhe a più righe non sono supportate. 

I seguenti esempi mostrano esempi di valori di stringhe validi per il campo `id`.

```
"id" : "My Data Object"

"id" : "My \"Data\" Object"
```

Le stringhe possono anche contenere espressioni che valutano i valori della stringa. Questi vengono inseriti nella stringa e sono delimitati con:"\$1\$1" e "\$1". L'esempio seguente utilizza un'espressione per inserire il nome dell'oggetto corrente in un percorso.

```
"filePath" : "s3://amzn-s3-demo-bucket/#{name}.csv"
```

Per ulteriori informazioni sull'utilizzo delle espressioni, vedi [Riferimento a campi e oggetti](dp-pipeline-expressions.md#dp-pipeline-expressions-reference) e [Valutazione delle espressioni](dp-pipeline-expressions.md#dp-datatype-functions).

# Espressioni
<a name="dp-pipeline-expressions"></a>

Le espressioni consentono di condividere un valore negli oggetti correlati. Le espressioni vengono elaborate dal servizio AWS Data Pipeline Web in fase di esecuzione, assicurando che tutte le espressioni vengano sostituite con il valore dell'espressione. 

Le espressioni sono delimitate da:"\$1\$1" e "\$1". È possibile utilizzare un'espressione in qualsiasi oggetto di definizione della pipeline in cui una stringa è legale. Se uno slot è un riferimento o uno di tipo ID, NAME, TYPE e SPHERE, il valore non viene valutato e viene utilizzato integralmente.

L'espressione seguente chiama una delle AWS Data Pipeline funzioni. Per ulteriori informazioni, consulta [Valutazione delle espressioni](#dp-datatype-functions).

```
#{format(myDateTime,'YYYY-MM-dd hh:mm:ss')}
```

## Riferimento a campi e oggetti
<a name="dp-pipeline-expressions-reference"></a>

Le espressioni possono utilizzare i campi dell'oggetto corrente in cui l'espressione esistente o i campi di un altro oggetto collegato da un riferimento.

Un formato di slot è composto da un tempo di creazione seguito dal momento della creazione dell'oggetto, ad esempio `@S3BackupLocation_2018-01-31T11:05:33`. 

 Puoi anche fare riferimento all'ID esatto dello slot specificato nella definizione della pipeline, ad esempio l'ID dello slot della posizione di backup di Amazon S3. Per fare riferimento all'ID dello slot, utilizzare `#{parent.@id}`.

In questo esempio il campo `filePath` si riferisce al campo `id` nello stesso oggetto per creare un nome di file. Il valore di `filePath` restituisce "`s3://amzn-s3-demo-bucket/ExampleDataNode.csv`". 

```
{
  "id" : "ExampleDataNode",
  "type" : "S3DataNode",
  "schedule" : {"ref" : "ExampleSchedule"},
  "filePath" : "s3://amzn-s3-demo-bucket/#{parent.@id}.csv",
  "precondition" : {"ref" : "ExampleCondition"},
  "onFail" : {"ref" : "FailureNotify"}
}
```

Per usare un campo esistente su un altro oggetto collegato da un riferimento, utilizzare la parola chiave `node`. Questa parola chiave è disponibile solo con allarmi e oggetti di precondizione.

Per continuare con l'esempio precedente, un'espressione in un `SnsAlarm` può fare riferimento alla data e all'intervallo di tempo in un `Schedule`, poiché `S3DataNode` si riferisce a entrambi.

 Nello specifico, il campo `message` di `FailureNotify` può utilizzare i campi di runtime `@scheduledStartTime` e `@scheduledEndTime` di `ExampleSchedule`, poiché il campo `onFail` di `ExampleDataNode` fa riferimento a `FailureNotify` e il relativo campo `schedule` fa riferimento a `ExampleSchedule`.

```
{  
    "id" : "FailureNotify",
    "type" : "SnsAlarm",
    "subject" : "Failed to run pipeline component",
    "message": "Error for interval #{node.@scheduledStartTime}..#{node.@scheduledEndTime}.",
    "topicArn":"arn:aws:sns:us-east-1:28619EXAMPLE:ExampleTopic"
},
```

**Nota**  
È possibile creare pipeline con dipendenze, ad esempio le attività nella pipeline che dipendono dal lavoro di altri sistemi o attività. Se la pipeline richiede alcune risorse, aggiungere tali dipendenze alla pipeline utilizzando le precondizioni associate ai nodi di dati e alle attività. In questo modo il debug della pipeline è più semplice e la pipeline stessa è più resiliente. Inoltre, mantenere le dipendenze all'interno di una singola pipeline quando è possibile, perché la risoluzione dei problemi in più pipeline è difficile.

## Espressioni nidificate
<a name="dp-datatype-nested"></a>

 AWS Data Pipeline consente di annidare valori per creare espressioni più complesse. Ad esempio, per eseguire un calcolo relativo al tempo (sottrarre 30 minuti da `scheduledStartTime`) e utilizzare il risultato in una definizione di pipeline, è possibile usare la seguente espressione in un'attività: 

```
#{format(minusMinutes(@scheduledStartTime,30),'YYYY-MM-dd hh:mm:ss')}
```

 e utilizzando il `node` prefisso se l'espressione fa parte di una precondizione SnsAlarm or: 

```
#{format(minusMinutes(node.@scheduledStartTime,30),'YYYY-MM-dd hh:mm:ss')}
```

## Elenchi
<a name="dp-datatype-list-function"></a>

Le espressioni possono essere valutate su elenchi e su funzioni degli elenchi. Ad esempio, supponiamo che un elenco viene definito come il seguente: `"myList":["one","two"]`. Se l'elenco viene utilizzato nell'espressione `#{'this is ' + myList}`, restituirà `["this is one", "this is two"]`. Se si dispone di due elenchi, Data Pipeline finirà per appiattirli nella valutazione. Ad esempio, se `myList1` è definito come `[1,2]` e `myList2` è definito come `[3,4]`, allora l'espressione `[#{myList1}, #{myList2}]` restituirà `[1,2,3,4]`.

## Espressione del nodo
<a name="dp-datatype-node"></a>

 AWS Data Pipeline utilizza l'`#{node.*}`espressione in una delle due `SnsAlarm` o `PreCondition` come riferimento all'oggetto principale di un componente della pipeline. Poiché `SnsAlarm` e `PreCondition` sono citati da un'attività o una risorsa senza alcun riferimento da parte loro, `node` fornisce il modo per consultare il referrer. Ad esempio, la seguente definizione di pipeline dimostra come una notifica di errore può utilizzare `node` per effettuare un riferimento al proprio padre, in questo caso `ShellCommandActivity`, e includere i tempi di inizio e di fine programmati nel messaggio `SnsAlarm`. Il scheduledStartTime riferimento on non ShellCommandActivity richiede il `node` prefisso perché scheduledStartTime si riferisce a se stesso. 

**Nota**  
I campi preceduti dal segno AT (@) sono campi di runtime.

```
{
  "id" : "ShellOut",
  "type" : "ShellCommandActivity",
  "input" : {"ref" : "HourlyData"},
  "command" : "/home/userName/xxx.sh #{@scheduledStartTime} #{@scheduledEndTime}",   
  "schedule" : {"ref" : "HourlyPeriod"},
  "stderr" : "/tmp/stderr:#{@scheduledStartTime}",
  "stdout" : "/tmp/stdout:#{@scheduledStartTime}",
  "onFail" : {"ref" : "FailureNotify"},
},
{  
  "id" : "FailureNotify",
  "type" : "SnsAlarm",
  "subject" : "Failed to run pipeline component",
  "message": "Error for interval #{node.@scheduledStartTime}..#{node.@scheduledEndTime}.",
  "topicArn":"arn:aws:sns:us-east-1:28619EXAMPLE:ExampleTopic"
},
```

AWS Data Pipeline supporta riferimenti transitivi per i campi definiti dall'utente, ma non per i campi di runtime. Un riferimento transitivo è un riferimento tra due componenti di pipeline che dipende da un altro componente di pipeline come intermediario. L'esempio seguente mostra un riferimento a un campo transitivo definito dall'utente e un riferimento a un campo di runtime non transitivo, entrambi validi. Per ulteriori informazioni, consulta [Campi definiti dall'utente](dp-writing-pipeline-definition.md#dp-userdefined-fields). 

```
{
  "name": "DefaultActivity1",
  "type": "CopyActivity",
  "schedule": {"ref": "Once"},
  "input": {"ref": "s3nodeOne"},  
  "onSuccess": {"ref": "action"},
  "workerGroup": "test",  
  "output": {"ref": "s3nodeTwo"}
},
{
  "name": "action",
  "type": "SnsAlarm",
  "message": "S3 bucket '#{node.output.directoryPath}' succeeded at #{node.@actualEndTime}.",
  "subject": "Testing",  
  "topicArn": "arn:aws:sns:us-east-1:28619EXAMPLE:ExampleTopic",
  "role": "DataPipelineDefaultRole"
}
```

## Valutazione delle espressioni
<a name="dp-datatype-functions"></a>

 AWS Data Pipeline fornisce una serie di funzioni che è possibile utilizzare per calcolare il valore di un campo. L'esempio seguente utilizza la funzione `makeDate` per impostare il campo `startDateTime` di un oggetto `Schedule` su GMT/UTC `"2011-05-24T0:00:00"`. 

```
"startDateTime" : "makeDate(2011,5,24)"
```

# Funzioni matematiche
<a name="dp-pipeline-reference-functions-math"></a>

Le seguenti funzioni sono disponibili per funzionare con i valori numerici. 


****  

| Funzione | Description | 
| --- | --- | 
|  \$1  |  Addizione. Ad esempio: `#{1 + 2}` Risultato: `3`  | 
|  -  |  Sottrazione. Ad esempio: `#{1 - 2}` Risultato: `-1`  | 
|  \$1  |  Moltiplicazione. Ad esempio: `#{1 * 2}` Risultato: `2`  | 
|  /  |  Divisione. Se si dividono due numeri interi, il risultato è troncato. Esempio: `#{1 / 2}`, Risultato: `0` Esempio: `#{1.0 / 2}`, Risultato: `.5`  | 
|  ^  |  Esponente. Ad esempio: `#{2 ^ 2}` Risultato: `4.0`  | 

# Funzioni stringa
<a name="dp-pipeline-reference-functions-string"></a>

 Le seguenti funzioni sono disponibili per funzionare con i valori delle stringhe. 


****  

| Funzione | Description | 
| --- | --- | 
|  \$1  |  Concatenazione. I valori non di stringa vengono prima convertiti in stringhe. Ad esempio: `#{"hel" + "lo"}` Risultato: `"hello"`  | 

# Funzioni di data e ora
<a name="dp-pipeline-reference-functions-datetime"></a>

 Le seguenti funzioni sono disponibili per lavorare con DateTime i valori. Per gli esempi, il valore di `myDateTime` è `May 24, 2011 @ 5:10 pm GMT`. 

**Nota**  
Il date/time formato di AWS Data Pipeline è Joda Time, che sostituisce le classi di data e ora Java. Per ulteriori informazioni, vedere [Joda Time - Class](http://joda-time.sourceforge.net/apidocs/org/joda/time/format/DateTimeFormat.html). DateTimeFormat


****  

| Funzione | Description | 
| --- | --- | 
|  `int day(DateTime myDateTime)`  |  Ottiene il giorno del DateTime valore come numero intero. Ad esempio: `#{day(myDateTime)}` Risultato: `24`  | 
|  `int dayOfYear(DateTime myDateTime)`  |  Ottiene il giorno dell'anno del DateTime valore come numero intero. Ad esempio: `#{dayOfYear(myDateTime)}` Risultato: `144`  | 
|  `DateTime firstOfMonth(DateTime myDateTime)`  |  Crea un DateTime oggetto per l'inizio del mese nel periodo specificato DateTime. Ad esempio: `#{firstOfMonth(myDateTime)}` Risultato: `"2011-05-01T17:10:00z"`  | 
|  `String format(DateTime myDateTime,String format)`  |  Crea un oggetto String che è il risultato della conversione di quanto specificato DateTime utilizzando la stringa di formato specificata. Ad esempio: `#{format(myDateTime,'YYYY-MM-dd HH:mm:ss z')}` Risultato: `"2011-05-24T17:10:00 UTC"`  | 
|  `int hour(DateTime myDateTime)`  |  Ottiene l'ora del DateTime valore come numero intero. Ad esempio: `#{hour(myDateTime)}` Risultato: `17`  | 
|  `DateTime makeDate(int year,int month,int day)`  |  Crea un DateTime oggetto, in UTC, con l'anno, il mese e il giorno specificati, a mezzanotte. Ad esempio: `#{makeDate(2011,5,24)}` Risultato: `"2011-05-24T0:00:00z"`  | 
|  `DateTime makeDateTime(int year,int month,int day,int hour,int minute)`  |  Crea un DateTime oggetto, in UTC, con l'anno, il mese, il giorno, l'ora e il minuto specificati. Ad esempio: `#{makeDateTime(2011,5,24,14,21)}` Risultato: `"2011-05-24T14:21:00z"`  | 
|  `DateTime midnight(DateTime myDateTime)`  |  Crea un DateTime oggetto per la mezzanotte corrente, rispetto a quella specificata. DateTime Per esempio, se `MyDateTime` è `2011-05-25T17:10:00z`, il risultato è come segue.  Ad esempio: `#{midnight(myDateTime)}` Risultato: `"2011-05-25T0:00:00z"`  | 
|  `DateTime minusDays(DateTime myDateTime,int daysToSub)`  |  Crea un DateTime oggetto che è il risultato della sottrazione del numero di giorni specificato dal valore specificato. DateTime Ad esempio: `#{minusDays(myDateTime,1)}` Risultato: `"2011-05-23T17:10:00z"`  | 
|  `DateTime minusHours(DateTime myDateTime,int hoursToSub)`  |  Crea un DateTime oggetto che è il risultato della sottrazione del numero di ore specificato dal valore specificato. DateTime Ad esempio: `#{minusHours(myDateTime,1)}` Risultato: `"2011-05-24T16:10:00z"`  | 
|  `DateTime minusMinutes(DateTime myDateTime,int minutesToSub)`  |  Crea un DateTime oggetto che è il risultato della sottrazione del numero di minuti specificato dal valore specificato. DateTime Ad esempio: `#{minusMinutes(myDateTime,1)}` Risultato: `"2011-05-24T17:09:00z"`  | 
|  `DateTime minusMonths(DateTime myDateTime,int monthsToSub)`  |  Crea un DateTime oggetto che è il risultato della sottrazione del numero di mesi specificato dal valore specificato. DateTime Ad esempio: `#{minusMonths(myDateTime,1)}` Risultato: `"2011-04-24T17:10:00z"`  | 
|  `DateTime minusWeeks(DateTime myDateTime,int weeksToSub)`  |  Crea un DateTime oggetto che è il risultato della sottrazione del numero di settimane specificato dal valore specificato. DateTime Ad esempio: `#{minusWeeks(myDateTime,1)}` Risultato: `"2011-05-17T17:10:00z"`  | 
|  `DateTime minusYears(DateTime myDateTime,int yearsToSub)`  |  Crea un DateTime oggetto che è il risultato della sottrazione del numero di anni specificato dal valore specificato. DateTime Ad esempio: `#{minusYears(myDateTime,1)}` Risultato: `"2010-05-24T17:10:00z"`  | 
|  `int minute(DateTime myDateTime)`  |  Ottiene il minuto del DateTime valore come numero intero. Ad esempio: `#{minute(myDateTime)}` Risultato: `10`  | 
|  `int month(DateTime myDateTime)`  |  Ottiene il mese del DateTime valore come numero intero. Ad esempio: `#{month(myDateTime)}` Risultato: `5`  | 
|  `DateTime plusDays(DateTime myDateTime,int daysToAdd)`  |  Crea un DateTime oggetto che è il risultato dell'aggiunta del numero di giorni specificato a quello specificato DateTime. Ad esempio: `#{plusDays(myDateTime,1)}` Risultato: `"2011-05-25T17:10:00z"`  | 
|  `DateTime plusHours(DateTime myDateTime,int hoursToAdd)`  |  Crea un DateTime oggetto che è il risultato dell'aggiunta del numero di ore specificato a quello specificato DateTime. Ad esempio: `#{plusHours(myDateTime,1)}` Risultato: `"2011-05-24T18:10:00z"`  | 
|  `DateTime plusMinutes(DateTime myDateTime,int minutesToAdd)`  |  Crea un DateTime oggetto che è il risultato dell'aggiunta del numero di minuti specificato a quello specificato DateTime. Ad esempio: `#{plusMinutes(myDateTime,1)}` Risultato: `"2011-05-24 17:11:00z"`  | 
|  `DateTime plusMonths(DateTime myDateTime,int monthsToAdd)`  |  Crea un DateTime oggetto che è il risultato dell'aggiunta del numero di mesi specificato a quello specificato DateTime. Ad esempio: `#{plusMonths(myDateTime,1)}` Risultato: `"2011-06-24T17:10:00z"`  | 
|  `DateTime plusWeeks(DateTime myDateTime,int weeksToAdd)`  |  Crea un DateTime oggetto che è il risultato dell'aggiunta del numero di settimane specificato a quello specificato DateTime. Ad esempio: `#{plusWeeks(myDateTime,1)}` Risultato: `"2011-05-31T17:10:00z"`  | 
|  `DateTime plusYears(DateTime myDateTime,int yearsToAdd)`  |  Crea un DateTime oggetto che è il risultato dell'aggiunta del numero di anni specificato a quello specificato DateTime. Ad esempio: `#{plusYears(myDateTime,1)}` Risultato: `"2012-05-24T17:10:00z"`  | 
|  `DateTime sunday(DateTime myDateTime)`  |  Crea un DateTime oggetto per la domenica precedente, relativo a quello specificato DateTime. Se il valore specificato DateTime è una domenica, il risultato è quello specificato DateTime. Ad esempio: `#{sunday(myDateTime)}` Risultato: `"2011-05-22 17:10:00 UTC"`  | 
|  `int year(DateTime myDateTime)`  |  Ottiene l'anno del DateTime valore come numero intero. Ad esempio: `#{year(myDateTime)}` Risultato: `2011`  | 
|  `DateTime yesterday(DateTime myDateTime)`  |  Crea un DateTime oggetto per il giorno precedente, relativo a quello specificato DateTime. Il risultato è lo stesso di minusDays(1). Ad esempio: `#{yesterday(myDateTime)}` Risultato: `"2011-05-23T17:10:00z"`  | 

# Caratteri speciali
<a name="dp-pipeline-characters"></a>

AWS Data Pipeline utilizza determinati caratteri che hanno un significato speciale nelle definizioni delle pipeline, come illustrato nella tabella seguente. 


****  

| Carattere speciale | Description | Esempi | 
| --- | --- | --- | 
| @ | Campo di runtime. Questo carattere è un prefisso del nome del campo per un campo che è disponibile solo quando viene eseguita una pipeline. | @actualStartTime @failureReason @resourceStatus | 
| \$1 | Espressione. Le espressioni sono delimitate da: «\$1 \$1» e «\$1» e il contenuto delle parentesi viene valutato da. AWS Data Pipeline Per ulteriori informazioni, consulta [Espressioni](dp-pipeline-expressions.md). | \$1 \$1format (myDateTime, 'YYYY-MM-dd hh:mm:ss')\$1 s3://amzn-s3-demo-bucket/\$1\$1id\$1.csv | 
| \$1 | Campo crittografato. Questo carattere è un prefisso del nome di campo che indica che AWS Data Pipeline deve crittografare il contenuto di questo campo in transito tra la console o la CLI e il servizio. AWS Data Pipeline  | \$1password | 