การอ้างอิงภาษาข้อความค้นหา (เวอร์ชัน 0.7)

ภาษาการค้นหาของ GoogleVisual API ช่วยให้คุณจัดการกับข้อมูลที่หลากหลายด้วยคําค้นหาไปยังแหล่งข้อมูลได้

สารบัญ

บทนํา

โดยปกติแล้ว การแสดงภาพจะมีข้อมูลในรูปแบบที่เจาะจง เช่น แผนภูมิวงกลมอาจเห็นข้อมูลเป็น 2 คอลัมน์ ได้แก่ ป้ายกํากับข้อความและค่าตัวเลข ข้อมูลภายในแหล่งข้อมูลอาจไม่ตรงกับโครงสร้างนี้ ตัวอย่างเช่น แหล่งข้อมูลอาจมีมากกว่า 2 คอลัมน์ หรือลําดับของคอลัมน์อาจไม่ตรงกับลําดับที่คาดไว้ของแผนภูมิวงกลม

ภาษาของคําค้นหาทําให้สามารถส่งคําขอการจัดการข้อมูลและการจัดรูปแบบไปยังแหล่งข้อมูลและตรวจสอบว่าโครงสร้างข้อมูลและเนื้อหาที่แสดงผลตรงกับโครงสร้างที่คาดไว้

ไวยากรณ์ของภาษาในการค้นหาจะคล้ายกับ SQL นักพัฒนาซอฟต์แวร์ที่คุ้นเคยกับ SQL ควรเรียนรู้และใช้ภาษาสืบค้นนี้ได้อย่างรวดเร็ว มีบทแนะนํา SQL จํานวนมากบนเว็บ มีความแตกต่างระหว่างภาษาคําค้นหานี้และ SQL ที่อธิบายไว้ในส่วน syntax

โปรดทราบว่าแหล่งข้อมูลไม่จําเป็นต้องติดตั้งใช้งานภาษาในการค้นหา หรือใช้ฟีเจอร์นี้หากต้องใช้ฟีเจอร์ทั้งหมดของภาษา คุณไม่ควรพึ่งพาแหล่งข้อมูลในการนําฟีเจอร์ทั้งหมดของภาษานี้ไปใช้ เว้นแต่เว้นแต่คุณจะมีเหตุผลให้เชื่อเช่นนั้น

การใช้ภาษาในการค้นหา

คุณแนบสตริงการค้นหาในคําขอแหล่งข้อมูลได้ 2 วิธี คือ การตั้งค่าสตริงคําค้นหาจากภายในโค้ด JavaScript หรือโดยการตั้งค่าสตริงคําค้นหาเป็นพารามิเตอร์ใน URL แหล่งข้อมูล หากคําขอไม่มีสตริงการค้นหา ลักษณะการทํางานเริ่มต้นของแหล่งข้อมูลคือจะแสดงแถวและคอลัมน์ทั้งหมดโดยใช้ลําดับแถว/คอลัมน์เริ่มต้นและการจัดรูปแบบ คุณเปลี่ยนแปลงได้โดยใส่สตริงคําค้นหาในคําขอไปยังแหล่งข้อมูล

การตั้งค่าการค้นหาจาก JavaScript

ในการตั้งค่าสตริงคําค้นหาจากภายในโค้ด JavaScript ให้เรียกเมธอด setQuery ของคลาส google.visualization.Query

var query = new google.visualization.Query(DATA_SOURCE_URL);
query.setQuery('select dept, sum(salary) group by dept');
query.send(handleQueryResponse);

การตั้งค่าการค้นหาใน URL แหล่งข้อมูล

คุณเพิ่มสตริงการค้นหาลงใน URL แหล่งข้อมูลได้โดยใช้พารามิเตอร์ tq การตั้งค่าการค้นหาในพารามิเตอร์ URL แทนใน JavaScript ช่วยให้คุณใช้การแสดงภาพที่เขียนโดยนักพัฒนาซอฟต์แวร์คนอื่นได้อย่างง่ายดาย และยังคงปรับแต่งการค้นหาได้

สตริงการค้นหาต้องได้รับการเข้ารหัสอย่างเหมาะสมเป็นพารามิเตอร์ของ URL คุณเข้ารหัส URL โดยใช้ฟังก์ชัน JavaScript encodeURIComponent หรือจะเข้ารหัสด้วยตนเองโดยใช้เครื่องมือการเข้ารหัสที่ท้ายส่วนนี้ก็ได้

ตัวอย่างเช่น

พิจารณาสตริงคําค้นหาต่อไปนี้สําหรับสเปรดชีต Google (โปรดทราบว่ารหัสคอลัมน์ในสเปรดชีตจะเป็นตัวอักษรเสมอ ข้อความส่วนหัวของคอลัมน์ที่แสดงในสเปรดชีตที่เผยแพร่จะเป็นป้ายกํากับ ไม่ใช่รหัส คุณต้องใช้รหัส ไม่ใช่ป้ายกํากับในสตริงการค้นหา)

select A, sum(B) group by A

เมื่อเข้ารหัสแล้ว คําค้นหานี้จะกลายเป็น

select%20A%2C%20sum(B)%20group%20by%20A

สมมติว่านี่คือ URL ของสเปรดชีต

https://docs.google.com/a/google.com/spreadsheets/d/1r8_mfnZAvTFmT02JHi1XgOwn_-sLCR9XgmR8wEQ4uW4

เพิ่ม /gviz/tq?tq=YOUR_QUERY_STRING ลงใน URL ของสเปรดชีตเพื่อรับสตริงการค้นหาสุดท้าย

https://docs.google.com/a/google.com/spreadsheets/d/1r8_mfnZAvTFmT02JHi1XgOwn_-sLCR9XgmR8wEQ4uW4/gviz/tq?tq=select%A%2C%20sum(B)%20group%20by%20A

ใช้เครื่องมือด้านล่างเพื่อเข้ารหัสหรือถอดรหัสสตริงคําค้นหา

หมายเหตุ: การเข้าถึงข้อมูลสเปรดชีตส่วนตัวจะต้องส่งข้อมูลรับรองการให้สิทธิ์ที่ชัดเจนโดยใช้ OAuth ดูรายละเอียดเพิ่มเติมในส่วน Google สเปรดชีต: การให้สิทธิ์

ไวยากรณ์ของภาษา

ภาพรวม

ไวยากรณ์ภาษาการค้นหาของ API การแสดงภาพของ Google ออกแบบมาให้คล้ายกับไวยากรณ์ SQL แต่เป็นข้อมูลชุดย่อยของ SQL โดยมีฟีเจอร์บางส่วนที่คุณต้องเรียนรู้ หากคุณคุ้นเคยกับ SQL อยู่แล้ว คุณไม่ควรเรียนรู้ได้ยากเกินไป

ตารางข้อมูล

เอกสารนี้ใช้คําว่าตารางข้อมูลเพื่ออ้างถึงชุดผลลัพธ์ของคําค้นหา ตารางข้อมูลประกอบด้วยแถวและคอลัมน์ แต่ละคอลัมน์ในตารางข้อมูลมีพร็อพเพอร์ตี้ต่อไปนี้

  • ตัวระบุ (หรือรหัสคอลัมน์) ใช้เพื่ออ้างอิงคอลัมน์ภายในการค้นหา โปรดทราบว่าคุณไม่ควรพยายามอ้างอิงคอลัมน์ตามป้ายกํากับในการค้นหาโดยใช้ตัวระบุเท่านั้น เคล็ดลับ: พยายามอย่าใช้รหัสใดๆ ที่มีเว้นวรรคเพราะจัดการพื้นที่ทํางานได้ยากและอาจทําให้เกิดข้อผิดพลาดเล็กๆ แต่ค้นหาได้ยากในโค้ด นอกจากนี้ รหัสที่มีเว้นวรรคต้องอยู่ในเครื่องหมายคําพูด
  • ป้ายกํากับ string ที่โดยปกติแล้วแสดงต่อผู้ใช้ปลายทาง เช่น คําอธิบายในแผนภูมิวงกลมหรือส่วนหัวของคอลัมน์ในตาราง
  • ประเภทข้อมูล ประเภทข้อมูลที่รองรับ ได้แก่ string, number, boolean, date, datetime และ timeofday ค่าทั้งหมดของคอลัมน์จะมีประเภทข้อมูลที่ตรงกับประเภทคอลัมน์ หรือค่า null ประเภทเหล่านี้คล้ายกันแต่ไม่เหมือนกับประเภท JavaScript ตามที่อธิบายไว้ในส่วนวรรณกรรมของหน้านี้
  • การจัดรูปแบบ แหล่งข้อมูลจะกําหนดรูปแบบการจัดรูปแบบได้สําหรับคอลัมน์บางส่วนหรือทั้งหมด คุณลบล้างรูปแบบนี้ได้โดยใส่วลีเกี่ยวกับรูปแบบ

ตารางที่ใช้ในตัวอย่างทั้งหมดมีดังนี้

ในส่วนนี้ ตัวอย่างคําค้นหาทั้งหมดอ้างอิงถึงตารางต่อไปนี้ ส่วนหัวของคอลัมน์คือตัวระบุคอลัมน์

ชื่อ
string
ส่วน
string
เวลาอาหารกลางวัน
timeofday
เงินเดือน
number
จ้างงาน
date
อายุ
number
คือผู้สูงอายุ
boolean
SeniorerStartTime
datetime
วิชัยEng12:00:00
1000
2005-03-1935จริง2007-12-02 15:56:00
เดฟEng12:00:00
500
2006-04-1927เท็จnull
แซลลี่Eng13:00:00
600
2005-10-1030เท็จnull
เบนยอดขาย12:00:00
400
2002-10-1032จริง09-03-2005 12:30:00
ดานายอดขาย12:00:00
350
2004-09-0825เท็จnull
ไมค์ฝ่ายการตลาด13:00:00
800
2005-01-1024จริง30-01-2007 14:40:00

ข้อสัญญาภาษา

ไวยากรณ์ของภาษาในการค้นหาจะประกอบด้วยวลีต่อไปนี้ อนุประโยคแต่ละรายการขึ้นต้นด้วยคีย์เวิร์ด 1 หรือ 2 คํา ข้อย่อยทั้งหมดเป็นแบบไม่บังคับ วรรคจะคั่นด้วยการเว้นวรรค ลําดับของข้อย่อยต้องมีลักษณะดังนี้

ข้อย่อย การใช้งาน
select เลือกคอลัมน์ที่ต้องการแสดงและลําดับที่จะแสดง หากไม่ระบุ ระบบจะแสดงผลคอลัมน์ทั้งหมดของตารางตามลําดับเริ่มต้น
where แสดงเฉพาะแถวที่ตรงกับเงื่อนไข หากไม่ระบุ ระบบจะแสดงผลทุกแถว
group by รวบรวมค่าในแถวต่างๆ
pivot แปลงค่าที่ไม่ซ้ํากันในคอลัมน์เป็นคอลัมน์ใหม่
order by จัดเรียงแถวตามค่าในคอลัมน์
limit จํากัดจํานวนแถวที่แสดงผล
offset ข้ามจํานวนแถวแรกที่ระบุ
label ตั้งค่าป้ายกํากับคอลัมน์
format จัดรูปแบบค่าในคอลัมน์ใดคอลัมน์หนึ่งโดยใช้รูปแบบการจัดรูปแบบ
options ตั้งค่าตัวเลือกเพิ่มเติม
from มีการนําวลี from ออกจากภาษาแล้ว

 

เลือก

ใช้อนุประโยค select เพื่อระบุคอลัมน์ที่จะแสดงผลและลําดับ หากไม่ได้ระบุวลีนี้ หรือหากใช้ select * ระบบจะแสดงผลคอลัมน์ทั้งหมดของตารางแหล่งข้อมูลตามลําดับเดิม คอลัมน์อ้างอิงโดยตัวระบุ (ไม่ใช่ป้ายกํากับ) ตัวอย่างเช่น ในสเปรดชีตของ Google ตัวระบุคอลัมน์คือตัวอักษรคอลัมน์อักขระ 1 หรือ 2 ตัว (A, B, C, ...)

รายการในวรรค select อาจเป็นตัวระบุคอลัมน์ หรือเอาต์พุตของฟังก์ชันการรวม ฟังก์ชันสเกลาร์ หรือโอเปอเรเตอร์

ตัวอย่างเช่น

select *
select dept, salary
select max(salary)

ในตัวอย่างต่อไปนี้ ข้อความที่ยกมาจะใช้เพื่ออ้างอิงรหัสคอลัมน์ที่มีการเว้นวรรค (อีเมล) หรือคําที่สงวนไว้ (วันที่)

select `email address`, name, `date`

การเรียกใช้คําค้นหาต่อไปนี้ในตารางตัวอย่าง

select lunchTime, name

แสดงการตอบกลับต่อไปนี้

เวลาอาหารกลางวัน name
12:00:00วิชัย
12:00:00เดฟ
13:00:00แซลลี่
12:00:00เบน
12:00:00ดานา
13:00:00ไมค์

สถานที่

วรรค where ใช้เพื่อแสดงผลเฉพาะแถวที่ตรงกับเงื่อนไขที่ระบุ

ซึ่งโอเปอเรเตอร์การเปรียบเทียบแบบง่ายคือ <=, <, >, >=, =, !=, <> โอเปอเรเตอร์การเปรียบเทียบทั้ง 2 รายการ != <> ไม่เท่ากับ สตริงเหล่านี้จะนํามาเปรียบเทียบด้วยค่าวิทยากร โปรดทราบว่าความเท่าเทียมกันจะระบุโดย = ไม่ใช่ == ในภาษาคอมพิวเตอร์ส่วนใหญ่ การเปรียบเทียบกับ null จะใช้ is null หรือ is not null

คุณรวมเงื่อนไขหลายรายการได้โดยใช้โอเปอเรเตอร์เชิงตรรกะ and, or และ not คุณใช้เครื่องหมายคําพูดเพื่อระบุลําดับความสําคัญที่ชัดเจนได้

ข้อย่อยนี้ยังรองรับโอเปอเรเตอร์การเปรียบเทียบสตริงที่ซับซ้อนมากขึ้นอีกด้วย โอเปอเรเตอร์เหล่านี้ใช้สตริง 2 สตริงเป็นอาร์กิวเมนต์ ส่วนอาร์กิวเมนต์ที่ไม่ใช่สตริง (เช่น วันที่หรือตัวเลข) จะแปลงเป็นสตริงก่อนเปรียบเทียบ การจับคู่สตริงจะคํานึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ (คุณจะใช้ฟังก์ชันสเกลาร์ upper() หรือ lower() เพื่อแก้ไขปัญหานี้ได้)

  • contains - การจับคู่สตริงย่อย whole contains part เป็นจริงหาก section อยู่ที่ใดก็ได้ภายใน whole ตัวอย่างเช่น where name contains 'John' จะจับคู่กับ "John", "John Adams", "long John Silver" แต่ไม่ใช่ "john adams"
  • starts with - รายการที่ตรงกันล่วงหน้า value starts with prefix เป็นจริงหาก prefix อยู่ตอนต้นของ value ตัวอย่าง: where dept starts with 'engineering' ตรงกับ "วิศวกรรม" และ "ผู้จัดการวิศวกรรม" where dept starts with 'e' ตรงกับ "วิศวกรรม" "วิศวกรรม" และ "e"
  • ends with - การจับคู่คําต่อท้าย value ends with suffix จะเป็นจริงหาก suffix อยู่ท้าย value ตัวอย่างเช่น where role ends with 'y' จะจับคู่กับ "คาวบอย" "เด็กชาย" และ "y"
  • matches - การจับคู่นิพจน์ทั่วไป (ล่วงหน้า) haystack matches needle เป็นจริงหากนิพจน์ทั่วไปใน needle ตรงกับ haystack เช่น where country matches '.*ia' ตรงกับอินเดียและไนจีเรีย แต่ไม่ตรงกับอินเดียนา โปรดทราบว่านี่ไม่ใช่การค้นหาทั่วโลก where country matches 'an' จึงจะไม่ตรงกับ "แคนาดา"
  • like - การค้นหาข้อความที่รองรับไวลด์การ์ด 2 แบบ ได้แก่ % ซึ่งจับคู่อักขระประเภทใดก็ได้อย่างน้อย 0 ตัว และ _ (ขีดล่าง) ซึ่งตรงกับอักขระตัวเดียว ซึ่งคล้ายกับโอเปอเรเตอร์ SQL LIKE เช่น where name like fre% ตรงกับ "fre", "fred" และ "freddy"

ตัวอย่างเช่น

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

การเรียกใช้คําค้นหาต่อไปนี้ในตารางตัวอย่าง

select name where salary > 700

แสดงการตอบกลับต่อไปนี้

name
วิชัย
ไมค์

จัดกลุ่มตาม

ใช้อนุประโยค group by ในการรวมค่าในแถวต่างๆ ระบบจะสร้างแถว 1 แถวสําหรับชุดค่าผสมที่ไม่ซ้ํากันแต่ละรายการในข้อย่อยตามกลุ่ม ข้อมูลจะจัดเรียงตามคอลัมน์การจัดกลุ่มโดยอัตโนมัติ เว้นแต่จะระบุตามวรรค order by

หมายเหตุ: หากคุณใช้อนุประโยค group by การกําหนดทุกคอลัมน์ที่แสดงในอนุประโยค select ต้องอยู่ในอนุประโยค group by หรืออยู่ในฟังก์ชันการรวม

ตัวอย่างเช่น

select dept, max(salary) group by dept

การเรียกใช้คําค้นหาต่อไปนี้ในตารางตัวอย่าง

select lunchTime, avg(salary), count(age) group by isSenior,lunchTime

แสดงการตอบกลับต่อไปนี้

เวลาอาหารกลางวัน เงินเดือนโดยเฉลี่ย อายุ
12:00:00 425 2
13:00:00 600 1
12:00:00 700 2
13:00:00 800 1

Pivot

ใช้อนุประโยค pivot ในการแปลงค่าที่แตกต่างกันในคอลัมน์เป็นคอลัมน์ใหม่ เช่น Pivot ตามคอลัมน์ "ปี" จะสร้างตารางที่มีคอลัมน์สําหรับแต่ละปีที่ไม่ซ้ํากันซึ่งปรากฏในตารางต้นฉบับ ซึ่งอาจเป็นประโยชน์หากการแสดงภาพแผนภูมิเส้นวาดแต่ละคอลัมน์เป็นบรรทัดแยกกัน หากคุณต้องการแยกบรรทัดแยกกันสําหรับแต่ละปี และ "ปี" เป็นคอลัมน์หนึ่งในตารางต้นฉบับ ตัวเลือกที่ดีคือการใช้การดําเนินการ Pivot เพื่อเปลี่ยนรูปแบบข้อมูลที่จําเป็น

หมายเหตุ: หากคุณใช้อนุประโยค pivot แล้ว ทุกคอลัมน์ที่ระบุไว้ในอนุประโยค select ต้องอยู่ในอนุประโยค group by หรืออยู่ในฟังก์ชันการรวม

เนื่องจากหลายแถวอาจมีค่าเดียวกันสําหรับคอลัมน์ Pivot Pivot จึงมีนัยเป็นการรวม โปรดทราบว่าเมื่อใช้ pivot โดยไม่ใช้ group by ตารางผลลัพธ์จะมี 1 แถวพอดี เช่น การเรียกใช้คําค้นหาต่อไปนี้ในตารางตัวอย่าง

select sum(salary) pivot dept

แสดงการตอบกลับต่อไปนี้

เงินเดือนรวมภาษาอังกฤษ เงินเดือนรวมด้านการตลาด เงินเดือนรวมของยอดขาย
2100 800 750

นั่นเป็นเพราะ 2100 คือผลรวมของเงินเดือนสําหรับแผนก Eng, 800 สําหรับแผนกการตลาด เป็นต้น

การใช้ pivot ร่วมกับ group by จะมีประโยชน์มากกว่าเพราะจะสร้างตารางที่แต่ละเซลล์มีผลลัพธ์ของการรวมแถวที่เกี่ยวข้องและคอลัมน์ที่เกี่ยวข้อง เช่น การเรียกใช้คําค้นหาต่อไปนี้ในตารางตัวอย่าง

select dept, sum(salary)
  group by dept
  pivot lunchTime

แสดงการตอบกลับต่อไปนี้

ส่วน เงินเดือนรวม 12:00:00 น. 13:00:00 เงินเดือนรวม
Eng 1500 600
ฝ่ายการตลาด null 800
ยอดขาย 750 null

และคุณยัง "สลับ" ตารางนี้โดยสลับคอลัมน์และแถวได้โดยสลับระหว่างคอลัมน์ pivot กับคอลัมน์ group by การเรียกใช้คําค้นหาต่อไปนี้ในตารางตัวอย่าง

select lunchTime, sum(salary)
  group by lunchTime
  pivot dept

แสดงการตอบกลับต่อไปนี้

เวลาอาหารกลางวัน เงินเดือนรวมภาษาอังกฤษ เงินเดือนรวมด้านการตลาด เงินเดือนรวมของยอดขาย
12:00:00 1500 null 750
13:00:00 600 800 null

นอกจากนี้คุณยังใช้คอลัมน์มากกว่า 1 คอลัมน์ในวลี pivot ได้ด้วย ในกรณีดังกล่าว คอลัมน์ของตารางการตอบกลับประกอบด้วยชุดค่าผสมค่าที่ไม่ซ้ํากันทั้งหมดในคอลัมน์ที่มีอยู่ในตารางเดิม เช่น การเรียกใช้คําค้นหาต่อไปนี้ในตารางตัวอย่าง

select sum(salary)
  pivot dept, lunchTime

แสดงการตอบกลับต่อไปนี้

ภาษาอังกฤษ,12:00:00 เงินเดือนรวม ภาษาอังกฤษ,13:00:00 เงินเดือนรวม การตลาด,13:00:00 เงินเดือนรวม ยอดขาย,12:00:00 เงินเดือนรวม
1500 600 800 750

โปรดทราบว่ามีเพียงชุดค่าผสมที่ปรากฏในตารางเดิมเท่านั้นที่จะได้รับคอลัมน์ในตารางการตอบสนอง จึงเป็นเหตุผลที่ไม่มีคอลัมน์สําหรับการตลาด,12:00:00 หรือสําหรับการขาย,13:00:00

และยังใช้การรวมมากกว่า 1 รายการได้ด้วย เช่น การเรียกใช้คําค้นหาต่อไปนี้ในตารางตัวอย่าง

select sum(salary), max(lunchTime)
  pivot dept

แสดงการตอบกลับต่อไปนี้

เงินเดือนรวมภาษาอังกฤษ เงินเดือนรวมด้านการตลาด เงินเดือนรวมของยอดขาย เวลาอาหารกลางวันสูงสุดภาษาอังกฤษ เวลาอาหารกลางวันสูงสุด เวลาอาหารกลางวันสูงสุด
2100 800 750 13:00:00 13:00:00 12:00:00

คุณรวมการรวมหลายรายการในวลี select หลายคอลัมน์ในวลี group by และมีหลายคอลัมน์ในวลี pivot ได้ ภายใน ระบบจะทําการสรุปรวมสําหรับคอลัมน์ในกลุ่มและวลี Pivot นี้

คอลัมน์ที่ระบุในวรรค pivot อาจไม่ปรากฏในอนุประโยค select, group by หรือ order by เมื่อใช้ pivot แล้ว วรรค order by จะไม่มีคอลัมน์การรวม เนื่องจากระบบจะรวมคอลัมน์หลายรายการไว้ในตารางผลลัพธ์สําหรับการรวมแต่ละรายการที่ระบุไว้ในวรรค select แต่จะจัดรูปแบบคอลัมน์การรวมเมื่อใช้ pivot ได้ ผลลัพธ์ของรูปแบบดังกล่าวคือคอลัมน์ใหม่ทั้งหมดที่เกี่ยวข้องกับการรวมที่เจาะจงซึ่งสร้างโดยการดําเนินการ Pivot มีรูปแบบตามที่ระบุ ในตัวอย่างข้างต้น การเพิ่ม format sum(salary) "some_format_string" จะส่งผลต่อคอลัมน์ต่อไปนี้: เงินเดือนรวม, เงินเดือนรวมทางการตลาด, เงินเดือนรวมของยอดขาย

คุณสามารถติดป้ายกํากับคอลัมน์การรวม หากไม่ได้ระบุป้ายกํากับในวลี label ป้ายกํากับของคอลัมน์ที่สร้างขึ้นจาก Pivot จะประกอบด้วยรายการค่าในคอลัมน์ Pivot, ประเภทการรวม (ขั้นต่ํา, สูงสุด, ผลรวม ...) และป้ายกํากับของคอลัมน์แบบรวม เช่น "Eng,12:00:00ผลรวมของเงินเดือน" หากระบุการรวมเพียงรายการเดียวในวลี select ระบบจะนําส่วนการรวมออกจากป้ายกํากับ และจะเก็บเฉพาะรายการค่าในคอลัมน์ Pivot เท่านั้น เช่น "Eng,12:00:00" เมื่อวลี label ระบุป้ายกํากับสําหรับคอลัมน์การรวม ระบบจะเพิ่มป้ายกํากับที่ขอไปยังรายการค่า โดยทั้ง 2 กรณีจะมีการรวมเพียงรายการเดียวในวลี select และเมื่อมีมากกว่า 1 การรวม เช่น label sum(salary) "sumsal" จะแสดงป้ายกํากับคอลัมน์ "Eng,12:00:00 Sumsal", "Eng,13:00:00 Sumsal" ฯลฯ

เรียงลําดับตาม

วลีของ order by ใช้เพื่อจัดเรียงแถวตามค่าในคอลัมน์ที่ระบุ

รายการในข้อ order by อาจเป็นตัวระบุคอลัมน์ หรือเอาต์พุตของฟังก์ชันการรวม ฟังก์ชันสเกลาร์ หรือโอเปอเรเตอร์

ตัวอย่างเช่น

order by dept, salary desc
select dept, max(salary) group by dept order by max(salary)

ขีดจํากัด

วรรค limit ใช้เพื่อจํากัดจํานวนแถวที่แสดงผล

ตัวอย่างเช่น

limit 100

ออฟเซ็ต

ใช้อนุประโยค offset เพื่อข้ามจํานวนแถวแรกที่ระบุ หากใช้อนุประโยค limit ระบบจะใช้ offset ก่อน เช่น limit 15 offset 30 จะแสดงผลแถวที่ 31 ถึง 45

ตัวอย่างเช่น

offset 10
limit 30 offset 210

ป้ายกํากับ

ใช้อนุประโยค label ในการกําหนดป้ายกํากับสําหรับคอลัมน์อย่างน้อย 1 คอลัมน์ โปรดทราบว่าคุณใช้ค่าป้ายกํากับแทนรหัสในการค้นหาไม่ได้

รายการในข้อ label อาจเป็นตัวระบุคอลัมน์ หรือเอาต์พุตของฟังก์ชันการรวม ฟังก์ชันสเกลาร์ หรือโอเปอเรเตอร์

ไวยากรณ์

label column_id label_string [,column_id label_string]
column_id
ตัวระบุของคอลัมน์ที่กําหนดให้กับป้ายกํากับ
label_string
ป้ายกํากับที่จะกําหนดให้คอลัมน์นั้น การแสดงภาพจํานวนมากจะใช้ป้ายกํากับคอลัมน์เป็นข้อความเพื่อแสดงให้ผู้ใช้ปลายทางเห็น เช่น ป้ายกํากับคําอธิบายในแผนภูมิวงกลม ป้ายกํากับคือสัญพจน์ของสตริง และเป็นไปตามกฎไวยากรณ์เหล่านั้น

ตัวอย่างเช่น

ตัวอย่างต่อไปนี้ตั้งค่าป้ายกํากับสําหรับคอลัมน์ส่วนเป็น "แผนก" ป้ายกํากับสําหรับคอลัมน์ชื่อเป็น "ชื่อพนักงาน" และป้ายกํากับสําหรับคอลัมน์ตําแหน่งเป็น "ตําแหน่งพนักงาน"

label dept 'Department', name "Employee Name", location 'Employee Location'

รูปแบบ

ใช้อนุประโยค format เพื่อระบุค่าที่จัดรูปแบบสําหรับเซลล์ในคอลัมน์อย่างน้อย 1 คอลัมน์ ข้อมูลที่แสดงผลควรรวมทั้งค่าจริงและค่าที่จัดรูปแบบสําหรับแต่ละเซลล์ในคอลัมน์ที่มีการจัดรูปแบบ การแสดงภาพจํานวนมากจะใช้ค่าที่ไม่ได้จัดรูปแบบสําหรับการคํานวณ แต่ค่าที่มีการจัดรูปแบบสําหรับดิสเพลย์ โดยปกติแล้ว รูปแบบที่คุณระบุในวรรคนี้จะแสดงผลในพร็อพเพอร์ตี้ pattern ของคอลัมน์ที่เกี่ยวข้อง

รูปแบบไวยากรณ์:

number, date, timeofday, datetime
รูปแบบ date และ number ที่กําหนดโดย ICU
boolean
รูปแบบคือ string ในรูปแบบ "value-if-true:value-if-false"

ตัวอย่างเช่น

format salary '#,##0.00', hireDate 'dd-MMM-yyyy', isSenior 'Yes!:Not yet'

 

ตัวเลือก

วลี options ใช้เพื่อควบคุมตัวเลือกเพิ่มเติมสําหรับการเรียกใช้การค้นหา คีย์เวิร์ดที่เป็นไปได้ที่เป็นไปตามวรรค options คือ

  • no_format นําค่าที่จัดรูปแบบออกจากผลลัพธ์ และปล่อยเฉพาะค่าพื้นฐานเท่านั้น ใช้เมื่อการแสดงภาพที่เจาะจงไม่ใช้ค่าที่จัดรูปแบบเพื่อลดขนาดการตอบกลับ
  • no_values นําค่าที่สําคัญออกจากผลลัพธ์ และปล่อยเฉพาะค่าที่มีการจัดรูปแบบเท่านั้น ซึ่งจะใช้ได้เมื่อการแสดงภาพที่เจาะจงใช้เฉพาะค่าที่จัดรูปแบบเพื่อลดขนาดของการตอบกลับ

ฟังก์ชันการควบคุมข้อมูล

มีโอเปอเรเตอร์และฟังก์ชันหลายชนิดที่ให้คุณควบคุมหรือรวบรวมข้อมูลในคอลัมน์เดียว หรือเปรียบเทียบหรือรวมข้อมูลในคอลัมน์ต่างๆ ได้ เช่น Sum() (เพื่อเพิ่มค่าทั้งหมดในคอลัมน์) max (เพื่อหาค่ามากที่สุดในคอลัมน์) และ + (เพื่อเพิ่มค่าของ 2 คอลัมน์พร้อมกันในแถวเดียวกัน)

ฟังก์ชันบางรายการจะปรากฏในอนุประโยคใดก็ได้ บางฟังก์ชันอาจปรากฏในส่วนย่อยของข้อได้ ซึ่งระบุไว้ด้านล่างนี้

ตัวอย่างเช่น

ข้อมูลในตารางนี้ หากเราใช้คําค้นหานี้... เราเห็นผลลัพธ์นี้
ชื่อ Salary ภาษี วันที่เริ่มต้น
CANNOT TRANSLATE 1000 100 1/1/2009
เลื่อยฉลุ 2000 200 21/1/2008
โมรัน 3000 300 12/2/2008
select upper(name), year(startDate)
ชื่อ ปี(วันที่เริ่มต้น)
ภาพและเสียง 2008
โมรัน 2008
ฉลาม 2009

 

ฟังก์ชันการบิดเบือนข้อมูลต่อไปนี้กําหนดโดยภาษาการค้นหา API การแสดงภาพของ Google

 

ฟังก์ชันการรวม

ระบบจะส่งฟังก์ชันการรวมไปยังตัวระบุคอลัมน์เดียว และดําเนินการในทุกค่าในแต่ละกลุ่ม (กลุ่มจะระบุด้วยวรรค group by หรือ pivot หรือทุกแถวหากไม่มีการใช้วลีเหล่านั้น)

ตัวอย่างเช่น

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.

ใช้ฟังก์ชันการรวมในวลี select, order by, label, format ได้ ข้อความเหล่านี้จะไม่สามารถปรากฏในวรรค where, group by, pivot, limit, offset หรือ options

ฟังก์ชันการรวมที่รองรับมีดังนี้

ชื่อ คำอธิบาย ประเภทคอลัมน์ที่รองรับ ประเภทการแสดงผล
avg() แสดงผลค่าเฉลี่ยของค่าทั้งหมดในคอลัมน์สําหรับกลุ่ม number number
count() แสดงผลจํานวนองค์ประกอบในคอลัมน์ที่ระบุสําหรับกลุ่ม ระบบจะไม่นับเซลล์ว่าง ประเภทใดก็ได้ number
max() แสดงผลค่าสูงสุดในคอลัมน์สําหรับกลุ่ม ระบบจะเปรียบเทียบวันที่กับวันที่ก่อนหน้านี้เล็กลง string จะเปรียบเทียบตามลําดับตัวอักษรและคํานึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ ประเภทใดก็ได้ ประเภทเดียวกับคอลัมน์
min() แสดงผลค่าต่ําสุดในคอลัมน์ของกลุ่ม ระบบเปรียบเทียบวันที่กับวันที่ก่อนหน้านี้มีขนาดเล็กกว่า string เปรียบเทียบตามลําดับตัวอักษรและคํานึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ ประเภทใดก็ได้ ประเภทเดียวกับคอลัมน์
sum() แสดงผลรวมของค่าทั้งหมดในคอลัมน์สําหรับกลุ่ม number number

หมายเหตุ: ฟังก์ชันการรวมสามารถใช้ตัวระบุคอลัมน์เป็นอาร์กิวเมนต์ได้เท่านั้น

max(startDate)                      // OK
min(firstScore) + min(secondScore)  // OK
max(year(startDate))                // INVALID. max requires column ID
sum(salary + perks)                 // INVALID. sum requires column ID.

ฟังก์ชันการปรับขนาด

ฟังก์ชัน Scalar จะทํางานมากกว่า 0 พารามิเตอร์ขึ้นไปเพื่อสร้างค่าอื่น ระบบจะส่งฟังก์ชัน Scalar ใดๆ ที่ประเมินไปยังพารามิเตอร์ของประเภทที่เหมาะสม โปรดทราบว่าประเภทเหล่านี้เป็นประเภทที่กําหนดไว้ในส่วนวรรณกรรมของเอกสารนี้ ซึ่งอาจต่างจากออบเจ็กต์ JavaScript ที่มีชื่อคล้ายกันเล็กน้อย

โปรดทราบว่าระบบจะเปลี่ยนชื่อคอลัมน์ด้วยการรวมด้วยฟังก์ชันสเกลาร์

ฟังก์ชัน Scalar สามารถเป็นพารามิเตอร์อะไรก็ได้ที่ประเมินเป็นค่าเดี่ยวๆ ดังนี้

year(max(startDate))
datediff(now(), todate(1234567890000))

ใช้ฟังก์ชัน Scalar ในข้อใดก็ได้ต่อไปนี้ select, where, group by, pivot, order by, label, และ format

ชื่อ
year()

แสดงผลค่าปีจากค่าวันที่หรือวันที่และเวลา เช่น year(date "2009-02-05") จะแสดงผลปี 2009

พารามิเตอร์: พารามิเตอร์ 1 รายการที่เป็นประเภท date หรือ datetime
ประเภทการแสดงผล: number
month()

แสดงผลค่าเดือนที่ 0 จากค่าวันที่หรือวันที่และเวลา เช่น month(date "2009-02-05") จะแสดงผล 1 หมายเหตุ: เดือนเป็นแบบ 0 ดังนั้นฟังก์ชันจะแสดงผลเป็น 0 สําหรับเดือนมกราคม, 1 คือเดือนกุมภาพันธ์ เป็นต้น

พารามิเตอร์: พารามิเตอร์ 1 รายการที่เป็นประเภท date หรือ datetime
ประเภทการแสดงผล: number
day()

แสดงวันในเดือนจากค่า date หรือค่าวันที่และเวลา เช่น day(date "2009-02-05") จะแสดงผล 5

พารามิเตอร์: พารามิเตอร์ 1 รายการที่เป็นประเภท date หรือ datetime
ประเภทการแสดงผล: number
hour()

แสดงผลค่าชั่วโมงจากค่าวันที่และเวลาหรือ timeofday เช่น hour(timeofday "12:03:17") จะแสดงผล 12

พารามิเตอร์: พารามิเตอร์ 1 รายการที่เป็นประเภท datetime หรือ timeofday
ประเภทการแสดงผล: number
minute()

แสดงผลค่านาทีจากค่า datetime หรือ timeofday เช่น minute(timeofday "12:03:17") จะแสดงผล 3

พารามิเตอร์: พารามิเตอร์ 1 รายการที่เป็นประเภท datetime หรือ timeofday
ประเภทการแสดงผล: number
second()

แสดงผลค่าที่สองจากค่า datetime หรือ timeofday เช่น second(timeofday "12:03:17") จะแสดงผล 17

พารามิเตอร์: พารามิเตอร์ 1 รายการที่เป็นประเภท datetime หรือ timeofday
ประเภทการแสดงผล: number
millisecond()

แสดงผลส่วนมิลลิวินาทีของค่า datetime หรือ timeofday เช่น millisecond(timeofday "12:03:17.123") จะแสดงผล 123

พารามิเตอร์: พารามิเตอร์ 1 รายการที่เป็นประเภท datetime หรือ timeofday
ประเภทการแสดงผล: number
quarter()

แสดงผลไตรมาสจากค่า date หรือ datetime เช่น quarter(date "2009-02-05") จะแสดงผล 1 โปรดทราบว่าไตรมาสจะเป็นแบบ 1 ดังนั้นฟังก์ชันจะแสดงผลเป็น 1 สําหรับไตรมาสแรก 2 ส่วนที่สอง เป็นต้น

พารามิเตอร์: พารามิเตอร์ 1 รายการที่เป็นประเภท date หรือ datetime
ประเภทการแสดงผล: number
dayOfWeek()

แสดงวันในสัปดาห์จากค่า date หรือ datetime เช่น dayOfWeek(date "2009-02-26") จะแสดงผล 5 โปรดทราบว่าวันที่เป็นแบบ 1 ดังนั้นฟังก์ชันจะแสดง 1 สําหรับวันอาทิตย์, 2 สําหรับวันจันทร์ ฯลฯ

พารามิเตอร์: พารามิเตอร์ 1 รายการที่เป็นประเภท date หรือ datetime
ประเภทการแสดงผล: number
now()

แสดงผลค่าวันที่และเวลาที่แทน datetime ปัจจุบันในเขตเวลา GMT

พารามิเตอร์: ไม่มี
ประเภทการแสดงผล: datetime
dateDiff()

แสดงผลต่างของจํานวนวันระหว่างค่า date หรือ datetime 2 ค่า หมายเหตุ: จะมีการใช้เฉพาะ date ของค่าในการคํานวณเท่านั้น ดังนั้นฟังก์ชันจะแสดงค่าจํานวนเต็มเสมอ เช่น dateDiff(date "2008-03-13", date "2008-02-12") จะแสดงผล 29, dateDiff(date "2009-02-13", date "2009-03-13") แสดง -29 ระบบจะตัดค่าเวลาก่อนเปรียบเทียบ

พารามิเตอร์: พารามิเตอร์ 2 ตัวที่เป็นประเภท date หรือ datetime (ตัวละ 1 ตัว)
ประเภทการแสดงผล: number
toDate()

แปลงค่าที่ระบุเป็นค่า date

  • หากค่าเป็น date ค่าเดียวกันจะแสดงผลเป็นค่าเดียวกัน
  • หากระบุ datetime ก็จะแสดงผลส่วน date ตัวอย่างเช่น toDate(dateTime "2009-01-01 12:00:00") แสดงผล "2009-01-01"
  • เมื่อมี number N ก็จะแสดงผล date N มิลลิวินาทีหลังจาก Epoch Epoch กําหนดเป็น 1,1170 มกราคม 00:00:00 GMT ตัวอย่างเช่น toDate(1234567890000) แสดงผล "2009-02-13"
พารามิเตอร์: พารามิเตอร์ 1 รายการที่มีประเภท date, datetime หรือ number
ประเภทการแสดงผล: date
upper()

แสดงผล string ที่ระบุเป็นอักษรตัวพิมพ์ใหญ่ เช่น upper("foo") แสดงผล "FOO"

พารามิเตอร์: พารามิเตอร์ 1 รายการที่มีประเภท string
ประเภทการแสดงผล: string
lower()

แสดงผล string ที่ระบุเป็นอักษรตัวพิมพ์เล็ก เช่น lower("Bar") แสดงผล "bar"

พารามิเตอร์: พารามิเตอร์ 1 รายการที่มีประเภท string
ประเภทการแสดงผล: string

โอเปอเรเตอร์ทางคณิตศาสตร์

คุณสามารถใช้โอเปอเรเตอร์ทางคณิตศาสตร์เพื่อทําการคํานวณทางคณิตศาสตร์กับค่าใดก็ตามที่ประเมินเป็นตัวเลขเดี่ยว (กล่าวคือ เอาต์พุตของฟังก์ชัน โอเปอเรเตอร์ หรือค่าคงที่รวมที่เหมาะสม)

ตัวอย่างเช่น

select empSalary - empTax
select 2 * (max(empSalary) / max(empTax))

โอเปอเรเตอร์มีดังต่อไปนี้

ชื่อ คำอธิบาย พารามิเตอร์ ประเภทการแสดงผล
+ แสดงผลรวมของ number ค่า 2 ค่า number 2 วินาที number
- แสดงผลต่างระหว่าง number ค่า 2 ค่า number 2 วินาที number
* แสดงผลผลิตภัณฑ์ของ number 2 รายการ number 2 วินาที number
/ แสดงผลผลหารของ number 2 รายการ การหารด้วย 0 แสดงค่า Null number 2 วินาที number

องค์ประกอบภาษา

วรรณกรรม

ลิเทอรัลคือค่าที่ใช้สําหรับการเปรียบเทียบหรือการมอบหมาย ตามตัวอักษรอาจเป็น string, ตัวเลข, ค่าบูลีน หรือวันที่/เวลาประเภทต่างๆ ต่อไปนี้คือตัวอย่างของสัญพจน์ที่ใช้ในไวยากรณ์การค้นหา

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

รูปแบบของตัวอักษรจริงแต่ละประเภทมีดังนี้

string
ตัวอักษร string ควรอยู่ในเครื่องหมายคําพูดแบบเดี่ยวหรือคู่ เช่น "fourteen" 'hello world' "It's raining"
number
สัญพจน์ตัวเลขจะระบุในรูปแบบทศนิยม ตัวอย่าง: 3  3.0  3.14  -71  -7.2  .6
boolean
เหตุการณ์ในบูลีนคือ true หรือ false
date
ใช้คีย์เวิร์ด date ตามด้วยตัวอักษร string ในรูปแบบ yyyy-MM-dd เช่น date "2008-03-18"
timeofday
ใช้คีย์เวิร์ด timeofday ตามด้วยไวยากรณ์ของ string ในรูปแบบ HH:mm:ss[.SSS] เช่น timeofday "12:30:45"
datetime
วันที่และเวลา โดยใช้คีย์เวิร์ด datetime หรือคีย์เวิร์ด timestamp ตามด้วยตัวอักษร string ในรูปแบบ yyyy-MM-dd HH:mm:ss[.sss] เช่น datetime '2008-03-18 12:30:34.123'

ตัวระบุ

ตัวระบุ (หรือรหัส) คือข้อความ string ที่ระบุคอลัมน์

สําคัญ: หากตัวระบุ

  • มีพื้นที่ทํางาน
  • เป็นคําที่สงวนไว้
  • มีแค่อักขระที่เป็นตัวอักษรและตัวเลขคละกันหรือขีดล่าง ([a-zA-Z0-9_]) หรือ
  • ขึ้นต้นด้วยตัวเลข

โดยต้องอยู่ในเครื่องหมายคําพูดด้านหลัง (ไม่ใช่เครื่องหมายคําพูดเดี่ยว)

มิเช่นนั้น คุณไม่ต้องระบุตัวระบุ (โปรดทราบว่ามีคีย์เวิร์ดเพียงบางรายการที่กําหนดโดยไวยากรณ์คือคําที่สงวนไว้ เช่น คุณใช้ "max" เป็นตัวระบุได้โดยไม่ต้องใส่เครื่องหมายคําพูดกลับ)

ตัวอย่าง: col1   employee_table   `start date`   `7 days traffic`   `select`

เราไม่แนะนําให้เลือกตัวระบุที่ต้องยกข้อความมาอ้างอิง เนื่องจากอาจลืมใช้เครื่องหมายคําพูดย้อนกลับได้ง่าย หรือใช้ "เครื่องหมายคําพูดแบบเดี่ยว" แทน "เครื่องหมายคําพูดแบบปิด" โดยไม่ตั้งใจ ซึ่งเป็นข้อผิดพลาดที่พบบ่อยและมักจะแก้ไขข้อบกพร่องได้ยาก

การคํานึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่

ตัวระบุและสัญพจน์ของสตริงคํานึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ องค์ประกอบภาษาอื่นๆ ทั้งหมดจะไม่คํานึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่

คําที่สงวนไว้

คําที่สงวนไว้ต่อไปนี้จะต้องใช้เครื่องหมายคําพูดย้อนกลับ หากใช้เป็นตัวระบุ

and
asc
by
date
datetime
desc
false
format
group
label
limit
not
offset
options
or
order
pivot
select
timeofday
timestamp
true
where