Power BI实现实时动态和用户输入的数据交互

  • 背景:Power BI一般作为一个展示和分析数据的平台存在,即使是我们用Direct
    Query的mode也是受制于连接的数据库的表刷新,不能实现实时动态数据变化展示。

  • 解决思路:当Power Apps里面输入了新的数据时,数据会写入到database的table表里面,然后通过Direct
    Query来连接的Power BI,发布到app.powerbi后,刷新页面就会得到最新的数据。

  • 解决方案:为了实现实时动态和用户输入的数据交互,就做了一个Power BI和Power Apps的解决方案。

在Power Apps里面可以根据不同的用户来生成各个用户自己的原始数据,在Power BI中用Row Level Security来实现不同用户只能看到自己的数据。
Power BI实现实时动态和用户输入的数据交互_第1张图片

方案很简单,主要包括三个部分。

1,在Azure的database里面创建了几张表;

2,把创建的表作为数据源应用到Power Apps里;

3,把创建的表作为数据源应用到Power BI里面;

解决方案具体步骤如下:

  1. 根据需求在数据库中创建table表

创建表也没啥说的,有一个主键是必要的。

  1. 将创建好的table表应用到Power Apps里面。

我的Power Apps是office365里的一个套件。

Power BI实现实时动态和用户输入的数据交互_第2张图片

1.创建一个新的app,从引入一个SQL Server的数据源开始。
Power BI实现实时动态和用户输入的数据交互_第3张图片

b.创建数据库连接。
Power BI实现实时动态和用户输入的数据交互_第4张图片

c.找到之前创建的表名称
Power BI实现实时动态和用户输入的数据交互_第5张图片

d. 连接之后,就会自动生成增删改查的页面。
Power BI实现实时动态和用户输入的数据交互_第6张图片

代码都是直接生成的。下图中页面上的每一个内容都可以在上图Tree view里面找到内容。(我的项目中不要增加+,我修改去掉了)

常用的就是属性,检查和预览。

Power BI实现实时动态和用户输入的数据交互_第7张图片

e. 创建好之后,保存,share分享给需要通过Power Apps来修改table表中参数的人或者组。这里即使数据库表没有权限,但是也可以通过Power Apps来修改table表中的数据内容。

Power BI实现实时动态和用户输入的数据交互_第8张图片

  1. 将创建好的table表应用到Power BI中。

先在visualizations里面拉一个Power Apps这个控件,然后把table中用到的字段拉到PowerApps Data里面。
Power BI实现实时动态和用户输入的数据交互_第9张图片

选中已经创建好的Power Apps,就会生成和Power Apps网页中创建的一样的内容。增删改查的内容和网页创建中预览的一样。(我的项目中我把增加的功能去掉了。)
Power BI实现实时动态和用户输入的数据交互_第10张图片

解决方案基本就是这三个部分了。

本来Power BI只是一个分析数据的工具,现在结合Power Apps可以实现实时修改,实时展示。

之前有财务用户提出,想对于报表中的数据结果给一些实时的comments,然后直接在报告中展示。用Power BI+Power Apps完全可以实现。

(点击带有“Insert comments”名称的Bookmark button,显示出Power Apps,然后在Power Apps里面输入要写的comments。提交数据。用带有“close”的bookmark button关闭Power Apps界面。刷新页面,得到带有comments的报表结果。)

也许有人会问,这个和what-if有啥区别啊,用what-if差不多也可以实现这个问题啊。而且还不用设计到自己创建数据库表和Power Apps啊。hmmm…个人觉得主要是三点:

what-if中的数值变量是有数据范围的,如果数据范围太大,用single values就会出问题,有些太小的值根本不能输入。
例如: GENERATESERIES(0, 20000, 1)
我设想的是输入0到20000之间的任意一个数,步长增加为1,但是当我输入1,2这样的小值的时候,输入框的地方就只能看到0,大概从20开始输入才正常一些。
what-if输入的只能是数值,不能是字符;
变量太多的话,模型中要创建多个what-if的变量维度。不如Power Apps里面方便。

如果对Power Apps不了解的,可以参考下面的官网了解下。
https://docs.microsoft.com/zh-cn/powerapps/powerapps-overview
增删改查这样的操作,基本不用写代码,直接Power Apps里面自动生成了。而且在原有基础上可以自定义的很多。不过,Power Apps对网络有一定要求。我开发的时候都是用的外网。因为"App checker",用国内网络的时候,经常好像有延迟一样。修改了问题但是check下,还是说问题还在~~~我觉得这个也许就是Power Apps在国内不太常用的原因。Power Apps目前还没有像Power BI那样在国内有代理。
Power BI实现实时动态和用户输入的数据交互_第11张图片

最后:

现在写起来,觉得还是挺简单的,错觉~~对于不同的用户,初次登录要给这个用户一个默认值。之后,用户如果修改了默认值,数据库中会保留修改后的结果。保留修改部分还是简单的,因为如以上操作2,Power Apps已经自动生成了Tree view。但是对于初始化默认值部分,可以参考代码如下。先判这个email是否有值,没有就固定生成一个值。代码按顺序执行。Patch函数是提交数据。

If(
    CountRows(
        Filter(
            '[dbo].[Input_value_New]',
            email = User().Email && PK = "UN001"
        )
    ) = 0,
    Patch(
        '[dbo].[Input_value_New]',
        Defaults('[dbo].[Input_value_New]'),
        {
            email: User().Email,
            description: "Ønsket innntet",
     ...........
            order: 1,
            PK: "UN001"
        }
    )
);   
 
Navigate(
    Screen2,
    ScreenTransition.None
)

你可能感兴趣的:(powerbi)