Câu chuyện cho bài viết lần này cũng xuất phát từ chính trải nghiệm của riêng cá nhân mình, một cậu Maz trở thành Data Analyst trong sự tìm tòi và học hành rất “xáo trộn”. Nếu như mọi người thường được khuyên rằng hãy bắt đầu quá trình rèn luyện kĩ năng làm phân tích dữ liệu với SQL thì mình lại bắt đầu với các BI tools (Power BI, Tableau). Sau đó qua công ty mới thì thực hành với Python luôn mà chả động gì đến SQL. Qua ngần ấy thời gian, mình nhận ra điều này không hoàn toàn sai, chỉ là nhũng thứ mình học nó không tuân theo một quá trình bài bản nào cả. Dẫn đến, có đôi lần mình cứ loay hoay mãi vì bản thân bị thủng mất một phần kiến thức/kĩ năng cần thiết trong quá trình làm phân tích dữ liệu mà chưa hề biết. Để rồi khi mình đủ “trải nghệm” trong cái ngành này, lộ trình tự học để trở thành mộ Data Analyst là kim chỉ nam cho những ai đang bắt đầu đi trên con đường này, giống mình.

Sở dĩ mình hay có những đoạn mở bài dài như thế này, vì Maz luôn mong mọi người trước khi bắt đầu đọc một nội dung mới thì nên hiểu được bối cảnh của tác giả, để rồi sự đồng điệu cũng từ đó mà nhịp nhàng hơn (ui nghe sến quá ha :))

Bây giờ thì bắt đầu với chủ đề của bài viết này thôi!

Bài viết bao gồm các nội dung:

  • Tìm hiểu khái niệm SQL, vai trò của SQL trong công việc của người làm phân tích
  • Các cấu phần quan trọng khi học SQL
  • Nguồn tự học SQL

(Nếu bạn muốn dễ hiểu hơn thì có thể xem video này ^_^)

1. Hiểu về SQL?

SQL là từ viết tắt của Structured Query Language, là ngôn ngữ truy vấn có cấu trúc, cho phép bạn truy cập và thao tác với các cơ sở dữ liệu để tạo, xóa, sửa đổi, trích xuất dữ liệu.

A. Các biến thể SQL

SQL được xem là ngôn ngữ tiêu chuẩn cho các hệ cơ sở dữ liệu quan hệ (relational database). Vì thế tất cả các hệ thống quản trị cơ sở dữ liệu (RDBMS) như MySQL, MS Access, Oracle, Sybase, Informix, Postgres hay SQL Server đều lấy SQL làm ngôn ngữ cơ sở dữ liệu tiêu chuẩn. Ngoài ra, ở từng hệ thống họ sẽ tạo ra các biến thể SQL để phù hợp với tính chất của từng nền tảng. Vì thế chúng ta thường nghe nhắc đến các tên gọi khác nhau khi nói về ngôn ngữ SQL như: T-SQL dùng trong SQL Serer, PL-SQL dùng trong Oracle, MySQL của MySQL và Postgres SQL của Postgres, … Tất cả đều là các biến thể của SQL nhưng phải tuân theo tiêu chuẩn được quy định bởi American National Standards Institute (ANSI), cho phép có sự khác nhau nhưng không quá lớn

Vậy nên, khi chúng ta học SQL, thường thì sẽ học với một biến thể của một nhà cung cấp RDBMS nhất định. Có thể là SQL Server, MySQL hay Postgres SQL, … Như mình có nhắc ở trên thì sẽ có một chút khác biệt trong cách viết các câu lệnh nhưng về cơ bản là không quá khác nhau, mọi thứ đều phải tuân theo ANSI nên các bạn cứ yên tâm mà học một loại thôi là được.

B. Vai trò của SQL trong quá trình làm phân tích dữ liệu

Đây là process mà mình đúc kết dựa việc research và kinh nghiệm của bản thân, mọi người có thể tham khảo và tự kiểm chứng cho riêng mình nhé.

Với mình, quá trình phân tích dữ liệu bao gồm 6 giai đoạn như hình vẽ. Bắt đầu từ việc xác định các data cần thu thập trong quá trình xây dựng và vận hành các tính năng của sản phẩm (1. data spcifications) -> Data được xử lý và lưu trữ trong các database system (2. data collection) -> Chuẩn bị dữ liệu là bước truy xuất, làm sạch và xử lý dữ liệu thừa/thiếu (3. data preparation) -> Khai phá dữ liệu để tìm ra insights (4. data exploratory) -> Áp dụng thuật toán học máy để giải quyết các bài toán dự báo (5. modelling & evaluation) -> Trình bày kết quả phân tích (6. communication of insights). Đối với người làm phân tích dữ liệu thì sẽ đảm nhiệm từ giai đoạn số 3 -> 6, hai bước đầu tiên thông thường sẽ do các bạn Product owner, Developer và DE xử lý.

Bạn hãy nhìn xem, SQL đang xuất hiện ở giai đoạn nào nếu chỉ chú trọng vào công việc của người làm phân tích? Chính xác là ở bước số 3, data preparation. Tuy chỉ đóng góp vào một giai đoạn nhưng đây được xem là phần quan trọng nhất, có truy xuất, làm sạch được data thì mới có thể làm tiếp các bước sau, phải không nào!

C. Vai trò của SQL trong công việc hằng ngày của một DA/BI

Nếu bạn có theo dõi blog của mình từ những ngày đầu tiên, mình đã từng chia sẻ các công việc thực tế của một Data Analyst làm hằng ngày ở bài viết này

SQL giúp gì trong công việc thực tế mà mỗi ngày các DA và BI phải làm? Đầu tiên là việc làm dashboard, trước khi tạo được các dashboard chuẩn chỉnh trên các BI tools thì bước truy xuất và làm sạch dữ liệu sẽ được xử lý bằng SQL. SQL giúp chúng ta tạo ra các bảng dữ liệu tinh gọn, lưu trữ ở data warehouse, sau đó các BI tools như PBI, Tableau mới connect vào để lấy dữ liệu mà trực quan hóa thành các bảng và biểu đồ.

Tiếp theo ta phải nhắc đến “người bạn SQL” trong các reporting ad-hoc analysis. Một người làm phân tích không phải lúc nào cũng cần tạo ra những báo cáo thật sự cầu kì và hoành tráng như các slides trình bày chiến lược của các công ty consulting hay market research mà mình hay thấy. Đôi khi DA và BI chỉ cần dùng 1 câu lệnh SQL truy xuất, tính toán ra được 1 con số hay 1 bảng thống kê kết quả để báo cáo với sếp trong những trường hợp khẩn cấp, đó là một thực tế mà đa số các bạn làm phân tích dữ liệu đã trải qua. Cho nên, hi vọng mọi người đừng “thần thánh hóa” rằng lúc nào DA cũng phải làm ra các bài phân tích thật hoành tráng, đòi hỏi nhiều công sức.

Chậm lại một chút, bạn hãy ngẫm lại vai trò của SQL dưới hai góc độ (trong DA process và trong daily tasks) trước khi mình đọc tiếp nhé.

D. SQL sẽ phổ biến giống như sự thịnh hành của Excel?

Ngay từ cấp hai là chúng ta đã được dạy Excel ở trường, hầu hết mọi công ty đều dùng Excel trong công việc. Dữ liệu ở khắp mọi nơi và công cụ phổ biến nhất để lưu trữ và phân tích dữ liệu hiện nay chắc chắn là Excel. Doanh nghiệp ngày nay đang chú trọng hơn về giá trị của dữ liệu trong tất cả mọi quyết định, vì thế mà sự đầu tư về hệ thống data, công cụ phân tích cũng được nâng cao. SQL trở nên phổ biến rộng rãi hơn là một điều hoàn toàn thực tế.

Có thể thấy rằng, ngoài những DA và BI thì có rất nhiều vị trí khác trong công ty chúng ta cũng có khả năng sử dụng SQL trong công việc. Mình hay bắt gặp bạn marketing analyst, finance analyst, risk analyst hay kể cả chị HR ở công ty mình đều dùng SQL khi có nhu cầu lấy dữ liệu để phân tích. Đôi khi chúng ta sẽ bắt gặp đâu đó ở các Job descriptions, của các vị trí kể trên cũng có yêu cầu kĩ năng SQL, hiện tại nó được xem là điểm cộng, nhưng sẽ sớm thôi trong tương lại trở thành một yêu cầu như bạn phải giỏi Microsoft office.

2. SQL – Học sao cho “đủ”

SQL là một ngôn ngữ truy vấn có cấu trúc, học SQL có thể được xem là một thêm tools (vì để sử dụng SQL chắc chắn phải dùng thêm các công cụ riêng biệt rồi). Ngoài việc sử dụng thành thạo tools thì kiến thức các khái niệm cơ bản là phần cần quan tâm.

A. Nắm bắt các khái niệm cốt lõi

  • SQL là gì, các biến thể SQL: mình đã trình bày ở phần đầu
  • Main SQL concepts: Database, schema, table, columns & rows, constraints
  • Các loại lệnh chính trong SQL (commands):
    • DQL (data query language): Lệnh truy vấn. 80-90% công việc của DA/BI sẽ thao tác trong nhóm lệnh này.
    • DDL (data definition language): Lệnh định nghĩa, xây dựng và quản lý các đối tượng trong databases (tables, views và procedures).
    • DCL (data control language): Lệnh thao tác quản lý bảo mật dữ liệu và phân quyền cho các đối tượng người dùng.
    • DML (data manipulation language): Lệnh thay đổi các giá trị dữ liệu trong bảng ( INSERT, UPDATE, DELETE)
    • TCL (transaction control language):
Source: analyticsindiamag

B. Chú trọng nhóm lệnh truy vấn (DQL)

Dưới góc độ của những end users (người sử dụng data), người làm phân tích sẽ sử dụng nhóm lệnh truy vấn và xử lý data nhiều nhất. Vì thế tập trung học và sử dụng thành thạo những câu lệnh DQL là hoàn toàn quan trọng.

Có thể chia thành các phần sau để dễ dàng thực hành:

  • Câu lệnh truy vấn đầy đủ gồm:
    • SELECT: hiển thị kết quả truy vấn
    • FROM: lấy data từ tables nào
    • WHERE: khai báo các điều kiện
    • GROUP BY: gom nhóm theo đối tượng
    • ORDER BY: sắp xếp dữ liệu
    • HAVING: sắp xếp dữ liệu sau khi gom nhóm
  • Phép ghép các bảng dữ liệu:
    • JOIN: mở rộng tables theo chiều ngang
    • UNION: mở rộng tables theo chiều dọc
  • Hàm tính toán có sẵn (built-in functions)
    • Scalar functions: nhóm hàm thao tác trên từng dòng và trả về 1 giá trị. Có thể liệt kê các hàm chuyển đổi CONVERTION, DATE & TIME, STRING, …
    • Logical functions: Mệnh đề CASE… WHEN, IIF, CHOOSE, ISNULL, …
    • Ranking: hàm xếp hạng dữ liệu (RANK, ROW_NUMBER, …)
    • Aggregate: hàm tính tổng (MIN, MAX, SUM, AVERAGE, …)
  • Truy vấn trên bảng phụ:
    • Subquery: Câu lệnh truy vấn lồng ghép
    • CTE (Common table expression): Tạo ra bảng phụ bằng câu lện truy vấn

Các nhóm lệnh còn lại như DDL và DML, chỉ chiếm khoảng 10% trong công việc của người làm phân tích, thậm chí có nhiều DA/BI cũng sẽ không bao giờ được thực hành các lệnh này vì phải đảm bảo tính bảo mật và toàn vẹn của dữ liệu. Thông thường end users sẽ không được phân quyền để chỉnh sửa hoặc thay đổi giá trị của dữ liệu. Vì thế hãy tập trung vào nhóm DQL thật nhiều nhé.

D. Tư duy logic và hiểu thứ tự thực hiện các lệnh trong SQL

Mình muốn chia sẻ thêm phần này vì mình nghĩ rằng: Việc học SQL hay bất cứ một ngôn ngữ xử lý dữ liệu nào không phải là việc bạn học thuộc lòng hay nhớ giỏi bao nhiêu câu lệnh, quan trọng là tư duy logic và cách thức giải quyết vấn đề của bạn có tốt không? Bởi lẽ tất cả câu lệnh SQL đều có đầy rẫy tài liệu trên mạng, quan trọng bạn có biết key words để research và hướng giải quyết bài toán không. Với một yêu cầu truy xuất data, sẽ có rất nhiều cách để viết câu lệnh, nhưng viết một cách tối ưu và mang lại kết quả chính xác nhất mới là người làm phân tích tốt.

Vậy nên, hiểu thêm thứ tự SQL thực hiện các câu lệnh trong mệnh đề truy vấn là điều cần thiết:

FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY -> LIMIT

3. Nguồn tự học SQL

Ở đây mình trích một số nguồn tự học để mọi người tham khảo:

Kết

Mình biết khi viết về SQL thì đã có rất nhiều tài liệu cho kĩ năng này trên internet. Tuy nhiên mình vẫn muốn chia sẻ cho mọi người theo cách hiểu và kinh nghiệm của mình. Đâu đấy Maz muốn mang đến một góc nhìn rõ ràng hơn, WHY (vì sao bạn cần tìm hiểu SQL?), WHAT (SQL là cái gì?), HOW (Học SQL như thế nào cho hiệu quả?) và WHERE (học ở đâu?). Hi vọng bạn cảm nhận được điều này.

Cảm ơn vì đã ghé qua.

Maz.

Kết nối với mình nhé:

LinkedIn: https://www.linkedin.com/in/ntrunghieu/

Facebook Group: https://www.facebook.com/groups/mazhocdata

Fanpage: Maz học Data & Lucas học Product

Tiktok: https://www.tiktok.com/@mazhocdata

** Mọi thông tin trên blog đều thuộc bản quyền của blog Maz Nguyen. Vui lòng đọc kĩ Copyright Notice trước khi copy hoặc đăng tải lại nội dung/hình ảnh của bài viết **

Nếu bạn có nhu cầu học SQL, thì có thể tham khảo lớp học của tớ theo Link bên dưới nhé!

Maz có một dự án dạy học ở đây: Maz Học Data với SQL là course đầu tiên, bạn có thể tham khảo qua nếu thấy cần thiết nhé.

error: Content is protected !!
13
0
Would love your thoughts, please comment.x
()
x