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