首页 > 编程语言 >通过Power BI实现数据的实时刷新与展示2-使用Python Code无限实时刷新数据源

通过Power BI实现数据的实时刷新与展示2-使用Python Code无限实时刷新数据源

时间:2024-01-17 09:57:04浏览次数:36  
标签:数据源 实时 headers json 刷新 message PBI authorization

上一篇讲了使用Direct Query Mode来实现数据自动刷新,但是Direct Mode只能适用于Database这种数据源,很多其它的源都不行。对于其它类型的数据源,就只能另想办法了。

PBI刷新可以用以下2种方式:

1,在PBI Desktop中点击刷新,然后刷新完成后,再Publish

2,将报告发布到WorkSpace中,然后在选中Dataset,再刷新

这里介绍的是第二种方式,使用 Selenium + Request 方式刷新Dataset

 

先说刷新:当我们点击Workspace里的refresh之后,按下F12,点开Network,可以看到刷新PBI,实际上是触发了一个POST请求:https://wabi-west-europe-redirect.analysis.windows.net/powerbi/content/packages/9642769/refresh/,其中红字部分会根据报告的不同而改变,OK,接下来想办法如何正常执行这个POST请求就好了。

 

POST请求的Header很好拼接,只有authorization这一个变量,代表了登录人的信息,其它都是固定不变的 

        headers = {
            'Host': 'wabi-mc-sha-redirect.analysis.chinacloudapi.cn',
            'User-Agent': r'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36',
            'Accept': 'application/json, text/plain, */*',
            'Accept-Language': 'zh-CN,zh;q=0.9',
            'Accept-Encoding': 'gzip, deflate, br',
            'Authorization': authorization_json,
            'Content-Type': 'application/json;charset=UTF-8',
            'Origin': 'https://app.powerbi.com'
        }
        response = requests.post(url, headers=headers)
        if response.status_code == 200:
            log.info('Refresh successfully')
        else:
            log.error('Refresh failed')

最后,我们在想办法拿到登录的Cookie就可以了。这里使用Selenium来获取用户的登录信息

很多人使用selenium driver实例化浏览器的时候,其实都是使用的一个临时用户资料,打开一个初始浏览器,所以每次都要输入用户名,密码。如果先模拟登录,再取用户信息,这样就会有很多多余的操作。因此我们使用真实的用户去实例化浏览器。打开chrome://version/,可以找到用户资料的存储路径,如下

 

接下来使用真实的用户去登录PBI Workspace

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
     capabilities = DesiredCapabilities.CHROME
        capabilities["goog:loggingPrefs"] = {"performance": "ALL"}
        option = webdriver.ChromeOptions()
        user_data = '--user-data-dir=C:/Users/your_name/AppData/Local/Google/Chrome/User Data'
        option.add_argument(user_data)  # 设置成用户自己的数据目录
        # chrome_driver = C:\LegacyApp\Python36\chromedriver.exe
        driver = webdriver.Chrome(executable_path=chrome_driver, chrome_options=option)
        workplace = 'https://app.powerbi.com/groups/4458f0a9-c43f-4dd5-913e-3fa5a042de64/list'

到此为止,就使用了真实用户登录到power bi online的workspace。

我们再获取一下authorization

        authorization_json = ''
        for entry in logs:
            if "Bearer" in str(entry["message"]):
                json_message_data = json.loads(str(entry["message"]))
                authorization_json = json_message_data['message']['params']['request']['headers']['Authorization']
                break
        # url = switch('Operation_And_Production_System')
        log.info(f'Authorization is {authorization_json}')

最后,我们再把 authorization,传给第一步里面的headers,就可以正常使用POST请求来刷新PBI了。

可以将程序打包成exe,挂到Task Schedule中运行

标签:数据源,实时,headers,json,刷新,message,PBI,authorization
From: https://www.cnblogs.com/kykstyle/p/17968214

相关文章

  • 路径刷新算法
    deffind_paths_and_modify(data,target_path,new_value):paths=[]stack=[([],data)]whilestack:current_path,current_data=stack.pop()ifisinstance(current_data,dict):forkey,valueincurrent_data.item......
  • Python Whisper 实时语音识别
    PythonWhisper实时语音识别简介在现代科技的快速发展下,语音识别技术逐渐成为我们生活中必不可少的一部分。PythonWhisper实时语音识别就是一种基于Python的语音识别库,它能够实时地将人的语音转化为文本。本文将介绍PythonWhisper的基本概念、使用方法以及相关代码示例。什......
  • 通过Power BI实现数据的实时刷新与展示1-DirectQuery
    使用微软PowerBI实现数据的实时刷新并展示,一直是一个老大难问题。微软在实时刷新展示这个方面做的一直很差,目前官方自动刷新工具Gateway也仅仅能支持最小30分钟/次的频率。但是对于一些经常变动的数据30分钟的刷新频率显然是不够用的,因此就只能自力更生各凭本事了。今天就介绍一......
  • vscode实现Markdown实时预览
    vscode-插件搜索:MarkdownPreviewEnhanced安装然后打开vscode预览框,即可。That'sALL......
  • Web 实时消息推送
    总结以下内容为JavaGuide补充 介绍优点缺点短轮询客户端定时向服务端发送请求,服务端直接返回响应数据(即使没有数据更新)简单、易理解、易实现实时性太差,无效请求太多,频繁建立连接太耗费资源长轮询与短轮询不同是,长轮询接收到客户端请求之后等到有数据更新才......
  • rsync+inotify-tools实时同步数据
    rsync+inotify-tools实时同步数据原创 青菜浪人 青菜浪人 2023-10-0912:42 发表于陕西 听全文rsync是Linux系统下的数据镜像备份工具,可以在本地或远程系统之间同步文件和目录,支持增量备份,速度快,占用资源少,使用简单方便。rsync特点-速度快,占用资源少。-可以使......
  • SparkStreaming 连接 Kafka数据源
    本文的前提条件:SparkStreaminginJava参考地址:SparkStreaming+KafkaIntegrationGuide(Kafkabrokerversion0.10.0orhigher)1.添加POM依赖<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>......
  • springboot项目配置多数据源
    springboot项目配置多数据源//关键:mybatis文件的目录需要区分开来sqlSessionFactoryBean.setMapperLocations(newPathMatchingResourcePatternResolver().getResources("classpath:mybatis.myProjectOne/*.xml"));#从数据库配置,数据库的配置以spring.datasource.myPr......
  • 赋能虚拟教学革命,实时云渲染助力复旦大学打造元宇宙教学
    在风起云涌之后元宇宙行业也如大浪淘沙洗尽铅华一般,开始趋于理性和务实,虽然元宇宙已不高亮在舞台的正中心,但越来越多的贴近一线应用正依托元宇宙几年来的发展积累,绽放出许多实实在在且具有潜力的新亮点。在教育+元宇宙领域便是如此,教育+元宇宙已经有了非常多成功的案例。例如,香......
  • 创新逛展体验!实时云渲染助力2023天河区首届房博会元宇宙
    2023年11月10日-12日,2023广州市天河区首届房博会暨家居家电消费节在体育中心南广场落幕。举办期间,参展的天河区明星楼盘、家居家电品牌大派优惠券,让消费者买得更加爽手。值得一提的是,此次活动除了线下热闹的展会外,还引入了元宇宙概念,市民在11月内通过扫描活动的二维码,就能进行......