Khóa học
Jupyter Notebooks là một phần thiết yếu trong mọi quy trình làm việc về Khoa học Dữ liệu; đến mức nhiều tổ chức như Netflix coi chúng là không thể thiếu. Môi trường tính toán chạy trên trình duyệt, kết hợp với định dạng tài liệu có thể tái lập, đã khiến chúng trở thành lựa chọn mặc định của hàng triệu nhà khoa học dữ liệu và nhà nghiên cứu trên toàn thế giới. Jupyter tự hào có một cộng đồng quốc tế lớn mạnh đến từ hầu như mọi quốc gia. Chính cộng đồng đã phát triển rất nhiều kernel.
Jupyter Lab là giao diện người dùng thế hệ tiếp theo cho Dự án Jupyter, cung cấp tất cả các khối xây dựng quen thuộc của Jupyter Notebook cổ điển như notebook, terminal, trình soạn thảo văn bản, trình duyệt tệp, hiển thị kết quả phong phú, v.v. Tuy nhiên, khác với notebook cổ điển, tất cả tính năng này được cung cấp trong một giao diện người dùng linh hoạt và mạnh mẽ. Ý tưởng cốt lõi của Jupyter Lab là đưa toàn bộ những khối xây dựng vốn có trong notebook cổ điển, cộng thêm một số thứ mới, vào chung một nơi.

JupyterLab hiển thị khu vực làm việc với notebook, tệp văn bản, terminal và kết quả notebook, tất cả đều có thể tương tác với nhau.
Trước hết, hãy cài đặt và chạy Jupyter Lab trên hệ thống của chúng ta.
Cài đặt
Có thể cài đặt JupyterLab bằng conda, pip hoặc pipenv.
conda install -c conda-forge jupyterlab
or
pip install jupyterlab
or
pipenv install jupyterlab
pipenv shell
Tham khảo tài liệu cài đặt chính thức để biết thêm chi tiết.
Khởi động JupyterLab
Bạn có thể khởi động Jupyter chỉ bằng cách gõ lệnh sau trong console:
jupyter lab
JupyterLab sẽ tự động mở trong trình duyệt với giao diện giống như dưới đây. Điều này có nghĩa là mọi thứ đã sẵn sàng và bạn có thể bắt đầu.

Khu vực làm việc chính là nơi diễn ra hoạt động thực tế. Nó bao gồm notebook, tài liệu, console, terminal, v.v. Chỉ cần nhấp đúp hoặc kéo một tệp vào khu vực này để bắt đầu làm việc.
Giao diện SQL cho JupyterLab

Phần lớn thời gian, dữ liệu chúng ta làm việc được lưu trong các tệp gọi là cơ sở dữ liệu, và một nhiệm vụ thiết yếu của Nhà khoa học Dữ liệu là có thể truy cập dữ liệu từ cơ sở dữ liệu rồi phân tích. Do đó, việc có một giao diện liền mạch giữa cơ sở dữ liệu SQL và Jupyter Notebook/Lab là một ý tưởng tuyệt vời, giúp việc truy cập và thao tác dữ liệu dễ dàng và hiệu quả hơn. Có thể thiết lập giao diện này theo hai cách:
1. Sử dụng phần mở rộng IPython SQL Magic
Lệnh Magic là một tập hợp các hàm tiện lợi trong Jupyter Notebooks, được thiết kế để giải quyết một số vấn đề thường gặp trong phân tích dữ liệu tiêu chuẩn. Bạn có thể xem tất cả các magic khả dụng với %lsmagic.
Phần mở rộng IPython SQL magic cho phép viết câu lệnh SQL trực tiếp vào các ô mã và đọc kết quả thẳng vào pandas DataFrame (Nguồn). Phần mở rộng này hoạt động cho cả notebook cổ điển và Jupyter Lab hiện đại.
Cài đặt mô-đun SQL trong notebook
!pip install ipython-sql
Nạp mô-đun SQL
%load_ext sql
Lệnh magic trên sẽ nạp phần mở rộng ipython-sql. Chúng ta có thể kết nối đến bất kỳ cơ sở dữ liệu nào được SQLAlchemy hỗ trợ. Ở đây, chúng ta sẽ kết nối đến cơ sở dữ liệu SQLite. Nhập lệnh sau trong ô mã:
%sql sqlite://
Nếu bạn nhận được kết quả là ‘Connected: @None', nghĩa là kết nối đã được thiết lập.
- Tạo cơ sở dữ liệu
Cuối cùng, chúng ta tạo một bảng demo tên EMPLOYEES để trình diễn chức năng.
%%sql
CREATE TABLE EMPLOYEE(firstname varchar(50),lastname varchar(50));
INSERT INTO EMPLOYEE VALUES('Tom','Mitchell');
INSERT INTO EMPLOYEE VALUES('Jack','Ryan');
Bây giờ chúng ta có thể thực thi truy vấn trên cơ sở dữ liệu.
%sql SELECT * from EMPLOYEE;
----------------------------------
* sqlite://
Done.
Truy vấn trên trả về bảng như sau.

- Làm việc với cơ sở dữ liệu hiện có
Chúng ta cũng có thể kết nối tới một cơ sở dữ liệu hiện có bằng hàm magic. Trong hướng dẫn này, chúng ta sẽ sử dụng cơ sở dữ liệu SQL_SAFI (Studying African Farmer-led Irrigation (SAFI) database). "Dự án SAFI là dự án nghiên cứu về phương pháp canh tác và tưới tiêu do nông dân ở Tanzania và Mozambique áp dụng. Bộ dữ liệu này gồm dữ liệu khảo sát liên quan đến hộ gia đình và nông nghiệp" (Nguồn). Bạn có thể tải về từ đây.
#Specifying the path of the database
%sql sqlite:////Users/Parul/Desktop/SQL_SAFI.sqlite
-----------------------------------------------------------
'Connected: @/Users/Parul/Desktop/SQL_SAFI.sqlite'
Câu lệnh trên đã mở cơ sở dữ liệu tên SQL_SAFI.sqlite nằm tại đường dẫn: Users/Parul/Desktop. Hãy chọn bảng Crops và hiển thị nội dung của nó.
%sql select * from Crops

Hiển thị một vài hàng đầu tiên của bảng Crops
%sql select * from Crops where D_curr_crop = "maize" AND ID <= 3;

Kết quả cũng có thể được chuyển thành pandas DataFrame như sau:
result = %sql select * from Crops where D_curr_crop = "maize" AND ID <= 3;
dataframe = result.DataFrame()

dataframe.info()

2. Phần mở rộng jupyterlab-sql
Trước khi đi tiếp, hãy nói qua về các phần mở rộng của Jupyter nói chung.
Phần mở rộng JupyterLab
Phần mở rộng là một trong những tính năng hữu ích nhất của Jupyter Lab và có thể nâng cao trải nghiệm sử dụng. Về bản chất, Jupyter Lab là một môi trường có thể mở rộng, trong đó notebook, terminal và trình soạn thảo đều là các phần mở rộng.
"Phần mở rộng JupyterLab là các gói npm (định dạng gói tiêu chuẩn trong phát triển Javascript)"(Nguồn). Phần mở rộng cung cấp cách tùy biến và nâng cao trải nghiệm JupyterLab bằng nhiều tùy chọn hữu ích như chủ đề mới, trình xem, phím tắt, tùy chọn cài đặt nâng cao, v.v. Có rất nhiều phần mở rộng do cộng đồng phát triển trên GitHub. Bạn có thể tìm chủ đề GitHub jupyterlab-extension để tìm phần mở rộng.
Để cài đặt phần mở rộng JupyterLab, bạn cần có Node.js, có thể cài từ trang web của họ hoặc như sau.
conda install -c conda-forge nodejs
or
brew install node #for MacOS users
Phần mở rộng jupyterlab-sql là một phần mở rộng hữu ích như vậy, cho phép bạn thêm giao diện người dùng SQL vào Jupyter Lab. Điều này có hai lợi ích chính:
- Có thể khám phá các bảng SQL chỉ với thao tác trỏ và nhấp.
- Cũng có thể chỉnh sửa và đọc bảng bằng các truy vấn tùy chỉnh.
Bạn có thể đọc thêm tại kho GitHub chính thức.
Cài đặt
Để cài đặt jupyterlab-sql, chạy các lệnh sau theo đúng thứ tự:
pip install jupyterlab_sql
jupyter serverextension enable jupyterlab_sql --py --sys-prefix
jupyter lab build
Sau đó bạn cần khởi động lại mọi máy chủ Jupyter đang chạy.
Cũng cần lưu ý rằng jupyterlab-sql chỉ hoạt động với Python 3.5 trở lên.
Bắt đầu
Sau khi khởi động lại Jupyter Lab, một biểu tượng SQL mới sẽ xuất hiện trong launcher

Điều này có nghĩa là mọi thứ đã được cài đặt đúng và bạn sẵn sàng kết nối phiên làm việc với cơ sở dữ liệu.
Kết nối
Để kết nối đến cơ sở dữ liệu, bạn cần có URL cơ sở dữ liệu hợp lệ. jupyterlab-sql đã được kiểm thử rộng rãi với cơ sở dữ liệu SQLite, PostgreSQL và MySQL (Nguồn). Hãy làm theo hướng dẫn SQLAlchemy về URL. URL phải là URL cơ sở dữ liệu, ví dụ:
postgres://localhost:5432/postgres
postgres://username:password@localhost:5432/postgres
mysql://localhost/employees
sqlite://
sqlite:///myfile.db
Hãy kết nối tới cơ sở dữ liệu SQL_SAFI hiện có mà chúng ta đã dùng trước đó. Nhấp vào biểu tượng SQL trong launcher và nhập URL cơ sở dữ liệu. Nhấn enter để kết nối.

Ngay khi cơ sở dữ liệu được kết nối, bạn có thể xem tất cả các bảng trong đó.


Tiếp theo, chúng ta cũng có thể viết các truy vấn SQL tùy chỉnh để lấy dữ liệu mong muốn từ các bảng.
Kết luận
Kết hợp SQL và JupyterLab giúp nâng tầm phân tích dữ liệu. Giao diện jupyter-sql giúp kết nối SQL Server với hệ sinh thái Jupyter và trích xuất dữ liệu trực tiếp vào đó một cách dễ dàng, không cần rời khỏi giao diện Jupyter.
Nếu bạn muốn tìm hiểu thêm về SQL, hãy tham gia khóa học Data-Driven Decision Making in SQL của DataCamp.
Xem thêm hướng dẫn Remote Python and R in SQL của chúng tôi.