Power BI · मराठी आवृत्ती
8.12 Calculated column विरुद्ध measure
Sample data definition: या course च्या Orders[Amount] मध्ये discount आधीच वजा आहे. खाली Amount − Discount हे generic formula शिकवण्यासाठीचं example आहे; आपल्या sample वर पुन्हा discount वजा करू नका. Sample Net Sales = SUM(Orders[Amount]); discountपूर्व gross = Amount + Discount.
Calculated column: Import model मध्ये refresh वेळी row-by-row result तयार व store होतो. Measure: formula store होतो; result visual च्या सध्याच्या filter context मध्ये query वेळी calculate होतो.
Column file size व RAM वाढवतो; high-cardinality text मोठा पडू शकतो. Measure चा per-row result store नसतो, पण evaluation ला CPU आणि temporary memory लागते.
Row context म्हणजे सध्याची row. Filter context म्हणजे slicers, visual rows / columns, Filters pane आणि RLS मधून आलेले filters.
समान logic चे दोन मार्ग
-- Option A: calculated column + implicit/explicit sum
Net Amount = Orders[Amount] - Orders[Discount] -- column, stored per row
Net Sales (A) = SUM(Orders[Net Amount]) -- measure over the column
-- Option B: measure only (iterator), nothing stored
Net Sales (B) = SUMX(Orders, Orders[Amount] - Orders[Discount])
-- Column (row level flag) – good for slicing
Within 10 Min = IF(Orders[Delivery Time Mins] <= 10, 1, 0)
-- Measure (ratio) – must be a measure, because a ratio cannot be summed
% Under 10 Mins =
DIVIDE(
CALCULATE(DISTINCTCOUNT(Orders[Order ID]), Orders[Delivery Time Mins] <= 10),
CALCULATE(DISTINCTCOUNT(Orders[Order ID]), Orders[Order Status] = "Delivered")
)
Net Sales (A) stored Net Amount column sum करतो; (B) SUMX वापरतो. योग्य data वर City नुसार दोन्ही सारखे मिळतात. Net Amount वर slicing / bucketing हवं असेल तर column उपयोगी; फक्त total हवा तर measure पुरू शकतो.
Under-10 ratio example मधली महत्त्वाची दुरुस्ती: BLANK time DAX comparison मध्ये 0 सारखा वागू शकतो. Numerator मध्ये Delivered status आणि nonblank delivery time स्पष्ट लावा. खाली सुरक्षित स्पष्ट रूप दिलं आहे.
% Under 10 Mins Safe =
DIVIDE(
CALCULATE(
DISTINCTCOUNT(Orders[Order ID]),
Orders[Order Status] = "Delivered",
NOT ISBLANK(Orders[Delivery Time Mins]),
Orders[Delivery Time Mins] <= 10
),
CALCULATE(DISTINCTCOUNT(Orders[Order ID]), Orders[Order Status] = "Delivered")
)एका Order ID च्या lines वर time / status सारखे आहेत हेही तपासा. वेगवेगळ्या cities च्या percentages चा साधा average हा overall percentage असेलच असं नाही.
| मुद्दा | Column | Measure |
|---|---|---|
| Result | प्रत्येक row ची value | Current filter context ची value |
| Calculate | Import refresh वेळी | Visual query वेळी |
| Storage | Per-row result store | Formula store; result गरजेनुसार |
| Context | Row context | Filter context |
| Slicer response | Stored value बदलत नाही | Result पुन्हा calculate होतो |
| कुठे वापर? | Slicer, axis, grouping, relationship, sort | Values आणि measures स्वीकारणारे visual fields / filters |
| सामान्य उपयोग | Categories, flags, keys, bands | Totals, ratios, KPIs, YTD, ranking |
निर्णय: value वर group / slice करायचं असेल तर column, शक्यतो Power Query. Filters नुसार calculation दाखवायचं असेल तर measure.