Saya mencoba memperbarui tabel GA di BigQuery.

Saya ingin memperbarui semua kategori acara di mana aksi acara = "klik"

Ini merupakan tantangan bagi saya karena informasi ini bersarang di kolom hits dan saya tidak dapat menjalankan UPDATE SQL apa pun.

Saya telah mencoba SQL berikut.

UPDATE `my_sample_table`
SET hits =
  ARRAY(
    SELECT AS STRUCT * REPLACE(
      (SELECT AS STRUCT eventInfo.* REPLACE('UX' AS eventCategory)) AS eventInfo)
    FROM UNNEST(hits) WHERE eventInfo.eventAction = 'click'
  )
WHERE TRUE;

Dan itu berfungsi dan mengganti semua eventCategory dengan 'UX' di mana eventAction = 'click'. Tetapi tabel yang dihasilkan semuanya tidak bersarang. Saya membutuhkannya sama dengan tabel asli dengan hit dan bidang lain yang disarangkan.

Ini sedekat yang saya dapatkan.

Bantuan apa pun akan dihargai.

1
Kenny 7 Agustus 2019, 06:48

1 menjawab

Jawaban Terbaik

Seharusnya

UPDATE `my_sample_table`
SET hits =
  ARRAY(
    SELECT AS STRUCT * REPLACE(
      (SELECT AS STRUCT eventInfo.* REPLACE(
        IF(eventInfo.eventAction='click','UX', eventInfo.eventCategory) AS eventCategory
      )
    ) AS eventInfo)
    FROM UNNEST(hits)
  )
WHERE TRUE

Masalah dengan kueri awal Anda sebenarnya adalah bahwa Anda menerapkan pemfilteran di tempat yang salah. Alih-alih, Anda perlu menerapkannya di REPLACE() paling dalam

1
Mikhail Berlyant 8 Agustus 2019, 13:02