加载数据集后,您可以开始构建一些查询,以发现您的数据告诉您什么。本教程使用 Timescale 超函数 来构建标准 PostgreSQL 中不可能实现的查询。
在本节中,您将学习如何构建查询,以回答以下问题
当您为能源消耗数据设置数据库后,您可以构建一个查询,以查找典型一天中每小时能源消耗的中位数和最大值。
连接到包含能源消耗数据集的 Timescale 数据库。
在 psql 提示符下,使用 Timescale Toolkit 功能来计算第 50 个百分位数或中位数。然后使用标准 PostgreSQL max 函数计算最大能源消耗
WITH per_hour AS (SELECTtime,valueFROM kwh_hour_by_hourWHERE "time" at time zone 'Europe/Berlin' > date_trunc('month', time) - interval '1 year'ORDER BY 1), hourly AS (SELECTextract(HOUR FROM time) * interval '1 hour' as hour,valueFROM per_hour)SELECThour,approx_percentile(0.50, percentile_agg(value)) as median,max(value) as maximumFROM hourlyGROUP BY 1ORDER BY 1;您获得的数据看起来有点像这样
hour | median | maximum----------+--------------------+---------00:00:00 | 0.5998949812512439 | 0.601:00:00 | 0.5998949812512439 | 0.602:00:00 | 0.5998949812512439 | 0.603:00:00 | 1.6015944383271534 | 1.904:00:00 | 2.5986701108275327 | 2.705:00:00 | 1.4007385207185301 | 3.406:00:00 | 0.5998949812512439 | 2.707:00:00 | 0.6997720645753496 | 0.808:00:00 | 0.6997720645753496 | 0.809:00:00 | 0.6997720645753496 | 0.810:00:00 | 0.9003240409125329 | 1.111:00:00 | 0.8001143897618259 | 0.9
您还可以查看周末和工作日之间的能源消耗变化。
连接到包含能源消耗数据集的 Timescale 数据库。
在 psql 提示符下,使用此查询查找工作日和周末的消耗差异
WITH per_day AS (SELECTtime,valueFROM kwh_day_by_dayWHERE "time" at time zone 'Europe/Berlin' > date_trunc('month', time) - interval '1 year'ORDER BY 1), daily AS (SELECTto_char(time, 'Dy') as day,valueFROM per_day), percentile AS (SELECTday,approx_percentile(0.50, percentile_agg(value)) as valueFROM dailyGROUP BY 1ORDER BY 1)SELECTd.day,d.ordinal,pd.valueFROM unnest(array['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']) WITH ORDINALITY AS d(day, ordinal)LEFT JOIN percentile pd ON lower(pd.day) = lower(d.day);您获得的数据看起来有点像这样
day | ordinal | value-----+---------+--------------------Mon | 2 | 23.08078714975423Sun | 1 | 19.511430831944395Tue | 3 | 25.003118897837307Wed | 4 | 8.09300571759772Sat | 7 |Fri | 6 |Thu | 5 |
您可能还想查看每月发生的能源消耗。
连接到包含能源消耗数据集的 Timescale 数据库。
在 psql 提示符下,使用此查询查找一年中每个月的消耗量
WITH per_day AS (SELECTtime,valueFROM kwh_day_by_dayWHERE "time" > now() - interval '1 year'ORDER BY 1), per_month AS (SELECTto_char(time, 'Mon') as month,sum(value) as valueFROM per_dayGROUP BY 1)SELECTm.month,m.ordinal,pd.valueFROM unnest(array['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']) WITH ORDINALITY AS m(month, ordinal)LEFT JOIN per_month pd ON lower(pd.month) = lower(m.month)ORDER BY ordinal;您获得的数据看起来有点像这样
month | ordinal | value-------+---------+-------------------Jan | 1 |Feb | 2 |Mar | 3 |Apr | 4 |May | 5 | 75.69999999999999Jun | 6 |Jul | 7 |Aug | 8 |Sep | 9 |Oct | 10 |Nov | 11 |Dec | 12 |可选 要在 Grafana 中可视化此数据,请创建一个新面板,并选择
条形图
可视化。选择能源消耗数据集作为您的数据源,并键入上一步中的查询。在格式为
部分中,选择表格
。可选 选择一种配色方案,以便以不同的颜色显示不同的消耗量。在选项面板中,在
标准选项
下,将颜色方案
更改为有用的按值
范围。
关键词
在此页面上发现问题?报告问题 或 在 GitHub 上编辑此页。