# 7.13 Phone, e-mail आणि PIN code clean करणं

Source: https://ravindrabagale.com/mr/powerbi/ch07-data-cleaning-a-z-in-power-query/7-13-phone-numbers-e-mails-and-pin-codes.html
Language: mr (Marathi with English technical terms)

खालील phone numbers व e-mails काल्पनिक आहेत. Format clean करायचं आणि संशयास्पद values flag करायच्या आहेत.

 | Customer
 | Phone
 | E-mail
 | Pincode

 | Ravina
 | +91 98220 12345
 | Ravina@Example.com·
 | 411038

 | Raja
 | 098220-54321
 | raja.example.com
 | 431 003

 | Salman
 | 91-9822011111
 | SALMAN@EXAMPLE.COM
 | 416008.0

 | Rani
 | 12345
 | rani@example
 | 440010

 | Customer
 | Phone
 | Phone OK
 | E-mail
 | E-mail OK
 | Pincode

 | Ravina
 | 9822012345
 | TRUE
 | ravina@example.com
 | TRUE
 | 411038

 | Raja
 | 9822054321
 | TRUE
 | raja.example.com
 | FALSE
 | 431003

 | Salman
 | 9822011111
 | TRUE
 | salman@example.com
 | TRUE
 | 416008

 | Rani
 | 12345
 | FALSE
 | rani@example
 | FALSE
 | 440010

Phone Text ठेवा.

Phone Clean custom column: Text.End(Text.Select([Phone], {"0".."9"}), 10). हा sample भारतातील mobile prefixes काढण्याचं साधं example आहे.

Phone OK साठी Text.Length([Phone Clean]) = 10 द्या आणि True/False type ठेवा.

E-mail वर Trim आणि lowercase करा; basic quality flag साठी code पाहा.

Pincode Text ठेवा; spaces काढा. 416008.0 सारखा चुकीचा numeric export असेल तर अपेक्षित format तपासून dot आधीचा भाग घ्या.

PhoneClean = Table.AddColumn(Source, "Phone Clean",
    each Text.End(Text.Select([Phone], {"0".."9"}), 10), type text),
EmailOK = Table.AddColumn(PhoneClean, "E-mail OK", each
    let e = Text.Lower(Text.Trim([E-mail])) in
    Text.Contains(e, "@") and Text.Contains(Text.AfterDelimiter(e, "@"), ".")
    and not Text.Contains(e, " "), type logical),
// codes with leading zeros, e.g. customer code 245 -> "000245"
Padded = Table.TransformColumns(EmailOK, {{"Customer Code", each Text.PadStart(Text.From(_), 6, "0"), type text}})

Format check म्हणजे पूर्ण validation नाही

शेवटचे 10 digits घेतल्याने चुकीचा लांब numberही valid वाटू शकतो. मूळ length, country code आणि मान्य number pattern तपासूनच production cleaning करा. E-mail मध्ये @ व dot आहेत म्हणजे address अस्तित्वात आहे असं नाही. Nulls साठीही guard आवश्यक आहे.

भारताचे PIN codes सहा digits चे असतात आणि zero ने सुरू होत नाहीत. Customer / SKU सारखे इतर codes मात्र 000245 असे असू शकतात. त्यांची ठरलेली width माहीत असेल तेव्हाच Text.PadStart वापरा.

Practice

DeliveryPartner मधले Amir, Raja, Salman यांचे test phones clean करा. Masked Phone साठी "XXXXXX" & Text.End([Phone Clean], 4) वापरा.

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

Phone आणि PIN हे identifiers आहेत, quantities नाहीत. Text ठेवा. Simple flag हा संशयास्पद rows शोधण्यासाठी आहे; तो पूर्ण phone किंवा e-mail validation नाही.
