ภาษาการค้นหาของ 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 |
SeniorerStartTimedatetime |
---|---|---|---|---|---|---|---|
วิชัย | Eng | 12:00:00 | 1000 | 2005-03-19 | 35 | จริง | 2007-12-02 15:56:00 |
เดฟ | Eng | 12:00:00 | 500 | 2006-04-19 | 27 | เท็จ | null |
แซลลี่ | Eng | 13:00:00 | 600 | 2005-10-10 | 30 | เท็จ | null |
เบน | ยอดขาย | 12:00:00 | 400 | 2002-10-10 | 32 | จริง | 09-03-2005 12:30:00 |
ดานา | ยอดขาย | 12:00:00 | 350 | 2004-09-08 | 25 | เท็จ | null |
ไมค์ | ฝ่ายการตลาด | 13:00:00 | 800 | 2005-01-10 | 24 | จริง | 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
- การจับคู่สตริงย่อย wholecontains
part เป็นจริงหาก section อยู่ที่ใดก็ได้ภายใน whole ตัวอย่างเช่นwhere name contains 'John'
จะจับคู่กับ "John", "John Adams", "long John Silver" แต่ไม่ใช่ "john adams"starts with
- รายการที่ตรงกันล่วงหน้า valuestarts with
prefix เป็นจริงหาก prefix อยู่ตอนต้นของ value ตัวอย่าง:where dept starts with 'engineering'
ตรงกับ "วิศวกรรม" และ "ผู้จัดการวิศวกรรม"where dept starts with 'e'
ตรงกับ "วิศวกรรม" "วิศวกรรม" และ "e"ends with
- การจับคู่คําต่อท้าย valueends with
suffix จะเป็นจริงหาก suffix อยู่ท้าย value ตัวอย่างเช่นwhere role ends with 'y'
จะจับคู่กับ "คาวบอย" "เด็กชาย" และ "y"matches
- การจับคู่นิพจน์ทั่วไป (ล่วงหน้า) haystackmatches
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 คอลัมน์พร้อมกันในแถวเดียวกัน)
ฟังก์ชันบางรายการจะปรากฏในอนุประโยคใดก็ได้ บางฟังก์ชันอาจปรากฏในส่วนย่อยของข้อได้ ซึ่งระบุไว้ด้านล่างนี้
ตัวอย่างเช่น
ข้อมูลในตารางนี้ | หากเราใช้คําค้นหานี้... | เราเห็นผลลัพธ์นี้ | ||||||||||||||||||||||||
|
select upper(name), year(startDate) |
|
ฟังก์ชันการบิดเบือนข้อมูลต่อไปนี้กําหนดโดยภาษาการค้นหา 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() |
แสดงผลค่าปีจากค่าวันที่หรือวันที่และเวลา เช่น พารามิเตอร์: พารามิเตอร์ 1 รายการที่เป็นประเภท
date หรือ datetime ประเภทการแสดงผล:
number |
month() |
แสดงผลค่าเดือนที่ 0 จากค่าวันที่หรือวันที่และเวลา เช่น พารามิเตอร์: พารามิเตอร์ 1 รายการที่เป็นประเภท
date หรือ datetime ประเภทการแสดงผล:
number |
day() |
แสดงวันในเดือนจากค่า พารามิเตอร์: พารามิเตอร์ 1 รายการที่เป็นประเภท
date หรือ datetime ประเภทการแสดงผล:
number |
hour() |
แสดงผลค่าชั่วโมงจากค่าวันที่และเวลาหรือ พารามิเตอร์: พารามิเตอร์ 1 รายการที่เป็นประเภท
datetime หรือ timeofday ประเภทการแสดงผล:
number |
minute() |
แสดงผลค่านาทีจากค่า พารามิเตอร์: พารามิเตอร์ 1 รายการที่เป็นประเภท
datetime หรือ timeofday ประเภทการแสดงผล:
number |
second() |
แสดงผลค่าที่สองจากค่า พารามิเตอร์: พารามิเตอร์ 1 รายการที่เป็นประเภท
datetime หรือ timeofday ประเภทการแสดงผล:
number |
millisecond() |
แสดงผลส่วนมิลลิวินาทีของค่า พารามิเตอร์: พารามิเตอร์ 1 รายการที่เป็นประเภท
datetime หรือ timeofday ประเภทการแสดงผล:
number |
quarter() |
แสดงผลไตรมาสจากค่า พารามิเตอร์: พารามิเตอร์ 1 รายการที่เป็นประเภท
date หรือ datetime ประเภทการแสดงผล:
number |
dayOfWeek() |
แสดงวันในสัปดาห์จากค่า พารามิเตอร์: พารามิเตอร์ 1 รายการที่เป็นประเภท
date หรือ datetime ประเภทการแสดงผล:
number |
now() |
แสดงผลค่าวันที่และเวลาที่แทน พารามิเตอร์: ไม่มี
ประเภทการแสดงผล:
datetime |
dateDiff() |
แสดงผลต่างของจํานวนวันระหว่างค่า พารามิเตอร์: พารามิเตอร์ 2 ตัวที่เป็นประเภท
date หรือ datetime (ตัวละ 1 ตัว)ประเภทการแสดงผล:
number |
toDate() |
แปลงค่าที่ระบุเป็นค่า
พารามิเตอร์: พารามิเตอร์ 1 รายการที่มีประเภท
date , datetime หรือ number ประเภทการแสดงผล:
date |
upper() |
แสดงผล พารามิเตอร์: พารามิเตอร์ 1 รายการที่มีประเภท
string ประเภทการแสดงผล:
string |
lower() |
แสดงผล พารามิเตอร์: พารามิเตอร์ 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