Haftalık veriler nasıl alınır, ancak ayın ilk tarihinden başlayarak ve bq'da buna göre TOPLAM hesaplama nasıl yapılır?

0

Soru

Bu tür verileri çekmek için bir sorunum var. Bu yüzden bu spesifikasyonlarla haftalık veri çekmem gerekiyor:

  1. Veri çekimi planlanacak, bu nedenle birkaç ay sürecek
  2. İlk hafta ilk buluşmadan başlayacak (her ay 1) - Resimde yeşil
  3. Geçen hafta bir sonraki ayın tarihlerini içermiyor-Resimde kırmızı

(S) ham veri ve çekici bir çıkış daha fazla veya daha az bu gibi : enter image description here

Bigquery'de bunu yapmak için herhangi bir geçici çözüm var mı? Teşekkürler (verilerin altına eklenmiştir)

+-------------+-------+
| date        | sales |
+-------------+-------+
|  1 Oct 2021 |     5 |
+-------------+-------+
|  2 Oct 2021 |    13 |
+-------------+-------+
|  3 Oct 2021 |    75 |
+-------------+-------+
|  4 Oct 2021 |     3 |
+-------------+-------+
|  5 Oct 2021 |    70 |
+-------------+-------+
|  6 Oct 2021 |    85 |
+-------------+-------+
|  7 Oct 2021 |    99 |
+-------------+-------+
|  8 Oct 2021 |    90 |
+-------------+-------+
|  9 Oct 2021 |    68 |
+-------------+-------+
| 10 Oct 2021 |    97 |
+-------------+-------+
| 11 Oct 2021 |    87 |
+-------------+-------+
| 12 Oct 2021 |    56 |
+-------------+-------+
| 13 Oct 2021 |    99 |
+-------------+-------+
| 14 Oct 2021 |    38 |
+-------------+-------+
| 15 Oct 2021 |     6 |
+-------------+-------+
| 16 Oct 2021 |    43 |
+-------------+-------+
| 17 Oct 2021 |    45 |
+-------------+-------+
| 18 Oct 2021 |    90 |
+-------------+-------+
| 19 Oct 2021 |    64 |
+-------------+-------+
| 20 Oct 2021 |    26 |
+-------------+-------+
| 21 Oct 2021 |    24 |
+-------------+-------+
| 22 Oct 2021 |     4 |
+-------------+-------+
| 23 Oct 2021 |    36 |
+-------------+-------+
| 24 Oct 2021 |    68 |
+-------------+-------+
| 25 Oct 2021 |     4 |
+-------------+-------+
| 26 Oct 2021 |    16 |
+-------------+-------+
| 27 Oct 2021 |    30 |
+-------------+-------+
| 28 Oct 2021 |    89 |
+-------------+-------+
| 29 Oct 2021 |    46 |
+-------------+-------+
| 30 Oct 2021 |    28 |
+-------------+-------+
| 31 Oct 2021 |    28 |
+-------------+-------+
|  1 Nov 2021 |    47 |
+-------------+-------+
|  2 Nov 2021 |    75 |
+-------------+-------+
|  3 Nov 2021 |     1 |
+-------------+-------+
|  4 Nov 2021 |    26 |
+-------------+-------+
|  5 Nov 2021 |    26 |
+-------------+-------+
|  6 Nov 2021 |    38 |
+-------------+-------+
|  7 Nov 2021 |    79 |
+-------------+-------+
|  8 Nov 2021 |    37 |
+-------------+-------+
|  9 Nov 2021 |    83 |
+-------------+-------+
| 10 Nov 2021 |    97 |
+-------------+-------+
| 11 Nov 2021 |    56 |
+-------------+-------+
| 12 Nov 2021 |    83 |
+-------------+-------+
| 13 Nov 2021 |    14 |
+-------------+-------+
| 14 Nov 2021 |    25 |
+-------------+-------+
| 15 Nov 2021 |    55 |
+-------------+-------+
| 16 Nov 2021 |    16 |
+-------------+-------+
| 17 Nov 2021 |    80 |
+-------------+-------+
| 18 Nov 2021 |    66 |
+-------------+-------+
| 19 Nov 2021 |    25 |
+-------------+-------+
| 20 Nov 2021 |    62 |
+-------------+-------+
| 21 Nov 2021 |    36 |
+-------------+-------+
| 22 Nov 2021 |    33 |
+-------------+-------+
| 23 Nov 2021 |    19 |
+-------------+-------+
| 24 Nov 2021 |    47 |
+-------------+-------+
| 25 Nov 2021 |    14 |
+-------------+-------+
| 26 Nov 2021 |    22 |
+-------------+-------+
| 27 Nov 2021 |    66 |
+-------------+-------+
| 28 Nov 2021 |    15 |
+-------------+-------+
| 29 Nov 2021 |    96 |
+-------------+-------+
| 30 Nov 2021 |     4 |
+-------------+-------+
aggregate date datetime google-bigquery
2021-11-24 03:25:38
1

En iyi cevabı

1

Aşağıdaki yaklaşımı göz önünde bulundurun

with temp as (
  select parse_date('%d %B %Y', date) date, sales
  from your_table
)
select format_date('%d %B %Y', weeks[ordinal(num)]) start_week, sum(sales) total_sales 
from (
  select sales, weeks, range_bucket(date, weeks) num
  from temp, unnest([struct(generate_date_array(date_trunc(date, month), last_day(date, month), interval 7 day ) as weeks)])
)
group by start_week  

sorunuzdaki örnek verilere (olduğu gibi) uygulanacaksa-çıktı şu şekildedir

enter image description here

2021-11-24 04:12:50

Diğer dillerde

Bu sayfa diğer dillerde

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................