Forum Discussion

yyjp's avatar
yyjp
Icon for Helper II rankHelper II
4 days ago
Solved

Report displaying Azure SQL Database data with real-time updates

I would like to create a report that displays data from an Azure SQL Database with real-time updates (refreshing every second or every minute).

I have managed to implement the following two methods that come close to my requirements, but are there any other ways to achieve this while minimizing the load on the database?

・Create a DirectQuery report with a 1-second refresh interval, publish it to a Power BI Pro workspace, pin it to a dashboard, and view the dashboard.

・Save an import-mode report to Power BI Report Server, configure a 1-minute refresh schedule, and use a browser extension to refresh the browser every minute.

Thank you in advance.

  • Hi yyjp​,

    One important update here: I would not build a new solution around Push/Streaming datasets.

    Microsoft currently states that Power BI real-time streaming is scheduled for deprecation, so I would treat that as a legacy direction rather than the preferred architecture for a new implementation.

    For a normal Power BI report, DirectQuery + Automatic Page Refresh is still the supported approach.

    The key detail is the workspace type.

    Microsoft’s Automatic Page Refresh documentation currently documents:

    Power BI Desktop
    -> minimum fixed interval: 1 second
    
    Shared/Pro workspace
    -> minimum fixed interval: 30 minutes
    
    Dedicated capacity, including Fabric F capacity
    -> minimum fixed interval can be 1 second, subject to the capacity administrator setting

    So being on F4 does not by itself prevent a 1-second refresh interval.

    I would check the capacity settings first, because the admin can configure the minimum Automatic Page Refresh interval for the capacity.

    The bigger concern on F4 is capacity and source load.

    With fixed-interval refresh, every visual on the open page sends DirectQuery queries repeatedly.

    For example:

    8 visuals
    x 5 users
    x 1-second refresh

    can create a substantial continuous query workload against both the Fabric capacity and Azure SQL.

    Microsoft also notes that if the visual queries take longer than the configured interval, Power BI waits for them to finish before sending the next refresh, so setting 1 second does not guarantee that the page will actually update every second.

    If your goal is true change-driven ingestion rather than polling Azure SQL every second, I would also look at Azure SQL Database CDC through Fabric Eventstream.

    That gives you a pattern such as:

    Azure SQL CDC
    -> Eventstream
    -> Eventhouse / Real-Time Intelligence
    -> Power BI

    so Fabric consumes database changes as events rather than repeatedly querying the operational database for the full visual workload.

    For Power BI Report Server, I would be cautious about assuming it supports the same 1-second Automatic Page Refresh behavior as the Power BI service. Microsoft documents DirectQuery support in Report Server, but I could not find current documentation confirming an equivalent 1-second browser refresh feature there.

    I would also avoid using a browser refresh extension as the production solution. It refreshes the browser/report page, but it does not reduce the underlying query cost or give you a proper real-time ingestion architecture.

    So for your case I would choose between:

    DirectQuery + Automatic Page Refresh on F4
    -> simplest option
    -> monitor F4 capacity and Azure SQL load carefully

    or

    Azure SQL CDC -> Eventstream / Eventhouse -> Power BI
    -> better fit when you genuinely need event-driven near-real-time analytics and want to reduce repeated polling of Azure SQL

    AI-assisted drafting: AI was used to help structure and phrase this response. I reviewed and validated the technical content before posting.

5 Replies

  • Hi yyjp​,

    both of your approaches work around the core limitation rather than solving it, Power BI reports (DirectQuery or Import) are not built for true real-time, they're pull-based on a refresh cycle, which is why you're relying on dashboard pinning or browser auto-refresh extensions.

    The method actually designed for this is a Push Dataset / Streaming Dataset, and it's lighter on your database than 1-second DirectQuery polling:

    • Instead of Power BI pulling from Azure SQL every second, you push data into Power BI via the REST API (or through Azure Stream Analytics / Power Automate as a middle layer reading change events from SQL).
    • This updates dashboard tiles in real time (sub-second, no manual refresh needed) without hammering your database with repeated queries.
    • Reports (not dashboards) still don't support true real-time, so you'd pin the relevant visuals to a dashboard, same as your current DirectQuery approach, but tile updates arrive via push instead of scheduled polling.

    Key tradeoff: this requires a bit of setup (an Azure Function, Logic App, or Stream Analytics job to detect SQL changes and push them), but it fully removes the 1-second polling load from your Azure SQL Database, which your current DirectQuery method can't avoid.

    If setup complexity is a concern, Fabric's newer Real-Time hub / Eventstreams is also worth a look if you're on a Fabric capacity, it's built specifically for this kind of continuous ingestion without repeated query load.

  • Hi yyjp​ 

    You can use either mirror the database into Microsoft Fabric with Fabric Mirroring for Azure SQL Database then Direct Lake report or Power BI streaming dataset. In both approaches database will read once per change instead of per viewer or refresh. If you want to stay on Pro or Report Server import mode approach is fine for about one minute as one scheduled refresh serves all viewers 

     

    • yyjp's avatar
      yyjp
      Icon for Helper II rankHelper II

      Thank you for your response.

      I am currently using Fabric, but since I am operating on the F4 capacity, I am concerned about capacity consumption given the high frequency of data reads in this scenario.

      • Are there any alternatives to the Fabric or Pro dashboards you mentioned if I want to implement 1-second refreshes?
      • * Is there a way to achieve 1-second refreshes using Report Server?
      • * Is there a way to automatically refresh the browser display when using Report Server?

      Thank you in advance.

  • ShivekMaharaj's avatar
    ShivekMaharaj
    Icon for Community Champion rankCommunity Champion

    Hi yyjp​,

    One important update here: I would not build a new solution around Push/Streaming datasets.

    Microsoft currently states that Power BI real-time streaming is scheduled for deprecation, so I would treat that as a legacy direction rather than the preferred architecture for a new implementation.

    For a normal Power BI report, DirectQuery + Automatic Page Refresh is still the supported approach.

    The key detail is the workspace type.

    Microsoft’s Automatic Page Refresh documentation currently documents:

    Power BI Desktop
    -> minimum fixed interval: 1 second
    
    Shared/Pro workspace
    -> minimum fixed interval: 30 minutes
    
    Dedicated capacity, including Fabric F capacity
    -> minimum fixed interval can be 1 second, subject to the capacity administrator setting

    So being on F4 does not by itself prevent a 1-second refresh interval.

    I would check the capacity settings first, because the admin can configure the minimum Automatic Page Refresh interval for the capacity.

    The bigger concern on F4 is capacity and source load.

    With fixed-interval refresh, every visual on the open page sends DirectQuery queries repeatedly.

    For example:

    8 visuals
    x 5 users
    x 1-second refresh

    can create a substantial continuous query workload against both the Fabric capacity and Azure SQL.

    Microsoft also notes that if the visual queries take longer than the configured interval, Power BI waits for them to finish before sending the next refresh, so setting 1 second does not guarantee that the page will actually update every second.

    If your goal is true change-driven ingestion rather than polling Azure SQL every second, I would also look at Azure SQL Database CDC through Fabric Eventstream.

    That gives you a pattern such as:

    Azure SQL CDC
    -> Eventstream
    -> Eventhouse / Real-Time Intelligence
    -> Power BI

    so Fabric consumes database changes as events rather than repeatedly querying the operational database for the full visual workload.

    For Power BI Report Server, I would be cautious about assuming it supports the same 1-second Automatic Page Refresh behavior as the Power BI service. Microsoft documents DirectQuery support in Report Server, but I could not find current documentation confirming an equivalent 1-second browser refresh feature there.

    I would also avoid using a browser refresh extension as the production solution. It refreshes the browser/report page, but it does not reduce the underlying query cost or give you a proper real-time ingestion architecture.

    So for your case I would choose between:

    DirectQuery + Automatic Page Refresh on F4
    -> simplest option
    -> monitor F4 capacity and Azure SQL load carefully

    or

    Azure SQL CDC -> Eventstream / Eventhouse -> Power BI
    -> better fit when you genuinely need event-driven near-real-time analytics and want to reduce repeated polling of Azure SQL

    AI-assisted drafting: AI was used to help structure and phrase this response. I reviewed and validated the technical content before posting.

    • yyjp's avatar
      yyjp
      Icon for Helper II rankHelper II

      Thank you for the detailed answer.

      I will check it out and give it a try.