in api/wikipediapageview/post_queries.go [72:113]
func (h *handler) buildQuery(req *postQueriesRequest) *bigquery.Query {
var q *bigquery.Query
cond := []string{"datehour >= @startDate", "datehour < @endDate"}
if req.Wiki != "" {
cond = append(cond, "wiki LIKE @wiki")
}
if req.TitleLike != "" {
cond = append(cond, "title LIKE @titleLike")
}
if req.GroupBy == "title" {
q = h.Bigquery.Query(fmt.Sprintf(`SELECT
title,
SUM(views) AS views
FROM bigquery-public-data.wikipedia.pageviews_2020
WHERE %s
GROUP BY title
ORDER BY views %s
LIMIT 100`, strings.Join(cond, "\n AND "), req.OrderBy))
} else {
q = h.Bigquery.Query(fmt.Sprintf(`SELECT
DATE(datehour) AS date,
SUM(views) AS views
FROM bigquery-public-data.wikipedia.pageviews_2020
WHERE %s
GROUP BY date
ORDER BY views %s
LIMIT 366`, strings.Join(cond, "\n AND "), req.OrderBy))
}
q.Parameters = []bigquery.QueryParameter{
{Name: "wiki", Value: "%" + req.Wiki + "%"},
{Name: "titleLike", Value: "%" + req.TitleLike + "%"},
{Name: "startDate", Value: req.StartDate},
{Name: "endDate", Value: req.EndDate.AddDate(0, 0, 1)},
}
return q
}