Halaman ini menjelaskan cara menjalankan kueri Dataflow SQL yang diberi parameter.
Dataflow SQL mendukung parameter kueri bernama dan parameter kueri posisi. Tentukan parameter kueri dengan sintaksis berikut:
- Parameter bernama dengan karakter
@
diikuti dengan ID, seperti@param_name
- Parameter posisi dengan karakter
?
Anda dapat menggunakan parameter bernama atau parameter posisi dalam kueri, tetapi tidak keduanya.
Menjalankan kueri berparameter
Untuk menjalankan kueri berparameter, tentukan jenis data dan nilai parameter kueri. Jenis dan nilai parameter kueri harus cocok dengan jenis objek database yang diwakili oleh parameter.
Anda dapat menentukan parameter kueri menggunakan konsol atau Google Cloud CLI: Google Cloud
Konsol
Untuk menentukan parameter kueri, gunakan UI Dataflow SQL:
Buka UI Dataflow SQL.
Masukkan kueri Dataflow SQL ke editor kueri.
Misalnya, kueri berikut memilih perjalanan taksi yang harganya minimal harga yang ditentukan:
SELECT * FROM pubsub.topic.`pubsub-public-data`.`taxirides-realtime` WHERE ride_status = "dropoff" AND meter_reading >= @price_min
Klik Create Cloud Dataflow job untuk membuka panel opsi tugas.
Di bagian SQL query parameters pada panel, isi kolom Name, Type, dan Value. Nama parameter dalam contoh adalah
price_min
dan jenisnya adalahFLOAT64
.Jika parameter bersifat posisional, hapus kolom Name.
(Opsional) Jika kueri berisi lebih banyak parameter, klik Tambahkan parameter.
Konsol Google Cloud tidak mendukung parameter ARRAY
atau STRUCT
. Untuk menentukan parameter ARRAY
atau STRUCT
, gunakan
Google Cloud CLI.
gcloud
Untuk menentukan parameter kueri, gunakan perintah
gcloud dataflow sql query
dan flag --parameter
.
Anda dapat mengulangi tanda --parameter
untuk setiap parameter kueri. Tetapkan setiap
--parameter
flag ke
name:type:value
.
Perintah berikut menjalankan kueri berparameter pada streaming perjalanan taksi Pub/Sub:
gcloud dataflow sql query \ --job-name=job-name \ --region=region \ --bigquery-dataset=destination-dataset \ --bigquery-table=destination-table \ --parameter=status:STRING:dropoff \ --parameter=price_min:FLOAT64:5.5 \ 'SELECT * FROM pubsub.topic.`pubsub-public-data`.`taxirides-realtime` WHERE ride_status = @status AND meter_reading >= @price_min'
Jika parameter bersifat posisional, tetapkan tanda --parameter
ke
:type:value
.
Menggunakan array dalam kueri berparameter
Untuk menggunakan jenis array dalam parameter kueri, tetapkan jenis ke ARRAY<data-type>
.
Buat nilai sebagai daftar elemen yang dipisahkan koma yang diapit dalam
tanda kurung siku, seperti ["pickup", "enroute", "dropoff"]
.
Konsol
UI Dataflow SQL tidak mendukung parameter ARRAY
dalam kueri Dataflow SQL.
gcloud
Untuk menentukan parameter array, tetapkan tanda --parameter
dari perintah
gcloud dataflow sql query
ke name:ARRAY<data-type>:value
Perintah berikut menjalankan kueri dengan parameter array bernama pada streaming Pub/Sub perjalanan taksi:
gcloud dataflow sql query \ --job-name=job-name --region=region --bigquery-dataset=destination-dataset \ --bigquery-table=destination-table \ --parameter='status:ARRAY<STRING>:["pickup", "enroute", "dropoff"]' \ 'SELECT * FROM pubsub.topic.`pubsub-public-data`.`taxirides-realtime` WHERE ride_status IN UNNEST(@status)'
Untuk mengetahui informasi selengkapnya, lihat referensi Dataflow SQL untuk jenis ARRAY
.
Menggunakan stempel waktu dalam kueri berparameter
Untuk menggunakan stempel waktu dalam parameter kueri, tetapkan jenis ke STRING
, tetapi buat
nilai dalam format stempel waktu kanonis.
Konsol
Untuk menentukan parameter stempel waktu, gunakan UI Dataflow SQL:
Buka UI Dataflow SQL.
Masukkan kueri Dataflow SQL ke editor kueri.
Misalnya, kueri berikut memilih perjalanan taksi yang terjadi setelah tanggal yang ditentukan:
SELECT * FROM pubsub.topic.`pubsub-public-data`.`taxirides-realtime` WHERE event_timestamp >= TIMESTAMP (@date_min)
Klik Create Cloud Dataflow job untuk membuka panel opsi tugas.
Di bagian Parameter kueri SQL, klik Tambahkan parameter.
Di kolom Type, pilih
STRING
.Di kolom Nilai, masukkan stempel waktu.
gcloud
Untuk menentukan parameter stempel waktu, tetapkan tanda --parameter
dari perintah
gcloud dataflow sql query
ke name:STRING:value
Perintah berikut menjalankan kueri dengan parameter stempel waktu bernama di streaming Pub/Sub perjalanan taksi:
gcloud dataflow sql query \ --job-name=job-name \ --region=region \ --bigquery-dataset=destination-dataset \ --bigquery-table=destination-table \ --parameter='date_min:STRING:2020-01-01 00:00:00.000 UTC' \ 'SELECT * FROM pubsub.topic.`pubsub-public-data`.`taxirides-realtime` WHERE event_timestamp >= TIMESTAMP (@date_min)'
Untuk mengetahui informasi selengkapnya, lihat referensi Dataflow SQL untuk jenis TIMESTAMP
.
Menggunakan struct dalam kueri berparameter
Untuk menggunakan struct dalam parameter kueri, tetapkan jenis ke STRUCT<field-name data-type, ...>
.
Buat nilai sebagai daftar pasangan nilai kunci yang dipisahkan koma.
Misalnya, STRUCT<date_min TIMESTAMP, status STRING>
menentukan struct dengan kolom bernama date_min
dari jenis TIMESTAMP
dan kolom bernama status
dari jenis
STRING
.
Konsol
UI Dataflow SQL tidak mendukung parameter STRUCT
dalam kueri Dataflow SQL.
gcloud
Untuk menentukan parameter array, tetapkan tanda --parameter
dari perintah
gcloud dataflow sql query
ke name:STRUCT<field-name data-type, ...>:value
Perintah berikut menjalankan kueri dengan parameter struct bernama di streaming Pub/Sub perjalanan taksi:
gcloud dataflow sql query \ --job-name=job-name \ --region=region \ --bigquery-dataset=destination-dataset \ --bigquery-table=destination-table \ --parameter='rides:STRUCT<riders_min INT64, status STRING>: {"riders_min": 2, "status": "dropoff"}' \ 'SELECT * FROM pubsub.topic.`pubsub-public-data`.`taxirides-realtime` WHERE passenger_count >= @rides.riders_min AND ride_status = @rides.status'
Untuk mengetahui informasi selengkapnya, lihat referensi Dataflow SQL untuk jenis STRUCT
.