Skip to content

Từ SPL sang BQL

Nếu bạn đã quen với Splunk SPL, hướng dẫn này sẽ giúp bạn ánh xạ các lệnh SPL phổ biến sang BQL tương ứng.

Bảng ánh xạ lệnh

Lệnh SPLLệnh BQL tương ứngGhi chú
searchsearch hoặc whereCú pháp giống nhau
WHEREwhere hoặc searchCú pháp giống nhau
evalevalCú pháp giống nhau
statsstatsHạn chế hơn về hàm tổng hợp
sortsortHỗ trợ asc/desc
dedupdedupCú pháp giống nhau
head / limithead hoặc limitCả hai đều dùng được
tailtailCú pháp giống nhau
renamerenameCú pháp giống nhau
toptopCú pháp giống nhau
rarerareCú pháp giống nhau
lookuplookupCần cấu hình phía server
joinjoinGiới hạn inner/left/right
timecharttimechartCú pháp span giống nhau
tableKhông hỗ trợDùng stats thay thế
fieldsKhông hỗ trợDùng eval kèm chọn trường
NOT!=Không có toán tử NOT
!=!=Cú pháp giống nhau
<, >, <=, >=Không hỗ trợDùng != hoặc khớp chính xác

Khác biệt quan trọng

Không có toán tử NOT

SPL:

spl
search NOT status=error

BQL:

bql
search status!=error

SPL:

spl
search message=/error.*/

BQL:

bql
search message=error

Dùng match() trong eval để sử dụng regex:

bql
eval is_error=match(message, "error.*") | search is_error=1

Không có toán tử < > <= >=

SPL:

spl
search port>1024

BQL: Không hỗ trợ trực tiếp. Dùng khớp chính xác hoặc !=:

bql
search port!=22 and port!=80

Phân biệt chữ hoa chữ thường

SPL: Mặc định không phân biệt hoa/thường BQL: Phân biệt hoa/thường. "Error" khác "error"

Cú pháp Stats By

SPL:

spl
stats count by host

BQL:

bql
stats count by host

Cú pháp giống nhau, nhưng BQL có ít hàm tổng hợp hơn.

AND ngầm

SPL:

spl
search status=200 host=web01

BQL:

bql
search status=200 host=web01

Behavior tương tự. Các từ liền nhau mà không có and/or sẽ tự động được AND lại.

Toán tử logic

SPL:

spl
search status=error OR status=warn

BQL:

bql
search status=error or status=warn

Dùng and/or viết thường. Không dùng ký hiệu && hoặc ||.

Các mẫu SPL phổ biến

Mẫu 1: Tìm kiếm đơn giản

SPL: search index=firewall action=denyBQL: from firewall-* | search action=deny

Mẫu 2: Khoảng thời gian

SPL: search index=auth earliest=-24hBQL: from auth-* | timerange earliest=2026-07-05T19:00:00Z latest=2026-07-06T19:00:00Z

Mẫu 3: Stats với By

SPL: stats count by src_ip | sort -count | head 10BQL: stats count by src_ip | sort count desc | head 10

Mẫu 4: Dedup

SPL: dedup user action | table user actionBQL: dedup user, action

Mẫu 5: Eval với hàm

SPL: eval upper_user=upper(user)BQL: eval upper_user=upper(user)

Mẫu 6: Nhiều bộ lọc

SPL:

spl
search index=firewall action=deny src_ip=10.0.0.1

BQL:

bql
from firewall-* | search action=deny src_ip=10.0.0.1

Mẫu 7: Sắp xếp và giới hạn

SPL:

spl
search index=auth | sort -timestamp | head 20

BQL:

bql
from auth-* | sort timestamp desc | head 20

Mẫu 8: Đổi tên trường

SPL:

spl
rename source_ip as src

BQL:

bql
rename source_ip as src

Cú pháp giống nhau.

Mẫu 9: Giá trị xuất hiện nhiều nhất

SPL:

spl
top 5 host

BQL:

bql
top 5 host

Cú pháp giống nhau. Trả về 5 giá trị xuất hiện nhiều nhất.

Mẫu 10: Giá trị xuất hiện ít nhất

SPL:

spl
rare 5 host

BQL:

bql
rare 5 host

Cú pháp giống nhau. Trả về 5 giá trị xuất hiện ít nhất.

Những gì BQL chưa có

Tính năng SPLTrạng tháiGiải pháp thay thế
Toán tử NOTKhông hỗ trợDùng !=
< > <= >=Không hỗ trợDùng != hoặc khớp chính xác
Lệnh tableKhông hỗ trợDùng stats
Lệnh fieldsKhông hỗ trợDùng eval
makemvKhông hỗ trợKhông có giải pháp
mvexpandKhông hỗ trợKhông có giải pháp
rexKhông hỗ trợDùng match() trong eval
transactionKhông hỗ trợKhông có giải pháp
chartKhông hỗ trợDùng timechart hoặc stats
xmlkvKhông hỗ trợKhông có giải pháp
spathKhông hỗ trợKhông có giải pháp
tstatsKhông hỗ trợDùng stats
datamodelKhông hỗ trợKhông có giải pháp
predictKhông hỗ trợKhông có giải pháp
anomalousvalueKhông hỗ trợKhông có giải pháp

Chủ đề liên quan

Released under the MIT License.