Là một người chỉ yêu thích SQL và cảm thấy rất thoải mái khi sử dụng nó, thật tốt khi biết cách sử dụng SQL với khả năng tốt nhất của nó. Khi viết bằng SQL bằng mã SQL trong Databricks, thì các từ khóa được đánh dấu và mã có thể được định dạng tự động. Vấn đề là, phải làm gì khi một tham số được yêu cầu?
May mắn thay, có một vài giải pháp cho việc này
Cách đơn giản nhất là viết mã SQL bằng Python, như thế này
Sử dụng python để chạy truy vấn SQL với tên bảng làm tham số
Đây là một vấn đề nếu bạn không cảm thấy thoải mái với Python;
Hãy cố gắng gắn bó với SQL, vì có một số tùy chọn để sử dụng tham số trong sổ ghi chép Databricks, ngay cả khi sổ ghi chép được thiết kế để chạy hoàn toàn bằng SQL
Sử dụng tiện ích
Widget là một công cụ rất hữu ích khi gọi một sổ ghi chép từ một sổ ghi chép khác trong Databricks hoặc khi gọi một sổ ghi chép Databricks từ Azure Data Factory
Các ví dụ có thể liệt kê tên bảng hoặc sử dụng nó làm tùy chọn bộ lọc trong Mệnh đề WHERE
Để tham số hóa tên bảng
CREATE WIDGET TEXT table_name DEFAULT "people"
Và sau đó
SELECT *FROM $table_name
Và đây là cách nó trông giống như
Sử dụng Widget để tham khảo tên bảng một cách linh hoạt
Xin lưu ý phong cách cũ hơn để tham khảo một widget
Nếu bạn muốn sử dụng một widget cho mệnh đề WHERE, hãy sử dụng hàm GetArgument[] để đọc Widget
CREATE widget text id DEFAULT “200”SELECT *
FROM $table_name
WHERE id = GetArgument ["id"]
Và trong hành động
Sử dụng Widget để xác định động tham số
Hạn chế trong việc sử dụng Widget là không thể sử dụng kết hợp chúng với một ngôn ngữ khác trong cùng một sổ ghi chép. Vì vậy, nếu sổ ghi chép được viết bằng SQL, dữ liệu widget không thể được chuyển sang một ô khác bao gồm mã python/r/scala. Đối với điều đó, có một tùy chọn khác để kết hợp cả hai, đó là cấu hình các tham số
Cấu hình Spark - cài đặt tham số
Đây là cách nó sẽ được thực hiện
Chỉ sử dụng SQL
SET db.table_name = people SELECT * FROM ${db.table_name}
Và mã sẽ trông như thế này
Sử dụng cấu hình Spark để tham chiếu động tên bảng
Kết hợp SQL với mã Python
%pyspark.conf.set [‘db.table_name’, ‘people’]
Và bây giờ, tham số đã được đặt trong Python, có thể được chuyển sang truy vấn SQL
Sử dụng kết hợp Python và SQL — tham chiếu tên bảng
Và mã để đặt id sẽ không khác nhiều
%pyspark.conf.set ['id', '200']%sqlSELECT *FROM ${db.table_name}WHERE id = ${id}
ví dụ 1. Sử dụng kết hợp Python và SQL — cho một id cụ thể
Cái hay là thay vì chỉ thiết lập một tham số, như được thực hiện trong ví dụ trên, tham số có thể được thiết lập với một
%pyres = do_something[foo]spark.conf.set ['id', res]
Ví dụ
ví dụ 2. Sử dụng kết hợp Python và SQL — một id cụ thể
Tùy chọn Databricks Premium
Nếu bạn đang sử dụng Databricks Premium, hãy chọn tùy chọn SQL
Tùy chọn SQL trong Databricks Premium — Đã bật
Xin lưu ý rằng nếu nó không được kích hoạt thì đây là giao diện của nó
Tùy chọn SQL trong tài khoản không phải Databricks Premium — bị vô hiệu hóa
Truy vấn mẫu [đây là những gì bạn nhận được từ Databricks SQL]
Truy vấn SQL mẫu cao cấp của Databricks
Thêm tham số bằng cách nhấn nút {}
Truy vấn SQL mẫu cao cấp của Databricks
Để biến dropoff_zip thành một tham số
Databricks Premium thêm một tham số số
Sau khi Thêm tham số được chèn,
Databricks Premium thêm một tham số số
Nhấn “Áp dụng thay đổi” và voila
Databricks Premium chạy truy vấn được tham số hóa
Điều này hoàn toàn là để tham số hóa truy vấn; . Đó là bởi vì tên_bảng chỉ có thể được định nghĩa dưới dạng văn bản và văn bản có nghĩa là một chuỗi, yêu cầu một dấu nháy đơn. Điều này tạo ra thông báo lỗi sau
Databricks Premium — không thể tự động tham chiếu đến tên bảng
Tóm tắt [tl; dr]
SQL, ngôn ngữ chung của mọi người dùng dữ liệu, có thể được tham số hóa và trở nên năng động hơn trong sổ ghi chép Databricks. Nó có thể được sử dụng thông qua việc sử dụng Widget hoặc thông qua việc sử dụng cài đặt và nhận cấu hình Spark. Đối với chủ sở hữu của Databricks Premium, thậm chí còn có tùy chọn thứ ba hoàn toàn là SQL