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

ภาษาการค้นหาของ Google Visualization 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 โดยใช้ฟังก์ชัน encodeURIComponent ของ JavaScript ได้ หรือจะเข้ารหัสด้วยตนเองโดยใช้เครื่องมือการเข้ารหัสที่ตอนท้ายของส่วนนี้ก็ได้

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

ลองใช้สตริงการค้นหาต่อไปนี้สําหรับสเปรดชีตของ 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 สเปรดชีต: การให้สิทธิ์

ไวยากรณ์ภาษา

ภาพรวม

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

ตารางข้อมูล

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

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

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

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

ชื่อ
string
แผนก
string
lunchTime
timeofday
เงินเดือน
number
hireDate
date
อายุ
number
isSenior
boolean
seniorityStartTime
datetime
วิชัยEng12:00:00
1,000
2005-03-1935จริง02-12-2007 15:56:00
เดฟEng12:00:00
500
2006-04-1927falsenull
แซลลี่Eng13:00:00
600
2005-10-1030falsenull
เบนยอดขาย12:00:00
400
2002-10-1032จริง09-03-2005 12:30:00
ดานายอดขาย12:00:00
350
2004-09-0825falsenull
ไมค์Marketing13:00:00
800
2005-01-1024จริง30-12-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

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

lunchTime ชื่อ
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 วงเล็บสามารถใช้ในการกำหนดลำดับความสำคัญที่ชัดเจน

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

  • contains - การจับคู่สตริงย่อย whole contains part จะเป็นจริงหาก part อยู่ที่ใดก็ได้ ภายใน whole ตัวอย่าง: where name contains 'John' ตรงกับ "John", "John Adams", "Long John Silver" แต่ไม่ตรงกับ "john adams"
  • starts with - การจับคู่คำนำหน้า value starts with คำนำหน้าจะเป็นจริงหากคำนำหน้าอยู่ที่จุดเริ่มต้นของ value ตัวอย่าง: where dept starts with 'engineering' ตรงกับ "วิศวกรรม" และ "ผู้จัดการด้านวิศวกรรม" where dept starts with 'e' ตรงกับ 'engineering', 'eng' และ 'e'
  • ends with - การจับคู่ส่วนต่อท้าย value ends with ส่วนต่อท้ายจะเป็นจริงหากส่วนต่อท้ายอยู่ท้าย value ตัวอย่าง: where role ends with 'y' ตรงกับ "คาวบอย" "เด็ก" และ "y"
  • matches - การจับคู่นิพจน์ทั่วไป (preg) การจับคู่ haystack matches needle จะเป็นจริงหากนิพจน์ทั่วไปใน needle ตรงกับ haystack ตัวอย่าง: where country matches '.*ia' ตรงกับอินเดียและไนจีเรีย แต่ไม่ตรงกับอินดีแอนา โปรดทราบว่านี่ไม่ใช่การค้นหาทั่วโลก ดังนั้น where country matches 'an' จะไม่ตรงกับ "แคนาดา"
  • like - การค้นหาข้อความที่รองรับไวลด์การ์ด 2 แบบ ได้แก่ % ซึ่งจะจับคู่กับอักขระประเภทใดก็ได้ตั้งแต่ 0 ตัวขึ้นไป และ _ (ขีดล่าง) ซึ่งตรงกับอักขระ 1 ตัว คำสั่งนี้คล้ายกับโอเปอเรเตอร์ 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

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

ชื่อ
วิชัย
ไมค์

จัดกลุ่มตาม

ใช้อนุประโยค 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

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

lunchTime เงินเดือนเฉลี่ย จำนวนอายุ
12:00:00 425 2
13:00:00 600 1
12:00:00 700 2
13:00:00 800 1

Pivot

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

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

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

select sum(salary) pivot dept

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

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

เนื่องจาก 2100 เป็นผลรวมของเงินเดือนสำหรับภาควิชาวิศวกรรม และ 800 สำหรับแผนกการตลาด เป็นต้น

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

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

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

แผนก 12:00:00 เงินเดือนรวม 13:00:00 เงินเดือนรวม
Eng 1,500 600
Marketing null 800
ยอดขาย 750 null

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

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

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

lunchTime เงินเดือนรวมภาษาอังกฤษ เงินเดือนรวมด้านการตลาด เงินเดือนรวมของยอดขาย
12:00:00 1,500 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 เงินเดือน
1,500 600 800 750

โปรดทราบว่าเฉพาะชุดค่าผสมที่ปรากฏในตารางต้นฉบับเท่านั้นที่จะได้รับคอลัมน์ในตารางการตอบกลับ จึงไม่มีคอลัมน์สำหรับ Marketing,12:00:00 หรือสำหรับ Sales,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" จะส่งผลต่อคอลัมน์ต่อไปนี้ ได้แก่ เงินเดือนแบบรวม Eng, เงินเดือนเต็มด้านการตลาด และเงินเดือนในยอดขาย

คุณติดป้ายกำกับคอลัมน์การรวมได้ หากไม่มีการระบุป้ายกำกับในคำสั่ง label ป้ายกำกับของคอลัมน์ที่สร้างขึ้นเป็นผลของการทำ Pivot จะประกอบด้วยรายการค่าในคอลัมน์ Pivot, ประเภทการรวม (min, max, sum, ...) และป้ายกำกับของคอลัมน์แบบรวม เช่น "Eng,12:00:00 sum Salary" หากระบุการรวมเพียงค่าเดียวในคำสั่ง select ระบบจะนำส่วนการรวมออกจากป้ายกำกับ และจะเก็บเฉพาะรายการค่าในคอลัมน์ Pivot เท่านั้น เช่น "Eng,12:00:00" เมื่อคำสั่ง label ระบุป้ายกำกับสำหรับคอลัมน์การรวม ป้ายกำกับที่ขอจะต่อท้ายรายการค่า ทั้งในกรณีที่มีการรวมเพียงค่าเดียวในอนุประโยค 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
รูปแบบ วันที่ และ ตัวเลข ที่กำหนดโดย 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 ภาษี StartDate
CANNOT TRANSLATE 1,000 100 1/1/2009
มีชีวิตชีวา 2,000 200 21/1/2008
โมรัน 3,000 300 12/2/2008
select upper(name), year(startDate)
ชื่อ ปี(วันที่เริ่มต้น)
แหล่งที่มา 2008
โมราน 2008
แชร์ 2009

 

ฟังก์ชันการจัดการข้อมูลต่อไปนี้กำหนดโดยภาษาการค้นหาของ Google Visualization API

 

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

ระบบจะส่งฟังก์ชันการรวมข้อมูล identifier 1 คอลัมน์และดำเนินการกับค่าทั้งหมดในแต่ละกลุ่ม (กลุ่มจะระบุด้วย 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() แสดงผลจำนวนองค์ประกอบในคอลัมน์ที่ระบุสำหรับกลุ่ม ระบบจะไม่นับเซลล์ Null ประเภทใดก็ได้ 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

พารามิเตอร์: พารามิเตอร์ประเภท date หรือ datetime 1 รายการ
ประเภทการคืนสินค้า: number
month()

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

พารามิเตอร์: พารามิเตอร์ประเภท date หรือ datetime 1 รายการ
ประเภทการคืนสินค้า: number
day()

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

พารามิเตอร์: พารามิเตอร์ประเภท date หรือ datetime 1 รายการ
ประเภทการคืนสินค้า: number
hour()

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

พารามิเตอร์: พารามิเตอร์ประเภท datetime หรือ timeofday 1 รายการ
ประเภทการคืนสินค้า: number
minute()

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

พารามิเตอร์: พารามิเตอร์ประเภท datetime หรือ timeofday 1 รายการ
ประเภทการคืนสินค้า: number
second()

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

พารามิเตอร์: พารามิเตอร์ประเภท datetime หรือ timeofday 1 รายการ
ประเภทการคืนสินค้า: number
millisecond()

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

พารามิเตอร์: พารามิเตอร์ประเภท datetime หรือ timeofday 1 รายการ
ประเภทการคืนสินค้า: number
quarter()

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

พารามิเตอร์: พารามิเตอร์ประเภท date หรือ datetime 1 รายการ
ประเภทการคืนสินค้า: number
dayOfWeek()

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

พารามิเตอร์: พารามิเตอร์ประเภท date หรือ datetime 1 รายการ
ประเภทการคืนสินค้า: 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 (อย่างใดอย่างหนึ่งอาจเป็นอย่างละตัว)
ประเภทการคืนสินค้า: number
toDate()

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

  • หากระบุ date ผลลัพธ์จะแสดงผลเป็นค่าเดียวกัน
  • เมื่อมี datetime ระบบจะแสดงส่วน date ตัวอย่างเช่น toDate(dateTime "2009-01-01 12:00:00") แสดงผล "2009-01-01"
  • หากกำหนดเป็น number N จะแสดงผลเป็น date N มิลลิวินาทีหลังจาก Epoch Epoch ได้รับการกำหนดให้เป็นวันที่ 1,1970 มกราคม เวลา 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 ค่า 2 number วินาที number
- แสดงผลต่างระหว่างค่า number 2 ค่า 2 number วินาที number
* แสดงผลคูณของ number จำนวน 2 รายการ 2 number วินาที number
/ แสดงผลผลหารของ number สองค่า การหารด้วย 0 จะแสดงผลค่า Null 2 number วินาที 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