

AWS Data Pipeline tidak lagi tersedia untuk pelanggan baru. Pelanggan yang sudah ada AWS Data Pipeline dapat terus menggunakan layanan seperti biasa. [Pelajari selengkapnya](https://aws.amazon.com/blogs/big-data/migrate-workloads-from-aws-data-pipeline/)

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Ekspresi dan Fungsi Alur
<a name="dp-expressions-functions"></a>

Bagian ini menjelaskan sintaks untuk menggunakan ekspresi dan fungsi dalam alur, termasuk tipe data terkait.

## Tipe Data Sederhana
<a name="dp-pipeline-datatypes"></a>

Tipe data berikut dapat ditetapkan sebagai nilai bidang.

**Topics**
+ [DateTime](#dp-datatype-datetime)
+ [Numerik](#dp-datatype-numeric)
+ [Referensi Objek](#dp-datatype-object-reference)
+ [Periode](#dp-datatype-period)
+ [String](#dp-datatype-section)

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

 AWS Data Pipeline mendukung tanggal dan waktu yang dinyatakan dalam format “YYYY-MM-DDTHH: MM: SS” hanya dalam format. UTC/GMT Contoh berikut menetapkan `startDateTime` bidang `Schedule` objek ke`1/15/2012, 11:59 p.m.`, di UTC/GMT zona waktu. 

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

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

 AWS Data Pipeline mendukung nilai bilangan bulat dan floating-point. 

### Referensi Objek
<a name="dp-datatype-object-reference"></a>

Sebuah objek dalam definisi alur. Ini bisa berupa objek saat ini, nama objek yang didefinisikan di tempat lain dalam alur, atau objek yang mencantumkan objek saat ini di bidang, direferensikan oleh kata kunci `node`. Untuk informasi selengkapnya tentang `node`, lihat [Mereferensikan Bidang dan Objek](dp-pipeline-expressions.md#dp-pipeline-expressions-reference). Untuk informasi selengkapnya tentang tipe objek alur, lihat [Referensi Objek Alur](dp-pipeline-objects.md). 

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

 Menunjukkan seberapa sering acara terjadwal harus dijalankan. Ini dinyatakan dalam format "*N* [`years`\$1`months`\$1`weeks`\$1`days`\$1`hours`\$1`minutes`]", di mana *N* adalah nilai bilangan bulat positif. 

Jangka waktu minimum adalah 15 menit dan jangka waktu maksimum adalah 3 tahun.

Contoh berikut mengatur bidang `period` objek `Schedule` menjadi 3 jam. Ini menciptakan jadwal yang berjalan setiap tiga jam.

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

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

 Nilai string standar. String harus diapit oleh kutipan ganda ("). Anda dapat menggunakan karakter garis miring terbalik (\$1) untuk keluar dari karakter dalam sebuah string. String multiline tidak didukung. 

Contoh berikut menunjukkan contoh nilai string yang valid untuk bidang `id`.

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

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

String juga dapat berisi ekspresi yang mengevaluasi nilai string. Ini dimasukkan ke dalam string, dan dibatasi dengan: "\$1\$1" dan "\$1". Contoh berikut menggunakan ekspresi untuk menyisipkan nama objek saat ini ke dalam jalur.

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

Untuk informasi selengkapnya tentang menggunakan ekspresi, lihat [Mereferensikan Bidang dan Objek](dp-pipeline-expressions.md#dp-pipeline-expressions-reference) dan [Evaluasi Ekspresi](dp-pipeline-expressions.md#dp-datatype-functions).

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

Ekspresi memungkinkan Anda untuk berbagi nilai di seluruh objek terkait. Ekspresi diproses oleh layanan AWS Data Pipeline web saat runtime, memastikan bahwa semua ekspresi diganti dengan nilai ekspresi. 

Ekspresi dibatasi oleh: "\$1\$1" dan "\$1". Anda dapat menggunakan ekspresi di objek definisi alur apa pun di mana string itu legal. Jika slot adalah referensi atau salah satu dari jenis ID, NAME, TYPE, SPHERE, nilainya tidak dievaluasi dan digunakan kata demi kata.

Ekspresi berikut memanggil salah satu AWS Data Pipeline fungsi. Untuk informasi selengkapnya, lihat [Evaluasi Ekspresi](#dp-datatype-functions).

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

## Mereferensikan Bidang dan Objek
<a name="dp-pipeline-expressions-reference"></a>

Ekspresi bisa menggunakan bidang objek saat ini di mana ekspresi ada, atau bidang objek lain yang ditautkan oleh referensi.

Format slot terdiri dari waktu pembuatan diikuti oleh waktu pembuatan objek, seperti `@S3BackupLocation_2018-01-31T11:05:33`. 

 Anda juga dapat mereferensikan ID slot persis yang ditentukan dalam definisi alur, seperti ID slot lokasi backup Amazon S3. Untuk mereferensikan ID slot, gunakan `#{parent.@id}`.

Dalam contoh berikut, bidang `filePath` mereferensikan bidang `id` di objek yang sama untuk membentuk nama file. Nilai `filePath` dievaluasi menjadi "`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"}
}
```

Untuk menggunakan bidang yang ada pada objek lain yang ditautkan oleh referensi, gunakan kata kunci `node`. Kata kunci ini hanya tersedia dengan objek alarm dan prasyarat.

Melanjutkan contoh sebelumnya, ekspresi dalam `SnsAlarm` dapat mereferensi ke rentang tanggal dan waktu dalam `Schedule`, karena `S3DataNode` mereferensikan keduanya.

 Secara khusus, bidang `FailureNotify` `message` dapat menggunakan bidang waktu aktif `@scheduledStartTime` dan `@scheduledEndTime` dari `ExampleSchedule`, karena referensi bidang `ExampleDataNode` `onFail` `FailureNotify` dan bidang referensi `schedule` `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"
},
```

**catatan**  
Anda dapat membuat alur yang memiliki dependensi, seperti tugas dalam alur Anda yang bergantung pada pekerjaan sistem atau tugas lain. Jika alur Anda memerlukan sumber daya tertentu, tambahkan dependensi tersebut ke alur menggunakan prasyarat yang Anda kaitkan dengan simpul data dan tugas. Ini membuat alur Anda lebih mudah untuk di-debug dan lebih tangguh. Selain itu, pertahankan dependensi Anda dalam satu alur jika memungkinkan, karena pemecahan masalah lintas alur sulit dilakukan.

## Ekspresi Terinduk
<a name="dp-datatype-nested"></a>

 AWS Data Pipeline memungkinkan Anda untuk membuat nilai sarang untuk membuat ekspresi yang lebih kompleks. Misalnya, untuk melakukan penghitungan waktu (kurangi 30 menit dari `scheduledStartTime`) dan memformat hasilnya untuk digunakan dalam definisi alur, Anda bisa menggunakan ekspresi berikut dalam aktivitas: 

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

 dan menggunakan `node` awalan jika ekspresi adalah bagian dari SnsAlarm atau Prasyarat: 

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

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

Ekspresi dapat dievaluasi pada daftar dan fungsi pada daftar. Misalnya, asumsikan bahwa daftar didefinisikan seperti berikut: `"myList":["one","two"]`. Jika daftar ini digunakan dalam ekspresi `#{'this is ' + myList}`, itu akan dievaluasi ke `["this is one", "this is two"]`. Jika Anda memiliki dua daftar, Data Pipeline pada akhirnya akan meratakannya dalam evaluasi mereka. Misalnya, jika `myList1` didefinisikan sebagai `[1,2]` dan `myList2` didefinisikan sebagai `[3,4]` maka ekspresi `[#{myList1}, #{myList2}]` akan dievaluasi menjadi `[1,2,3,4]`.

## Ekspresi simpul
<a name="dp-datatype-node"></a>

 AWS Data Pipeline menggunakan `#{node.*}` ekspresi di salah satu `SnsAlarm` atau `PreCondition` untuk referensi balik ke objek induk komponen pipeline. Karena `SnsAlarm` dan `PreCondition` direferensikan dari aktivitas atau sumber daya tanpa referensi balik dari mereka, `node` menyediakan cara untuk mereferensi ke pereferensi. Misalnya, definisi alur berikut menunjukkan bagaimana notifikasi kegagalan dapat menggunakan `node` untuk membuat referensi ke induknya, dalam hal ini `ShellCommandActivity`, dan menyertakan waktu mulai dan berakhir terjadwal induk dalam pesan `SnsAlarm`. scheduledStartTime Referensi pada ShellCommandActivity tidak memerlukan `node` awalan karena scheduledStartTime mengacu pada dirinya sendiri. 

**catatan**  
Kolom yang diawali dengan tanda AT (@) menunjukkan bahwa kolom tersebut adalah kolom waktu aktif.

```
{
  "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 mendukung referensi transitif untuk bidang yang ditentukan pengguna, tetapi bukan bidang runtime. Referensi transitif adalah referensi antara dua komponen alur yang bergantung pada komponen alur lain sebagai perantara. Contoh berikut menunjukkan referensi ke bidang yang ditentukan pengguna transitif dan referensi ke bidang waktu proses non-transitif, keduanya valid. Untuk informasi selengkapnya, lihat [Bidang yang ditentukan pengguna](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"
}
```

## Evaluasi Ekspresi
<a name="dp-datatype-functions"></a>

 AWS Data Pipeline menyediakan seperangkat fungsi yang dapat Anda gunakan untuk menghitung nilai bidang. Contoh berikut menggunakan fungsi `makeDate` untuk mengatur bidang `startDateTime` dari objek `Schedule` ke `"2011-05-24T0:00:00"` GMT/UTC. 

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

# Fungsi Matematika
<a name="dp-pipeline-reference-functions-math"></a>

Fungsi berikut tersedia untuk dikerjakan dengan nilai numerik. 


****  

| Fungsi | Deskripsi | 
| --- | --- | 
|  \$1  |  Penambahan. Contoh: `#{1 + 2}` Hasil: `3`  | 
|  -  |  Pengurangan. Contoh: `#{1 - 2}` Hasil: `-1`  | 
|  \$1  |  Perkalian. Contoh: `#{1 * 2}` Hasil: `2`  | 
|  /  |  Pembagian. Jika Anda membagi dua bilangan bulat, hasilnya terpotong. Contoh: `#{1 / 2}`, Hasil: `0` Contoh: `#{1.0 / 2}`, Hasil: `.5`  | 
|  ^  |  Eksponen. Contoh: `#{2 ^ 2}` Hasil: `4.0`  | 

# Fungsi String
<a name="dp-pipeline-reference-functions-string"></a>

 Fungsi berikut tersedia untuk bekerja dengan nilai string. 


****  

| Fungsi | Deskripsi | 
| --- | --- | 
|  \$1  |  Rangkaian. Nilai non-string pertama kali dikonversi ke string. Contoh: `#{"hel" + "lo"}` Hasil: `"hello"`  | 

# Fungsi Tanggal dan Waktu
<a name="dp-pipeline-reference-functions-datetime"></a>

 Fungsi-fungsi berikut tersedia untuk bekerja dengan DateTime nilai-nilai. Sebagai contoh, nilai dari `myDateTime` adalah `May 24, 2011 @ 5:10 pm GMT`. 

**catatan**  
 date/time AWS Data Pipeline Formatnya adalah Joda Time, yang merupakan pengganti kelas tanggal dan waktu Java. Untuk informasi lebih lanjut, lihat [Joda Time - Class DateTimeFormat](http://joda-time.sourceforge.net/apidocs/org/joda/time/format/DateTimeFormat.html).


****  

| Fungsi | Deskripsi | 
| --- | --- | 
|  `int day(DateTime myDateTime)`  |  Mendapat hari DateTime nilai sebagai bilangan bulat. Contoh: `#{day(myDateTime)}` Hasil: `24`  | 
|  `int dayOfYear(DateTime myDateTime)`  |  Mendapat hari tahun DateTime nilai sebagai bilangan bulat. Contoh: `#{dayOfYear(myDateTime)}` Hasil: `144`  | 
|  `DateTime firstOfMonth(DateTime myDateTime)`  |  Membuat DateTime objek untuk awal bulan dalam yang ditentukan DateTime. Contoh: `#{firstOfMonth(myDateTime)}` Hasil: `"2011-05-01T17:10:00z"`  | 
|  `String format(DateTime myDateTime,String format)`  |  Menciptakan objek String yang merupakan hasil dari konversi yang ditentukan DateTime menggunakan string format yang ditentukan. Contoh: `#{format(myDateTime,'YYYY-MM-dd HH:mm:ss z')}` Hasil: `"2011-05-24T17:10:00 UTC"`  | 
|  `int hour(DateTime myDateTime)`  |  Mendapat jam dari DateTime nilai sebagai bilangan bulat. Contoh: `#{hour(myDateTime)}` Hasil: `17`  | 
|  `DateTime makeDate(int year,int month,int day)`  |  Membuat DateTime objek, di UTC, dengan tahun, bulan, dan hari yang ditentukan, pada tengah malam. Contoh: `#{makeDate(2011,5,24)}` Hasil: `"2011-05-24T0:00:00z"`  | 
|  `DateTime makeDateTime(int year,int month,int day,int hour,int minute)`  |  Membuat DateTime objek, di UTC, dengan tahun, bulan, hari, jam, dan menit yang ditentukan. Contoh: `#{makeDateTime(2011,5,24,14,21)}` Hasil: `"2011-05-24T14:21:00z"`  | 
|  `DateTime midnight(DateTime myDateTime)`  |  Menciptakan DateTime objek untuk tengah malam saat ini, relatif terhadap yang ditentukan DateTime. Misalnya, di mana `MyDateTime` adalah `2011-05-25T17:10:00z`, hasilnya adalah sebagai berikut.  Contoh: `#{midnight(myDateTime)}` Hasil: `"2011-05-25T0:00:00z"`  | 
|  `DateTime minusDays(DateTime myDateTime,int daysToSub)`  |  Menciptakan DateTime objek yang merupakan hasil dari pengurangan jumlah hari yang ditentukan dari yang ditentukan. DateTime Contoh: `#{minusDays(myDateTime,1)}` Hasil: `"2011-05-23T17:10:00z"`  | 
|  `DateTime minusHours(DateTime myDateTime,int hoursToSub)`  |  Menciptakan DateTime objek yang merupakan hasil dari pengurangan jumlah jam yang ditentukan dari yang ditentukan. DateTime Contoh: `#{minusHours(myDateTime,1)}` Hasil: `"2011-05-24T16:10:00z"`  | 
|  `DateTime minusMinutes(DateTime myDateTime,int minutesToSub)`  |  Menciptakan DateTime objek yang merupakan hasil dari pengurangan jumlah menit yang ditentukan dari yang ditentukan. DateTime Contoh: `#{minusMinutes(myDateTime,1)}` Hasil: `"2011-05-24T17:09:00z"`  | 
|  `DateTime minusMonths(DateTime myDateTime,int monthsToSub)`  |  Menciptakan DateTime objek yang merupakan hasil dari pengurangan jumlah bulan yang ditentukan dari yang ditentukan. DateTime Contoh: `#{minusMonths(myDateTime,1)}` Hasil: `"2011-04-24T17:10:00z"`  | 
|  `DateTime minusWeeks(DateTime myDateTime,int weeksToSub)`  |  Menciptakan DateTime objek yang merupakan hasil pengurangan jumlah minggu yang ditentukan dari yang ditentukan. DateTime Contoh: `#{minusWeeks(myDateTime,1)}` Hasil: `"2011-05-17T17:10:00z"`  | 
|  `DateTime minusYears(DateTime myDateTime,int yearsToSub)`  |  Menciptakan DateTime objek yang merupakan hasil pengurangan jumlah tahun yang ditentukan dari yang ditentukan. DateTime Contoh: `#{minusYears(myDateTime,1)}` Hasil: `"2010-05-24T17:10:00z"`  | 
|  `int minute(DateTime myDateTime)`  |  Mendapat menit dari DateTime nilai sebagai bilangan bulat. Contoh: `#{minute(myDateTime)}` Hasil: `10`  | 
|  `int month(DateTime myDateTime)`  |  Mendapat bulan dari DateTime nilai sebagai bilangan bulat. Contoh: `#{month(myDateTime)}` Hasil: `5`  | 
|  `DateTime plusDays(DateTime myDateTime,int daysToAdd)`  |  Menciptakan DateTime objek yang merupakan hasil dari menambahkan jumlah hari yang ditentukan ke yang ditentukan DateTime. Contoh: `#{plusDays(myDateTime,1)}` Hasil: `"2011-05-25T17:10:00z"`  | 
|  `DateTime plusHours(DateTime myDateTime,int hoursToAdd)`  |  Menciptakan DateTime objek yang merupakan hasil dari menambahkan jumlah jam yang ditentukan ke yang ditentukan DateTime. Contoh: `#{plusHours(myDateTime,1)}` Hasil: `"2011-05-24T18:10:00z"`  | 
|  `DateTime plusMinutes(DateTime myDateTime,int minutesToAdd)`  |  Menciptakan DateTime objek yang merupakan hasil dari menambahkan jumlah menit yang ditentukan ke yang ditentukan DateTime. Contoh: `#{plusMinutes(myDateTime,1)}` Hasil: `"2011-05-24 17:11:00z"`  | 
|  `DateTime plusMonths(DateTime myDateTime,int monthsToAdd)`  |  Menciptakan DateTime objek yang merupakan hasil dari menambahkan jumlah bulan yang ditentukan ke yang ditentukan DateTime. Contoh: `#{plusMonths(myDateTime,1)}` Hasil: `"2011-06-24T17:10:00z"`  | 
|  `DateTime plusWeeks(DateTime myDateTime,int weeksToAdd)`  |  Menciptakan DateTime objek yang merupakan hasil dari menambahkan jumlah minggu yang ditentukan ke yang ditentukan DateTime. Contoh: `#{plusWeeks(myDateTime,1)}` Hasil: `"2011-05-31T17:10:00z"`  | 
|  `DateTime plusYears(DateTime myDateTime,int yearsToAdd)`  |  Menciptakan DateTime objek yang merupakan hasil dari menambahkan jumlah tahun yang ditentukan ke yang ditentukan DateTime. Contoh: `#{plusYears(myDateTime,1)}` Hasil: `"2012-05-24T17:10:00z"`  | 
|  `DateTime sunday(DateTime myDateTime)`  |  Membuat DateTime objek untuk hari Minggu sebelumnya, relatif terhadap yang ditentukan DateTime. Jika yang ditentukan DateTime adalah hari Minggu, hasilnya adalah yang ditentukan DateTime. Contoh: `#{sunday(myDateTime)}` Hasil: `"2011-05-22 17:10:00 UTC"`  | 
|  `int year(DateTime myDateTime)`  |  Mendapat tahun DateTime nilai sebagai bilangan bulat. Contoh: `#{year(myDateTime)}` Hasil: `2011`  | 
|  `DateTime yesterday(DateTime myDateTime)`  |  Membuat DateTime objek untuk hari sebelumnya, relatif terhadap yang ditentukan DateTime. Hasilnya sama dengan minusDays(1). Contoh: `#{yesterday(myDateTime)}` Hasil: `"2011-05-23T17:10:00z"`  | 

# Karakter khusus
<a name="dp-pipeline-characters"></a>

AWS Data Pipeline menggunakan karakter tertentu yang memiliki arti khusus dalam definisi pipeline, seperti yang ditunjukkan pada tabel berikut. 


****  

| Karakter khusus | Deskripsi | Contoh | 
| --- | --- | --- | 
| @ | Bidang waktu aktif. Karakter ini adalah prefiks nama bidang untuk bidang yang hanya tersedia saat alur berjalan. | @actualStartTime @failureReason @resourceStatus | 
| \$1 | Ekspresi Ekspresi dibatasi oleh: “\$1 \$1” dan “\$1” dan isi kawat gigi dievaluasi oleh. AWS Data Pipeline Untuk informasi selengkapnya, lihat [Ekspresi](dp-pipeline-expressions.md). | \$1 \$1format (myDateTime, 'YYYY-MM-dd hh:mm: ss')\$1 s3://amzn-s3-demo-bucket/\$1\$1id\$1.csv | 
| \$1 | Bidang terenkripsi. Karakter ini adalah awalan nama bidang untuk menunjukkan bahwa AWS Data Pipeline harus mengenkripsi isi bidang ini dalam perjalanan antara konsol atau CLI dan layanan. AWS Data Pipeline  | \$1kata sandi | 