Plugin RestAPI Reader dari Data Integration memungkinkan Anda membaca data dari RESTful API. Dengan mengonfigurasi URL permintaan HTTP, Anda dapat mengambil data menggunakan berbagai metode, termasuk mengambil data dalam rentang waktu tertentu, mengambil data terpaginasi, atau mengulangi parameter permintaan. Plugin ini mengonversi data yang diambil menjadi tipe data yang didukung oleh Data Integration dan meneruskannya ke plugin penulis (writer) hilir. Topik ini menjelaskan kasus penggunaan umum untuk sumber data RESTful API.
-
Topik ini menjelaskan praktik terbaik RestAPI Reader. Untuk penjelasan parameter yang digunakan dalam contoh, lihat Sumber data RestAPI (HTTP).
-
Untuk mengonfigurasi skrip RestAPI Writer, lihat Sumber data RestAPI (HTTP) dan Parameter skrip writer.
Latar Belakang
Topik ini menjelaskan cara RestAPI Reader Data Integration DataWorks membaca data dan mengembalikan hasilnya.
|
Property |
Description |
|
Response format |
Hanya respons JSON yang didukung. |
|
Readable data types |
Anda dapat membaca tipe data INT, BOOLEAN, DATE, DOUBLE, FLOAT, LONG, dan STRING. |
|
Request methods |
RestAPI Reader mendukung metode permintaan GET dan POST. |
|
Authentication methods |
RestAPI Reader mendukung tanpa autentikasi, atau salah satu metode autentikasi berikut: Basic Auth, Token Auth, dan Aliyun API Signature. Anda dapat memilih metode autentikasi yang didukung oleh sumber data Anda dan mengonfigurasi parameter autentikasi yang diperlukan.
|
Praktik 1: Membaca data dari API yang mengkueri data dalam rentang waktu
Skenario contoh: Definisi API
Dalam praktik ini, Anda membaca data dari RESTful API dan menulisnya ke tabel partisi MaxCompute. RESTful API contoh adalah API GET uji coba buatan sendiri yang mengembalikan data dalam rentang waktu tertentu berdasarkan parameter rentang waktu input. Detail API adalah sebagai berikut.
Saat melakukan operasi sebenarnya, sesuaikan konfigurasi berdasarkan API yang Anda gunakan. API dalam contoh ini hanya digunakan sebagai demonstrasi untuk memandu Anda melalui alur kerja.
-
Permintaan API contoh:
http://TestAPIAddress:Port/rest/test2?startTime=<StartTime>&endTime=<EndTime>Parameter startTime dan endTime menentukan rentang waktu untuk membaca data.
-
Respons contoh:
{ "status": "success", "totalNum": 187, "data": [ { "axis": "series1", "value": 9191352, "createTime": "2023-01-04 00:07:20" }, { "axis": "series1", "value": 6645322, "createTime": "2023-01-04 00:14:47" }, { "axis": "series1", "value": 2078369, "createTime": "2023-01-04 00:22:13" }, { "axis": "series1", "value": 7325410, "createTime": "2023-01-04 00:29:30" }, { "axis": "series1", "value": 7448456, "createTime": "2023-01-04 00:37:04" }, { "axis": "series1", "value": 5808077, "createTime": "2023-01-04 00:44:30" }, { "axis": "series1", "value": 5625821, "createTime": "2023-01-04 00:52:06" } ] }Field data adalah path JSON untuk penyimpanan data. Data yang dikembalikan berisi tiga kolom:
axis,value, dancreateTime. -
Pemanggilan API contoh dalam tool pengujian: Kirim permintaan GET di tool pengujian API seperti Postman. Masukkan parameter startTime dan endTime (misalnya, 2023-01-04 00:00:00 hingga 2023-01-04 23:59:59). API mengembalikan respons 200 OK dengan totalNum sebesar 187. Array data berisi data dalam rentang waktu yang ditentukan.
Persiapan: Buat tabel partisi MaxCompute
Dalam praktik ini, data yang dibaca dari API disinkronkan ke tabel partisi MaxCompute. Anda harus terlebih dahulu membuat tabel partisi untuk menyimpan data yang disinkronkan.
Ketika tabel partisi digunakan dengan perintah overwrite, efek overwrite partisi tercapai. Hal ini memungkinkan tugas sinkronisasi dijalankan ulang tanpa duplikasi data, serta mempermudah analisis data menggunakan tabel partisi.
Pernyataan CREATE TABLE adalah sebagai berikut.
CREATE TABLE IF NOT EXISTS ods_xiaobo_rest2
(
`axis` STRING
,`value` BIGINT
,`createTime` STRING
)
PARTITIONED BY
(
ds STRING
)
LIFECYCLE 3650;
Jika Anda menggunakan DataWorks Edisi Standar dan mengirimkan tabel partisi yang dibuat ke lingkungan produksi, Anda dapat melihat tabel tersebut di Peta Data.
Konfigurasi tugas sinkronisasi
-
Tambahkan sumber data RestAPI.
Tambahkan sumber data RestAPI di ruang kerja DataWorks Anda. Untuk informasi selengkapnya, lihat Tambahkan sumber data RestAPI. Di dialog Add RestAPI Data Source, tentukan Data Source Name dan Data Source Description, pilih Applicable Environment (development atau production), dan konfigurasikan Default Request Header (nilai default:
{}). Konfigurasi utama adalah sebagai berikut.-
url: Atur ke alamat RESTful API.
-
Authentication Method: Pilih metode autentikasi yang didukung oleh API sumber data Anda dan konfigurasikan parameter autentikasi yang diperlukan.
-
Resource group connectivity: Sumber data RestAPI hanya mendukung grup sumber daya eksklusif untuk Data Integration. Pilih grup sumber daya eksklusif untuk Data Integration dan uji konektivitas antara sumber data dan grup sumber daya.
-
-
Buat node sinkronisasi batch dan konfigurasikan tugas sinkronisasi.
Buat node sinkronisasi batch di DataWorks DataStudio. Untuk informasi selengkapnya, lihat Buat node sinkronisasi batch. Konfigurasi utama adalah sebagai berikut.
-
Data Source konfigurasi:
-
Data Source: Pilih sumber data RestAPI yang dibuat pada langkah sebelumnya.
-
Request Method: API contoh adalah API GET. Pilih GET.
-
Return Data Structure: Respons API contoh adalah array JSON. Pilih Array Data.
-
The JSON path for data storage: Data yang dikembalikan oleh API contoh disimpan di bawah field data. Atur ke data.
-
Request Param: Gunakan parameter permintaan bersama dengan parameter penjadwalan untuk menyinkronkan data hari ini setiap hari.
-
Atur parameter permintaan ke
startTime=${extract_day} ${start_time}&endTime=${extract_day} ${end_time} -
Di pengaturan jadwal, tambahkan tiga parameter penjadwalan:
extract_day=${yyyy-mm-dd},start_time=00:00:00, danend_time=23:59:59.
Jika tanggal eksekusi adalah 2023-01-05, nilai
extract_dayadalah 2023-01-04, dan parameter permintaan digabungkan menjadi:startTime=2023-01-04 00:00:00&endTime=2023-01-04 23:59:59. -
-
-
Data Destination konfigurasi:
-
Data Source dan Table: Pilih tabel partisi MaxCompute yang dibuat pada langkah sebelumnya.
-
Partition Information: Gunakan informasi partisi bersama dengan parameter penjadwalan.
-
Atur informasi partisi ke
${bizdate}. -
Di pengaturan jadwal, tambahkan satu parameter penjadwalan:
bizdate=$bizdate.
Jika tanggal eksekusi adalah 2023-01-05, nilai informasi partisi adalah 20230104.
-
-
-
Field Mapping konfigurasi: Berdasarkan definisi data di API, masukkan nama kolom dari respons RestAPI. Nama kolom bersifat case-sensitive. Setelah Anda menambahkan kolom, gunakan The same name mapping atau gambar garis secara manual untuk membuat pemetaan kolom.
-
Jalankan pengujian
Praktik ini menggunakan parameter penjadwalan. Setelah Anda menyelesaikan konfigurasi tugas sinkronisasi batch, klik Run with Parameters di bilah alat di bagian atas halaman node sinkronisasi batch, masukkan nilai parameter penjadwalan pengujian seperti diminta, dan jalankan tugas sinkronisasi untuk pengujian. Tombol ini ditampilkan sebagai ikon run dengan penanda parameter di sebelah kanan tombol Run. Setelah pengujian selesai, Anda dapat melihat log waktu proses di bagian bawah halaman untuk memverifikasi apakah nilai parameter penjadwalan sesuai harapan.
Verifikasi data
Anda dapat menjalankan kueri ad hoc di Data Studio untuk memverifikasi apakah data telah disinkronkan dengan benar ke MaxCompute. Berikut adalah contoh pernyataan kueri.
select * from ods_xiaobo_rest2 where ds='20230104' order by createtime;
Dalam pernyataan tersebut, ods_xiaobo_rest2 adalah tabel partisi MaxCompute yang dibuat pada langkah sebelumnya, dan 20230104 adalah nilai partisi yang digunakan selama pengujian.
Setelah kueri selesai, periksa hasil kueri di bagian bawah halaman untuk memverifikasi apakah data telah disinkronkan dengan benar ke MaxCompute. Tabel hasil kueri harus menampilkan nilai kolom untuk axis, value, dan createTime, serta nilai partisi ds, yang harus konsisten dengan data JSON yang dikembalikan oleh API untuk mengonfirmasi bahwa data telah disinkronkan dengan benar.
Kirim, terapkan, dan isi ulang data
Setelah pengujian dan verifikasi data selesai, Anda dapat mengirim dan menerapkan tugas sinkronisasi batch ke lingkungan produksi. Untuk informasi selengkapnya, lihat Deploy a node. Klik ikon Submit di bilah alat di bagian atas halaman pengeditan node untuk menyelesaikan pengiriman. Setelah penerapan berhasil, Anda dapat menemukan tugas terjadwal ini di Pusat Operasi. Anda kemudian dapat menggunakan fitur isi ulang data untuk mengisi ulang data historis untuk periode waktu sebelumnya. Untuk informasi selengkapnya tentang fitur isi ulang data dan operasi terkait, lihat Backfill data.
Praktik 2: Membaca data dari RestAPI terpaginasi
Skenario contoh: Definisi API
Dalam praktik ini, Anda membaca data dari RESTful API dan menulisnya ke tabel partisi MaxCompute. RESTful API contoh adalah API GET uji coba buatan sendiri. Detail API adalah sebagai berikut.
Saat melakukan operasi sebenarnya, sesuaikan konfigurasi berdasarkan API yang Anda gunakan. API dalam contoh ini hanya digunakan sebagai demonstrasi untuk memandu Anda melalui alur kerja.
-
Permintaan API contoh:
http://TestAPIAddress:Port/rest/test1?pageSize=5&pageNum=1Parameter pageSize dan pageNum menentukan ukuran halaman dan nomor halaman.
-
Respons contoh:
{ "status": "success", "totalNum": 304, "data": [ { "id": 6, "name": "Test User 6" }, { "id": 7, "name": "Test User 7" }, { "id": 8, "name": "Test User 8" }, { "id": 9, "name": "Test User 9" }, { "id": 10, "name": "Test User 10" } ] }Field data adalah path JSON untuk penyimpanan data. Data yang dikembalikan berisi dua kolom:
iddanname. -
Pemanggilan API contoh dalam tool pengujian: Kirim permintaan GET di tool pengujian API seperti Postman. Masukkan parameter pageSize=5 dan pageNum=2. API mengembalikan respons 200 OK dengan totalNum sebesar 304. Array data berisi data pengguna di halaman 2 (misalnya, id:6, name:Test User 6).
Persiapan: Buat tabel partisi MaxCompute
Dalam praktik ini, data yang dibaca dari API disinkronkan ke tabel partisi MaxCompute. Anda harus terlebih dahulu membuat tabel partisi untuk menyimpan data yang disinkronkan.
Ketika tabel partisi digunakan dengan perintah overwrite, efek overwrite partisi tercapai. Hal ini memungkinkan tugas sinkronisasi dijalankan ulang tanpa duplikasi data, serta mempermudah analisis data menggunakan tabel partisi.
Pernyataan CREATE TABLE adalah sebagai berikut.
CREATE TABLE IF NOT EXISTS ods_xiaobo_rest1
(
`id` BIGINT
,`name` STRING
)
PARTITIONED BY
(
ds STRING
)
LIFECYCLE 3650;
Jika Anda menggunakan DataWorks Edisi Standar dan mengirimkan tabel partisi yang dibuat ke lingkungan produksi, Anda dapat melihat tabel tersebut di Peta Data.
Konfigurasi tugas sinkronisasi
-
Tambahkan sumber data RestAPI.
Tambahkan sumber data RestAPI di ruang kerja DataWorks Anda. Untuk informasi selengkapnya, lihat Tambahkan sumber data RestAPI. Di dialog Add RestAPI Data Source, tentukan Data Source Name dan Data Source Description, pilih Applicable Environment (development atau production), dan konfigurasikan Default Request Header (nilai default:
{}). Konfigurasi utama adalah sebagai berikut.-
url: Atur ke alamat RESTful API.
-
Authentication Method: Pilih metode autentikasi yang didukung oleh API sumber data Anda dan konfigurasikan parameter autentikasi yang diperlukan.
-
Resource group connectivity: Sumber data RestAPI hanya mendukung grup sumber daya eksklusif untuk Data Integration. Pilih grup sumber daya eksklusif untuk Data Integration dan uji konektivitas antara sumber data dan grup sumber daya.
-
-
Buat node sinkronisasi batch dan konfigurasikan tugas sinkronisasi.
Buat node sinkronisasi batch di DataWorks Data Studio. Untuk informasi selengkapnya, lihat Buat node sinkronisasi batch. Konfigurasi utama adalah sebagai berikut.
-
Data Source konfigurasi:
-
Data Source: Pilih sumber data RestAPI yang dibuat pada langkah sebelumnya.
-
Request Method: API contoh adalah API GET. Pilih GET.
-
Return Data Structure: Respons API contoh adalah array JSON. Pilih Array Data.
-
The JSON path for data storage: Data yang dikembalikan oleh API contoh disimpan di bawah field data. Atur ke data.
-
Request Param: Ukuran halaman bersifat tetap. Atur ke
pageSize=50. Disarankan agar Anda tidak mengatur ukuran halaman yang terlalu besar karena dapat memberikan tekanan berlebihan pada server RestAPI dan tugas sinkronisasi. -
The number of requests: Pilih Multiple Requests untuk contoh ini.
Parameter paginasi untuk API ini adalah pageNum. Setelah Anda memilih Multiple Requests, konfigurasikan parameter terkait sebagai berikut:
-
Parameter used for multiple requests: Atur ke pageNum.
-
StartIndex: Atur ke 1.
-
Step: Atur ke 1.
-
EndIndex: Atur ke 100.
-
-
-
Data Destination konfigurasi:
-
Data Source dan Table: Pilih tabel partisi MaxCompute yang dibuat pada langkah sebelumnya.
-
Partition Information: Gunakan informasi partisi bersama dengan parameter penjadwalan.
-
Atur informasi partisi ke
${bizdate}. -
Di pengaturan jadwal, tambahkan satu parameter penjadwalan:
bizdate=$bizdate.
Jika tanggal eksekusi adalah 2023-01-05, nilai informasi partisi adalah 20230104.
-
-
-
Field Mapping konfigurasi: Berdasarkan definisi data di API, masukkan nama kolom dari respons RestAPI. Nama kolom bersifat case-sensitive. Setelah Anda menambahkan kolom, gunakan The same name mapping atau gambar garis secara manual untuk membuat pemetaan kolom.
-
Jalankan pengujian
Praktik ini menggunakan parameter penjadwalan. Setelah Anda menyelesaikan konfigurasi tugas sinkronisasi batch, klik Run with Parameters di bilah alat di bagian atas halaman node sinkronisasi batch, masukkan nilai parameter penjadwalan pengujian seperti diminta, dan jalankan tugas sinkronisasi untuk pengujian. Tombol ini ditampilkan sebagai ikon run dengan penanda parameter di sebelah kanan tombol Run. Setelah pengujian selesai, Anda dapat melihat log waktu proses di bagian bawah halaman untuk memverifikasi apakah nilai parameter penjadwalan sesuai harapan.
Verifikasi data
Anda dapat menjalankan kueri ad hoc di Data Studio untuk memverifikasi apakah data telah disinkronkan dengan benar ke MaxCompute. Berikut adalah contoh pernyataan kueri.
select * from ods_xiaobo_rest1 where ds='20230104' order by id;
Dalam pernyataan tersebut, ods_xiaobo_rest1 adalah tabel partisi MaxCompute yang dibuat pada langkah sebelumnya, dan 20230104 adalah nilai partisi yang digunakan selama pengujian.
Setelah kueri selesai, periksa hasil kueri di bagian bawah halaman untuk memverifikasi apakah data telah disinkronkan dengan benar ke MaxCompute. Tabel hasil kueri harus menampilkan nilai kolom untuk id dan name, serta nilai partisi ds, yang harus konsisten dengan data JSON yang dikembalikan oleh API untuk mengonfirmasi bahwa data telah disinkronkan dengan benar.
Praktik 3: Membaca data dari RestAPI tipe POST
Skenario contoh: Definisi API
Dalam praktik ini, Anda membaca data dari RESTful API dan menulisnya ke tabel partisi MaxCompute. RESTful API contoh adalah API POST uji coba buatan sendiri. Detail API adalah sebagai berikut.
Saat melakukan operasi sebenarnya, sesuaikan konfigurasi berdasarkan API yang Anda gunakan. API dalam contoh ini hanya digunakan sebagai demonstrasi untuk memandu Anda melalui alur kerja.
-
Permintaan API contoh:
http://TestAPIAddress:Port/rest/test3Format badan permintaan adalah JSON.
{ "userId":16, "startTime":"2023-01-04 00:00:00", "endTime":"2023-01-04 23:59:59" } -
Respons contoh:
{ "status": "success", "totalNum": 289, "data": [ { "user": { "id": 16, "name": "User 16" }, "axis": "series1", "value": 8231053, "createTime": "2023-01-04 00:04:57" }, { "user": { "id": 16, "name": "User 16" }, "axis": "series1", "value": 6519928, "createTime": "2023-01-04 00:09:51" }, { "user": { "id": 16, "name": "User 16" }, "axis": "series1", "value": 2915920, "createTime": "2023-01-04 00:14:36" }, { "user": { "id": 16, "name": "User 16" }, "axis": "series1", "value": 7971851, "createTime": "2023-01-04 00:19:51" }, { "user": { "id": 16, "name": "User 16" }, "axis": "series1", "value": 6598996, "createTime": "2023-01-04 00:24:30" } ] }Field data adalah path JSON untuk penyimpanan data. Data yang dikembalikan berisi lima kolom:
user.id,user.name,axis,value, dancreateTime. -
Pemanggilan API contoh dalam tool pengujian: Kirim permintaan POST di tool pengujian API seperti Postman. Atur Body ke format raw dengan tipe JSON, dan masukkan badan permintaan yang berisi userId, startTime, dan endTime. API mengembalikan respons 200 OK dengan totalNum sebesar 289. Array data berisi data untuk pengguna yang ditentukan dalam rentang waktu yang ditentukan.
Persiapan: Buat tabel partisi MaxCompute
Dalam praktik ini, data yang dibaca dari API disinkronkan ke tabel partisi MaxCompute. Anda harus terlebih dahulu membuat tabel partisi untuk menyimpan data yang disinkronkan.
Ketika tabel partisi digunakan dengan perintah overwrite, efek overwrite partisi tercapai. Hal ini memungkinkan tugas sinkronisasi dijalankan ulang tanpa duplikasi data, serta mempermudah analisis data menggunakan tabel partisi.
Pernyataan CREATE TABLE adalah sebagai berikut.
CREATE TABLE IF NOT EXISTS ods_xiaobo_rest3
(
`user_id` BIGINT
,`name` STRING
,`axis` STRING
,`value` BIGINT
,`create_time` STRING
)
PARTITIONED BY
(
ds STRING
)
LIFECYCLE 3650;
Jika Anda menggunakan DataWorks Edisi Standar dan mengirimkan tabel partisi yang dibuat ke lingkungan produksi, Anda dapat melihat tabel tersebut di Peta Data.
Konfigurasi tugas sinkronisasi
-
Tambahkan sumber data RestAPI.
Tambahkan sumber data RestAPI di ruang kerja DataWorks Anda. Untuk informasi selengkapnya, lihat Tambahkan sumber data RestAPI. Di dialog Add RestAPI Data Source, tentukan Data Source Name dan Data Source Description, pilih Applicable Environment (development atau production), dan konfigurasikan Default Request Header (nilai default:
{}). Konfigurasi utama adalah sebagai berikut.-
url: Atur ke alamat RESTful API.
-
Authentication Method: Pilih metode autentikasi yang didukung oleh API sumber data Anda dan konfigurasikan parameter autentikasi yang diperlukan.
-
Resource group connectivity: Sumber data RestAPI hanya mendukung grup sumber daya eksklusif untuk Data Integration. Pilih grup sumber daya eksklusif untuk Data Integration dan uji konektivitas antara sumber data dan grup sumber daya.
-
-
Buat node sinkronisasi batch dan konfigurasikan tugas sinkronisasi.
Buat node sinkronisasi batch di DataWorks Data Studio. Untuk informasi selengkapnya, lihat Buat node sinkronisasi batch. Konfigurasi utama adalah sebagai berikut.
-
Data Source konfigurasi:
-
Data Source: Pilih sumber data RestAPI yang dibuat pada langkah sebelumnya.
-
Request Method: API contoh adalah API POST. Pilih POST.
-
Return Data Structure: Respons API contoh adalah array JSON. Pilih Array Data.
-
The JSON path for data storage: Data yang dikembalikan oleh API contoh disimpan di bawah field data. Atur ke data.
-
Header: API POST dalam contoh ini menerima badan permintaan JSON. Atur ke
{"Content-Type":"application/json"}. -
Request Param: Gunakan parameter permintaan bersama dengan parameter penjadwalan untuk menyinkronkan data hari ini setiap hari.
-
Atur parameter permintaan ke
{ "userId":16, "startTime":"${extract_day} 00:00:00", "endTime":"${extract_day} 23:59:59" } -
Di pengaturan jadwal, tambahkan satu parameter penjadwalan:
extract_day=${yyyy-mm-dd}.
-
-
-
Data Destination konfigurasi:
-
Data Source dan Table: Pilih tabel partisi MaxCompute yang dibuat pada langkah sebelumnya.
-
Partition Information: Gunakan informasi partisi bersama dengan parameter penjadwalan.
-
Atur informasi partisi ke
${bizdate}. -
Di pengaturan jadwal, tambahkan satu parameter penjadwalan:
bizdate=$bizdate.
Jika tanggal eksekusi adalah 2023-01-05, nilai informasi partisi adalah 20230104.
-
-
-
Field Mapping konfigurasi: Berdasarkan definisi data di API, masukkan nama kolom dari respons RestAPI. Anda dapat menggunakan titik (.) untuk memisahkan kolom bersarang. Nama kolom bersifat case-sensitive. Setelah Anda menambahkan kolom, gunakan The same name mapping atau gambar garis secara manual untuk membuat pemetaan kolom.
-
Jalankan pengujian
Praktik ini menggunakan parameter penjadwalan. Setelah Anda menyelesaikan konfigurasi tugas sinkronisasi batch, klik Run with Parameters di bilah alat di bagian atas halaman node sinkronisasi batch, masukkan nilai parameter penjadwalan pengujian seperti diminta, dan jalankan tugas sinkronisasi untuk pengujian. Tombol ini ditampilkan sebagai ikon run dengan penanda parameter di sebelah kanan tombol Run. Setelah pengujian selesai, Anda dapat melihat log waktu proses di bagian bawah halaman untuk memverifikasi apakah nilai parameter penjadwalan sesuai harapan.
Verifikasi data
Anda dapat menjalankan kueri ad hoc di Data Studio untuk memverifikasi apakah data telah disinkronkan dengan benar ke MaxCompute. Berikut adalah contoh pernyataan kueri.
select * from ods_xiaobo_rest3 where ds='20230105' order by create_time;
Dalam pernyataan tersebut, ods_xiaobo_rest3 adalah tabel partisi MaxCompute yang dibuat pada langkah sebelumnya, dan 20230105 adalah nilai partisi yang digunakan selama pengujian.
Setelah kueri selesai, periksa hasil kueri di bagian bawah halaman untuk memverifikasi apakah data telah disinkronkan dengan benar ke MaxCompute. Tabel hasil kueri harus menampilkan nilai kolom untuk user_id, name, axis, value, dan create_time, serta nilai partisi ds, yang harus konsisten dengan data JSON yang dikembalikan oleh API untuk mengonfirmasi bahwa kolom bersarang telah dipetakan dan disinkronkan dengan benar.
Praktik 4: Mengulangi parameter permintaan untuk membaca dari RestAPI
Skenario contoh: Definisi API
Dalam praktik ini, Anda membaca data secara iteratif dari RESTful API dan menulisnya ke tabel partisi MaxCompute. RESTful API contoh adalah API GET uji coba buatan sendiri yang mengembalikan data suhu berdasarkan parameter input tanggal, provinsi, dan kota.
Saat melakukan operasi sebenarnya, sesuaikan konfigurasi berdasarkan API yang Anda gunakan. API dalam contoh ini hanya digunakan sebagai demonstrasi untuk memandu Anda melalui alur kerja.
-
Permintaan contoh:
http://TestAPIAddress:Port/rest/test5?date=2023-01-04&province=zhejiang&city=hangzhou -
Respons contoh:
{ "province": "P1", "city": "hz", "date": "2023-01-04", "minTemperature": "-14", "maxTemperature": "-7", "unit": "℃", "weather": "cool" } -
Pemanggilan API contoh dalam tool pengujian: Kirim permintaan GET di tool pengujian API seperti Postman. Masukkan parameter date=2023-01-04, province=p1, dan city=hz. API mengembalikan respons JSON yang berisi informasi minTemperature (-14), maxTemperature (-7), unit (℃), dan weather (COOL) yang sesuai.
Persiapan: Buat tabel parameter dan tabel partisi MaxCompute
Dalam praktik ini, data yang dibaca dari API disinkronkan ke tabel partisi MaxCompute. Anda harus terlebih dahulu membuat tabel parameter untuk menyimpan nilai provinsi dan kota untuk iterasi, lalu membuat tabel partisi untuk menyimpan data yang disinkronkan.
Ketika tabel partisi digunakan dengan perintah overwrite, efek overwrite partisi tercapai. Hal ini memungkinkan tugas sinkronisasi dijalankan ulang tanpa duplikasi data, serta mempermudah analisis data menggunakan tabel partisi.
Pernyataan CREATE TABLE adalah sebagai berikut:
Buat tabel parameter
CREATE TABLE IF NOT EXISTS `citys`
(
`province` STRING ,
`city` STRING
);
insert into citys
select 'shanghai','shanghai'
union all select 'zhejiang','hangzhou'
union all select 'sichuan','chengdu';
Buat tabel partisi MaxCompute
CREATE TABLE IF NOT EXISTS ods_xiaobo_rest5
(
`minTemperature` STRING ,
`maxTemperature` STRING ,
`unit` STRING ,
`weather` STRING
)
PARTITIONED BY
(
`province` STRING ,
`city` STRING ,
`ds` STRING
)
LIFECYCLE 3650;
Jika Anda menggunakan DataWorks Edisi Standar dan mengirimkan tabel yang dibuat ke lingkungan produksi, Anda dapat melihat tabel tersebut di Peta Data.
Konfigurasi tugas sinkronisasi
-
Tambahkan sumber data RestAPI.
Tambahkan sumber data RestAPI di ruang kerja DataWorks Anda. Untuk informasi selengkapnya, lihat Menambahkan sumber data RestAPI. Pada dialog Add RestAPI Data Source, tentukan Data Source Name dan Data Source Description, pilih Applicable Environment (pengembangan atau produksi), serta konfigurasikan Default Request Header (nilai default:
{}). Konfigurasi utamanya adalah sebagai berikut:-
url: Atur ke alamat RESTful API.
-
Authentication Method: Pilih metode autentikasi yang didukung oleh API sumber data Anda dan konfigurasikan parameter autentikasi yang diperlukan.
-
Resource group connectivity: Pilih grup sumber daya yang ditentukan dan uji konektivitasnya.
-
-
Buat node assignment bernama setval_citys di DataStudio. Untuk informasi selengkapnya, lihat Buat node assignment.
Konfigurasi utama adalah sebagai berikut:
No.
Description
①
-
Assignment language: ODPS SQL
-
Assignment code:
SELECT province ,city FROM citys;
②
Properti Rerun: Atur ke You can run again after successful or failed operation..
Setelah konfigurasi selesai, kirim dan terapkan node assignment tersebut.
-
-
Buat node for-each di DataStudio. Untuk informasi selengkapnya, lihat Buat node for-each. Konfigurasi utama adalah sebagai berikut:
No.
Description
①
Rerun property: Atur ke You can run again after successful or failed operation..
②
Upstream node dependency: Pilih node dari langkah sebelumnya, yaitu node setval_citys.
③
Node context parameter: Pilih sumber parameter input.
④
Batch synchronization node: Konfigurasikan node sinkronisasi batch di dalam node for-each. Untuk detailnya, lihat langkah-langkah berikut.
-
Buat node sinkronisasi batch dan konfigurasikan tugas sinkronisasi. Untuk informasi selengkapnya, lihat Buat node sinkronisasi batch.
Konfigurasi utama adalah sebagai berikut:
No.
Description
①
Konfigurasikan parameter penjadwalan sebagai berikut:
bizdate=$[yyyymmdd-1] bizdate_year=$[yyyy-1] bizdate_month=$[mm-1] bizdate_day=$[dd-1]②
Konfigurasikan parameter permintaan RestAPI. Parameter province dan city berasal dari node for-each.
date=${bizdate_year}-${bizdate_month}-${bizdate_day}&province=${dag.foreach.current[0]}&city=${dag.foreach.current[1]}③
Konfigurasikan parameter partisi MaxCompute. Parameter province berasal dari node for-each.
province=${dag.foreach.current[0]}④
Konfigurasikan parameter partisi MaxCompute. Parameter city berasal dari node for-each.
city=${dag.foreach.current[1]}⑤
Konfigurasikan parameter partisi MaxCompute. Parameter ds berasal dari parameter penjadwalan.
ds=${bizdate}⑥
Berdasarkan definisi data di API, masukkan nama kolom dari respons RestAPI. Nama kolom bersifat case-sensitive. Setelah Anda menambahkan kolom, gunakan The same name mapping atau gambar garis secara manual untuk membuat pemetaan kolom.
Setelah konfigurasi selesai, kirim dan terapkan node for-each tersebut.
Jalankan pengujian
-
Setelah Anda berhasil mengirim dan menerapkan node assignment dan node for-each, buka tugas terjadwal di Pusat Operasi dan lakukan operasi isi ulang data pada node assignment. Untuk informasi selengkapnya, lihat Isi ulang data.
-
Pilih tanggal bisnis untuk tugas isi ulang data dan node hilir berdasarkan skenario aktual Anda.
-
Setelah tugas berjalan, periksa parameter eksekusi di detail instans isi ulang data untuk memverifikasi apakah sesuai harapan, dan periksa log waktu proses untuk kebenarannya.
Dalam contoh ini, data ditulis ke partisi
province=shanghai,city=shanghai,ds=20231215dari tabel MaxCompute.
Verifikasi data
Anda dapat menjalankan kueri ad hoc di Data Studio untuk memverifikasi apakah data telah disinkronkan dengan benar ke MaxCompute. Berikut adalah contoh kueri:
Dalam contoh ini, ods_xiaobo_rest5 adalah tabel partisi MaxCompute yang dibuat pada langkah Persiapan.
SELECT weather
,mintemperature
,maxtemperature
,unit
,province
,city
,ds
FROM ods_xiaobo_rest5
WHERE ds != 1
ORDER BY ds,province,city;
Setelah kueri selesai, periksa apakah data telah disinkronkan dengan benar ke MaxCompute.
|
weather |
mintemperature |
maxtemperature |
unit |
province |
city |
ds |
|
COOL |
3 |
9 |
°C |
shanghai |
shanghai |
20231215 |
|
HAZY |
-2 |
6 |
°C |
sichuan |
chengdu |
20231215 |
|
FOGGY |
19 |
28 |
°C |
zhejiang |
hangzhou |
20231215 |
|
SNOWY |
-16 |
-5 |
°C |
shanghai |
shanghai |
20231216 |
|
SNOWY |
-16 |
-8 |
°C |
sichuan |
chengdu |
20231216 |
|
SUNNY |
15 |
25 |
°C |
zhejiang |
hangzhou |
20231216 |
|
COOL |
-10 |
2 |
°C |
shanghai |
shanghai |
20231217 |
|
HAZY |
15 |
24 |
°C |
sichuan |
chengdu |
20231217 |
|
FOGGY |
4 |
11 |
°C |
zhejiang |
hangzhou |
20231217 |
|
HOT |
-14 |
-7 |
°C |
shanghai |
shanghai |
20231218 |
|
FOGGY |
-2 |
4 |
°C |
sichuan |
chengdu |
20231218 |
|
RAINY |
9 |
19 |
°C |
zhejiang |
hangzhou |
20231218 |