Ngôn ngữ truy vấn API hình ảnh của Google cho phép bạn thực hiện nhiều thao tác dữ liệu với truy vấn về nguồn dữ liệu.
Mục lục
Giới thiệu
Thông thường, hình ảnh trực quan hoá sẽ yêu cầu dữ liệu ở một dạng nhất định. Ví dụ: biểu đồ hình tròn có thể mong đợi dữ liệu dưới dạng hai cột: nhãn văn bản và giá trị số. Dữ liệu trong nguồn dữ liệu có thể không khớp chính xác với cấu trúc này. Ví dụ: nguồn dữ liệu có thể có nhiều hơn hai cột hoặc thứ tự của các cột có thể không khớp với thứ tự mong đợi trong biểu đồ hình tròn.
Ngôn ngữ truy vấn cung cấp khả năng gửi các yêu cầu thao tác và định dạng dữ liệu đến nguồn dữ liệu, đồng thời đảm bảo rằng cấu trúc dữ liệu và nội dung được trả về khớp với cấu trúc dự kiến.
Cú pháp của ngôn ngữ truy vấn tương tự như SQL. Các nhà phát triển quen thuộc với SQL có thể nhanh chóng học và sử dụng ngôn ngữ truy vấn này. Có nhiều hướng dẫn về SQL trên web. Có một số điểm khác biệt giữa ngôn ngữ truy vấn này và SQL được mô tả trong mục cú pháp.
Xin lưu ý rằng các nguồn dữ liệu không bắt buộc phải triển khai ngôn ngữ truy vấn hoặc nếu có, để triển khai tất cả tính năng của ngôn ngữ đó. Trừ khi có lý do để tin tưởng khác, bạn không nên dựa vào một nguồn dữ liệu để triển khai tất cả các tính năng của ngôn ngữ này.
Sử dụng ngôn ngữ truy vấn
Bạn có thể đính kèm một chuỗi truy vấn vào một yêu cầu nguồn dữ liệu theo 2 cách: đặt chuỗi truy vấn từ trong mã JavaScript hoặc đặt chuỗi truy vấn làm tham số trong URL nguồn dữ liệu. Nếu yêu cầu của bạn không bao gồm một chuỗi truy vấn, hành vi mặc định của một nguồn dữ liệu sẽ trả về tất cả các hàng và cột bằng cách sử dụng thứ tự hàng/cột và định dạng mặc định của hàng đó. Bạn có thể thay đổi điều đó bằng cách đưa chuỗi truy vấn vào yêu cầu vào một nguồn dữ liệu.
Đặt truy vấn từ JavaScript
Để đặt chuỗi truy vấn từ trong mã JavaScript, hãy gọi phương thức setQuery
của lớp google.visualization.Query
.
var query = new google.visualization.Query(DATA_SOURCE_URL); query.setQuery('select dept, sum(salary) group by dept'); query.send(handleQueryResponse);
Đặt truy vấn trong URL nguồn dữ liệu
Bạn có thể thêm chuỗi truy vấn vào URL nguồn dữ liệu bằng cách dùng tham số tq
.
Việc đặt truy vấn trong tham số URL thay vì trong JavaScript cho phép bạn dễ dàng sử dụng hình ảnh do các nhà phát triển khác viết mà vẫn có thể tùy chỉnh truy vấn.
Chuỗi truy vấn phải được mã hoá chính xác dưới dạng tham số URL.
Bạn có thể mã hoá một URL bằng cách sử dụng hàm JavaScript encodeURIComponent
hoặc bạn có thể mã hoá URL đó theo cách thủ công bằng cách sử dụng công cụ mã hoá ở cuối phần này.
Ví dụ:
Hãy xem xét chuỗi truy vấn sau cho bảng tính Google. (Xin lưu ý rằng mã nhận dạng cột trong bảng tính luôn là chữ cái; văn bản tiêu đề cột xuất hiện trong bảng tính đã xuất bản là nhãn chứ không phải mã nhận dạng. Bạn phải sử dụng mã nhận dạng (không phải nhãn), trong chuỗi truy vấn.)
select A, sum(B) group by A
Khi mã hoá, truy vấn này sẽ trở thành:
select%20A%2C%20sum(B)%20group%20by%20A
Giả sử đây là URL của bảng tính:
https://docs.google.com/a/google.com/spreadsheets/d/1r8_mfnZAvTFmT02JHi1XgOwn_-sLCR9XgmR8wEQ4uW4
Thêm /gviz/tq?tq=
YOUR_QUERY_STRING vào URL bảng tính để nhận
chuỗi truy vấn cuối cùng của bạn:
https://docs.google.com/a/google.com/spreadsheets/d/1r8_mfnZAvTFmT02JHi1XgOwn_-sLCR9XgmR8wEQ4uW4/gviz/tq?tq=select%A%2C%20sum(B)%20group%20by%20A
Hãy sử dụng công cụ dưới đây để mã hoá hoặc giải mã một chuỗi truy vấn:
Lưu ý: Để truy cập vào dữ liệu bảng tính riêng tư, bạn phải chuyển thông tin xác thực ủy quyền rõ ràng bằng OAuth. Xem mục Bảng tính Google: Uỷ quyền để biết thêm chi tiết.
Cú pháp ngôn ngữ
Tổng quan
Cú pháp Ngôn ngữ truy vấn API hình ảnh của Google được thiết kế tương tự như cú pháp SQL. Tuy nhiên, đó là một tập hợp con của SQL, với một vài tính năng riêng mà bạn cần tìm hiểu. Nếu bạn đã quen thuộc với SQL, bạn không nên quá khó học.
Bảng dữ liệu
Tài liệu này sử dụng thuật ngữ bảng dữ liệu để tham chiếu đến tập hợp kết quả của một truy vấn. Bảng dữ liệu bao gồm các hàng và cột. Mỗi cột trong bảng dữ liệu có các thuộc tính sau:
- Mã nhận dạng (hoặc mã cột). Dùng để tham chiếu các cột trong truy vấn. Xin lưu ý rằng bạn không bao giờ được phép tham chiếu đến một cột theo nhãn trong một truy vấn mà chỉ dựa trên giá trị nhận dạng. Mẹo: Hãy cố gắng không sử dụng mã nhận dạng có chứa dấu cách; các dấu cách rất khó quản lý và có thể khiến bạn mắc lỗi nhỏ nhưng khó tìm thấy trong quá trình lập trình. Ngoài ra, mã nhận dạng có dấu cách phải được đặt trong dấu ngoặc kép.
- Nhãn.
string
thường hiển thị cho người dùng cuối. Ví dụ: chú giải trong biểu đồ hình tròn hoặc tiêu đề cột trong bảng. - Loại dữ liệu. Các loại dữ liệu được hỗ trợ là
string
,number
,boolean
,date
,datetime
vàtimeofday
. Tất cả giá trị của một cột sẽ có một loại dữ liệu khớp với loại cột hoặc có giá trịnull
. Các loại này tương tự nhưng không giống với các loại JavaScript. như được mô tả trong phần Văn bản trên trang này. - Mẫu định dạng. Nguồn dữ liệu có thể xác định các mẫu định dạng cho một số hoặc tất cả các cột của nguồn dữ liệu đó. Bạn có thể ghi đè mẫu này bằng cách đưa vào một mệnh đề định dạng.
Bảng được sử dụng trong tất cả các ví dụ:
Trong phần này, tất cả ví dụ về các cụm từ tìm kiếm đều tham khảo bảng sau. Tiêu đề cột là giá trị nhận dạng cột.
tênstring |
phòng banstring |
bữa trưatimeofday |
lương number |
thuêDatedate |
tuổinumber |
là người cao tuổiboolean |
thời gian bắt đầu thâm niêndatetime |
---|---|---|---|---|---|---|---|
John | Eng | 12:00:00 | 1000 | 2005-03-19 | 35 | đúng | 2007-12-02 15:56:00 |
Dave | Eng | 12:00:00 | 500 | 2006-04-19 | 27 | sai | null |
Kênh | Eng | 13:00:00 | 600 | 2005-10-10 | 30 | sai | null |
Xe Ben | Bán hàng | 12:00:00 | 400 | 2002-10-10 | 32 | đúng | 2005-03-09 12:30:00 |
Xe buýt đưa đón cỡ nhỏ | Bán hàng | 12:00:00 | 350 | 2004-09-08 | 25 | sai | null |
Mike | Tiếp thị | 13:00:00 | 800 | 2005-01-10 | 24 | đúng | 3/12/2007 14:40:00 |
Các điều khoản ngôn ngữ
Cú pháp của ngôn ngữ truy vấn bao gồm các mệnh đề sau. Mỗi mệnh đề bắt đầu bằng một hoặc hai từ khoá. Tất cả các mệnh đề là không bắt buộc. Các mệnh đề được phân tách bằng dấu cách. Thứ tự của các mệnh đề phải như sau:
Mệnh đề | Mức sử dụng |
---|---|
select |
Chọn những cột cần trả về và thứ tự trả về. Nếu bạn bỏ qua, tất cả các cột của bảng sẽ được trả về theo thứ tự mặc định. |
where |
Chỉ trả về hàng khớp với điều kiện. Nếu bỏ qua, tất cả các hàng sẽ được trả về. |
group by |
Tổng hợp giá trị trên các hàng. |
pivot |
Chuyển các giá trị riêng biệt trong cột thành các cột mới. |
order by |
Sắp xếp hàng theo giá trị trong cột. |
limit |
Giới hạn số lượng hàng được trả về. |
offset |
Bỏ qua một số hàng đầu tiên. |
label |
Đặt nhãn cột. |
format |
Định dạng giá trị trong một số cột nhất định bằng cách sử dụng các mẫu định dạng nhất định. |
options |
Đặt các tuỳ chọn khác. |
from |
Mệnh đề from đã bị loại bỏ khỏi ngôn ngữ. |
Chọn
Mệnh đề select
được dùng để chỉ định các cột cần trả về và
thứ tự của chúng.
Nếu mệnh đề này không được chỉ định hoặc nếu sử dụng select *
, thì tất cả các cột của bảng nguồn dữ liệu sẽ được trả về theo thứ tự ban đầu.
Các cột được tham chiếu bằng giá trị nhận dạng (không phải theo nhãn). Ví dụ: trong Bảng tính Google, giá trị nhận dạng cột là một hoặc hai chữ cái của cột ký tự (A, B, C, ...).
Các mục trong mệnh đề select
có thể là giá trị nhận dạng cột hoặc dữ liệu đầu ra của hàm tổng hợp, hàm vô hướng hoặc toán tử.
Ví dụ:
select *
select dept, salary
select max(salary)
Trong ví dụ sau, dấu ngoặc kép được dùng để tham chiếu đến mã nhận dạng cột có chứa dấu cách (địa chỉ email) hoặc là các từ dành riêng (ngày):
select `email address`, name, `date`
Chạy truy vấn sau trên bảng ví dụ:
select lunchTime, name
Trả về phản hồi sau:
Bữa trưa | name |
---|---|
12:00:00 | John |
12:00:00 | Dave |
13:00:00 | Kênh |
12:00:00 | Xe Ben |
12:00:00 | Xe buýt đưa đón cỡ nhỏ |
13:00:00 | Mike |
Địa điểm
Mệnh đề where
được dùng để chỉ trả về những hàng khớp với một điều kiện cụ thể.
Các toán tử so sánh đơn giản là <=, <, >, >=, =,
!=, <>
. Cả hai toán tử so sánh != <>
đều có nghĩa
không bằng nhau. Các chuỗi được so sánh bằng giá trị từ vựng. Hãy lưu ý rằng sự cân bằng được biểu thị bằng =
, chứ không phải ==
như trong hầu hết ngôn ngữ của máy tính.
Việc so sánh với null
được
thực hiện bằng cách sử dụng is null
hoặc is not null
.
Bạn có thể kết hợp nhiều điều kiện bằng cách sử dụng toán tử logic and
, or
,
và not
. Bạn có thể sử dụng dấu ngoặc đơn để xác định mức độ ưu tiên rõ ràng.
Mệnh đề Where cũng hỗ trợ một số toán tử so sánh chuỗi phức tạp hơn.
Những toán tử này nhận hai chuỗi làm đối số; mọi đối số không phải chuỗi (ví dụ: ngày hoặc số) sẽ được chuyển đổi thành chuỗi trước khi so sánh. Chuỗi khớp với phân biệt chữ hoa chữ thường (bạn có thể sử dụng các hàm vô hướng upper()
hoặc lower()
để xử lý trường hợp đó).
contains
– Khớp một chuỗi con. toàn bộcontains
một phần là đúng nếu phần nằm ở bất kỳ đâu trong toàn bộ. Ví dụ:where name contains 'John'
khớp với "John", "John Adams", "Long John Silver" nhưng không khớp với "John adams".starts with
– Một tiền tố khớp. giá trịstarts with
tiền tố là true nếu tiền tố nằm ở đầu giá trị. Ví dụ:where dept starts with 'engineering'
khớp với "kỹ thuật" và "người quản lý kỹ thuật".where dept starts with 'e'
khớp với "kỹ thuật", "eng" và "e".ends with
– Khớp một hậu tố. giá trịends with
hậu tố là đúng nếu hậu tố nằm ở cuối giá trị. Ví dụ:where role ends with 'y'
khớp với "cowboy", "boy" và "y".matches
– Khớp biểu thức chính quy (preg). haystackmatches
needle là true nếu biểu thức chính quy trong needle khớp với haystack. Ví dụ:where country matches '.*ia'
khớp với Ấn Độ và Nigeria, nhưng không khớp với Indiana. Lưu ý rằng đây không phải là tìm kiếm toàn cầu, do đówhere country matches 'an'
sẽ không khớp với 'Canada'.like
– Tìm kiếm văn bản hỗ trợ hai ký tự đại diện: %, khớp với 0 hoặc nhiều ký tự bất kỳ thuộc loại nào và _ (dấu gạch dưới), khớp với mọi ký tự bất kỳ. Điều này cũng tương tự như toán tử SQL NGẮN. Ví dụ:where name like fre%
khớp với "fre", "fred" và "freddy".
Ví dụ:
where salary >= 600 where dept != 'Eng' and date '2005-01-21' < hireDate where (dept<>'Eng' and isSenior=true) or (dept='Sales') or seniorityStartTime is null
Chạy truy vấn sau trên bảng ví dụ:
select name where salary > 700
Trả về phản hồi sau:
name |
---|
John |
Mike |
Nhóm theo
Mệnh đề group by
được dùng để tổng hợp các giá trị trên các hàng.
Một hàng duy nhất được tạo cho mỗi tổ hợp giá trị riêng biệt trong mệnh đề theo nhóm.
Dữ liệu được tự động sắp xếp theo các cột
nhóm, trừ khi có quy định khác theo mệnh đề order by
.
Lưu ý: Nếu sử dụng mệnh đề group by
, thì mọi cột phải được liệt kê trong mệnh đề select
phải được liệt kê trong mệnh đề group by
hoặc được gói bởi một group by
hàm tổng hợp.
Ví dụ:
select dept, max(salary) group by dept
Chạy truy vấn sau trên bảng ví dụ:
select lunchTime, avg(salary), count(age) group by isSenior,lunchTime
Trả về phản hồi sau:
Bữa trưa | tiền lương trung bình | số lượng tuổi |
---|---|---|
12:00:00 | 425 | 2 |
13:00:00 | 600 | 1 |
12:00:00 | 700 | 2 |
13:00:00 | 800 | 1 |
Tổng hợp
Mệnh đề pivot
được dùng để chuyển đổi các giá trị riêng biệt trong cột
thành cột mới. Ví dụ: một bảng tổng hợp theo cột "năm" sẽ tạo ra một bảng có một cột cho mỗi năm riêng biệt xuất hiện trong bảng gốc.
Chẳng hạn, điều này có thể hữu ích nếu một hình ảnh biểu đồ dạng đường vẽ mỗi cột dưới dạng một dòng riêng biệt. Nếu bạn muốn vẽ một dòng riêng cho từng năm và "năm" là một trong các cột của bảng gốc, thì bạn nên sử dụng một thao tác bảng tổng hợp để chuyển đổi dữ liệu cần thiết.
Lưu ý: Nếu bạn sử dụng mệnh đề pivot
, thì mọi cột được liệt kê trong mệnh đề select
phải được liệt kê trong mệnh đề group by
hoặc được đặt trong một hàm tổng hợp
Vì nhiều hàng có thể chứa cùng một giá trị cho các cột tổng hợp, nên hàm ý này sẽ ngụ ý việc tổng hợp. Xin lưu ý rằng khi sử dụng pivot
mà không sử dụng group by
, bảng kết quả sẽ chứa đúng một hàng.
Ví dụ: chạy truy vấn sau trên bảng ví dụ:
select sum(salary) pivot dept
Trả về phản hồi sau:
Tổng lương | Tổng lương tiếp thị | Tổng doanh số bán hàng |
---|---|---|
2100 | 800 | 750 |
Lý do là 2100 là tổng lương cho bộ phận Eng, 800 cho bộ phận Tiếp thị, v.v.
Việc sử dụng pivot
cùng với group by
có thể hữu ích hơn nữa, vì việc này tạo ra một bảng, trong đó mỗi ô chứa kết quả tổng hợp cho hàng có liên quan và cột thích hợp. Ví dụ: chạy truy vấn sau trên bảng ví dụ:
select dept, sum(salary) group by dept pivot lunchTime
Trả về phản hồi sau:
phòng ban | 12:00:00 lương | 13:00:00 lương |
---|---|---|
Eng | 1500 | 600 |
Tiếp thị | null | 800 |
Bán hàng | 750 | null |
Bạn cũng có thể "đảo ngược" bảng này, chuyển đổi các cột và hàng bằng cách chuyển đổi giữa
cột pivot
và cột group by
. Chạy truy vấn sau trên bảng ví dụ:
select lunchTime, sum(salary) group by lunchTime pivot dept
Trả về phản hồi sau:
Bữa trưa | Tổng lương | Tổng lương tiếp thị | Tổng doanh số bán hàng |
---|---|---|---|
12:00:00 | 1500 | null | 750 |
13:00:00 | 600 | 800 | null |
Bạn cũng có thể sử dụng nhiều cột trong mệnh đề pivot
. Trong trường hợp này, các cột của bảng phản hồi bao gồm tất cả các tổ hợp giá trị riêng biệt trong các cột tồn tại trong bảng gốc. Ví dụ: chạy truy vấn sau trên bảng ví dụ:
select sum(salary) pivot dept, lunchTime
Trả về phản hồi sau:
Anh,12:00:00 lương | Anh,13:00:00 lương | Tiếp thị,13:00:00 lương | Bán hàng,12:00:00 lương |
---|---|---|---|
1500 | 600 | 800 | 750 |
Xin lưu ý rằng chỉ những tổ hợp xuất hiện trong bảng gốc mới được cung cấp các cột trong bảng phản hồi. Đây là lý do vì sao không có cột cho bộ phận Tiếp thị, 12:00:00 hoặc 13:00:00.
Bạn cũng có thể sử dụng nhiều loại tổng hợp. Ví dụ: chạy truy vấn sau trên bảng ví dụ:
select sum(salary), max(lunchTime) pivot dept
Trả về phản hồi sau:
Tổng lương | Tổng lương tiếp thị | Tổng doanh số bán hàng | Thời gian tối đa của tiếng Anh | Thời gian ăn trưa tối đa của tiếp thị | Bán hàng vào thời gian tối đa |
---|---|---|---|---|---|
2100 | 800 | 750 | 13:00:00 | 13:00:00 | 12:00:00 |
Bạn có thể kết hợp nhiều tổng hợp trong mệnh đề select
, nhiều cột trong mệnh đề group by
và nhiều cột trong mệnh đề pivot
. Trong nội bộ, quá trình tổng hợp được thực hiện bằng cách nối các cột trong nhóm với các mệnh đề tổng hợp.
Các cột được chỉ định trong mệnh đề pivot
có thể không xuất hiện trong mệnh đề select
, group by
hoặc order by
.
Khi sử dụng pivot
, mệnh đề order by
không được
chứa bất kỳ cột tổng hợp nào. Lý do là vì mỗi tổng hợp được chỉ định trong mệnh đề select
, nhiều cột được tạo trong bảng kết quả. Tuy nhiên, bạn có thể định dạng các cột tổng hợp khi sử dụng pivot
. Kết quả của một định dạng như vậy là tất cả các cột mới liên quan đến dữ liệu tổng hợp cụ thể (do thao tác tổng hợp tạo ra) đều được định dạng theo mẫu đã chỉ định. Trong ví dụ trên, việc thêm format sum(salary) "some_format_string"
sẽ ảnh hưởng đến các cột sau: Tổng tiền lương của Google, tiền lương tổng của lương và Bán hàng tổng lương.
Bạn có thể gắn nhãn các cột tổng hợp. Nếu không có nhãn nào được chỉ định trong mệnh đề label
, thì nhãn của một cột được tạo ra sẽ do chuyển hướng bao gồm danh sách các giá trị trong cột tổng hợp, loại tổng hợp (tối thiểu, tối đa, tổng, ...) và nhãn của cột tổng hợp.
Ví dụ: "Eng,12:00:00 sum salary". Nếu chỉ có một giá trị tổng hợp được chỉ định trong mệnh đề select
, thì phần tổng hợp sẽ bị xoá khỏi nhãn và chỉ danh sách giá trị trong các cột tổng hợp được giữ lại. Ví dụ: "Eng,12:00:00". Khi mệnh đề label
chỉ định một nhãn cho
cột tổng hợp, thì nhãn đã yêu cầu sẽ được thêm vào danh sách
các giá trị, cả khi chỉ có một tổng hợp trong mệnh đề select
và khi có nhiều hơn một. Ví dụ: label sum(salary) "sumsal"
sẽ dẫn đến các nhãn cột "Eng,12:00:00 sumsal", "Eng,13:00:00 sumsal", v.v.
Đặt hàng theo
Mệnh đề order by
được dùng để sắp xếp hàng theo giá trị trong các cột đã chỉ định.
Các mục trong mệnh đề order by
có thể là giá trị nhận dạng cột hoặc dữ liệu đầu ra của hàm tổng hợp, hàm vô hướng hoặc toán tử.
Ví dụ:
order by dept, salary desc
select dept, max(salary) group by dept order by max(salary)
Giới hạn
Mệnh đề limit
được dùng để giới hạn số lượng hàng được trả về.
Ví dụ:
limit 100
Chênh lệch
Mệnh đề offset
được dùng để bỏ qua một số hàng đầu tiên.
Nếu sử dụng mệnh đề limit
, offset
sẽ được áp dụng đầu tiên: ví dụ: limit 15 offset
30
sẽ trả về hàng từ 31 đến 45.
Ví dụ:
offset 10 limit 30 offset 210
Nhãn
Mệnh đề label
được dùng để đặt nhãn cho một hoặc nhiều cột.
Xin lưu ý rằng bạn không thể sử dụng giá trị của nhãn thay cho mã truy vấn.
Các mục trong mệnh đề label
có thể là giá trị nhận dạng cột hoặc dữ liệu đầu ra của hàm tổng hợp, hàm vô hướng hoặc toán tử.
Cú pháp:
label column_id label_string [,column_id label_string]
column_id
- Giá trị nhận dạng của cột đang được gán nhãn.
label_string
- Nhãn để gán cho cột đó. Nhiều hình ảnh trực quan sử dụng nhãn cột làm văn bản để hiển thị cho người dùng cuối, chẳng hạn như nhãn chú giải trong biểu đồ hình tròn. Nhãn là chuỗi ký tự và tuân theo các quy tắc cú pháp đó.
Ví dụ:
Ví dụ sau đây sẽ đặt nhãn cho cột phòng ban thành "Phòng ban", nhãn cho cột tên "Tên nhân viên" và nhãn cho cột vị trí thành "Vị trí nhân viên":
label dept 'Department', name "Employee Name", location 'Employee Location'
Định dạng
Mệnh đề format
được dùng để chỉ định một giá trị được định dạng cho các ô trong một hoặc nhiều cột. Dữ liệu được trả về phải bao gồm cả giá trị thực tế và giá trị được định dạng cho mỗi ô trong một cột được định dạng. Nhiều hình ảnh trực quan sử dụng giá trị chưa được định dạng để tính toán, nhưng giá trị được định dạng để hiển thị. Các mẫu mà bạn chỉ định trong mệnh đề này thường được trả về trong thuộc tính pattern (mẫu) của các cột tương ứng.
Cú pháp mẫu:
number
,date
,timeofday
,datetime
- Các mẫu ngày và số được xác định theo ICU.
-
boolean
- Mẫu là một
string
ở định dạng "value-if-true:value-if-false".
Ví dụ:
format salary '#,##0.00', hireDate 'dd-MMM-yyyy', isSenior 'Yes!:Not yet'
Tùy chọn
Mệnh đề options
được dùng để kiểm soát các tuỳ chọn bổ sung để thực thi truy vấn. Những từ khoá có thể sử dụng theo mệnh đề options
là:
-
no_format
Xoá các giá trị đã định dạng khỏi kết quả và chỉ để lại các giá trị cơ bản. Có thể dùng khi hình ảnh cụ thể không sử dụng các giá trị được định dạng để giảm kích thước của phản hồi. -
no_values
Xoá các giá trị cơ bản khỏi kết quả và chỉ để lại các giá trị được định dạng. Có thể sử dụng khi hình ảnh cụ thể chỉ sử dụng các giá trị được định dạng để giảm kích thước của phản hồi.
Chức năng thao tác dữ liệu
Có một số loại toán tử và hàm cho phép bạn thao tác hoặc tổng hợp dữ liệu trong một cột duy nhất hoặc so sánh hoặc kết hợp dữ liệu trên nhiều cột. Ví dụ: bao gồm sum() (để thêm tất cả các giá trị trong một cột), tối đa (để tìm giá trị lớn nhất trong một cột) và + (để thêm các giá trị của hai cột vào cùng một hàng).
Một số hàm có thể xuất hiện trong bất kỳ mệnh đề nào, một số hàm có thể xuất hiện trong một tập hợp con của các mệnh đề. Tài liệu này được cung cấp dưới đây.
Ví dụ:
Dựa vào bảng này... | Nếu chúng ta áp dụng truy vấn này... | Chúng tôi thu được kết quả này. | ||||||||||||||||||||||||
|
select upper(name), year(startDate) |
|
Các hàm thao tác dữ liệu sau đây được xác định bằng ngôn ngữ truy vấn API Hình ảnh trực quan của Google:
Hàm tổng hợp
Các hàm tổng hợp được chuyển một cột giá trị nhận dạng và thực hiện thao tác trên tất cả các giá trị trong mỗi nhóm (nhóm được chỉ định bằng mệnh đề group by
hoặc pivot
hoặc tất cả các hàng nếu không được sử dụng các mệnh đề đó).
Ví dụ:
select max(salary) // Returns a table with one column and one row. select max(salary) group by dept // Returns a table with the max salary for each dept column value. select max(salary) pivot dept // Returns a one-row table with a column for each dept, // and the max salary for that department.
Bạn có thể dùng các hàm tổng hợp trong mệnh đề select
, order by
, label
, format
.
Chúng không thể xuất hiện trong mệnh đề where
, group by
, pivot
,
limit
, offset
hoặc options
.
Dưới đây là các hàm tổng hợp được hỗ trợ:
Tên | Mô tả | Các loại cột được hỗ trợ | Loại dữ liệu trả về |
---|---|---|---|
avg() |
Trả về giá trị trung bình của tất cả các giá trị trong cột cho một nhóm. | number |
number |
count() |
Trả về số lượng phần tử trong cột được chỉ định cho một nhóm. Các ô rỗng không được tính. | Mọi loại | number |
max() |
Trả về giá trị tối đa trong cột cho một nhóm. Ngày so sánh với ngày trước đó nhỏ hơn, string được so sánh theo thứ tự bảng chữ cái, có phân biệt chữ hoa chữ thường. |
Mọi loại | Cùng loại với cột |
min() |
Trả về giá trị tối thiểu trong cột cho một nhóm. Ngày so sánh với ngày trước đó nhỏ hơn, string được so sánh theo thứ tự bảng chữ cái, có phân biệt chữ hoa chữ thường |
Mọi loại | Cùng loại với cột |
sum() |
Trả về tổng của tất cả các giá trị trong cột cho một nhóm. | number |
number |
Lưu ý: Các hàm tổng hợp chỉ có thể lấy giá trị nhận dạng cột làm đối số:
max(startDate) // OK min(firstScore) + min(secondScore) // OK max(year(startDate)) // INVALID. max requires column ID sum(salary + perks) // INVALID. sum requires column ID.
Hàm vô hướng
Các hàm vô hướng hoạt động trên 0 tham số trở lên để tạo ra một giá trị khác. Các hàm vô hướng có thể được truyền qua bất kỳ biểu thức nào có giá trị tham số thuộc loại thích hợp. Xin lưu ý rằng các loại này là loại đã được xác định trong mục Văn bản của tài liệu này. Các loại này có thể hơi khác so với đối tượng JavaScript có tên tương tự.
Lưu ý rằng tên cột sẽ thay đổi bằng cách bao bọc cột bằng hàm vô hướng.
Hàm vô hướng có thể là một tham số bất kỳ để đánh giá một giá trị duy nhất:
year(max(startDate)) datediff(now(), todate(1234567890000))
Bạn có thể sử dụng hàm vô hướng trong bất kỳ mệnh đề nào sau đây: select
, where
, group by
, pivot
, order by
, label,
và
format
.
Tên | |
---|---|
year() |
Trả về giá trị năm từ một giá trị ngày hoặc ngày giờ. Ví dụ: Thông số: Một thông số thuộc loại
date hoặc datetime Loại dữ liệu trả về:
number |
month() |
Trả về giá trị tháng dựa trên 0 từ một ngày hoặc giá trị ngày giờ. Ví dụ: Thông số: Một thông số thuộc loại
date hoặc datetime Loại dữ liệu trả về:
number |
day() |
Trả về ngày trong tháng từ giá trị Thông số: Một thông số thuộc loại
date hoặc datetime Loại dữ liệu trả về:
number |
hour() |
Trả về giá trị giờ từ một giá trị ngày giờ hoặc Thông số: Một thông số thuộc loại
datetime hoặc timeofday Loại dữ liệu trả về:
number |
minute() |
Trả về giá trị phút từ giá trị Thông số: Một thông số thuộc loại
datetime hoặc timeofday Loại dữ liệu trả về:
number |
second() |
Trả về giá trị thứ hai từ giá trị Thông số: Một thông số thuộc loại
datetime hoặc timeofday Loại dữ liệu trả về:
number |
millisecond() |
Trả về phần mili giây của giá trị Thông số: Một thông số thuộc loại
datetime hoặc timeofday Loại dữ liệu trả về:
number |
quarter() |
Trả về quý từ giá trị Thông số: Một thông số thuộc loại
date hoặc datetime Loại dữ liệu trả về:
number |
dayOfWeek() |
Trả về ngày trong tuần từ giá trị Thông số: Một thông số thuộc loại
date hoặc datetime Loại dữ liệu trả về:
number |
now() |
Trả về giá trị ngày giờ đại diện cho Thông số: Không có
Loại dữ liệu trả về:
datetime |
dateDiff() |
Trả về số ngày chênh lệch giữa hai giá trị Tham số: Hai tham số thuộc loại
date hoặc datetime (có thể là một trong hai tham số)Loại dữ liệu trả về:
number |
toDate() |
Chuyển giá trị đã cho thành giá trị
Thông số: Một thông số thuộc loại
date , datetime hoặc number Loại dữ liệu trả về:
date |
upper() |
Trả về Thông số: Một thông số thuộc loại
string Loại dữ liệu trả về:
string |
lower() |
Trả về Thông số: Một thông số thuộc loại
string Loại dữ liệu trả về:
string |
Toán tử số học
Bạn có thể sử dụng toán tử số học để thực hiện các phép toán đối với bất kỳ giá trị nào được đánh giá là số duy nhất (tức là kết quả của các hàm tổng hợp, toán tử hoặc hằng số thích hợp).
Ví dụ:
select empSalary - empTax select 2 * (max(empSalary) / max(empTax))
Những toán tử sau đây được xác định:
Tên | Mô tả | Các tham số | Loại dữ liệu trả về |
---|---|---|---|
+ |
Trả về tổng của hai giá trị number . |
Hai number |
number |
- |
Trả về chênh lệch giữa hai giá trị number . |
Hai number |
number |
* |
Trả về tích của hai number . |
Hai number |
number |
/ |
Trả về thương số của hai number . Phép chia cho 0 sẽ trả về kết quả rỗng. |
Hai number |
number |
Thành phần ngôn ngữ
Theo nghĩa đen
Văn bản là các giá trị được sử dụng để so sánh hoặc chỉ định. Văn bản có thể là string
, số, giá trị boolean hoặc nhiều loại ngày/giờ. Dưới đây là một số ví dụ về các giá trị cố định được sử dụng trong cú pháp truy vấn:
where startDate < date "2008-03-18" // date "2008-03-18" is a date literal
limit 30 // 30 is a numeric literal
format salary '#,##0.00', isSenior 'not yet:of course!' // '#,##0.00' and 'not yet:of course!' are both string
literals
Dưới đây là các định dạng cho từng loại giá trị cố định:
string
Giá trị cố định
string
phải được đặt trong một hoặc hai dấu ngoặc kép. Ví dụ:"fourteen" 'hello world' "It's raining"
.-
number
- Giá trị cố định dạng số được chỉ định bằng ký hiệu thập phân.
Ví dụ:
3 3.0 3.14 -71 -7.2 .6
-
boolean
- Giá trị cố định Boolean là
true
hoặcfalse
. -
date
- Dùng từ khoá
date
, theo sau là giá trị cố địnhstring
ở định dạngyyyy-MM-dd
. Ví dụ:date "2008-03-18"
. -
timeofday
- Dùng từ khoá
timeofday
, theo sau là giá trị cố địnhstring
ở định dạngHH:mm:ss[.SSS]
Ví dụ:timeofday "12:30:45"
. -
datetime
- Ngày và giờ, sử dụng từ khoá
datetime
hoặc từ khoátimestamp
, theo sau là giá trị cố địnhstring
ở định dạngyyyy-MM-dd HH:mm:ss[.sss]
. Ví dụ:datetime '2008-03-18 12:30:34.123'
Giá trị nhận dạng
Giá trị nhận dạng (hoặc mã nhận dạng) là văn bản string
xác định cột.
Lưu ý quan trọng: Nếu giá trị nhận dạng của bạn
- Có dấu cách,
- Là một từ dành riêng,
- Chứa bất kỳ ký tự nào trừ các ký tự chữ-số hoặc dấu gạch dưới ([a-zA-Z0-9_]), hoặc
- Bắt đầu bằng một chữ số
phải được đặt trong dấu ngoặc kép (không phải dấu ngoặc đơn).
Ngoài ra, bạn không cần trích dẫn giá trị nhận dạng. (Xin lưu ý rằng không phải tất cả từ khóa mà cú pháp xác định đều là từ đặt trước. Vì vậy, ví dụ: bạn có thể sử dụng "max" làm giá trị nhận dạng mà không cần phải trích dẫn lại.)
Ví dụ: col1 employee_table `start
date` `7 days traffic` `select`
Bạn không nên chọn giá trị nhận dạng cần có dấu ngoặc kép, vì bạn có thể dễ dàng quên dùng dấu ngoặc kép hoặc vô tình sử dụng "dấu ngoặc đơn" thay vì "dấu ngoặc kép". Đây là những lỗi thường gặp và thường khó gỡ lỗi.
Phân biệt chữ hoa chữ thường
Giá trị nhận dạng và giá trị cố định kiểu chuỗi có phân biệt chữ hoa chữ thường. Tất cả các phần tử ngôn ngữ khác đều không phân biệt chữ hoa chữ thường.
Từ đặt trước
Các từ đặt trước sau đây phải được đặt trong dấu ngoặc kép nếu được sử dụng làm giá trị nhận dạng:
and asc by date datetime desc false format group label limit not offset options or order pivot select timeofday timestamp true where