Blog
Announcements
Announcing Power BI Support in Foundational

Announcing Power BI Support in Foundational

Announcements
July 2, 2024
Team Foundational
Subscribe to our Newsletter
Get the latest from our team delivered to your inbox
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Ready to get started?
Try It Free

At Foundational, our mission is to streamline and simplify data management. To achieve this, we analyze all the source code, queries, configurations and metadata that are reported by the broad range of tools and databases involved in data integration, processing and reporting throughout the data stack.

Today, we're excited to announce our newest addition: Foundational now offers comprehensive support for Power BI, Microsoft’s business intelligence platform. This integration enables Foundational customers using Power BI to:

  • Track column-level lineage that feeds any report, dashboard, tile, and any other object in Power BI. Our coverage extends well beyond the data warehouse and goes into operational databases, CRMs and other upstream sources of data. 
  • Check and validate pull requests that impact Power BI dashboards - Foundational automates downstream impact analysis for all pending code changes which may impact Power BI, at build time and pre-deploy. 
  • Data contracts - Automate workflows, create alerts, and define policies to guardrail Power BI dashboards from being affected unexpectedly by upstream changes. 
Power BI Support in Foundational
Lineage for Power BI (Source: Foundational)

Scaling BI Governance

Business Intelligence (BI) systems are frequently the most impacted by code and data changes, which may occur in the warehouse or further upstream sources such as operational databases, CRMs, ERPs and others. These changes today are untracked and not properly validated. This is what we’re changing at Foundational.

Specifically, Power BI is commonly badly managed due to a combination of a few factors:

  • Column-level lineage for Power BI is not easy: Most data management and data cataloging tools do not properly support column-level for Power BI across all the different types of entities such as M Queries, DAX and others.
  • Partial support in Purview: Microsoft Purview, which is the native catalog in the Microsoft stack, does not support column level lineage in a good, developer-relevant way that can be integrated for example in CI workflows.
  • Permission management is tricky: In the Microsoft stack, proper configuration and permission management are hard, raising the bar for open source and paid solutions. 

Data contracts and change management for BI tools

In addition to dashboards breaking or showing the wrong data, perhaps the biggest challenge BI users often experience is governance. This is showing itself through symptoms such as dashboard sprawl, non-consistent reporting and other symptoms that all result in BI being a lot more costly, slow and messy than it should.

Foundational's integration with Power BI addresses these challenges by:

  • Upstream lineage all the way to the data sources - With Foundational, analysts and BI users can track all the upstream sources leading to a downstream dashboard. Since Foundational is also tracking pending pull requests, consumers get visibility to any pending code changes that may impact them.
  • Data contracts - Once Power BI is setup, everyone can define custom rules to get alerted everytime an upstream change is being introduced. This makes everyone more efficient and automates workflows.
  • Proactive data quality - Foundational is analyzing pending code changes to identify potential data issues, addressing these before they are deployed and may impact data.

Build Better with Foundational

At Foundational, we are solving huge challenges that most if not all data organizations are currently still facing. Automating data contracts and improving data quality are only some aspects of this – Please reach out to learn more.

code snippet <goes here>
<style>.horizontal-trigger {height: calc(100% - 100vh);}</style>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.8.0/gsap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.8.0/ScrollTrigger.min.js"></script>
<script>
// © Code by T.RICKS, https://www.timothyricks.com/
// Copyright 2021, T.RICKS, All rights reserved.
// You have the license to use this code in your projects but not to redistribute it to others
gsap.registerPlugin(ScrollTrigger);
let horizontalItem = $(".horizontal-item");
let horizontalSection = $(".horizontal-section");
let moveDistance;
function calculateScroll() {
 // Desktop
 let itemsInView = 3;
 let scrollSpeed = 1.2;  if (window.matchMedia("(max-width: 479px)").matches) {
   // Mobile Portrait
   itemsInView = 1;
   scrollSpeed = 1.2;
 } else if (window.matchMedia("(max-width: 767px)").matches) {
   // Mobile Landscape
   itemsInView = 1;
   scrollSpeed = 1.2;
 } else if (window.matchMedia("(max-width: 991px)").matches) {
   // Tablet
   itemsInView = 2;
   scrollSpeed = 1.2;
 }
 let moveAmount = horizontalItem.length - itemsInView;
 let minHeight =
   scrollSpeed * horizontalItem.outerWidth() * horizontalItem.length;
 if (moveAmount <= 0) {
   moveAmount = 0;
   minHeight = 0;
   // horizontalSection.css('height', '100vh');
 } else {
   horizontalSection.css("height", "200vh");
 }
 moveDistance = horizontalItem.outerWidth() * moveAmount;
 horizontalSection.css("min-height", minHeight + "px");
}
calculateScroll();
window.onresize = function () {
 calculateScroll();
};let tl = gsap.timeline({
 scrollTrigger: {
   trigger: ".horizontal-trigger",
   // trigger element - viewport
   start: "top top",
   end: "bottom top",
   invalidateOnRefresh: true,
   scrub: 1
 }
});
tl.to(".horizontal-section .list", {
 x: () => -moveDistance,
 duration: 1
});
</script>
Share this post
Subscribe to our Newsletter
Get the latest from our team delivered to your inbox
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Ready to get started?
Try It Free