Ravindra BagaleCourses & study guides Track your progress

10. Analysts रोज वापरतात ती Text Functions

10.5 Practice: Agent ची नावं स्वच्छ करा आणि hub codes तपासा

का (Why). खऱ्या lists मध्ये text चे सगळे प्रश्न एकत्र असतात: spaces, capital अक्षरं, नसलेली नावं आणि न जुळणारे codes. एका query मध्ये ते सोडवले की रोज कामाला येणारी सवय लागते.

काय (What). एकाच SELECT मध्ये trim(), replace(), upper(), lower(), substr() आणि coalesce() एकत्र वापरता. यामुळे फक्त query मध्ये दिसणं बदलतं; साठवलेला data तसाच राहतो. स्वच्छ केल्यावर दोन नावं सारखी झाली, तर त्यांना संभाव्य duplicates समजा आणि काहीही एकत्र करण्याआधी agent_id तपासा.

कसं (How). प्रत्येक agent साठी स्वच्छ display नाव बनवा, मग प्रत्येक tracking code ची तो ज्या hub code शी जुळायला हवा त्याच्याशी तुलना करा.

पायऱ्या

  1. पहिलं उदाहरण run करा आणि clean_name column वाचा.
  2. फक्त पहिलं अक्षर capital होतं हे लक्षात घ्या; प्रत्येक शब्दाचं पहिलं अक्षर capital करायला जास्त काम लागतं.
  3. ज्या shipments चा code खऱ्या hub शी जुळत नाही त्यांची यादी बघायला दुसरं उदाहरण run करा.
  4. Source data दुरुस्त करता यावा म्हणून त्या दोन shipments लिहून ठेवा.

उदाहरणे

उदाहरण 1 · dataset: swiftship_logistics

SELECT agent_id,
       coalesce(
         upper(substr(trim(replace(raw_name, '  ', ' ')), 1, 1)) ||
         lower(substr(trim(replace(raw_name, '  ', ' ')), 2)),
         'Name missing') AS clean_name
FROM agents
ORDER BY agent_id;

Output

agent_idclean_name
1Asha patil
2Rahul sharma
3Fatima khan
4Oliver brown
5élodie martin
6Name missing

Meaning. जास्तीच्या spaces गेल्या, Fatima च्या नावातली दोन spaces एक झाली, आणि प्रत्येक नाव capital अक्षराने सुरू होतं. upper() é बदलत नाही म्हणून élodie small च राहतं. Agent 6 साठी NULL ऐवजी Name missing दिसतं.

उदाहरण 2 · dataset: swiftship_logistics

SELECT s.shipment_id,
       s.tracking_code,
       s.hub_id,
       h.hub_code
FROM shipments AS s
LEFT JOIN hubs AS h ON h.hub_id = s.hub_id
WHERE h.hub_code IS NULL
   OR substr(s.tracking_code, 1, 6) <> h.hub_code;

Output

shipment_idtracking_codehub_idhub_code
1009LHR-03-002229NULL
1010PNQ-01-00020NULLNULL

Meaning. दोन shipments तपासायला हव्यात. 1009 hub 9 कडे बोट दाखवते, जो hub अस्तित्वातच नाही. 1010 ला अजून hub नाही, म्हणून hub_id NULL आहे. बाकी प्रत्येक code आपल्या hub शी जुळतो. इथे वापरलेला LEFT JOIN chapter 15 मध्ये पूर्ण समजावला आहे.

Ravindra Bagale's Tip

replace(raw_name, ' ', ' ') changes each double space into one space once. A long run of spaces may need the same replace() more than once, and tabs or line breaks are not touched at all. Check the result instead of assuming one call fixed every space.