回忆是一座桥
却是通往寂寞的牢

PowerBI流数据集的应用

前言

在PowerBI中,数据的实时展示是一个很常见的场景,根据不同的需求会有不同的方案,但一般都会允许一定的数据延迟,以减轻数据源的负载。对于那些需要真正实时展示一些时间敏感型数据的场景,可以使用具有实时流式处理功能的流数据集或推送数据集来实现。那么本篇文章介绍的就是流数据集的应用。


流数据集没有基础数据库,数据是存储在临时缓存中的,所以数据很快就会过期,适用于实时性要求高但不需要对历史数据进行分析的场景。另外,由于流数据集没有基础数据库,所以也无法使用流数据集中的数据来创建报表,只能在仪表板中使用。由于仪表板的磁贴功能比较有限,因此无法对数据进行二次计算等,所以推送到流数据集中的数据应该就是要展示的数据,而不需要更多的聚合或二次计算。

使用流数据集所创建的仪表板的效果如下图所示:

流数据集的创建与数据推送

下面来看一下流数据集的具体使用。首先,在工作区中新建一个流数据集,并选择API选项,如下图所示:

然后输入流数据集的名称,以及定义流数据集中的表的表结构,只支持一个表。

当点击创建按钮时,将完成流数据集的创建,并生成推送URL,即给该流数据集推送数据的API接口,如下图所示:

该API接口的说明如下:

Url: 创建流数据集时生成的推送URL

Method: POST
Content-Type: application/json

Request Body:
[
    {
    "Filed1":xxxx,
    "Filed2":xxxx,
    ...
    },
    {
    "Filed1":xxxx,
    "Filed2":xxxx,
    ...
    },
    ...
]

然后,调用该API接口推送数据到流数据集,比如通过以下Python脚本进行数据的推送:

import requests
import os,random,datetime,time

url = f'https://api.powerbi.com/beta/e3b425b0-3f10-415c-baa7-1xxxxxxxxxxxxxxx'

for i in range(1000):
    requestBody = [
            {
            "Time": datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
            "Value": random.random()
            }
        ]
    InsertData = requests.post(url,json=requestBody,timeout=(5,10))
    time.sleep(1)

os.system('pause')

上面是测试用的代码,推送的是模拟数据,并且每次推送都只推一行,实际可以一次推送多行,实际应用请根据具体情况做调整。

使用流数据集创建实时更新的仪表板

首先创建一个仪表板,并添加相应的磁贴,以展示流数据集中的数据。

添加磁贴时要选择自定义流数据选项,再选择之前创建的流数据集,如下图所示:

最后,选择图表的类型,并设置好轴与图例等字段。

设置完成后,即可得到如下实时展示的内容:

最后再根据业务需求,完善丰富一下仪表板的内容。如果数据来自多个表,则可能需要创建多个流数据集。

历史数据分析开关

在前面创建流数据集时,在最下方有一个名为历史数据分析的开关,该开关默认是禁用的,如下图所示:

当该开关处于禁用状态时,此时创建的就是上面介绍的流数据集,数据是存储在临时缓存中的,并且不能创建报表,只能在仪表板中使用流数据集等等。而当该开关打开后,其创建的就是同时具有流数据集与推送数据集的功能的特殊数据集,此时因为具备了推送数据集的特性,因此数据可以永久保存。

关于推送数据集的应用与更多特性这里就不过多介绍,当该开关打开时,简单理解成能够永久保存数据的流数据集即可,其它应用姿势可以等掌握推送数据集后再去探索。

总结

想要实现真正实时展示,对数据源的性能有很高的要求,如果遇到这种需求,建议使用具有流式处理功能的流数据集或推送数据集来实现。而在流数据集和推送数据集两者之间则更推荐流数据集,因为流数据集的使用更简单,而且当打开历史数据分析开关时,也能拥有推送数据集的特性。

未经允许不得转载:夕枫 » PowerBI流数据集的应用
订阅评论
提醒
guest
0 评论
内联反馈
查看所有评论