在powerbi报表中,我们往往会对数据源进行日常刷新,powerbi链接了数据库的情况下,根据日期灵活取数是我们必须掌握的一个技能。
在本文中,我们将介绍如何使用 SQL 的 DATE_SUB 函数来获取数据库中最近 90 天的数据。
DATE_SUB 函数是一个 MySQL 的函数,它可以从一个日期或时间值中减去一个指定的时间间隔,然后返回结果。我们可以利用这个函数来筛选出我们想要的时间范围内的数据。
以下是本文的思维导图:
DATE_SUB(date, INTERVAL expr type)
其中,date 参数是一个合法的日期或时间表达式,expr 参数是一个数值,表示要减去的时间间隔的数量,type 参数是一个字符串,表示时间间隔的类型。type 参数可以是以下值之一:
- MICROSECOND- SECOND- MINUTE- HOUR- DAY- WEEK- MONTH- QUARTER- YEAR,等等
例如,如果我们想要从当前日期减去 3 天,我们可以写成:
DATE_SUB(CURDATE(), INTERVAL 3 DAY)
CURDATE() 函数返回当前日期,INTERVAL 3 DAY 表示 3 天的时间间隔。这个表达式的结果是一个日期值,比如 '2023-05-09'。
如果我们想要从当前时间减去 2 小时 30 分钟,我们可以写成:
DATE_SUB(NOW(), INTERVAL '2:30' HOUR_MINUTE)
NOW() 函数返回当前时间,INTERVAL '2:30' HOUR_MINUTE 表示 2 小时 30 分钟的时间间隔。这个表达式的结果是一个时间值,比如 '2023-05-12 03:40:04'。
如果是获取90天数据呢?
假设我们有一个flow_data表,里面有日期,门店所在城市,营业额,订单字段。
那么,现在要查询分日期,门店所在城市的营业额、订单数,并且要滚动90天,下方是示例的sql代码。
SELECT 日期,门店所在城市, SUM(营业额) AS 营业额 , SUM(订单数) AS 订单数, FROM flow_data WHERE 日期 BETWEEN DATE_SUB(CURRENT_DATE(),INTERVAL 90 day) and CURRENT_DATE() GROUP BY 日期,门店所在城市
可以看到,最关键的是WHERE 后面的限定条件被我们用DATE_SUB函数设置为了滚动90天。
"BETWEEN and "语句,在sql中意为"在....之中",这个语句中,起始日期为90天前,截止日期为当前的日期,那么是不是就是滚动90天了呢?理解了这个就可以灵活使用了。
在powerbi界面,点击工具栏获取数据,点击更多。
根据自己实际需要链接的数据库类型选择,这里以ODBC举例
点击链接,选择对应的数据库源,将刚刚的写好的sql语句粘贴到对应位置
点击确定后,即可获取对应sql语句的数据源,下面的内容就不做演示了。
下次刷新数据的时候,pq就会自动刷新最近90天的数据。
大家可以根据自己的实际业务,应用知识。今天的分享就到这里,再见。