[英]How to extend dynamic schema with views in Hasura and Postgres?
因此,我正在嘗試並努力使用類似這樣的東西來擴展自定義 groupby 的架構
我有一個表,其中包含幾個字段,例如id, country, ip, created_at
。 然后我試圖讓他們成為一個群體。 例如,根據日期、日期小時或國家/地區對數據進行分組,並基於具有 DISTINCT ip 的國家/地區。
老實說,我對 SQL 為零。 但我試着到處玩,得到我想要的。 這是一個例子。
SELECT Hour(created_at) AS date,
COUNT(*) AS count
FROM session where CAST(created_at AS date) = '2021-04-05'
GROUP BY Hour(created_at)
ORDER BY date;
SELECT country,
count(*) AS count from (SELECT * FROM session where CAST(created_at AS date) <= '2021-05-12' GROUP BY created_at) AS T1
GROUP BY country;
SELECT country, COUNT(*) as count
FROM (SELECT DISTINCT ip, country FROM session) AS T1
GROUP BY country;
SELECT DATE(created_at) AS date,
COUNT(*) AS count
FROM session
GROUP BY DATE(created_at)
ORDER BY date;
現在我正在為兩件事而苦苦掙扎。
Raw SQL
中添加變量?CREATE
OR REPLACE VIEW "public"."unique_session_counts_date" AS
SELECT
date(session.created_at) AS date,
count(*) AS count
FROM
session
GROUP BY
(date(session.created_at))
ORDER BY
(date(session.created_at));
有沒有辦法讓它更通用? 我的意思是,如果它是在 Nodejs 中,我可以做類似的事情
return rawQuery(
`
select ${field} x, count(*) y
from ${table}
where website_id=$1
and created_at between $2 and $3
${domainFilter}
${urlFilter}
group by 1
order by 2 desc
`,
params,
);
在這種情況下,根據我發送的任何字段和 where 子句,一個查詢就可以解決問題。 可以在哈蘇拉做類似的事情嗎?
非常感謝你。
- 如何將日期設為變量? 我的意思是,如果我想將它們分組為特定日期范圍/或今天的數據每小時或每季度間隔(更多可配置),我如何在 Hasura 的原始 SQL 中添加變量?
我的第一個想法是這個。 例如,如果您正在考慮通過 GraphQL 傳遞變量,則 GraphQL 看起來像:
query MyQuery {
unique_session_counts_date(where: {created_at: {_gte: "<start date here>", _lte: "<end date here>"}}) {
<...any fields, rollups, etc here...>
}
}
基礎視圖/查詢將遵循您詳細說明的分組依據和排序依據。 然后,您可以提交 graphql 查詢的查詢,並在 raqQuery 調用中傳入相關參數,例如 $1、$2 和 $3。
- 同樣對於這種方法,我必須為它們中的每一個添加架構?
架構? 風景? 我認為不需要專門的視圖,如果多級 select 或類似查詢可以處理並執行它,則不需要特別需要視圖。
這是我第一次嘗試解決這個問題。 我將嘗試在幾個小時內通過 Twitch ZF7B44CFFAFD5C52223D5498196C8A2E7BZ @ HasuraHQ解決這個問題,如果你能加入的話,很高興能現場直播。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.