Ravindra Bagale · Power BIसर्व coursesया course चे lessonsशोधाEnglish

Power BI · मराठी आवृत्ती

8.12 Calculated column विरुद्ध measure

रवींद्र बागले यांच्या course वर आधारित · सहज मराठीत explanation

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 असेलच असं नाही.

मुद्दाColumnMeasure
Resultप्रत्येक row ची valueCurrent filter context ची value
CalculateImport refresh वेळीVisual query वेळी
StoragePer-row result storeFormula store; result गरजेनुसार
ContextRow contextFilter context
Slicer responseStored value बदलत नाहीResult पुन्हा calculate होतो
कुठे वापर?Slicer, axis, grouping, relationship, sortValues आणि measures स्वीकारणारे visual fields / filters
सामान्य उपयोगCategories, flags, keys, bandsTotals, ratios, KPIs, YTD, ranking

निर्णय: value वर group / slice करायचं असेल तर column, शक्यतो Power Query. Filters नुसार calculation दाखवायचं असेल तर measure.