<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Harshit Chouhan</title>
    <description>The latest articles on DEV Community by Harshit Chouhan (@harshit_colrows).</description>
    <link>https://dev.to/harshit_colrows</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3981145%2F43b9166d-c789-43f4-866c-df4d81cc75b8.png</url>
      <title>DEV Community: Harshit Chouhan</title>
      <link>https://dev.to/harshit_colrows</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/harshit_colrows"/>
    <language>en</language>
    <item>
      <title>Looker Pricing in 2026: What Google Publishes, What You Actually Pay</title>
      <dc:creator>Harshit Chouhan</dc:creator>
      <pubDate>Wed, 12 Aug 2026 15:39:38 +0000</pubDate>
      <link>https://dev.to/harshit_colrows/looker-pricing-in-2026-what-google-publishes-what-you-actually-pay-ha3</link>
      <guid>https://dev.to/harshit_colrows/looker-pricing-in-2026-what-google-publishes-what-you-actually-pay-ha3</guid>
      <description>&lt;p&gt;The Looker quote you receive is not the Looker bill you pay.&lt;/p&gt;

&lt;p&gt;The licence covers the platform. LookML is where the budget quietly goes.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's on the quote vs what lands
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Line item&lt;/th&gt;
&lt;th&gt;On the quote?&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Platform / instance fee&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;The number people compare&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Per-user tiers&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Viewer vs Explorer vs Developer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LookML maintenance&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;No&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;An engineer's time, permanently&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Warehouse compute&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;No&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Billed by BigQuery/Snowflake, not Google&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Re-modelling on schema change&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;No&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Arrives as sprint work&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Migration if you ever leave&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;No&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Definitions are in LookML, not portable&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The per-user tiers deserve attention: a "viewer" who filters a dashboard can reclassify as an explorer. Adoption success shows up as a licensing surprise.&lt;/p&gt;

&lt;h2&gt;
  
  
  The real cost driver
&lt;/h2&gt;

&lt;p&gt;LookML was the right instinct — put metric definitions in reviewed code instead of scattering them across dashboards. Consistency improved and stayed improved.&lt;/p&gt;

&lt;p&gt;The cost is that &lt;strong&gt;coverage equals authoring effort&lt;/strong&gt;. Every new concept is a pull request. Every schema change is maintenance debt. Every question outside the model is a ticket, and the ticket is the actual user experience.&lt;/p&gt;

&lt;p&gt;That is fine when the consumer is a human analyst who can wait two days. It stops working when the consumer is an AI agent asking things nobody pre-modelled, at machine rates.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to build an honest comparison
&lt;/h2&gt;

&lt;p&gt;Price three things, not one:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Licence and platform fee&lt;/li&gt;
&lt;li&gt;The engineer who keeps the model current — the salary line nobody puts in the TCO&lt;/li&gt;
&lt;li&gt;The latency between a business question and a trustworthy answer&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The third is the one with real money in it. Cipla cut decision latency by over 90% and IT report requests by 80% — neither number appears on any BI invoice.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;The full breakdown&lt;/strong&gt; — current published figures, how the tiers actually reclassify users, and a like-for-like TCO model — is here:&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://colrows.com/blogs/looker-pricing/" rel="noopener noreferrer"&gt;Looker Pricing in 2026: What Google Publishes, What You Actually Pay&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://colrows.com/blogs/looker-pricing/" rel="noopener noreferrer"&gt;colrows.com/blogs/looker-pricing&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>dataengineering</category>
      <category>database</category>
      <category>ai</category>
      <category>datascience</category>
    </item>
    <item>
      <title>dbt Semantic Layer vs Cube vs AtScale: Choosing an Enterprise Semantic Layer</title>
      <dc:creator>Harshit Chouhan</dc:creator>
      <pubDate>Mon, 10 Aug 2026 15:55:42 +0000</pubDate>
      <link>https://dev.to/harshit_colrows/dbt-semantic-layer-vs-cube-vs-atscale-choosing-an-enterprise-semantic-layer-452d</link>
      <guid>https://dev.to/harshit_colrows/dbt-semantic-layer-vs-cube-vs-atscale-choosing-an-enterprise-semantic-layer-452d</guid>
      <description>&lt;p&gt;Three semantic layers, three architectures, three very different bills.&lt;/p&gt;

&lt;p&gt;All three will define what a metric means. None of them proves an AI agent is allowed to run it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick orientation
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;dbt Semantic Layer&lt;/th&gt;
&lt;th&gt;Cube&lt;/th&gt;
&lt;th&gt;AtScale&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Core idea&lt;/td&gt;
&lt;td&gt;Metrics as version-controlled code&lt;/td&gt;
&lt;td&gt;Headless API in front of metrics&lt;/td&gt;
&lt;td&gt;OLAP-style aggregate acceleration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Strongest when&lt;/td&gt;
&lt;td&gt;You want engineering discipline&lt;/td&gt;
&lt;td&gt;Many apps consume the same numbers&lt;/td&gt;
&lt;td&gt;Heavy, stable aggregate workloads&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Modelling&lt;/td&gt;
&lt;td&gt;Hand-authored YAML&lt;/td&gt;
&lt;td&gt;Hand-authored data model&lt;/td&gt;
&lt;td&gt;Hand-authored cubes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost driver&lt;/td&gt;
&lt;td&gt;Plan tier + query volume&lt;/td&gt;
&lt;td&gt;Pre-aggregation builds + compute&lt;/td&gt;
&lt;td&gt;Quote-based licence + compute&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Governance&lt;/td&gt;
&lt;td&gt;Upstream, in the warehouse&lt;/td&gt;
&lt;td&gt;In front of the API&lt;/td&gt;
&lt;td&gt;On the cube&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Each is competent at what it was built for. If your consumers are dashboards and analysts, any of the three will serve you.&lt;/p&gt;

&lt;h2&gt;
  
  
  The question none of them answers
&lt;/h2&gt;

&lt;p&gt;An agent doesn't arrive with a metric name. It arrives with an intent in English and has to work out which entities, which grain, which joins, and whether it's entitled to any of it.&lt;/p&gt;

&lt;p&gt;That exposes two gaps every one of these shares:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Undefined intent has no answer.&lt;/strong&gt; Coverage is whatever someone remembered to model. Business questions don't respect that boundary.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Authorisation is checked around the query, not inside it.&lt;/strong&gt; A filter applied after execution means the data already moved.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What to actually evaluate on
&lt;/h2&gt;

&lt;p&gt;Ignore feature matrices and score these five:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Answer a question nobody modelled, on your schema&lt;/li&gt;
&lt;li&gt;Show why one join path was chosen over two others&lt;/li&gt;
&lt;li&gt;Same question, two users with different entitlements — show both SQL statements&lt;/li&gt;
&lt;li&gt;Ask something ambiguous. Refusal or guess?&lt;/li&gt;
&lt;li&gt;Reproduce a number from six months ago with the definitions then in force&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Most evaluations stop at 1. Numbers 3 and 5 are the ones that decide whether the thing ships in a regulated business.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;The full breakdown&lt;/strong&gt; — architecture-by-architecture comparison, cost profiles, and the migration implications of each — is here:&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://colrows.com/blogs/dbt-semantic-layer-vs-cube-vs-atscale/" rel="noopener noreferrer"&gt;dbt Semantic Layer vs Cube vs AtScale: Choosing an Enterprise Semantic Layer&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://colrows.com/blogs/dbt-semantic-layer-vs-cube-vs-atscale/" rel="noopener noreferrer"&gt;colrows.com/blogs/dbt-semantic-layer-vs-cube-vs-atscale&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>dataengineering</category>
      <category>database</category>
      <category>ai</category>
      <category>datascience</category>
    </item>
    <item>
      <title>The Text-to-SQL Accuracy Cliff: Why Deterministic Compilers Beat LLM Guessing</title>
      <dc:creator>Harshit Chouhan</dc:creator>
      <pubDate>Wed, 05 Aug 2026 14:18:33 +0000</pubDate>
      <link>https://dev.to/harshit_colrows/the-text-to-sql-accuracy-cliff-why-deterministic-compilers-beat-llm-guessing-2860</link>
      <guid>https://dev.to/harshit_colrows/the-text-to-sql-accuracy-cliff-why-deterministic-compilers-beat-llm-guessing-2860</guid>
      <description>&lt;p&gt;Every text-to-SQL demo is flawless. Every production rollout is a coin flip.&lt;/p&gt;

&lt;p&gt;The model didn't get worse between the demo and your warehouse. Your schema crossed a threshold it cannot reason past.&lt;/p&gt;

&lt;h2&gt;
  
  
  Accuracy doesn't decay. It collapses.
&lt;/h2&gt;

&lt;p&gt;The intuition most teams carry is that accuracy degrades gradually as queries get harder. It doesn't. It holds, holds, holds — then falls off a cliff the moment a question needs a join the model has to guess at.&lt;/p&gt;

&lt;p&gt;On our own enterprise benchmark, raw schema access scored &lt;strong&gt;14.5%&lt;/strong&gt;. The same model, given compiled and governed context, scored &lt;strong&gt;98.2%&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Same model. Same questions. The only variable was the context it ran on.&lt;/p&gt;

&lt;h2&gt;
  
  
  The three gaps that create the cliff
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Gap&lt;/th&gt;
&lt;th&gt;What the model sees&lt;/th&gt;
&lt;th&gt;What it needs&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Naming&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;cust_t&lt;/code&gt;, &lt;code&gt;cust_type&lt;/code&gt;, &lt;code&gt;customer_seg&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;One typed entity with synonyms&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Joins&lt;/td&gt;
&lt;td&gt;200 tables, 3 plausible paths&lt;/td&gt;
&lt;td&gt;A proven path, or a hard failure&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rules&lt;/td&gt;
&lt;td&gt;No sign of the fiscal calendar&lt;/td&gt;
&lt;td&gt;Grain and filters attached to the metric&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Any one of these produces syntactically perfect SQL that returns the wrong number. That is the dangerous failure — a query that errors gets fixed, a query that returns 8% instead of 12% gets pasted into a board deck.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why "temperature: 0" is not determinism
&lt;/h2&gt;

&lt;p&gt;Setting temperature to zero makes sampling greedy, not correct. Greedy decoding over an ambiguous schema reliably picks the &lt;em&gt;same wrong join&lt;/em&gt; every time. You have traded variance for consistent error, which is worse — now it looks trustworthy.&lt;/p&gt;

&lt;p&gt;Determinism has to come from architecture, not decoding parameters:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The LLM parses language into a typed intent&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;semantic graph&lt;/strong&gt; — not the model — resolves entities, metrics and grain&lt;/li&gt;
&lt;li&gt;The planner proves a join path exists, or compilation fails&lt;/li&gt;
&lt;li&gt;Policy predicates are injected before SQL is emitted&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ambiguity produces a refusal instead of a guess. That is the whole difference.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;The full breakdown&lt;/strong&gt; — what the famous benchmark numbers actually measure, what failure looks like in real SQL, what a wrong number costs, and how every serious vendor has converged on the same answer — is here:&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://colrows.com/blogs/text-to-sql-accuracy-cliff/" rel="noopener noreferrer"&gt;The Text-to-SQL Accuracy Cliff: Why Deterministic Compilers Beat LLM Guessing&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://colrows.com/blogs/text-to-sql-accuracy-cliff/" rel="noopener noreferrer"&gt;colrows.com/blogs/text-to-sql-accuracy-cliff&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>sql</category>
      <category>llm</category>
      <category>database</category>
    </item>
    <item>
      <title>RAG vs. Semantic Layer: Why AI Needs Deterministic Governance</title>
      <dc:creator>Harshit Chouhan</dc:creator>
      <pubDate>Mon, 03 Aug 2026 18:09:55 +0000</pubDate>
      <link>https://dev.to/harshit_colrows/rag-vs-semantic-layer-why-ai-needs-deterministic-governance-1i2k</link>
      <guid>https://dev.to/harshit_colrows/rag-vs-semantic-layer-why-ai-needs-deterministic-governance-1i2k</guid>
      <description>&lt;p&gt;Half the market is arguing about whether RAG or a semantic layer is the right foundation for enterprise AI.&lt;/p&gt;

&lt;p&gt;They are not competing. They answer different questions, and most teams need both.&lt;/p&gt;

&lt;h2&gt;
  
  
  Two shapes of question
&lt;/h2&gt;

&lt;p&gt;Every question an agent receives breaks into one of two forms:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;"What did we say about X?"&lt;/strong&gt; — lives in contracts, policies, tickets, docs. Unstructured. RAG was built for this.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;"What is true about X?"&lt;/strong&gt; — lives in your warehouse and governed metrics. Structured. A semantic layer was built for this.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Treating them as rivals is how teams end up with a system that can quote the pricing policy but cannot tell you this quarter's realised price.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where each one breaks
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;RAG&lt;/th&gt;
&lt;th&gt;Semantic layer&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Good at&lt;/td&gt;
&lt;td&gt;Retrieving relevant prose&lt;/td&gt;
&lt;td&gt;Resolving definitions and joins&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fails on&lt;/td&gt;
&lt;td&gt;Aggregation, math, current state&lt;/td&gt;
&lt;td&gt;Anything not modelled as data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Permissions&lt;/td&gt;
&lt;td&gt;Flattened at ingest, rebuilt at query time&lt;/td&gt;
&lt;td&gt;Compiled per person, per query&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Answer stability&lt;/td&gt;
&lt;td&gt;Varies with retrieval ranking&lt;/td&gt;
&lt;td&gt;Identical by construction&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Audit story&lt;/td&gt;
&lt;td&gt;Cites a chunk&lt;/td&gt;
&lt;td&gt;Reproduces the exact SQL&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The permissions row is the one that ends pilots. A retrieval index that ingested everything has, by construction, assembled your most sensitive object — and reconstructing entitlement at query time is guesswork.&lt;/p&gt;

&lt;h2&gt;
  
  
  The layer that actually decides
&lt;/h2&gt;

&lt;p&gt;Neither a document chunk nor a metric definition is worth much until something compiles it into a governed query and runs it.&lt;/p&gt;

&lt;p&gt;That is the piece most architectures are missing: &lt;strong&gt;intent → context resolution → constrained planning → governed execution&lt;/strong&gt;. RAG can feed the first step. It cannot perform the last three.&lt;/p&gt;

&lt;p&gt;Point an agent at raw tables and the best models score in the low teens on real enterprise data. Give the same model compiled, governed context and it clears the high nineties. The retrieval quality was never the bottleneck.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;The full breakdown&lt;/strong&gt; — the precise division of labour, why hybrid architectures win, and how compile-time governance closes the gap RAG cannot — is here:&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://colrows.com/blogs/rag-vs-semantic-layer/" rel="noopener noreferrer"&gt;RAG vs. Semantic Layer: Why AI Needs Deterministic Governance&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://colrows.com/blogs/rag-vs-semantic-layer/" rel="noopener noreferrer"&gt;colrows.com/blogs/rag-vs-semantic-layer&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>dataengineering</category>
      <category>database</category>
      <category>ai</category>
      <category>datascience</category>
    </item>
  </channel>
</rss>
