powerbi报表中,我们往往会对数据源进行日常刷新,powerbi链接了数据库的情况下,根据日期灵活取数是我们必须掌握的一个技能。

在本文中,我们将介绍如何使用 SQL DATE_SUB 函数来获取数据库中最近 90 天的数据。

DATE_SUB 函数是一个 MySQL 的函数,它可以从一个日期或时间值中减去一个指定的时间间隔,然后返回结果。我们可以利用这个函数来筛选出我们想要的时间范围内的数据。

以下是本文的思维导图:

一:DATE_SUB 函数语法

1.1  基础语法

DATE_SUB(date, INTERVAL expr type)

其中,date 参数是一个合法的日期或时间表达式,expr 参数是一个数值,表示要减去的时间间隔的数量,type 参数是一个字符串,表示时间间隔的类型。type 参数可以是以下值之一:

- MICROSECOND- SECOND- MINUTE- HOUR- DAY- WEEK- MONTH- QUARTER- YEAR,等等

 

二: sql示例

 

2.1  简单示例

 

例如,如果我们想要从当前日期减去 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'

 

2.2  sql实例

 

如果是获取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 连接数据库

 

powerbi界面,点击工具栏获取数据,点击更多。

 

根据自己实际需要链接的数据库类型选择,这里以ODBC举例

 

点击链接,选择对应的数据库源,将刚刚的写好的sql语句粘贴到对应位置

点击确定后,即可获取对应sql语句的数据源,下面的内容就不做演示了。

下次刷新数据的时候,pq就会自动刷新最近90天的数据。

大家可以根据自己的实际业务,应用知识。今天的分享就到这里,再见。