අප bisher වැඩ කළේ CSV বা Excel වැනි තනි ගොනු (flat files) වල ඇති දත්ත සමඟයි. නමුත් සැබෑ ලෝකයේ, විශේෂයෙන්ම විශාල ආයතන වල දත්ත ගබඩා කර ඇත්තේ **Databases (දත්ත සමුදායන්)** වලයි. දත්ත විශ්ලේෂකයෙකු ලෙස, මෙම දත්ත සමුදායන් සමඟ සෘජුවම කතා කර, අවශ්ය දත්ත ලබා ගැනීමේ හැකියාව අත්යවශ්ය කුසලතාවකි. ඒ සඳහා අප භාවිතා කරන භාෂාව තමයි **SQL (Structured Query Language)**.
Relational Databases (සම්බන්ධතා දත්ත සමුදායන්)
වඩාත්ම ප්රචලිත දත්ත සමුදා වර්ගය වන්නේ Relational Databases (RDBMS) ය. මෙහිදී දත්ත, එකිනෙකට සම්බන්ධ වූ වගු (tables) වල ගබඩා කර ඇත. සෑම වගුවක්ම Pandas DataFrame එකක් මෙන් පේළි (rows) සහ තීරු (columns) වලින් සමන්විත වේ.
උපමාව: මෙය හරියට ඔබගේ දුරකථනයේ ඇති 'Contacts' සහ 'Call Log' යන app දෙක වැනිය. 'Contacts' වගුවේ ඔබගේ මිතුරන්ගේ නම්, දුරකථන අංක, ලිපින ඇත. 'Call Log' වගුවේ ඇමතුම් ගත් වේලාවන් සහ දුරකථන අංක ඇත. මෙම වගු දෙකම 'දුරකථන අංකය' නමැති පොදු තීරුවකින් එකිනෙකට සම්බන්ධ වී ඇත. එම සම්බන්ධතාවය නිසා, ඔබට යම් දුරකථන අංකයකින් ඇමතුමක් ආ විට, එය කාගෙන්දැයි හඳුනාගත හැකිය.
Relational Databases වලදීද, මෙලෙස වගු එකිනෙකට සම්බන්ධ කිරීමෙන් දත්ත නැවත නැවත ඇතුළත් කිරීම (data redundancy) අවම කර, දත්ත වල නිරවද්යතාවය (data integrity) ආරක්ෂා කරයි. MySQL, PostgreSQL, SQLite, Microsoft SQL Server යනු ජනප්රිය RDBMS කිහිපයකි.
SQL - දත්ත සමුදායේ භාෂාව
SQL (Structured Query Language), බොහෝ විට "sequel" ලෙස උච්චාරණය කෙරේ, යනු relational databases වලින් දත්ත ලබා ගැනීමට (retrieve), ඇතුළත් කිරීමට (insert), යාවත්කාලීන කිරීමට (update), සහ මකා දැමීමට (delete) භාවිතා කරන සම්මත භාෂාවයි. දත්ත විශ්ලේෂකයෙකු ලෙස අපට වඩාත්ම වැදගත් වන්නේ දත්ත ලබාගැනීමයි. අපි දැන් ඒ සඳහා අවශ්ය මූලික SQL commands ඉගෙන ගනිමු.
SELECT සහ FROM: දත්ත තෝරාගැනීම
`SELECT` මගින් අපට අවශ්ය තීරු (columns) මොනවාදැයි ද, `FROM` මගින් එම දත්ත ලබාගත යුත්තේ කුමන වගුවෙන්ද (table) යන්න ද කියයි.
WHERE: දත්ත පෙරීම (Filtering)
`WHERE` clause එක මගින් යම් කොන්දේසියකට ගැලපෙන පේළි පමණක් තෝරාගත හැක. මෙය Pandas හි filtering වලට සමාන වේ.
JOIN: වගු සම්බන්ධ කිරීම
`JOIN` යනු SQL හි ඇති ඉතාමත් ප්රබල command එකකි. පොදු තීරුවක් (common column) පදනම් කරගෙන, වගු දෙකක් හෝ වැඩි ගණනක් එකට සම්බන්ධ කිරීමට මෙය භාවිතා කරයි.
GROUP BY: දත්ත සාරාංශගත කිරීම
`GROUP BY` මගින් දත්ත යම් තීරුවක අගයන්ට අනුව කාණ්ඩ කර, එක් එක් කාණ්ඩය සඳහා සාරාංශ ගණනයන් (aggregate functions) සිදු කළ හැක. `COUNT()`, `SUM()`, `AVG()` (Average) යනු බහුලව භාවිතා වන aggregate functions වේ.
SQL + Pandas Integration
Python වල ඇති `sqlite3` (SQLite සඳහා) বা `psycopg2` (PostgreSQL සඳහා) වැනි libraries භාවිතයෙන්, අපට Pandas සමඟ සෘජුවම database එකකට සම්බන්ධ වී, SQL query එකක් ක්රියාත්මක කර, එහි ප්රතිඵලය DataFrame එකකට ලබාගත හැකිය. `pd.read_sql_query()` ශ්රිතය මේ සඳහා ඉතා පහසු ක්රමයක් සපයයි.
- Relational Databases (RDBMS) යනු කුමක්ද?
- `SELECT` සහ `FROM` භාවිතය.
- `WHERE` මගින් දත්ත filter කිරීම.
- `JOIN` මගින් වගු සම්බන්ධ කිරීම.
- `GROUP BY` මගින් දත්ත සාරාංශගත කිරීම.
- Python/Pandas සමඟ SQL ඒකාබද්ධ කිරීම.