Saya memiliki kumpulan data akomodasi yang disimpan di BigQuery. Salah satu kolom adalah daftar tanggal yang dipisahkan koma, sesuai dengan ketersediaan sepanjang tahun:

Property1 | Hotel | 13/05/2021, 14/05/2021
Property2 | Hotel | 19/05/2021, 20/05/2021, 21/05/2021

Untuk setiap properti saya ingin membuat 365 baris, dengan masing-masing sesuai dengan tanggal tahun seperti yang ditunjukkan di bawah ini:

Property1 | Hotel | 12/05/2021 | FALSE
Property1 | Hotel | 13/05/2021 | TRUE
Property1 | Hotel | 14/05/2021 | TRUE

Data ini diperbarui setiap hari, jadi baris ini akan bertambah 1 mulai tanggal hari ini. Saya akan sangat berterima kasih atas petunjuk apa pun tentang bagaimana ini dapat dicapai dengan menggunakan SQL.

0
lightfoot34 12 Mei 2021, 11:27

1 menjawab

Jawaban Terbaik

Saya mencoba di bawah ini

WITH split_acco_data AS (
      SELECT prop_name, hotel_name,split(dates_str,',') AS dates_str
      FROM (SELECT * FROM mock_dataset.acco_data)
     )
SELECT prop_name, hotel_name,dates_str
FROM split_acco_data CROSS JOIN 
     UNNEST(split_acco_data.dates_str) AS dates_str;

Contoh data di tabel utama:

prop_name   hotel_name  dates_str       
Property1   Hotel        12/05/2021, 13/05/2021, 14/05/2021 
Property2   Hotel        19/05/2021, 20/05/2021, 21/05/2021

Keluaran kueri:

prop_name   hotel_name  dates_str
Property1   Hotel   12/05/2021
Property1   Hotel    13/05/2021
Property1   Hotel    14/05/2021
Property2   Hotel   19/05/2021
Property2   Hotel    20/05/2021
Property2   Hotel    21/05/2021
1
Gordon Linoff 12 Mei 2021, 11:43