Power BI Power Query मध्ये अनेक वर्षांचा sales data append कसा करायचा
तुमचा dashboard 2023 च्या orders वर बनलाय. आता 2024 ची file आली, आणि पुढच्या वर्षी 2025 ची पण येईल. दरवेळी dashboard परत बनवायचा नाहीये. आपल्याला एकच sales table हवा जो वाढत जाईल: आधी 2023 चे rows, त्याखाली 2024 चे, मग 2025 चे. Power Query मध्ये हेच Append करतं. या chapter मध्ये आपण दोन वर्षांच्या files append करणार, एका चुकीच्या column नावामुळे total गुपचूप कसा बिघडतो ते बघणार, आणि पुढची file दोन मिनिटांचं काम होईल अशी setting करणार.
या chapter मध्ये काय शिकणार
- Append काय करतं (rows च्या खाली rows)
- नवीन file जुन्यासारखी clean करणं
- Column names exactly match झाले पाहिजेत
- NA ऐवजी null: null type करून
- Append Queries as New, नाव sales
- Source queries चं Enable load बंद
- Append नंतर rows आणि revenue check
Practice files: blinkit-orders-2023-small.csv आणि blinkit-orders-2024-small.csv (या page वरचे rows), आणि blinkit-orders-2023.csv व blinkit-orders-2024.csv (120 आणि 140 rows, practice task साठी).
Made-up data: सगळे orders, products आणि stores काल्पनिक आहेत, Maharashtra मधल्या शहरांच्या Blinkit-style export सारखे. Amounts ₹ मध्ये आणि dates DD-MM-YYYY.
1. Problem काय आहे
मागच्या वर्षीचा report एकच file वाचतो, blinkit-orders-2023.csv. 2024 च्या file मध्ये तसेच orders आहेत, पण ती दुसऱ्या system ने export केलीय:
| 2023 file | 2024 file | |
|---|---|---|
| Revenue column | revenue |
revenue (₹) |
| Delivery date column | delivery_date |
delivery_date_format2 (आणि एक रिकामा delivery_date_format1) |
| Extra column | – | promo_bin (रिकामा) |
| Missing price | – | NA |
| Missing order ID | – | एक blank |
दोन्ही files नुसत्या एकाखाली एक लावल्या, तर Power BI revenue (₹) ला revenue समजत नाही. तो वेगळा column म्हणून add होतो, 2024 चा revenue तिथे बसतो, revenue खाली nulls येतात, आणि Total Revenue card 2024 पूर्णपणे सोडून देतो.
2. सोप्या भाषेत idea
Append एका table चे rows दुसऱ्या table च्या rows खाली लावतं, जसं या वर्षीच्या register ची पानं मागच्या वर्षीच्या पानांमागे staple करावीत. Columns नावाने match होतात:
- नाव same → values त्याच column मध्ये जातात.
- नाव फक्त एकाच table मध्ये → नवीन column, आणि दुसऱ्या table च्या rows साठी null.
म्हणून append आधी नवीन file जुन्या file सारखीच करा: same column names, same data types, same cleaning rules (blank IDs काढलेले, metrics मधले NA null केलेले).
Figure 1. Append columns नावाने match करतं: "revenue" एकाच column मध्ये येतो, तर "revenue (₹)" nulls सोबत वेगळा column बनतो (चित्र).
3. Data
2023 file (आधीच clean):
| order_id | product_id | store_id | city | order_date | sales | price | revenue | stock |
|---|---|---|---|---|---|---|---|---|
| BLK3001 | P101 | PUN01 | Pune | 12-01-2023 | 2 | 120 | 240 | 30 |
| BLK3002 | P102 | NSK01 | Nashik | 03-03-2023 | 1 | 450 | 450 | 15 |
| BLK3003 | P103 | SLP01 | Solapur | 21-07-2023 | 3 | 90 | 270 | 22 |
| BLK3004 | P105 | KOP01 | Kolhapur | 30-11-2023 | 1 | 999 | 999 | 8 |
2024 file (raw; delivery date आणि दोन रिकामे columns दाखवले नाहीत):
| order_id | product_id | store_id | city | order_date | sales | price | revenue (₹) | stock |
|---|---|---|---|---|---|---|---|---|
| BLK4001 | P101 | PUN01 | Pune | 05-02-2024 | 4 | 120 | 480 | 26 |
| BLK4002 | P104 | NGP01 | Nagpur | 18-06-2024 | 2 | NA | 120 | 40 |
| (blank) | P102 | NSK01 | Nashik | 02-08-2024 | 1 | 450 | 450 | 14 |
| BLK4003 | P109 | PUN02 | Pune | 09-10-2024 | 1 | 75 | 75 | 60 |
बनवायच्या आधी अंदाज लावा: sales मध्ये किती rows येतील, आणि total revenue किती? (Section 5.)
4. Step by step
2023 file load करा
- Home › Get data › Text/CSV ›
blinkit-orders-2023-small.csv› Transform Data. - Query Settings pane मध्ये query चं नाव
orders_2023करा. - Types set करा: order_date आणि delivery_date › Change Type › Using Locale… › Date, English (India); sales आणि stock › Whole Number; price आणि revenue › Decimal Number.
2024 file load आणि clean करा
- Home › New Source › Text/CSV ›
blinkit-orders-2024-small.csv› OK. Query चं नावorders_2024करा. - order_id चा filter arrow उघडा. List may be incomplete दिसलं तर Load more वर click करा. (blank) आणि कोणतेही NA untick करा, OK. product_id वर पण हाच check करा.
- promo_bin आणि delivery_date_format1 Ctrl+click करा, right-click › Remove Columns.
- revenue (₹) header वर double-click करा आणि
revenuetype करा. delivery_date_format2 चं नावdelivery_dateकरा. Spelling 2023 query सारखंच हवं: same अक्षरं, same underscores, extra space नाही. - price वर right-click › Replace Values. Value To Find:
NA. Replace With:nulltype करा. OK. Cell मध्ये italics मध्ये null दिसतं. - Step 3 सारखेच types set करा.
Append as New
- Home › Append Queries › Append Queries as New.
- Two tables निवडा. First table:
orders_2023. Second table:orders_2024. OK. - Append1 नावाची नवीन query येते. तिचं नाव
salesकरा.
फक्त result load करा
- Queries pane मध्ये
orders_2023वर right-click करा आणि Enable load untick करा.orders_2024साठी पण तेच. त्यांची नावं italic होतात: तेsalesला data देत राहतात, पण वेगळे tables म्हणून load होत नाहीत. - Home › Close & Apply.
- Table view मध्ये
salesनिवडा आणि row count बघा. Report view मध्ये revenue आणि sales दोन cards वर टाका.
Figure 2. orders_2023 (4 rows) आणि orders_2024 (blank ID काढल्यावर 3 rows) एकाच loaded query, sales, ला data देतात: 7 rows; source queries चं Enable load बंद (चित्र).
5. Result असा दिसायला हवा
sales मध्ये 7 rows, आणि Data pane मध्ये फक्त sales:
| order_id | city | order_date | sales | price | revenue |
|---|---|---|---|---|---|
| BLK3001 | Pune | 12-01-2023 | 2 | 120 | 240 |
| BLK3002 | Nashik | 03-03-2023 | 1 | 450 | 450 |
| BLK3003 | Solapur | 21-07-2023 | 3 | 90 | 270 |
| BLK3004 | Kolhapur | 30-11-2023 | 1 | 999 | 999 |
| BLK4001 | Pune | 05-02-2024 | 4 | 120 | 480 |
| BLK4002 | Nagpur | 18-06-2024 | 2 | null | 120 |
| BLK4003 | Pune | 09-10-2024 | 1 | 75 | 75 |
| Check | Value |
|---|---|
| Rows | 4 + 3 = 7 |
| Total revenue | 1,959 (2023) + 675 (2024) = ₹2,634 |
| Total sales | 7 + 7 = 14 units |
| Columns | 10, orders_2023 एवढेच (वेगळा revenue (₹) column नाही) |
6. काय झालं
- 2024 मधला blank order ID चा row append आधीच काढला, म्हणून फक्त खरे orders stack झाले.
- 2024 च्या प्रत्येक column चं नाव आता 2023 च्या column सारखंच आहे, म्हणून Append ने प्रत्येक value matching column मध्ये टाकली. बाजूला काहीच नवीन add झालं नाही.
salesदोन source queries पासून बनलीय. नंतरorders_2024बदलली, तर पुढच्या refresh लाsalesपण बदलते.- Enable load बंद असल्यामुळे 2023 आणि 2024 चे rows एकदाच load होतात (
salesच्या आत), तीनदा नाही.
Classroom line
If there is a spelling mistake in a column name, Power BI adds it as a new column on the side instead.
Class मधलं वाक्य
"Otherwise jar column chya navachya spelling madhe mistake disla, tar tya navin column mhanun bajula add karel."
नाहीतर column च्या नावाच्या spelling मध्ये mistake असेल, तर Power BI तो नवीन column म्हणून बाजूला add करेल.
Classroom line
If there is a spelling mistake in a column name, Power BI adds it as a new column on the side instead.
7. अजून थोडं खोलात
- पुढच्या वर्षीची file. 2025 ची file आली की ती
orders_2025म्हणून load करा, तशीच clean करा, मगsalesनिवडा › Home › Append Queries ("as New" नाही) ›orders_2025. Close & Apply नंतर dashboard वरचे सगळे visuals update होतात. पुढच्या chapter मध्ये नेमकं हेच करतोय. - Columns चा क्रम महत्त्वाचा नाही, नावं महत्त्वाची. 2024 मध्ये revenue price च्या आधी असला तरी Append नावानेच match करतं.
- Data types पण match हवेत. एका query मध्ये revenue Decimal आणि दुसऱ्यात Text असेल, तर appended column मिक्स होतो आणि sum चालत नाही. दोन्ही source queries मध्ये types set करा.
- Append Queries आणि Append Queries as New. साधं Append निवडलेल्या query मध्ये step add करतं; as New वेगळी query बनवतं. As New मुळे प्रत्येक वर्षाचं cleaning त्याच्या query मध्ये राहतं आणि result एका स्पष्ट नावाच्या query मध्ये.
- तीन किंवा जास्त tables एकदम: Append dialog मध्ये Three or more tables निवडा आणि list मध्ये add करा.
- Power BI Desktop फक्त Windows वर चालतो. Mac असेल तर Windows PC किंवा Windows virtual machine वापरा.
8. नेहमीच्या चुका
| चुकीचा result | कारण | उपाय |
|---|---|---|
| Revenue card 2,634 ऐवजी 1,959 दाखवतो | 2024 चा revenue वेगळ्या revenue (₹) column मध्ये बसलाय |
orders_2024 मध्ये column चं नाव exactly revenue करा |
sales मध्ये 2023 साठी nulls भरलेला delivery_date_format2 column |
तो column rename केला नाही | त्याचं नाव delivery_date करा |
| 7 ऐवजी 8 rows | 2024 मधला blank order ID row काढला नाही | orders_2024 मध्ये order_id वर (blank) filter out करा |
| Data pane मध्ये तीन tables आणि model गरजेपेक्षा मोठं | Source queries चं Enable load अजून चालू | orders_2023 आणि orders_2024 चं Enable load untick करा |
| BLK4002 ची price 0 दिसते | NA ऐवजी 0 टाकला | NA ऐवजी null; 0 मुळे averages खाली येतात |
| Replace With रिकामं ठेवलं आणि cell मध्ये null ऐवजी empty text | Text column मध्ये रिकामं Replace With empty text देतं | Replace With मध्ये null type करा |
Ravindra Bagale's Tip
Before you append, put the two queries' column lists side by side and read them letter by letter. One extra space or "(₹)" is enough to create a new column, and the total quietly stops including the new year.
Ravindra Bagale's Tip – मराठी
Append करण्याआधी दोन्ही queries च्या columns ची list शेजारी शेजारी ठेवा आणि अक्षर न अक्षर वाचा. एक extra space किंवा "(₹)" पुरेसं आहे नवीन column बनायला, आणि मग total मध्ये नवीन वर्ष गुपचूप येणंच बंद होतं.
Ravindra Bagale's Tip – हिंदी
Append करने से पहले दोनों queries के columns की list साथ-साथ रखिए और अक्षर-अक्षर पढ़िए. एक extra space या "(₹)" काफ़ी है नया column बनने के लिए, और फिर total में नया साल चुपचाप आना बंद हो जाता है.
9. स्वतः practice करा
Practice task
blinkit-orders-2023.csv आणि blinkit-orders-2024.csv एका sales नावाच्या query मध्ये append करा.
- Blank order IDs काढल्यावर
orders_2024मध्ये किती rows? salesमध्ये किती rows?- Total revenue किती, आणि total sales किती units?
- Append नंतर price, revenue आणि stock मध्ये किती nulls?
Hints: 2024 च्या file मध्ये 5 blank order IDs आहेत, आणि price, revenue (₹) आणि stock मध्ये NA.
Solution बघा
- 135 rows (140 − 5).
- 255 rows (120 + 135).
- Revenue ₹1,23,822 (2023 चे 53,186 + 2024 चे 70,636); sales 551 units (263 + 288).
- price 11, revenue 8, stock 6 nulls (सगळे 2024 मधले).
Revenue 53,186 आला तर 2024 चा revenue column rename झालेला नाही.
10. Professional सारखा विचार करा
- Business view. प्रत्येक subject साठी एक table (sales), प्रत्येक वर्षासाठी एक नाही. मग reports मध्ये year filter ने वर्षांची तुलना सोपी होते.
- Performance. Helper queries चं Enable load बंद करा. प्रत्येक loaded table memory आणि refresh time खातो.
- Maintenance. Queries ना स्पष्ट नावं द्या:
orders_2023,orders_2024,sales. पुढच्या वर्षी दुसरं कोणीही View › Query Dependencies मध्ये chain समजू शकेल. - खूप वर्षांच्या files? त्या एका folder मध्ये ठेवा आणि Get data › Folder वापरा, म्हणजे नवीन file refresh ला आपोआप येईल.
Interview questions
- Append आणि Merge मध्ये फरक काय? Append same columns असलेल्या tables चे rows add करतं; Merge common key वापरून दुसऱ्या table चे columns add करतं.
- Append मुळे कधी कधी nulls भरलेले नवीन columns का येतात? Tables मध्ये एखाद्या column चं नाव वेगळं असतं, म्हणून Append त्यांना वेगळे columns समजतं.
- Source queries चं Enable load का बंद करायचं? म्हणजे तेच rows दोनदा load होत नाहीत आणि model छोटं राहतं.
- पुढच्या वर्षीचा data कसा add करता? नवीन file load करून match होईल अशी clean करायची, मग existing sales query मध्ये append करायची.
Recap
थोडक्यात
- Append rows stack करतं आणि columns नावाने match करतं.
- नवीन file तशीच clean करा; columns ची नावं exactly match करा.
- NA ऐवजी null: Replace With मध्ये null type करा.
- Append Queries as New, result चं नाव sales.
- Source queries चं Enable load untick करा; rows (4 + 3 = 7) आणि revenue (₹2,634) check करा.
उजळणी card