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

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

6.9 M language ची सोपी ओळख

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

या page मध्ये

प्रत्येक query ही M expression असते. Home › Advanced Editor मध्ये पूर्ण code दिसतो. let … in block मध्ये named steps लिहिलेले असतात. प्रत्येक step सहसा आधीच्या step चा वापर करतो.

पहिलं example CSV आणतं, headers व types सेट करतं, columns rename करतं, Quantity > 0 filter लावतं आणि Order Date / Order Hour तयार करतं. दुसरं UTC timestamp IST मध्ये बदलतं. शेवटचं delivery band function आहे.

let
    Source = Csv.Document(
        File.Contents("C:\QuickCommerce\Blinkit_Orders_2025.csv"),
        [Delimiter = ",", Encoding = 65001, QuoteStyle = QuoteStyle.Csv]
    ),
    #"Promoted Headers" = Table.PromoteHeaders(Source, [PromoteAllScalars = true]),
    #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers", {
        {"OrderID", type text},
        {"OrderDateTime", type datetime},
        {"Quantity", Int64.Type},
        {"Amount", Currency.Type},
        {"DeliveryTimeMins", Int64.Type}
    }),
    #"Renamed Columns" = Table.RenameColumns(#"Changed Type", {
        {"OrderID", "Order ID"}, {"OrderDateTime", "Order DateTime"},
        {"DeliveryTimeMins", "Delivery Time Mins"}
    }),
    #"Filtered Rows" = Table.SelectRows(#"Renamed Columns", each [Quantity] > 0),
    #"Added Order Date" = Table.AddColumn(#"Filtered Rows", "Order Date",
        each DateTime.Date([Order DateTime]), type date),
    #"Added Order Hour" = Table.AddColumn(#"Added Order Date", "Order Hour",
        each Time.Hour([Order DateTime]), Int64.Type)
in
    #"Added Order Hour"
= Table.AddColumn(Source, "Order DateTime", each
    DateTimeZone.RemoveZone(
        DateTimeZone.SwitchZone(DateTime.AddZone([OrderDateTimeUTC], 0), 5, 30)
    ), type datetime)
// Query named fnDeliveryBand
(mins as nullable number) as text =>
    if mins = null then "Not delivered"
    else if mins <= 10 then "Within 10 min"
    else if mins <= 20 then "11-20 min"
    else "Over 20 min"

M मधल्या महत्त्वाच्या गोष्टी

UTC ते IST

DateTime.AddZone(…, 0) timezone नसलेल्या value ला UTC म्हणून ओळख देतं; DateTimeZone.SwitchZone(…, 5, 30) IST मध्ये बदलतं; RemoveZone पुन्हा साधा Date/Time देतं. आपल्या sample files आधीच IST मध्ये आहेत; त्यांना पुन्हा 5:30 जोडू नका.

Function वापरा

fnDeliveryBand query save करा. Add Column › Invoke Custom Function किंवा fnDeliveryBand([Delivery Time Mins]) वापरा. Null साठी Not delivered, 10 पर्यंत Within 10 min, 20 पर्यंत 11-20 min आणि पुढे Over 20 min मिळतं.

Code पाठ करण्याची गरज नाही. UI मधून step बनवा आणि Formula bar मध्ये काय तयार झालं ते वाचा.