View a markdown version of this page

Menghubungkan data dalam beberapa file di Amazon S3 - AWS Glue DataBrew Panduan Developer

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

Menghubungkan data dalam beberapa file di Amazon S3

Dengan DataBrew konsol, Anda dapat menavigasi bucket dan folder Amazon S3 dan memilih file untuk kumpulan data Anda. Namun, kumpulan data tidak perlu dibatasi pada satu file.

Misalkan Anda memiliki bucket S3 bernama my-databrew-bucket yang berisi folder bernamadatabrew-input. Dalam folder itu, misalkan Anda memiliki sejumlah file JSON, semua dengan format file dan ekstensi .json file yang sama. Di konsol, Anda dapat menentukan URL sumber daris3://my-databrew-bucket/databrew-input/. Di DataBrew konsol, Anda kemudian dapat memilih folder ini. Dataset Anda terdiri dari semua file JSON di folder itu.

DataBrew dapat memproses semua file dalam folder S3, tetapi hanya jika kondisi berikut benar:

  • Semua file dalam folder memiliki format yang sama.

  • Semua file dalam folder memiliki ekstensi file yang sama.

Untuk informasi selengkapnya tentang format dan ekstensi file yang didukung, lihatDataBrew input formats.

Skema saat menggunakan banyak file sebagai kumpulan data

Saat menggunakan banyak file sebagai DataBrew kumpulan data, skema harus sama di semua file. Jika tidak, Project Workspace secara otomatis mencoba memilih salah satu skema dari beberapa file dan mencoba menyesuaikan sisa file kumpulan data dengan skema itu. Perilaku ini menghasilkan tampilan yang ditampilkan selama Project Workspace menjadi tidak teratur, dan akibatnya, output pekerjaan juga akan tidak teratur.

Jika file Anda harus memiliki skema yang berbeda, Anda perlu membuat beberapa kumpulan data dan memprofilkannya secara terpisah.

Menggunakan jalur berparameter untuk Amazon S3

Dalam beberapa kasus, Anda mungkin ingin membuat kumpulan data dengan file yang mengikuti konvensi penamaan tertentu, atau kumpulan data yang dapat menjangkau beberapa folder Amazon S3. Atau Anda mungkin ingin menggunakan kembali kumpulan data yang sama untuk data terstruktur identik yang dihasilkan secara berkala di lokasi S3 dengan jalur yang bergantung pada parameter tertentu. Contohnya adalah jalur yang diberi nama untuk tanggal produksi data.

DataBrew mendukung pendekatan ini dengan jalur S3 berparameter. Jalur berparameter adalah URL Amazon S3 yang berisi ekspresi reguler atau parameter jalur khusus, atau keduanya.

Mendefinisikan kumpulan data dengan jalur S3 menggunakan ekspresi reguler

Ekspresi reguler di jalur dapat berguna untuk mencocokkan beberapa file dari satu atau beberapa folder dan pada saat yang sama menyaring file yang tidak terkait di folder tersebut.

Berikut adalah beberapa contoh:

  • Tentukan kumpulan data termasuk semua file JSON dari folder yang namanya dimulai dengan. invoice

  • Tentukan kumpulan data termasuk semua file dalam folder dengan 2020 namanya.

Anda dapat menerapkan jenis pendekatan ini dengan menggunakan ekspresi reguler di jalur dataset S3. Ekspresi reguler ini dapat menggantikan substring apa pun di kunci URL S3 (tetapi bukan nama bucket).

Sebagai contoh kunci dalam URL S3, lihat yang berikut ini. Di sini, my-bucket adalah nama ember, US East (Ohio) adalah AWS Region, dan puppy.png merupakan nama kuncinya.

https://my-bucket.s3.us-west-2.amazonaws.com/puppy.png

Dalam jalur S3 berparameter, karakter apa pun di antara dua tanda kurung sudut (<dan>) diperlakukan sebagai ekspresi reguler. Dua contoh adalah sebagai berikut:

  • s3://my-databrew-bucket/databrew-input/invoice<.*>/data.jsoncocok dengan semua file bernamadata.json, dalam semua subfolder databrew-input yang namanya dimulai denganinvoice.

  • s3://my-databrew-bucket/databrew-input/<.*>2020<.*>/mencocokkan semua file 2020 dalam folder dengan namanya.

Dalam contoh ini, .* cocok dengan nol atau lebih karakter.

catatan

Anda hanya dapat menggunakan ekspresi reguler di bagian kunci jalur S3—bagian yang mengikuti nama bucket. Jadi, s3://my-databrew-bucket/<.*>-input/ valid, tetapi s3://my-<.*>-bucket/<.*>-input/ tidak.

Kami menyarankan Anda menguji ekspresi reguler Anda untuk memastikan bahwa mereka hanya cocok dengan URL S3 yang Anda inginkan, dan bukan yang tidak Anda inginkan.

Berikut adalah beberapa contoh ekspresi reguler lainnya:

  • <\d{2}>cocok dengan string yang terdiri dari tepat dua digit berturut-turut, misalnya 07 atau03, tetapi tidak. 1a2

  • <[a-z]+.*>cocok dengan string yang dimulai dengan satu atau lebih huruf Latin kecil dan memiliki nol atau lebih karakter lain setelahnya. Contohnya adalaha3,abc/def, ataua-z, tetapi tidakA2.

  • <[^/]+>cocok dengan string yang berisi karakter apa pun kecuali garis miring (/). Dalam URL S3, garis miring digunakan untuk memisahkan folder di jalur.

  • <.*=.*>cocok dengan string yang berisi tanda sama dengan (=), misalnya,, atau month=02 abc/day=2=10, tetapi tidak. test

  • <\d.*\d>cocok dengan string yang dimulai dan diakhiri dengan digit dan dapat memiliki karakter lain di antara digit, misalnya,1abc2, atau 01-02-032020/Jul/21, tetapi tidak123a.

Mendefinisikan kumpulan data dengan jalur S3 menggunakan parameter khusus

Mendefinisikan kumpulan data berparameter menggunakan parameter khusus menawarkan keuntungan dibandingkan menggunakan ekspresi reguler saat Anda mungkin ingin memberikan parameter untuk lokasi S3:

  • Anda dapat mencapai hasil yang sama dengan ekspresi reguler, tanpa perlu mengetahui sintaks untuk ekspresi reguler. Anda dapat menentukan parameter menggunakan istilah yang sudah dikenal seperti “dimulai dengan” dan “berisi.”

  • Saat Anda menentukan kumpulan data dinamis menggunakan parameter di jalur, Anda dapat menyertakan rentang waktu dalam definisi Anda, seperti “bulan lalu” atau “24 jam terakhir.” Dengan begitu, definisi dataset Anda akan digunakan nanti dengan data baru yang masuk.

Berikut adalah beberapa contoh kapan Anda mungkin ingin menggunakan kumpulan data dinamis:

  • Untuk menghubungkan beberapa file yang dipartisi berdasarkan tanggal terakhir diperbarui atau atribut bermakna lainnya ke dalam satu kumpulan data. Anda kemudian dapat menangkap atribut partisi ini sebagai kolom tambahan dalam kumpulan data.

  • Untuk membatasi file dalam kumpulan data ke lokasi S3 yang memenuhi kondisi tertentu. Misalnya, misalkan jalur S3 Anda berisi folder berbasis tanggal seperti. folder/2021/04/01/ Dalam hal ini, Anda dapat membuat parameter tanggal dan membatasinya ke kisaran tertentu seperti “antara 01 Mar 2021 dan 01 Apr 2021" atau “Minggu lalu.”

Untuk menentukan jalur menggunakan parameter, tentukan parameter dan tambahkan ke jalur Anda menggunakan format berikut:

s3://my-databrew-bucket/some-folder/{parameter1}/file-{parameter2}.json

catatan

Seperti halnya ekspresi reguler di jalur S3, Anda hanya dapat menggunakan parameter di bagian kunci jalur—bagian yang mengikuti nama bucket.

Dua bidang diperlukan dalam definisi parameter, nama dan jenis. Tipenya bisa berupa String, Number, atau Date. Parameter tipe Tanggal harus memiliki definisi format tanggal sehingga DataBrew dapat menafsirkan dan membandingkan nilai tanggal dengan benar. Secara opsional, Anda dapat menentukan kondisi pencocokan untuk parameter. Anda juga dapat memilih untuk menambahkan nilai parameter yang cocok sebagai kolom ke kumpulan data Anda saat sedang dimuat oleh DataBrew pekerjaan atau sesi interaktif.

Contoh

Mari kita pertimbangkan contoh mendefinisikan dataset dinamis menggunakan parameter di konsol. DataBrew Dalam contoh ini, asumsikan bahwa data input secara teratur ditulis ke dalam bucket S3 menggunakan lokasi seperti ini:

  • s3://databrew-dynamic-datasets/new-cases/UR/daily-report-2021-03-30.csv

  • s3://databrew-dynamic-datasets/new-cases/UR/daily-report-2021-03-31.csv

  • s3://databrew-dynamic-datasets/new-cases/US/daily-report-2021-03-30.csv

  • s3://databrew-dynamic-datasets/new-cases/US/daily-report-2021-03-31.csv

Ada dua bagian dinamis di sini: kode negara, seperti AS, dan tanggal dalam nama file seperti 2021-03-30. Di sini, Anda dapat menerapkan resep pembersihan yang sama untuk semua file. Katakanlah Anda ingin melakukan pekerjaan pembersihan Anda setiap hari. Berikut ini adalah bagaimana Anda dapat menentukan jalur berparameter untuk skenario ini:

  1. Arahkan ke file tertentu.

  2. Kemudian pilih bagian yang bervariasi, seperti tanggal, dan ganti dengan parameter. Dalam hal ini, ganti tanggal.

    Jalur S3 dengan tanggal 2021-03-23 disorot untuk penggantian dengan parameter.
  3. Buka menu konteks (klik kanan) untuk Buat parameter khusus dan atur properti untuknya:

    • Nama: tanggal laporan

    • Tipe: Tanggal

    • Format tanggal: yyyy- MM-dd (dipilih dari format yang telah ditentukan)

    • Kondisi (Rentang waktu): 24 jam terakhir

    • Tambahkan sebagai kolom: true (dicentang)

    Simpan bidang lain pada nilai defaultnya.

  4. Pilih Buat.

Setelah Anda melakukannya, Anda melihat jalur yang diperbarui, seperti pada tangkapan layar berikut.

Jalur S3 dengan placeholder parameter yang menampilkan 6 file yang cocok yang ditemukan di bucket.

Sekarang Anda dapat melakukan hal yang sama untuk kode negara dan membuat parameter sebagai berikut:

  • Nama: kode negara

  • Tipe: String

  • Tambahkan sebagai kolom: true (dicentang)

Anda tidak perlu menentukan kondisi jika semua nilai relevan. Di new-cases folder, misalnya, kami hanya memiliki subfolder dengan kode negara, jadi tidak perlu kondisi. Jika Anda memiliki folder lain untuk dikecualikan, Anda dapat menggunakan kondisi berikut.

Bidang nilai string yang berisi pola regex A-Z diikuti oleh 2 dalam tanda kurung.

Pendekatan ini membatasi subfolder kasus baru untuk berisi dua huruf Latin kapital.

Setelah parameterisasi ini, Anda hanya memiliki file yang cocok di kumpulan data kami dan dapat memilih Buat Dataset.

catatan

Saat Anda menggunakan rentang waktu relatif dalam kondisi, rentang waktu dievaluasi saat kumpulan data dimuat. Ini benar apakah rentang waktu yang telah ditentukan seperti “24 jam terakhir” atau rentang waktu khusus seperti “5 hari yang lalu”. Pendekatan evaluasi ini berlaku apakah kumpulan data dimuat selama inisialisasi sesi interaktif atau selama awal pekerjaan.

Setelah Anda memilih Buat Dataset, dataset dinamis Anda siap digunakan. Sebagai contoh, Anda dapat menggunakannya terlebih dahulu untuk membuat proyek dan menentukan resep pembersihan menggunakan DataBrew sesi interaktif. Kemudian Anda dapat membuat pekerjaan yang dijadwalkan untuk berjalan setiap hari. Pekerjaan ini mungkin menerapkan resep pembersihan ke file kumpulan data yang memenuhi kondisi parameter Anda pada saat pekerjaan dimulai.

Kondisi yang didukung untuk kumpulan data dinamis

Anda dapat menggunakan kondisi untuk memfilter file S3 yang cocok menggunakan parameter atau atribut tanggal modifikasi terakhir.

Berikut ini, Anda dapat menemukan daftar kondisi yang didukung untuk setiap jenis parameter.

Kondisi yang digunakan dengan parameter String
Nama dalam DataBrew SDK Sinonim SDK Nama di DataBrew konsol Deskripsi

adalah

persamaan, ==

Tepat

Nilai parameter sama dengan nilai yang diberikan dalam kondisi.

tidak

bukan persamaan,! =

Is not

Nilai parameter tidak sama dengan nilai yang diberikan dalam kondisi.

mengandung

Contains

Nilai string parameter berisi nilai yang disediakan dalam kondisi.

tidak mengandung

Tidak mengandung

Nilai string parameter tidak berisi nilai yang disediakan dalam kondisi.

mulai_dengan

Starts with

Nilai string parameter dimulai dengan nilai yang disediakan dalam kondisi.

bukan starts_with

Tidak dimulai dengan

Nilai string parameter tidak dimulai dengan nilai yang disediakan dalam kondisi.

berakhir_dengan

Ends with

Nilai string parameter berakhir dengan nilai yang disediakan dalam kondisi.

tidak berakhir_dengan

Tidak berakhir dengan

Nilai string parameter tidak berakhir dengan nilai yang disediakan dalam kondisi.

korek api

Cocok

Nilai parameter cocok dengan ekspresi reguler yang disediakan dalam kondisi.

tidak cocok

Tidak cocok

Nilai parameter tidak cocok dengan ekspresi reguler yang disediakan dalam kondisi.

catatan

Semua kondisi untuk parameter String menggunakan perbandingan peka huruf besar/kecil. Jika Anda tidak yakin tentang kasus yang digunakan di jalur S3, Anda dapat menggunakan kondisi “cocok” dengan nilai ekspresi reguler yang dimulai dengan(?i). Melakukan hal ini menghasilkan perbandingan case-insensitive.

Misalnya, misalkan Anda ingin parameter string Anda dimulaiabc, tetapi Abc atau ABC juga dimungkinkan. Dalam hal ini, Anda dapat menggunakan kondisi “cocok” dengan (?i)^abc sebagai nilai kondisi.

Kondisi yang digunakan dengan parameter Angka
Nama dalam DataBrew SDK Sinonim SDK Nama di DataBrew konsol Deskripsi

adalah

persamaan, ==

Tepat

Nilai parameter sama dengan nilai yang diberikan dalam kondisi.

tidak

bukan persamaan,! =

Is not

Nilai parameter tidak sama dengan nilai yang diberikan dalam kondisi.

kurang_dari

lt, <

Kurang dari

Nilai numerik parameter kurang dari nilai yang disediakan dalam kondisi.

less_than_equal

lte, <=

Kurang dari atau sama dengan

Nilai numerik parameter kurang dari atau sama dengan nilai yang diberikan dalam kondisi.

lebih besar_dari

gt, >

Lebih besar dari

Nilai numerik parameter lebih besar dari nilai yang diberikan dalam kondisi.

lebih besar_than_equal

gte, >=

Lebih besar dari atau sama dengan

Nilai numerik parameter lebih besar dari atau sama dengan nilai yang diberikan dalam kondisi.

Kondisi yang digunakan dengan parameter Tanggal
Nama dalam DataBrew SDK Nama di DataBrew konsol Format nilai kondisi (SDK) Deskripsi

setelah

Mulai

Format tanggal ISO 8601 seperti atau 2021-03-30T01:00:00Z 2021-03-30T01:00-07:00

Nilai parameter tanggal adalah setelah tanggal yang diberikan dalam kondisi.

sebelumnya

Akhiri

Format tanggal ISO 8601 seperti atau 2021-03-30T01:00:00Z 2021-03-30T01:00-07:00

Nilai parameter tanggal sebelum tanggal yang diberikan dalam kondisi.

relatif_after

Mulai (relatif)

Jumlah satuan waktu positif atau negatif, seperti -48h atau+7d.

Nilai parameter tanggal adalah setelah tanggal relatif yang diberikan dalam kondisi.

Tanggal relatif dievaluasi saat dataset dimuat, baik saat sesi interaktif diinisialisasi atau saat pekerjaan terkait dimulai. Ini adalah momen yang disebut “sekarang” dalam contoh.

relatif_before

Akhir (relatif)

Jumlah satuan waktu positif atau negatif, seperti -48h atau+7d.

Nilai parameter tanggal sebelum tanggal relatif yang disediakan dalam kondisi.

Tanggal relatif dievaluasi saat dataset dimuat, baik saat sesi interaktif diinisialisasi atau saat pekerjaan terkait dimulai. Ini adalah momen yang disebut “sekarang” dalam contoh.

Jika Anda menggunakan SDK, berikan tanggal relatif dalam format berikut:±{number_of_time_units}{time_unit}. Anda dapat menggunakan unit waktu ini:

  • -1h (1 jam lalu)

  • +2d (2 hari dari sekarang)

  • -120m (120 menit lalu)

  • 5000s (5.000 detik dari sekarang)

  • -3w (3 minggu lalu)

  • +4M (4 bulan dari sekarang)

  • -1y (1 tahun lalu)

Tanggal relatif dievaluasi saat dataset dimuat, baik saat sesi interaktif diinisialisasi atau saat pekerjaan terkait dimulai. Ini adalah momen yang disebut “sekarang” dalam contoh sebelumnya.

Mengkonfigurasi pengaturan untuk kumpulan data dinamis

Selain menyediakan jalur S3 berparameter, Anda dapat mengonfigurasi pengaturan lain untuk kumpulan data dengan banyak file. Pengaturan ini memfilter file S3 berdasarkan tanggal modifikasi terakhir dan membatasi jumlah file.

Mirip dengan menyetel parameter tanggal di jalur, Anda dapat menentukan rentang waktu saat file yang cocok diperbarui dan hanya menyertakan file tersebut ke dalam kumpulan data Anda. Anda dapat menentukan rentang ini menggunakan tanggal absolut seperti “30 Maret 2021" atau rentang relatif seperti “24 jam terakhir”.

Tentukan kotak centang rentang tanggal terakhir yang diperbarui yang dipilih dengan menu tarik-turun 24 jam terakhir.

Untuk membatasi jumlah file yang cocok, pilih sejumlah file yang lebih besar dari 0 dan apakah Anda menginginkan file pencocokan terbaru atau tertua.

Kotak centang dipilih untuk Tentukan jumlah file yang akan disertakan dengan dropdown terbaru dan 10 file.