# 1.7 या course मधला quick-commerce sample data

Source: https://ravindrabagale.com/mr/powerbi/ch01-introduction-to-business-intelligence-and-power/1-7-the-quick-commerce-sample-datasets-used-in-this.html
Language: mr (Marathi with English technical terms)

हा course शिकताना आपण quick-commerce म्हणजे काही मिनिटांत किराणा सामान deliver करण्याच्या business ची examples घेणार आहोत. Sample data मध्ये महाराष्ट्रातली सहा शहरं आहेत: Pune, Nashik, Nagpur, Kolhapur, Solapur आणि Sambhaji Nagar.

मुख्य example साठी Blinkit चा sample order data आहे. त्याच structure मधला Amazon Now चा sample data काही examples, append / merge lessons, exercises आणि final project मधल्या platform comparison साठी वापरला आहे.

हा पूर्णपणे काल्पनिक sample data आहे. तो फक्त practice साठी तयार केला आहे. त्यातले आकडे, customers, stores आणि performance ही कोणत्याही company ची खरी माहिती नाही. Company names फक्त examples ओळखीची वाटावीत म्हणून वापरली आहेत. व्यक्तींची नावंही sample आहेत.

Column आणि measure ची नावं कशी वाचायची?

Column लिहिताना Table[Column] ही पद्धत वापरतो. उदाहरणार्थ, Orders[Amount]. Measure लिहिताना फक्त square brackets वापरतो: [Total Sales]. त्यामुळे column आणि measure यातला फरक लगेच कळतो.

Raw files मध्ये OrderID, OrderDateTime अशी छोटी नावं आहेत. Power Query मध्ये त्यांना Order ID, Order DateTime अशी वाचायला सोपी नावं देतो. पुढच्या DAX examples मध्ये ही friendly names वापरली आहेत. याबद्दल Module 11 मध्ये अधिक शिकू.

Orders — प्रत्येक row मध्ये एका order मधला एक product

 | Column चे मूळ नाव
 | वापरायला सोपं नाव
 | Data type
 | उदाहरण

 | OrderID
 | Order ID
 | Text
 | BLK-250314-0457

 | OrderDateTime
 | Order DateTime (IST)
 | Date/Time
 | 14-03-2025 19:42

 | – (Power Query मध्ये तयार करायचे)
 | Order Date, Order Hour
 | Date, Whole number
 | 14-03-2025, 19

 | CustomerID
 | Customer ID
 | Text
 | C-0102

 | StoreID
 | Store ID
 | Text
 | BLK-PUN-01

 | ProductID
 | Product ID
 | Text
 | P-021

 | Quantity
 | Quantity
 | Whole number
 | 2

 | Amount
 | Amount
 | Fixed decimal (₹)
 | ₹ 54.00 (discount नंतर त्या order line ची रक्कम)

 | Discount
 | Discount
 | Fixed decimal (₹)
 | ₹ 6.00

 | DeliveryFee
 | Delivery Fee
 | Fixed decimal (₹)
 | ₹ 25.00

 | DeliveryTimeMins
 | Delivery Time Mins
 | Whole number
 | 9

 | DeliveredDateTime
 | Delivered DateTime (and Delivered Date)
 | Date/Time
 | 14-03-2025 19:51

 | DeliveryPartnerID
 | Delivery Partner ID
 | Text
 | DP-017

 | OrderStatus
 | Order Status
 | Text
 | Delivered / Cancelled

 | PaymentMode
 | Payment Mode
 | Text
 | UPI / Card / Cash on Delivery / Wallet

 | Platform
 | Platform
 | Text
 | Blinkit / Amazon Now

Sample data मधल्या सर्व वेळा Indian Standard Time — IST, UTC+5:30 मध्ये आहेत. Source system मध्ये वेळ UTC मध्ये असेल तर ती Power Query मध्ये IST मध्ये कशी आणायची ते Module 7.14 मध्ये पाहू.

सर्वांत महत्त्वाचं: एका row चा अर्थ काय?

Orders table मधली एक row म्हणजे एक पूर्ण order नाही. ती त्या order मधल्या एका product ची order line आहे. समजा, एका order मध्ये दूध, पोहे आणि साबण घेतला. तर त्याच Order ID च्या तीन rows असतील.

Delivery Fee, Delivery Time Mins, Delivered DateTime, Delivery Partner ID, Order Status आणि Payment Mode ही पूर्ण order ची माहिती प्रत्येक line वर पुन्हा दिसते. त्यामुळे orders मोजताना DISTINCTCOUNT(Orders[Order ID]) वापरतो. COUNTROWS वापरलं तर order lines मोजल्या जातील.

या sample data मध्ये cancelled orders साठी Amount, Discount आणि Delivery Fee हे 0 आहेत. Delivery Time रिकामा आहे.

आणखी एक गोष्ट: एका order ची delivery fee ₹२५ असेल आणि त्या order च्या तीन rows असतील, तर सरळ बेरीज केल्यावर ₹७५ येतील. पण fee प्रत्यक्षात ₹२५च आहे. म्हणून calculation लिहिण्याआधी field कोणत्या level ची आहे ते तपासा.

Product — product ची माहिती

 | Column
 | उदाहरण

 | Product ID
 | P-021

 | Product Name
 | Gokul Cow Milk 500 ml

 | Category
 | Dairy & Breakfast

 | Sub Category
 | Milk

 | Brand
 | Gokul

 | Unit Price
 | ₹ 30.00

 | Unit Cost
 | ₹ 26.00

Customer — customer ची माहिती

 | Column
 | उदाहरण

 | Customer ID
 | C-0102

 | Customer Name
 | Ruhi Bagale

 | Gender
 | Female

 | City
 | Pune

 | Area
 | Baner

 | Signup Date
 | 05-08-2023

DeliveryPartner — delivery partner ची माहिती

 | Column
 | उदाहरण

 | Delivery Partner ID
 | DP-017

 | Partner Name
 | Salman

 | Vehicle Type
 | Bike / EV Scooter / Bicycle

 | Home Store ID
 | BLK-PUN-01

 | Joining Date
 | 12-01-2024

DarkStore — store ची माहिती

 | Column
 | उदाहरण

 | Store ID
 | BLK-PUN-01

 | Store Name
 | Kothrud Hub

 | Platform
 | Blinkit

 | Area
 | Kothrud

 | City
 | Pune

 | State / Country
 | Maharashtra / India

 | City Manager
 | Ravindra Bagale

 | Manager Email
 | ravindra.bagale@example.com

Date — तारखांची माहिती; Module 11 मध्ये पुढे शिकू

 | Column
 | उदाहरण

 | Date
 | 14-03-2025

 | Year / Quarter
 | 2025 / Q1

 | Month Number / Name
 | 3 / March

 | Year Month
 | 2025-03

 | Day Name
 | Friday

 | Festival
 | Diwali / Ganeshotsav / (blank)

महाराष्ट्रातल्या ओळखीच्या products ची examples

 | Product ID
 | Product Name
 | Category
 | Sub Category

 | P-001
 | Nashik Grapes 500 g
 | Fruits & Vegetables
 | Fresh Fruits

 | P-002
 | Nagpur Oranges 1 kg
 | Fruits & Vegetables
 | Fresh Fruits

 | P-021
 | Gokul Cow Milk 500 ml
 | Dairy & Breakfast
 | Milk

 | P-022
 | Amul Butter 100 g
 | Dairy & Breakfast
 | Butter & Cheese

 | P-031
 | Thick Poha 1 kg
 | Dairy & Breakfast
 | Breakfast Staples

 | P-032
 | Ladi Pav (6 pcs)
 | Dairy & Breakfast
 | Bread & Pav

 | P-041
 | Kolhapuri Misal Masala 100 g
 | Snacks
 | Instant Mixes & Masala

 | P-042
 | Bhakarwadi 250 g
 | Snacks
 | Namkeen

 | P-051
 | Kokum Sharbat 750 ml
 | Beverages
 | Syrups & Sharbat

 | P-061
 | Herbal Bath Soap 4 x 100 g
 | Personal Care
 | Bath & Body

 | P-071
 | Solapuri Chaddar (Double)
 | Household
 | Home Linen

 | P-072
 | Dishwash Liquid 500 ml
 | Household
 | Cleaning

Categories: Fruits & Vegetables, Dairy & Breakfast, Snacks, Beverages, Personal Care आणि Household. Sample files मधल्या prices आणि costs फक्त practice साठी ठरवलेल्या आहेत.

Sample data मधले dark stores

 | City
 | Blinkit dark stores (Store ID – Area)
 | Amazon Now dark stores (Store ID – Area)
 | City Manager

 | Pune
 | BLK-PUN-01 Kothrud · BLK-PUN-02 Baner · BLK-PUN-03 Hadapsar
 | AMN-PUN-01 Hinjewadi · AMN-PUN-02 Wakad
 | Ravindra Bagale

 | Nashik
 | BLK-NSK-01 College Road
 | AMN-NSK-01 Gangapur Road
 | Shraddha Bagale

 | Nagpur
 | BLK-NGP-01 Dharampeth
 | AMN-NGP-01 Sitabuldi
 | Shahrukh

 | Kolhapur
 | BLK-KOP-01 Rajarampuri
 | AMN-KOP-01 Tarabai Park
 | Zoya

 | Solapur
 | BLK-SLP-01 Hotgi Road
 | AMN-SLP-01 Murarji Peth
 | Amir

 | Sambhaji Nagar
 | BLK-SBN-01 CIDCO
 | AMN-SBN-01 Nirala Bazar
 | Raja

सर्व stores महाराष्ट्रातले दाखवले आहेत. Data मध्ये Chhatrapati Sambhaji Nagar साठी Sambhaji Nagar हे छोटं नाव वापरलं आहे.

City managers: Ravindra Bagale — Pune, Shraddha Bagale — Nashik, Shahrukh — Nagpur, Zoya — Kolhapur, Amir — Solapur आणि Raja — Sambhaji Nagar. Ravina ही Pune आणि Solapur ची regional lead आहे. Rani ही state operations head आहे. Customers मध्ये Ruhi Bagale, Ravina, Rani आणि Salman ही sample names आहेत. Delivery partners मध्ये Salman, Amir आणि Raja ही नावं आहेत. सर्व email addresses मध्ये example.com हे example domain वापरलं आहे.

हे tables एकमेकांना कसे जोडले आहेत?

मध्यभागी Orders हा fact table आहे. त्याभोवती Customer, Product, DeliveryPartner, DarkStore आणि Date हे पाच dimension tables आहेत. या मांडणीला star schema म्हणतात. Fact table मध्ये व्यवहाराच्या नोंदी असतात. Dimension tables त्या व्यवहारातला customer, product किंवा store यांची ओळख सांगतात.

 | 
CustomerCustomer ID (key)
Customer Name
Area, City

 | 
ProductProduct ID (key)
Product Name
Category, Brand

 | 
DeliveryPartnerDelivery Partner ID (key)
Partner Name
Vehicle Type

 | 
DarkStoreStore ID (key)
Store Name, Platform
Area, City, State
Manager Email

 | 
Orders (fact)Order ID
Order Date, Delivered Date
Customer ID, Store ID
Product ID, Delivery Partner ID
Quantity, Amount, Discount
Delivery Fee, Delivery Time Mins
Order Status, Payment Mode, Platform

 | 
DateDate (key)
Year, Quarter
Month, Year Month
Festival

प्रत्येक dimension च्या key वरून Orders शी one-to-many — 1:* relationship आहे. म्हणजे एका product ची नोंद Product table मध्ये एकदा असते; पण तो product अनेक order lines मध्ये असू शकतो.

Date table साठी दोन relationships आहेत: Date[Date] → Orders[Order Date] ही active, आणि Date[Date] → Orders[Delivered Date] ही inactive. दुसरी relationship आवश्यक calculation मध्ये USERELATIONSHIP वापरून वापरता येते.

हा data structure एकदा नीट पाहून घ्या. पुढच्या modules मध्ये आपण हेच tables पुन्हा वापरणार आहोत.

या chapter मधलं लक्षात ठेवायचं

BI मध्ये data वापरून business decisions घेतो. Power BI मध्ये Desktop, Service आणि Mobile यांची वेगवेगळी कामं आहेत. आपला Orders data order-line level वर आहे. पुढे प्रत्येक measure बनवताना हे लक्षात ठेवायचं. आता पुढच्या chapter मध्ये installation आणि interface पाहू.

स्वतः करून पाहा: rows वाढल्या म्हणजे orders वाढल्या का?

एका customer ने एकाच order मध्ये किती वेगवेगळे products घेतले ते बदला. खाली rows आणि order count मध्ये काय फरक पडतो ते पाहा.

या order मधले products:
१ — फक्त दूध२ — दूध आणि पोहे३ — दूध, पोहे आणि साबण

 | Order ID | Product | Delivery Fee

 | ORD-101 | दूध | ₹25

 | ORD-101 | पोहे | ₹25

 | ORD-101 | साबण | ₹25

Rows: 3 · वेगळ्या orders: 1
Delivery Fee ची सरळ बेरीज: ₹75. पण या एकाच order ची खरी fee: ₹25.

COUNTROWS(Orders) rows मोजतं. DISTINCTCOUNT(Orders[Order ID]) वेगळे Order IDs मोजतं. म्हणून दोन्ही answers वेगळे येतात.

हे example बदलून पाहण्यासाठी JavaScript सुरू असणं आवश्यक आहे. वर तीन products असलेलं पूर्ण example दिलं आहे.

आता तुमची practice

एका कागदावर दोन Order IDs लिहा: A101 आणि A102.

A101 मध्ये दोन products आणि A102 मध्ये तीन products आहेत असं समजा. प्रत्येक product साठी स्वतंत्र row लिहा.

एकूण rows किती आणि वेगळ्या orders किती ते मोजा.

प्रत्येक order ची fee ₹20 असेल तर ती प्रत्येक row वर लिहा. सरळ sum आणि खरी total fee यातला फरक पाहा.

Answer आणि explanation पाहा
एकूण ५ rows आहेत; पण फक्त २ orders आहेत. Fee ची सरळ बेरीज ₹100 येईल. खरी total fee ₹40 आहे, कारण fee प्रत्येक order साठी एकदाच मोजायची आहे.

समजावण्यासाठी बनवलेलं diagram: एका dimension row शी Orders मधल्या अनेक rows जुळू शकतात. Date च्या दोन relationships पैकी एक active आणि दुसरी inactive आहे.

रवींद्र बागले यांची tip

Measure लिहिण्याआधी स्वतःला एक प्रश्न विचारा: ‘इथे एक row म्हणजे नेमकं काय?’ Orders मध्ये एक row म्हणजे एक order line. Orders मोजण्यासाठी DISTINCTCOUNT(Orders[Order ID]) वापरा. Rows मोजल्या म्हणजे orders मोजल्या असं होणार नाही. हा मुद्दा practical कामात आणि interview मध्येही महत्त्वाचा आहे.
