BigQuery’den Haftalık Veri Çekmek

By | 25 November 2016

BigQuery tarafında tablomuzda gün gün öğrencilerin derslere toplam giriş saatini tuttuğumuz bir senaryomuz var. Gün gün değil de haftalık veri çekebileceğimiz aşağıdaki sorguyu hazırladım. Aşağıdakine benzer, siz de kendi senaryonuza göre haftalık veri çekebilirsiniz. ( BigQuery için Legacy SQL kullanmadım.)

SELECT student,weekNumber,weekStartDate,lessonHour
  FROM (
    SELECT student,
           FORMAT_TIMESTAMP('%W', TIMESTAMP(day)) AS weekNumber,  /*burada verdiğimiz günün kaçıncı haftada onu alıyoruz.*/
           IF(EXTRACT(DAYOFWEEK
             FROM
               DATE(TIMESTAMP(day))) = 1,  /*1-7 ile sayı return ediyor, 1 pazar, 7 cumartesi eğer 1 ise aşağıdakiler yap*/
                 DATE_SUB(DATE_TRUNC(DATE(TIMESTAMP(day)), WEEK), INTERVAL 6 DAY),  /*eğer pazar günüyse 6 gün geriye git pazartesini set et*/
                 DATE_ADD(DATE_TRUNC(DATE(TIMESTAMP(day)), WEEK), INTERVAL 1 DAY)) AS weekStartDate,  /*eğer değilse bir gün ileri git pazartesini set et.çünkü pazar gününü veriyor haftanın başlangıcı olarak*/
                 SUM(CAST(lt.hour as INT64)) as lessonHour  /*o haftanın toplam ders saatini alıyor.*/
                   FROM
                     `LessonTime.*` AS lt
                              WHERE
                                lt.studentId = 7
                              AND _TABLE_SUFFIX BETWEEN 'lesson_20161101'
                              AND 'lesson_20161125' 
                              GROUP BY
                                weekNumber,  /*haftaya göre grupla*/
                                student,
                                weekStartDate )
                            ORDER BY
                              weekStartDate,
                              weekNumber,
                              student

Sorgumuz bu kadar. Fonksiyonları yanlarındaki yorum satırlarıyla açıkladım.
Diğer fonksiyonlara buradan bakabilirsiniz.

Leave a Reply

Your email address will not be published. Required fields are marked *

*