Power BI 报告很强大,但通常情况下它的信息是单向传递的,由报告制作者通过报表上的数据向用户传递信息,用户可以在报告上交互图表,但并不能在报告上添加信息,这也是很多人期待的一个功能。
虽然 Power BI 本身不支持让用户输入数据,不过利用 Power 家族的另外一个应用:Power Apps,也是可以轻松实现这个需求的。
以下面这个报告为例,展示了每个产品的环比增长数据:
假如把这个报告发给领导,领导看到后,可能会对部分产品提出处理建议,怎么在 Power BI 中添加个输入框让领导输入文字呢?
下面将利用 Power Apps 来实现这个需求,这个方法的前提条件是,需要有 Onedrive for business 账户,并拥有 Power Apps 许可证。
其基本原理是用户输入的信息,通过 Power Apps 将数据回写到 OneDrive 上,然后 Power BI 连接 Onedrive 上的数据,并呈现在可视化报告上。
准备工作
首先在 Onedrive for business 上建一个表格,这里我命名为“备注表”,有产品名称和备注两列,为了让 Power Apps 识别到它,需要将这个数据转换为智能表,套用样式就可以了:
这里的备注列什么数据都没有,就是为了下面进行回写而准备的。
然后利用 Power BI 连接 OneDrive 上的这个表格,导入到模型以后,将这个表与原模型中的产品表建立关系:
然后就可以把备注表中的“备注”列,放到前面表格里:
现在还没有添加备注信息,所以这一列都是空的。
利用 Power Apps 创建应用
画布上添加 Power Apps 视觉对象:
将产品表中的字段“产品名称”放进来,待系统配置好环境以后,点击“新建”
稍后会弹出一长串网址,点击确定进入 Power Apps 云端,进去之后,将现有的图层“Gallery1”删除:
然后就是一个空白的画布,我们重新开始建应用。
1. 插入>窗体>编辑
2. 连接数据源
点击新建的编辑框,然后在属性>数据源>连接符,选择 OneDrive for business
然后选择 OneDrive 里面提前建好的“备注表”。
3. 添加字段
将备注表中的两个字段都添加进来。
然后画布上就出现有两个字段框。
4. 利用公式获取 Power BI 上下文
为了让上面建立的窗体获取 Power BI 的上下文,还需要写个公式,点击左侧的图层Form1,在上面的下拉框中选择 Item,然后输入公式:
LookUp(备注表,产品名称=First(PowerBIIntegration.Data).产品名称)
它的逻辑是通过 Power BI 上下文中的产品名称来查找备注表的信息。
5. 添加按钮
信息输入以后,还需要有一个按钮动作来提交信息,所以需要在画布上插入一个按钮:
关于按钮的文本和格式,可以在右侧格式面板中设置:
然后设置按钮的操作属性,上面的公式栏输入:
SubmitForm(Form1)
6. 应用设计
可以在画布上方插入一个标题,看起来更美观,直接点击上方的插入>标签。
另外,这里还插入了一个文本框,以便提示用户正确操作。
7. 保存并发布
点击"文件",选择另存为到云端:
然后在右下角点击保存即可。至此该应用创建完成。返回到Power BI报表页,就可以看到这个应用。
测试应用效果
先选择一个产品,再对该产品做备注,比如选择环比降幅最大的“VR眼镜”,在备注中输入:
请市场部解释原因并拿出扭转方案!
然后点击“确认”,这个备注信息将回写到 Onedrive 中。
这时表格里并不会立即出现这个文字,因为报表没有刷新,先刷新报表,或者只刷新“备注表”
然后 Onedrive 中的数据导入进来,表格的备注栏就会出现刚才输入的文字:
将这个报告发出后,用户就可以在 Power BI 页面上面直接输入意见,其他人只要刷新报表,就可以看到对方的意见,是不是非常实用呢?
总结
以上就是 Power BI 集成 Power Apps 的一个经典应用场景,这里主要介绍了如何创建应用,具体细节你还可以继续优化,如果采用直连模式可设置自动刷新、利用书签来弹出/隐藏 Power Apps 应用窗口等。对 Power BI 感兴趣的朋友,可以动手试用起来了!
微软最有价值专家(MVP)
微软最有价值专家是微软公司授予第三方技术专业人士的一个全球奖项。29年来,世界各地的技术社区领导者,因其在线上和线下的技术社区中分享专业知识和经验而获得此奖项。
MVP是经过严格挑选的专家团队,他们代表着技术最精湛且最具智慧的人,是对社区投入极大的热情并乐于助人的专家。MVP致力于通过演讲、论坛问答、创建网站、撰写博客、分享视频、开源项目、组织会议等方式来帮助他人,并最大程度地帮助微软技术社区用户使用 Microsoft 技术。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。