Features
All Features Report Designer Dashboards Self-Service BI Scheduling & Exports Advanced Filtering AI Assistant & Live Preview Data Visualization
Use Cases
Accounting & Finance HR & People Analytics SaaS Platforms Enterprise BI All Use Cases
Industries
All Industries Fintech Healthcare Banking & Finance Education Ecommerce & Retail Travel & Hospitality Real Estate
Migrate & Compare
Compare Alternatives From Izenda From SSRS From ExagoBI Migration Help
Company
About Pricing FAQ How It Works Roadmap Community Case Studies Contact Us Schedule a Demo
Sign In Schedule Demo Free Trial
Developer Guide

Looker Alternative for .NET Developers: Embedded Reporting Without LookML or Google Cloud Lock-In (2026)

Looker (now Google Looker) is a powerful enterprise BI platform, and Looker Studio (formerly Google Data Studio) is a popular free reporting tool. Both products get evaluated by .NET development teams at some point in the embedded analytics journey — and both consistently fail the same test: they are not designed for .NET ISVs and SaaS teams embedding white-labeled, multi-tenant reporting directly inside their applications. LookML modeling overhead, Google Cloud infrastructure dependency, iframe-only embedding, broken multi-tenant routing, and enterprise pricing that starts at thousands of dollars per month are the five reasons .NET teams move on. This guide explains each problem in depth and shows what a purpose-built .NET-native alternative looks like.

April 2026 15 min read Looker, Looker Studio, Google Data Studio, Embedded Analytics, .NET Reporting, Self-Service BI

Looker vs. Looker Studio: Understanding the Difference

Google operates two distinct products under the “Looker” brand, and they serve fundamentally different use cases. Understanding which product you are actually evaluating is the first step to understanding why it may not fit your .NET embedded analytics requirements.

Looker (Enterprise)

Looker is a semantic-layer BI platform acquired by Google in 2020 and now marketed as “Google Looker.” It is a heavyweight enterprise product built around LookML — a proprietary YAML-based data modeling language — and Google Cloud infrastructure. Looker is designed for large data teams who want to define a centralized, version-controlled semantic model of their data warehouse (BigQuery, Snowflake, Redshift) and expose curated datasets to business users via governed dashboards. Pricing starts in the thousands of dollars per month for enterprise contracts and scales with user count and usage.

Looker Studio (formerly Google Data Studio)

Looker Studio is a separate, free data visualization tool that Google rebranded from “Google Data Studio” in 2022. It is a lightweight reporting tool designed for creating shareable dashboards that connect to Google products (Google Analytics, Google Sheets, BigQuery) and a limited set of third-party connectors. Looker Studio is not related to Looker Enterprise architecturally — it shares a brand name but is a completely different product. Looker Studio Pro adds collaboration features and organizational controls for $9/user/month.

Both products are evaluated by .NET teams at different stages of the reporting journey. Looker Studio is commonly tried first because it is free and accessible. Looker Enterprise is evaluated by teams that need more governance and scalability. This guide covers both in the context of .NET embedded analytics — and both fail for the same fundamental reason: they are designed for internal analytics, not for embedding white-labeled, multi-tenant reporting inside a .NET SaaS application.

Why .NET Teams Evaluate Looker

The reasons .NET development teams consider Looker or Looker Studio are rational given the products’ surface-level characteristics:

1. Looker Studio Is Free and Immediately Accessible

Any Google account has access to Looker Studio at no cost. For a team that needs to ship a basic reporting feature quickly, the zero licensing cost is compelling. Creating a connected report against a Google Analytics or BigQuery source can be done in minutes without any procurement process.

2. Looker’s Semantic Layer Is Genuinely Powerful

For large data teams, Looker’s LookML semantic layer is technically impressive. Defining relationships, calculated dimensions, and measures in a version-controlled YAML model that generates SQL at query time is a sound approach to governed analytics at scale. Teams with a dedicated analytics engineering function and a data warehouse strategy find Looker’s modeling capabilities compelling.

3. Google Brand and Ecosystem Integration

Google’s brand carries significant weight in procurement discussions. Teams already using Google Cloud Platform, BigQuery, or Google Workspace find the integration story appealing, particularly for internal analytics use cases.

The pattern: Looker and Looker Studio are strong fits for internal analytics on Google Cloud data. The problems appear immediately when the requirement shifts to embedding white-labeled, customer-facing reporting inside a .NET SaaS application with multi-tenant data isolation.

Why .NET ISVs Can’t Use Looker for Embedded Analytics

Looker Enterprise’s architecture introduces a specific set of problems for .NET ISVs and SaaS teams. These are not configuration issues or version-specific bugs — they are structural characteristics of Looker as a product.

1. Enterprise Pricing Starts at Thousands Per Month

Looker is priced for enterprise data teams, not for ISVs embedding analytics in applications. Published pricing estimates for Looker Enterprise range from $3,000 to $5,000 per month at minimum contract levels, scaling upward with concurrent users and consumption. For a .NET ISV that wants to offer reporting as a feature of their application to hundreds or thousands of end users, Looker’s per-seat or consumption-based pricing creates a cost structure that scales against you as you grow.

2. Google Cloud Dependency and BigQuery Optimization

Looker is deeply optimized for Google Cloud infrastructure. While Looker can technically connect to SQL Server, PostgreSQL, and other databases via JDBC connectors, the product’s performance optimizations, semantic layer caching, and PDT (Persistent Derived Tables) infrastructure are built around BigQuery and GCP. .NET SaaS teams running SQL Server or PostgreSQL on Azure, AWS, or on-premises frequently encounter performance issues and unsupported features that make Looker feel like a second-class experience on non-GCP databases.

3. Iframe-Only Embedding — No Native .NET SDK

Looker’s embedded analytics offering is built on iframe embedding. To embed a Looker dashboard in your .NET application, you construct a signed URL on your server using Looker’s embed secret, then render it in an iframe. There is no NuGet package, no Razor component, no ASP.NET Core middleware — just an iframe URL with a cryptographic signature.

This means all of the iframe limitations apply: no CSS inheritance from your application’s design system, fragile height resizing across browsers, unreliable print and PDF export, and complex postMessage event handling for any bidirectional communication between the embedded dashboard and your application. For .NET developers building a product where reporting should look and feel like part of the application, the iframe model consistently fails to meet the bar.

4. Multi-Tenant Routing Requires Looker-Specific Architecture

Looker’s embedding model supports multi-tenancy through “user attributes” — Looker-specific configuration that maps user properties to connection parameters. Implementing multi-tenant routing requires modeling your tenancy strategy inside LookML and Looker’s user attribute system, which creates a coupling between your application’s authentication model and Looker’s internal configuration. This is a fundamental departure from the .NET pattern of handling authorization in your own application code, and it means that changes to your tenancy model require coordinated changes in LookML.

5. Looker Requires a Dedicated Analytics Engineering Function

Looker is designed for organizations with analytics engineers who maintain LookML models full-time. For .NET ISV teams where the developers building the product are the same people maintaining the reporting layer, LookML is an additional technology stack to learn, maintain, and debug. The overhead of LookML modeling for a SaaS team that wants to ship embedded reports — not manage a data warehouse semantic layer — is disproportionate to the value delivered.

Why Looker Studio Fails for .NET Embedded Reporting

Looker Studio has a different failure mode than Looker Enterprise. The problems are simpler but equally fundamental for embedded .NET use cases.

1. No Embedding API — Only Shareable Links

Looker Studio reports can be shared via public links or embedded via iframe using a share URL. There is no programmatic embedding API, no authentication token system, and no way to pass application context (user identity, tenant ID, dynamic filters) to the embedded report. The only way to “embed” a Looker Studio report in your .NET application is to render a public (or link-shared) iframe. This means the report is accessible to anyone with the URL — there is no server-side authentication integration.

For customer-facing SaaS applications, embedding an unauthenticated, publicly accessible iframe is not a viable option. Your customers’ data would be accessible to anyone who obtains the iframe URL.

2. Data Sources Are Limited to Google Ecosystem and Connectors

Looker Studio works best with Google-native data sources: Google Analytics, Google Sheets, BigQuery, Google Ads, and Search Console. Third-party connectors for SQL Server, PostgreSQL, and other relational databases are available but require community-built or third-party-maintained connector extensions. Connection performance, reliability, and support for these connectors vary significantly. For .NET teams whose application data lives in SQL Server or PostgreSQL, Looker Studio is a poor data access layer.

3. No Multi-Tenancy, No Row-Level Security

Looker Studio has no concept of multi-tenant data routing or user-specific row-level filtering based on application identity. A Looker Studio report shows data from its configured data source without any knowledge of who is viewing it. For .NET SaaS applications where each customer must see only their own data, this is an absolute disqualifier — not a limitation to work around.

4. No White-Labeling

Looker Studio reports are branded with Google’s UI chrome, Looker Studio header, and Google navigation elements when embedded. There is no way to remove this branding or render a Looker Studio report as a seamless part of your .NET application’s design system. Your customers will see “Looker Studio” — not your product.

The LookML Modeling Tax

LookML is one of Looker’s most-cited strengths, and for the right team in the right context, the criticism below does not apply. But for .NET ISV teams building embedded reporting, LookML introduces a specific kind of overhead that is worth understanding before committing to the Looker stack.

What LookML Requires

LookML is a YAML-based semantic layer language. Before any user can view a report in Looker, a developer or analytics engineer must write LookML that defines every view (table), every dimension (column), every measure (aggregate), and every relationship (join) that the report might use. This model is stored in a Git repository and deployed to Looker via an integrated development environment.

For a .NET team whose reporting requirement is “let customers drag and drop columns from our SQL Server database to build their own reports,” LookML is a mandatory intermediate layer between the database and the end user. Every time you add a new table, rename a column, or add a calculated field, you must update the LookML model before the change is visible to report users. This creates a serialized bottleneck between schema changes and reporting changes.

LookML Is a Separate Technology Stack

For a .NET development team, maintaining LookML means maintaining expertise in a technology that is entirely separate from C#, ASP.NET Core, Entity Framework, or any other technology in the .NET ecosystem. There is no NuGet package, no official Microsoft integration, no IDE tooling that integrates LookML development into a .NET workflow. LookML knowledge does not transfer to other parts of the application stack.

The total cost of LookML maintenance — onboarding time, ongoing model updates, debugging generated SQL, keeping the model in sync with schema changes — consistently exceeds initial estimates for teams whose core competency is .NET application development, not data engineering.

The practical consequence: LookML is right for large data teams running centralized data warehouses who want governed semantic layers. It is wrong for .NET ISVs who want to ship a self-service report builder to their customers without standing up a separate modeling discipline.

What to Look for in a Looker Alternative for .NET

When evaluating Looker or Looker Studio alternatives for a .NET embedded analytics use case, these are the capabilities that resolve the structural gaps described above:

NuGet / SDK-Based Integration

A NuGet package that installs into your ASP.NET Core project and renders reporting components natively inside your application — no iframe, no Google Cloud dependency, no LookML. The reporting layer should be part of your application’s component tree.

Direct SQL Server / PostgreSQL Connection

First-class support for the databases .NET applications actually use: SQL Server, PostgreSQL, MySQL, and Oracle. No BigQuery requirement, no ETL to a Google-native data store, no third-party connector maintenance.

Per-Request Multi-Tenant Routing

Dynamic connection string routing on each report request, controlled by your application’s own authorization context — not by a Looker user attribute configuration. Each tenant’s session must query only their data, enforced at the query layer by your application.

Full White-Labeling Included

Complete removal of vendor branding as a baseline capability. Your customers should see your product UI, not Looker, Looker Studio, or any Google branding.

Self-Service Report Builder Without a Modeling Layer

An in-application drag-and-drop report builder that connects directly to your database tables — without requiring LookML, a semantic layer, or analytics engineering to configure before users can build reports.

Flat-Rate Pricing for ISV Deployments

A licensing model that does not scale against you as your customer base grows. Flat-rate or application-level pricing that covers unlimited end users and tenants without per-seat or consumption charges.

Dotnet Report: Purpose-Built Embedded Reporting for .NET

Dotnet Report is an embedded reporting and self-service BI platform built specifically for .NET applications. It ships as a NuGet package that installs into your ASP.NET Core application and renders the full reporting UI — report builder, dashboards, charts, tables, filters — natively inside your application with no iframes, no separate server, no LookML, and no Google Cloud dependency.

The architecture is designed around the multi-tenant .NET SaaS pattern. Your application passes a connection string or connection factory on each request, allowing Dotnet Report to query each tenant’s SQL Server or PostgreSQL database dynamically. Tenant isolation is enforced at the query layer by your application code, not by a Looker user attribute configuration — so your existing authorization model governs data access without modification.

No LookML, No Semantic Layer: Direct Database Connection

Dotnet Report connects directly to your application’s SQL Server, PostgreSQL, MySQL, or other ADO.NET-compatible database. Administrators configure which tables and columns are visible to which users through a permission UI in the application. There is no separate modeling language to learn, no Git-tracked YAML files to maintain, and no analytics engineering bottleneck between a schema change and the report builder reflecting that change.

When you add a column to a database table, it becomes available in the Dotnet Report builder as soon as you add it to the visible column list in the admin panel. No LookML update, no deployment, no pull request.

How the Integration Works

Integration follows the standard .NET library pattern. You install the NuGet package, call services.AddDotnetReport() in your DI configuration, add the Dotnet Report middleware to your pipeline, and drop the report builder component into any Razor view or layout. Authentication uses your application’s existing ASP.NET Core identity model — there is no separate Google account or Looker user management to maintain.

Self-Service Dashboards for End Users

Users can assemble dashboards from saved reports, configure layout and widget sizing, add date range pickers and cross-dashboard filters, and share dashboards with other users in their tenant. Dashboard state is stored in your application’s own database. No Google Drive, no Looker metadata server, no external dependency.

Export, Scheduling, and Alerting

PDF, Excel, and CSV export are available natively from the report viewer within your application context. Report scheduling allows users to configure recurring delivery to email recipients on a cron-style schedule. Threshold alerting notifies users when metric values cross defined boundaries. None of these features require Google Cloud or a separate Looker deployment.

Looker vs. Dotnet Report: Feature Comparison

Feature Looker Enterprise Looker Studio Dotnet Report
Embedding model Iframe (signed URL) Iframe (public share link) Native NuGet SDK, no iframe
ASP.NET Core integration None (iframe URL only) None (iframe URL only) services.AddDotnetReport(), Razor components
Multi-tenant routing User attributes in LookML (complex) Not supported Per-request connection context
White-labeling Available (at enterprise cost) Google branding visible Full white-label, included
Modeling layer required Yes — LookML required No No — direct DB connection
SQL Server / PostgreSQL support Via JDBC (second-class) Via connectors (variable quality) First-class ADO.NET, SQL Server, PostgreSQL, MySQL
Row-level security Via LookML user attributes Not supported Application-controlled, any isolation model
Self-service report builder Explore (requires LookML model) Visual editor (limited) Drag-and-drop, no modeling layer
PDF / Excel export PDF via Looker UI Limited (PDF via print) Native in-app, PDF + Excel + CSV
Report scheduling Included (enterprise) Not available Included, user-configurable
Infrastructure dependency Google Cloud / Looker server Google-hosted None — embedded in your .NET app
Pricing model $3,000+/month enterprise Free / $9/user/month Pro Flat-rate, unlimited tenants and users

How to Move Off Looker or Looker Studio (Step by Step)

Moving Off Looker Enterprise

Looker stores report definitions, dashboard layouts, and user access configurations in its internal metadata database. Looks (saved queries) are defined by their underlying LookML explore, dimensions, measures, and filter conditions. Dashboard tiles reference saved Looks or inline query configurations.

Step 1: Export and Audit Your Looker Content

Use the Looker API (GET /looks, GET /dashboards) to enumerate your content catalog. For each Look, capture the underlying SQL via GET /looks/:id/run/sql — this gives you the raw query that Looker generated from LookML, which becomes the source of truth for rebuilding the report in Dotnet Report. Tag each Look and dashboard with its usage metrics (last accessed, access count) to identify which content is actively used.

Step 2: Map LookML Explores to Database Tables

For each active Look, identify the base table and any joined tables from the LookML explore definition. These translate directly to the Dotnet Report table and join configuration. Document the visible columns, calculated measures, and filter conditions. This mapping exercise also surfaces any calculated measures in LookML that you will need to implement as database views or computed columns in SQL Server or PostgreSQL.

Step 3: Install Dotnet Report and Configure Data Access

Install the Dotnet Report NuGet package into your ASP.NET Core application. Configure the connection to your SQL Server or PostgreSQL database — the same database(s) that Looker was querying via its JDBC connection. Set up multi-tenant connection routing to replace Looker’s user attribute-based tenancy model. Configure the table and column visibility rules to match your access control requirements.

Step 4: Rebuild the Report Catalog

Use the Dotnet Report drag-and-drop builder to re-create each active Look from your migration checklist. For most reports (a table with groupings and filters), this takes 5–15 minutes per report. For complex multi-table joins or calculated fields, review whether the calculation belongs in the SQL layer (as a view or computed column) or in the report builder. Complex LookML measures that performed aggregations or calculations within the semantic layer often translate cleanly into SQL views that Dotnet Report can query directly.

Step 5: Replace Looker Iframes With Native Components

In each location in your .NET application where you render a Looker signed embed URL in an iframe, replace the iframe with the Dotnet Report Razor component or JavaScript embed. This step typically takes one to three days of engineering time depending on the number of embedding points and the complexity of any custom CSS applied to the iframe containers.

Step 6: Validate and Decommission Looker

Run both systems in parallel for one sprint cycle. After validating data consistency and user acceptance, cut over all users and decommission your Looker contract. The Looker server infrastructure, LookML Git repository, and associated Google Cloud resources can all be retired, along with the monthly enterprise contract cost.

Moving Off Looker Studio

Migrating from Looker Studio is simpler than migrating from Looker Enterprise. Looker Studio reports are visual configurations without a modeling layer. For each active Looker Studio report, identify the underlying data source, the selected dimensions and metrics, the filter conditions, and the chart types used. Re-create each report in Dotnet Report using the drag-and-drop builder. The primary migration effort is reconfiguring data access to route through your .NET application’s authentication context rather than an unauthenticated Looker Studio connector.

Timeline estimate: Looker Enterprise migrations to Dotnet Report typically complete in 4–8 weeks, with the largest variable being the LookML model complexity and report catalog size. Looker Studio migrations are typically faster: 2–4 weeks for teams with fewer than 50 active reports and a clear database connection strategy.

FAQ

Can Dotnet Report connect to the same SQL Server database that Looker was querying?

Yes. Dotnet Report connects to SQL Server, PostgreSQL, MySQL, and other ADO.NET-compatible databases using standard connection strings. If Looker was querying your application database via a JDBC connection, Dotnet Report connects to the same database natively with no data migration required.

Do I need to rewrite my LookML models before migrating to Dotnet Report?

No. Dotnet Report does not use a semantic modeling layer. The migration process involves exporting the underlying SQL that Looker generated from your LookML models (available via the Looker API), then using those queries as the basis for rebuilding reports in the Dotnet Report builder. Complex LookML measures can be implemented as SQL Server views or PostgreSQL views that Dotnet Report queries directly.

How does Dotnet Report handle multi-tenant data isolation to replace Looker’s user attributes?

Dotnet Report supports per-request connection routing: your ASP.NET Core application passes a connection string or connection factory on each report request based on the authenticated user’s tenant context. This replaces Looker’s user attribute system with application-level routing that your existing authorization code controls. Row-level filtering is also supported for shared-database tenancy patterns.

What happens to our Looker Studio reports after migration?

Looker Studio reports are standalone configurations hosted by Google. After migration, they can be deactivated or deleted from your Google Workspace. Your customers will access reporting through your .NET application instead of via a Google-hosted link. No data is lost — the underlying data source (typically BigQuery or a connector) remains unchanged, and the equivalent reports are rebuilt in Dotnet Report against the same or equivalent data sources.

Can Dotnet Report replace Looker for internal analytics as well as embedded customer-facing reporting?

Dotnet Report is optimized for embedded customer-facing reporting in .NET applications. It can be used for internal analytics as well — many teams use it to build internal operational dashboards using the same NuGet installation as their customer-facing reports. However, if your primary use case is internal analytics for a large enterprise data team (not embedded ISV reporting), you may want to evaluate whether Dotnet Report or a different BI tool is a better fit for that specific use case.

Get Started

Ready to Replace Looker in Your .NET Application?

Dotnet Report installs as a NuGet package in your ASP.NET Core project, connects directly to your SQL Server or PostgreSQL database, and gives your customers a fully white-labeled, self-service reporting interface — with no iframes, no LookML, no Google Cloud dependency, and no per-seat pricing. Setup takes under 30 minutes and the free trial requires no credit card.

Start Free Trial

Full access, no credit card, no time limit on the core feature set.

Start Free Trial
Book a Demo

See Dotnet Report embedded in a live .NET application in 30 minutes.

Schedule Demo
More Migration Guides

Read guides for teams migrating from other BI tools to .NET reporting.

View All Guides