Power Query मधला DataFormat.Error We Couldn't Convert to Number कसा fix करायचा
तुम्ही price column number करता आणि काही cells मध्ये Error हा शब्द येतो. एकावर click केलं की Power Query सांगतो: DataFormat.Error: We couldn't convert to Number. बरेच जण मग type परत बदलून बघतात, किंवा errors filter करून टाकतात, आणि चांगले orders घालवतात. या chapter मध्ये आपण बघणार की नक्की कोणत्या value मुळे error आला, कोणत्या step ने तो बनवला, आणि एकही row न घालवता तो बरोबर क्रमाने कसा fix करायचा.
या chapter मध्ये काय शिकणार
- DataFormat.Error म्हणजे काय
- Error details वाचणं (Details: NA)
- Applied Steps ने प्रत्येक step चा data बघणं
- Error बनवणारा step शोधणं
- Changed Type step safely delete करणं
- आधी replace, मग type
- Column quality ने errors मोजणं
Practice files: blinkit-orders-small-raw.csv (12 rows) आणि blinkit-orders-raw.csv (315 rows). Power BI Power Query मध्ये messy sales data clean कसा करायचा मधल्याच काल्पनिक files.
काल्पनिक data: orders, products आणि stores practice साठी बनवलेले आहेत, Maharashtra मधल्या Blinkit सारख्या export ची नक्कल. Amounts ₹ मध्ये.
1. Problem काय आहे
Title row काढला, headers लावले, blank आणि duplicate order IDs काढले; छोट्या file मध्ये 7 orders उरले. आता price चा type icon click करून Decimal Number निवडला. Column असा दिसतो:
| order_id | price |
|---|---|
| BLK1001 | 120 |
| BLK1002 | 450 |
| BLK1003 | Error |
| BLK1005 | 120 |
| BLK1006 | 999 |
| BLK1008 | 450 |
| BLK1009 | 90 |
BLK1003 या एका order ला error आहे. असंच load केलं तर ती price जाते, आणि errors filter केले तर अख्खा order जातो.
2. सोप्या भाषेत idea
Data type म्हणजे एक promise: "या column मधली प्रत्येक value number आहे". Power Query हे promise cell by cell check करतो. 120 चा number होतो. "NA" चा होत नाही, कारण N आणि A अक्षरं आहेत. Power Query अंदाज लावत नाही; तो फक्त तो एक cell Error म्हणून mark करतो आणि पुढे जातो.
म्हणजे error type मध्ये नाही. तो steps च्या क्रमात आहे: promise मोडणारा text काढायच्या आधीच तुम्ही promise केलं.
Fix चा आकार नेहमी हाच:
- खूप लवकर promise करणारा step काढा.
- Text clean करा (NA ऐवजी null).
- Promise परत करा (type बदला).
Figure 1. Type बदलला की प्रत्येक cell convert होतो; "NA" हा text number होऊ शकत नाही, म्हणून तो cell Error होतो (चित्र).
3. Data
ID cleaning नंतर उरलेले 7 orders, price file मध्ये आहे तसा text:
| order_id | price (text) | Number होईल का? |
|---|---|---|
| BLK1001 | 120 | हो |
| BLK1002 | 450 | हो |
| BLK1003 | NA | नाही |
| BLK1005 | 120 | हो |
| BLK1006 | 999 | हो |
| BLK1008 | 450 | हो |
| BLK1009 | 90 | हो |
अंदाज लावा: price मध्ये किती Error cells येतील? (एक.) NA replace करण्याआधी revenue चा type बदलला तर किती? (एक: BLK1005.)
4. Step by step
Error वाचा
- BLK1003 cell मध्ये Error शब्दाच्या बाजूच्या रिकाम्या जागेवर click करा (शब्दावर नाही). Editor च्या खाली एक pane उघडतो.
- वाचा: DataFormat.Error: We couldn't convert to Number. Details: NA. "Details" म्हणजे fail झालेली value.
Error कुठे बनला ते शोधा
- उजवीकडे Applied Steps बघा. शेवटचा step Changed Type आहे (अनेक असतील तर Changed Type1, Changed Type2 असं नाव असू शकतं).
- त्याच्या अगदी वरच्या step वर click करा. Price परत text आहे आणि BLK1003 मध्ये NA दिसतो. हा type change च्या आधीचा data.
- दुसरी कोणती वाईट value नाही ना, हे बघायला price चा filter arrow उघडा आणि search box मध्ये
NAटाका. List मध्ये NA दिसतो. काहीही न बदलता list बंद करा.
बरोबर क्रमाने fix करा
- Error बनवणाऱ्या Changed Type step च्या डावीकडच्या ✕ वर click करा. Step निघून जातो.
- List मधल्या शेवटच्या step वर परत click करा, म्हणजे तुम्ही शेवटी काम करता.
- price header वर right-click › Replace Values. Value To Find:
NA. Replace With: रिकामं. Advanced options › Match entire cell contents tick करा. OK. - आता price चा type Decimal Number करा. Power Query ने Change Column Type: Replace current / Add new step विचारलं तर Add new step निवडा.
- revenue साठी steps 8 आणि 9 करा.
Check करा
- View › Column quality tick करा. प्रत्येक header खाली Valid, Error आणि Empty चे percentages दिसतात.
Figure 2. Fix च्या आधी आणि नंतर Applied Steps: लवकर आलेला Changed Type step delete, Replaced Value आधी, type change त्याच्या नंतर (चित्र).
5. तुमचा result असा दिसला पाहिजे
| order_id | price | revenue |
|---|---|---|
| BLK1001 | 120 | 240 |
| BLK1002 | 450 | 450 |
| BLK1003 | null | 270 |
| BLK1005 | 120 | null |
| BLK1006 | 999 | 999 |
| BLK1008 | 450 | 900 |
| BLK1009 | 90 | 450 |
price साठी Column quality: Valid 86%, Error 0%, Empty 14% (7 पैकी 6 valid आणि 1 null). Applied Steps च्या शेवटी price आणि revenue चे replace आणि type steps आहेत, प्रत्येक replace त्याच्या type change च्या वर (repeat नावांना Power Query numbers लावतो, जसं Replaced Value1). Rows अजून 7.
6. काय झालं
- पहिल्या Changed Type ने clean होण्याआधीच "NA" ला number करायचा प्रयत्न केला, आणि त्या एका cell वर fail झाला.
- Step delete केल्यावर column परत text झाला, आणि "NA" परत दिसायला लागला.
- Replace Values ने "NA" ची रिकामी value केली.
- नवीन type change ला convert न होणारं काहीच उरलं नाही: रिकामी value null झाली, आणि number column मध्ये null चालतो.
प्रत्येक step त्याच्या वरच्या step च्या result वर काम करतो. म्हणूनच steps इतकाच त्यांचा क्रमही महत्त्वाचा आहे.
Classroom line
Whenever we change the data type of a column, Power Query converts every single value in it.
Class मधलं वाक्य
"Jya velesa aapan ekhadya column cha data type change karto..."
ज्या वेळेस आपण एखाद्या column चा data type बदलतो, तेव्हा Power Query त्यातली प्रत्येक value convert करतो.
Classroom line
Whenever we change the data type of a column, Power Query converts every single value in it.
7. अजून थोडं खोलात
- जास्तीचा Changed Type कुठून येतो. Headers promote केले की Power Query बऱ्याचदा पहिल्या rows वरून types चा अंदाज लावून स्वतःचा Changed Type step टाकतो. खाली NA असलेल्या column साठी त्याने number type ठरवला, तर हाच error येतो. Fix तोच.
- Formula bar मध्ये प्रत्येक step दिसतो. Step वर click करून formula bar वाचा (View › Formula Bar). Type change असा दिसतो:
Table.TransformColumnTypes(#"Removed Duplicates",{{"price", type number}}). Brackets मधलं पहिलं नाव म्हणजे तो step ज्यावर काम करतो. - Replace Errors. Header वर right-click › Replace Errors ने Error cells मध्ये null टाकता येतो. चालतं, पण अनपेक्षित errors पण लपतात, जसं comma सकट टाइप केलेलं "1,200". आधी माहीत असलेला text fix करा; Replace Errors तपासून झालेल्या cases साठी ठेवा.
- Keep Errors. Home › Keep Rows › Keep Errors ने select केलेल्या column मध्ये errors असलेलेच rows दिसतात. बघण्यासाठी वापरा, मग तो step delete करा.
- हाच error आणणाऱ्या इतर values: "-", "n/a", "₹120", "120 rs", "1.2.3". Type change च्या आधी त्या replace किंवा extract करा.
8. नेहमीच्या चुका
| चुकीचा result | कारण | उपाय |
|---|---|---|
| Type परत Text केला तरी Error cells राहतात | नवीन Text step Error ला convert करतो, मूळ NA ला नाही; तिथे NA आधीच गेलेला असतो | Error बनवणारा Changed Type step delete करा |
| 7 ऐवजी 6 rows | Remove Rows › Remove Errors ने errors काढले, त्यामुळे BLK1003 delete झाला | तो step delete करा; type change च्या आधी NA replace करा |
| Replace Values ला काहीच सापडत नाही | Changed Type step वर replace केलं, तोपर्यंत NA चा Error झाला होता | आधी Changed Type step delete करा, मग replace |
| Average price ₹318.43 | NA ऐवजी रिकामी value न टाकता 0 टाकला | "Replace With" रिकामं ठेवा म्हणजे cell null होतो |
| Step delete केल्यावर पुढचे steps बिघडतात | पुढच्या step ने delete झालेल्या step चं column नाव वापरलं होतं | पुढचे steps check करा; सहसा फक्त type change असतो, म्हणून काही बिघडत नाही |
Classroom line
First keep it as text and clean it; change the type after that.
Class मधलं वाक्य
"Pahilyanda tyala text madhe convert kar."
पहिल्यांदा त्याला text मध्ये ठेव आणि clean कर; type नंतर बदल.
Classroom line
First keep it as text and clean it; change the type after that.
Ravindra Bagale's Tip
Whenever you see Error in a column, do not touch the Error cell. Click the step above the type change and look at the real value there. Fix that value, then change the type again.
Ravindra Bagale's Tip – मराठी
Column मध्ये Error दिसला की Error cell ला हात लावू नका. Type change च्या वरच्या step वर click करा आणि तिथे खरी value काय आहे ते बघा. ती value fix करा, आणि मग type परत बदला.
Ravindra Bagale's Tip – हिंदी
Column में Error दिखे तो Error cell को मत छेड़िए. Type change के ऊपर वाले step पर click कीजिए और वहाँ असली value देखिए. वह value fix कीजिए, फिर type दोबारा बदलिए.
9. स्वतः practice करा
Practice task
blinkit-orders-raw.csv मध्ये title row काढून, headers लावून आणि order_id, product_id clean करून (274 rows):
- कोणताही replace न करता price Decimal Number करा. Price मध्ये किती Error cells?
- revenue साठी तेच करा. किती Error cells, आणि किती nulls?
- दोन्ही columns बरोबर क्रमाने fix करा. Column quality मध्ये Error किती?
Hints: रिकामे cells error आणत नाहीत; फक्त text आणतो. मोजायला Keep Errors वापरा, मग तो step delete करा.
Solution बघा
- price: 18 Error cells (18 NA values).
- revenue: 14 Error cells (NA values) आणि 8 nulls (रिकामे cells, जे error न येता null होतात).
- लवकर आलेले Changed Type steps delete करून, NA रिकाम्या value ने replace करून आणि types परत बदलून: दोन्ही columns मध्ये Error 0%. price मध्ये 18 nulls, revenue मध्ये 22 nulls, आणि table मध्ये अजून 274 rows.
10. Professional सारखा विचार करा
- Business view. Report मधला error cell म्हणजे शांतपणे चुकलेला आकडा. Null म्हणजे प्रामाणिक "माहीत नाही". Source file च्या owners ना nulls चा count कळवा.
- Performance. प्रत्येक step नंतर type change करण्यापेक्षा cleaning च्या शेवटी एकदाच करा. कमी steps वाचायला सोपे आणि refresh थोडा fast.
- Maintenance. Steps rename करा (Replaced NA in price, Set types). पुढच्या महिन्याची file "-" सारखी नवीन वाईट value आणेल, तेव्हा error ज्या step वर येईल त्याचं नावच सांगेल कुठे बघायचं.
- Refresh safety. Build करताना Column quality आणि Column profile (View tab) चालू ठेवा. File छोटी असेल तर editor च्या खाली Column profiling based on entire data set निवडा, कारण default फक्त पहिल्या 1,000 rows बघतो.
Interview questions
- "DataFormat.Error: We couldn't convert to Number" म्हणजे काय? Column मधली एक value (Details मध्ये दिसणारी) type conversion number म्हणून वाचू शकत नाही.
- कोणत्या step ने error आला ते कसं शोधता? Applied Steps मध्ये खालून वर steps click करा; error दाखवणारा पहिला step, सहसा Changed Type.
- Remove Errors का नाही वापरायचं? ते अख्खे rows delete करतं, त्यामुळे त्या order च्या इतर columns मधला चांगला data जातो.
- बरोबर क्रम कोणता? आधी text values clean करा, मग data type बदला.
Recap
थोडक्यात
- DataFormat.Error म्हणजे एक value (Details मध्ये दिसणारी) number होऊ शकत नाही.
- Applied Steps मध्ये step वर click केलं की त्या क्षणाचा data दिसतो.
- खूप लवकर चाललेला Changed Type step delete करा.
- NA रिकाम्या value ने replace करा, मग type बदला: तो null होतो.
- Error rows कधीच काढू नका: अख्खे orders जातात.
उजळणी card