ฟังก์ชันสตริง
บทความนี้จะอธิบายฟังก์ชันสตริงและการใช้งานใน Tableau และจะสาธิตวิธีสร้างการคำนวณสตริงโดยใช้ตัวอย่าง
ทำไมจึงควรใช้ฟังก์ชันสตริง
ฟังก์ชันสตริงทำให้คุณสามารถจัดการข้อมูลสตริงได้ (เช่น ข้อมูลที่สร้างจากข้อความ) Tableau ใช้ไลบรารี International Components for Unicode (ICU) ปัจจุบันเมื่อทำการเปรียบเทียบสตริง วิธีเรียงและเปรียบเทียบสตริงจะอิงตามภาษาและรูปแบบภาษา และสามารถเปลี่ยนการแสดงเป็นภาพได้เนื่องจาก ICU จะอัปเดตอย่างต่อเนื่องเพื่อให้ได้การสนับสนุนภาษาที่ดีขึ้น
ตัวอย่างเช่น คุณอาจมีฟิลด์ที่มีชื่อและนามสกุลของลูกค้าทั้งหมดของคุณ หนึ่งในสมาชิกอาจเป็น: Jane Johnson คุณสามารถดึงนามสกุลจากลูกค้าทั้งหมดของคุณไปยังฟิลด์ใหม่ได้โดยใช้ฟังก์ชันสตริง
การคำนวณอาจมีลักษณะดังนี้:
SPLIT([Customer Name], ' ', 2)
ดังนั้น SPLIT('Jane Johnson' , ' ', 2) =
'Johnson’
ฟังก์ชันสตริงที่มีอยู่ใน Tableau
ASCII
ไวยากรณ์ | ASCII(string) |
เอาต์พุต | หมายเลข |
คำนิยาม | แสดงรหัส ASCII สำหรับอักขระตัวแรกของ <string> |
ตัวอย่าง | ASCII('A') = 65 |
หมายเหตุ | นี่คือค่าผกผันของฟังก์ชัน CHAR |
CHAR
ไวยากรณ์ | CHAR(number) |
เอาต์พุต | สตริง |
คำนิยาม | แสดงอักขระที่เข้ารหัสด้วยรหัส ASCII <number> |
ตัวอย่าง | CHAR(65) = 'A' |
หมายเหตุ | นี่คือค่าผกผันของฟังก์ชัน ASCII |
CONTAINS
ไวยากรณ์ | CONTAINS(string, substring) |
เอาต์พุต | บูลีน |
คำนิยาม | แสดงค่า True หากสตริงที่กำหนดมีสตริงย่อยที่ระบุ |
ตัวอย่าง | CONTAINS("Calculation", "alcu") = true |
หมายเหตุ | ดูเพิ่มเติมที่ฟังก์ชันเชิงตรรกะ(ลิงก์จะเปิดในหน้าต่างใหม่) IN รวมถึง RegEx ที่รองรับในเอกสารประกอบฟังก์ชันเพิ่มเติม(ลิงก์จะเปิดในหน้าต่างใหม่) |
ENDSWITH
ไวยากรณ์ | ENDSWITH(string, substring) |
เอาต์พุต | บูลีน |
คำนิยาม | แสดงค่า True หากสตริงที่กำหนดสิ้นสุดด้วยสตริงย่อยที่ระบุ ระบบจะข้ามช่องว่าง |
ตัวอย่าง | ENDSWITH("Tableau", "leau") = true |
หมายเหตุ | ดูเพิ่มเติมที่ RegEx ที่รองรับในเอกสารประกอบฟังก์ชันเพิ่มเติม(ลิงก์จะเปิดในหน้าต่างใหม่) |
FIND
ไวยากรณ์ | FIND(string, substring, [start]) |
เอาต์พุต | หมายเลข |
คำนิยาม | แสดงตำแหน่งดัชนีของสตริงย่อยในสตริง หรือ 0 หากไม่พบสตริงย่อย อักขระตัวแรกในสตริงคือตำแหน่ง 1 หากเพิ่มอาร์กิวเมนต์ตัวเลขเสริม |
ตัวอย่าง | FIND("Calculation", "alcu") = 2 FIND("Calculation", "Computer") = 0 FIND("Calculation", "a", 3) = 7 FIND("Calculation", "a", 2) = 2 FIND("Calculation", "a", 8) = 0 |
หมายเหตุ | ดูเพิ่มเติมที่ RegEx ที่รองรับในเอกสารประกอบฟังก์ชันเพิ่มเติม(ลิงก์จะเปิดในหน้าต่างใหม่) |
FINDNTH
ไวยากรณ์ | FINDNTH(string, substring, occurrence) |
เอาต์พุต | หมายเลข |
คำนิยาม | แสดงตำแหน่งที่เกิดสตริงย่อยที่ n ขึ้นภายในสตริงที่ระบุ ซึ่ง n กำหนดจากอาร์กิวเมนต์การเกิดขึ้น |
ตัวอย่าง | FINDNTH("Calculation", "a", 2) = 7 |
หมายเหตุ |
ดูเพิ่มเติมที่ RegEx ที่รองรับในเอกสารประกอบฟังก์ชันเพิ่มเติม(ลิงก์จะเปิดในหน้าต่างใหม่) |
LEFT
ไวยากรณ์ | LEFT(string, number) |
เอาต์พุต | สตริง |
คำนิยาม | แสดง <number> อักขระซ้ายสุดในสตริง |
ตัวอย่าง | LEFT("Matador", 4) = "Mata" |
หมายเหตุ | ดูเพิ่มเติมที่ MID และ RIGHT |
LEN
ไวยากรณ์ | LEN(string) |
เอาต์พุต | หมายเลข |
คำนิยาม | แสดงความยาวของสตริง |
ตัวอย่าง | LEN("Matador") = 7 |
หมายเหตุ | เพื่อไม่ให้สับสนกับฟังก์ชันเชิงพื้นที่(ลิงก์จะเปิดในหน้าต่างใหม่) LENGTH |
LOWER
ไวยากรณ์ | LOWER(string) |
เอาต์พุต | สตริง |
คำนิยาม | แสดง <string> ที่ระบุเป็นอักขระตัวพิมพ์เล็กทั้งหมด |
ตัวอย่าง | LOWER("ProductVersion") = "productversion" |
หมายเหตุ | ดูเพิ่มเติมที่ UPPER และ PROPER |
LTRIM
ไวยากรณ์ | LTRIM(string) |
เอาต์พุต | สตริง |
คำนิยาม | แสดง <string> ที่ระบุที่มีการลบช่องว่างนำหน้าออก |
ตัวอย่าง | LTRIM(" Matador ") = "Matador " |
หมายเหตุ | ดูเพิ่มเติมที่ RTRIM |
MAX
ไวยากรณ์ | MAX(expression) หรือ MAX(expr1, expr2) |
เอาต์พุต | ประเภทข้อมูลเดียวกันกับอาร์กิวเมนต์หรือ NULL หากส่วนใดส่วนหนึ่งของอาร์กิวเมนต์เป็นค่า null |
คำนิยาม | แสดงค่าสูงสุดของสองอาร์กิวเมนต์ ซึ่งต้องเป็นประเภทข้อมูลเดียวกัน
|
ตัวอย่าง | MAX(4,7) = 7 |
หมายเหตุ | สำหรับสตริง โดยปกติ สำหรับแหล่งข้อมูลของฐานข้อมูล ค่าสตริง สำหรับวันที่ สำหรับวันที่ เป็นการรวบรวม
เป็นการเปรียบเทียบ
ดูเพิ่มเติมที่ |
MID
ไวยากรณ์ | (MID(string, start, [length]) |
เอาต์พุต | สตริง |
คำนิยาม | แสดงผลลัพธ์สตริงจากตำแหน่ง หากเพิ่มอาร์กิวเมนต์ตัวเลขเสริม |
ตัวอย่าง | MID("Calculation", 2) = "alculation" MID("Calculation", 2, 5) ="alcul" |
หมายเหตุ | ดูเพิ่มเติมที่ RegEx ที่รองรับในเอกสารประกอบฟังก์ชันเพิ่มเติม(ลิงก์จะเปิดในหน้าต่างใหม่) |
MIN
ไวยากรณ์ | MIN(expression) หรือ MIN(expr1, expr2) |
เอาต์พุต | ประเภทข้อมูลเดียวกันกับอาร์กิวเมนต์หรือ NULL หากส่วนใดส่วนหนึ่งของอาร์กิวเมนต์เป็นค่า null |
คำนิยาม | แสดงค่าสูงสุดของสองอาร์กิวเมนต์ ซึ่งต้องเป็นประเภทข้อมูลเดียวกัน
|
ตัวอย่าง | MIN(4,7) = 4 |
หมายเหตุ | สำหรับสตริง โดยปกติแล้ว สำหรับแหล่งข้อมูลของฐานข้อมูล ค่าสตริง สำหรับวันที่ สำหรับวันที่ เป็นการรวบรวม
เป็นการเปรียบเทียบ
ดูเพิ่มเติมที่ |
PROPER
ไวยากรณ์ | PROPER(string) |
เอาต์พุต | สตริง |
คำนิยาม | แสดง |
ตัวอย่าง | PROPER("PRODUCT name") = "Product Name" PROPER("darcy-mae") = "Darcy-Mae" |
หมายเหตุ | ช่องว่างและอักขระที่ไม่ใช่ตัวอักษรและตัวเลข เช่น เครื่องหมายวรรคตอนยังทำหน้าที่เป็นตัวคั่น |
ข้อจำกัดของฐานข้อมูล | PROPER ใช้ได้เฉพาะกับไฟล์ Flat บางไฟล์และในรูปแบบการแยกข้อมูลเท่านั้น หากคุณต้องการใช้ PROPER ในแหล่งข้อมูลที่ไม่รองรับ ให้พิจารณาใช้การแยกข้อมูล |
REPLACE
ไวยากรณ์ | REPLACE(string, substring, replacement |
เอาต์พุต | สตริง |
คำนิยาม | ค้นหา <string> สำหรับ <substring> และแทนที่ด้วย <replacement> หากไม่พบ <substring> สตริงจะไม่เปลี่ยนแปลง |
ตัวอย่าง | REPLACE("Version 3.8", "3.8", "4x") = "Version 4x" |
หมายเหตุ | ดูเพิ่มเติมที่ REGEXP_REPLACE ในเอกสารประกอบฟังก์ชันเพิ่มเติม(ลิงก์จะเปิดในหน้าต่างใหม่) |
RIGHT
ไวยากรณ์ | RIGHT(string, number) |
เอาต์พุต | สตริง |
คำนิยาม | แสดง <number> อักขระขวาสุดในสตริง |
ตัวอย่าง | RIGHT("Calculation", 4) = "tion" |
หมายเหตุ | ดูเพิ่มเติมที่ LEFT และ MID |
RTRIM
ไวยากรณ์ | RTRIM(string) |
เอาต์พุต | สตริง |
คำนิยาม | แสดง <string> ที่ระบุที่มีการลบช่องว่างต่อท้ายออก |
ตัวอย่าง | RTRIM(" Calculation ") = " Calculation" |
หมายเหตุ | ดูเพิ่มเติมที่ LTRIM และ TRIM |
SPACE
ไวยากรณ์ | SPACE(number) |
เอาต์พุต | สตริง (มีเพียงช่องว่างโดยเฉพาะ) |
คำนิยาม | แสดงสตริงที่ประกอบด้วยช่องว่างซ้ำตามจำนวนที่ระบุ |
ตัวอย่าง | SPACE(2) = " " |
SPLIT
ไวยากรณ์ | SPLIT(string, delimiter, token number) |
เอาต์พุต | สตริง |
คำนิยาม | แสดงสตริงย่อยจากสตริง โดยใช้อักขระตัวคั่นเพื่อแบ่งสตริงออกเป็นลำดับของโทเค็น |
ตัวอย่าง | SPLIT ("a-b-c-d", "-", 2) = "b" SPLIT ("a|b|c|d", "|", -2) = "c" |
หมายเหตุ | สตริงได้รับการตีความว่าเป็นลำดับของตัวคั่นและโทเค็นที่สลับกัน ดังนั้นสำหรับสตริง
ดูเพิ่มเติมที่ REGEX ที่รองรับในเอกสารประกอบฟังก์ชันเพิ่มเติม(ลิงก์จะเปิดในหน้าต่างใหม่) |
ข้อจำกัดของฐานข้อมูล | คำสั่งการแบ่งและการแบ่งแบบกำหนดเองใช้ได้สำหรับแหล่งข้อมูลประเภทต่อไปนี้ การแยกข้อมูลใน Tableau, Microsoft Excel, ไฟล์ข้อความ, ไฟล์ PDF, Salesforce, OData, Microsoft Azure Market Place, Google Analytics, Vertica, Oracle, MySQL, PostgreSQL, Teradata, Amazon Redshift, Aster Data, Google BigQuery, Cloudera Hadoop Hive, Hortonworks Hive และ and Microsoft SQL Server แหล่งข้อมูลบางอย่างจะกำหนดขีดจำกัดในการแยกสตริง ดูข้อจำกัดของฟังก์ชัน SPLIT ภายหลังในหัวข้อนี้ |
STARTSWITH
ไวยากรณ์ | STARTSWITH(string, substring) |
เอาต์พุต | บูลีน |
คำนิยาม | แสดงค่า True หาก string เริ่มต้นด้วย substring ช่องว่างนำหน้าจะถูกละเว้น |
ตัวอย่าง | STARTSWITH("Matador, "Ma") = TRUE |
หมายเหตุ | ดูเพิ่มเติมที่ CONTAINS รวมถึง REGEX ที่รองรับในเอกสารประกอบฟังก์ชันเพิ่มเติม(ลิงก์จะเปิดในหน้าต่างใหม่) |
TRIM
ไวยากรณ์ | TRIM(string) |
เอาต์พุต | สตริง |
คำนิยาม | แสดง <string> ที่ลบช่องว่างนำหน้าและต่อท้ายออกแล้ว |
ตัวอย่าง | TRIM(" Calculation ") = "Calculation" |
หมายเหตุ | ดูเพิ่มเติมที่ LTRIM และ RTRIM |
UPPER
ไวยากรณ์ | UPPER(string) |
เอาต์พุต | สตริง |
คำนิยาม | แสดง <string> ที่ระบุเป็นอักขระตัวพิมพ์ใหญ่ทั้งหมด |
ตัวอย่าง | UPPER("Calculation") = "CALCULATION" |
หมายเหตุ | ดูเพิ่มเติมที่ PROPER และ LOWER |
สร้างการคำนวณสตริง
ทำตามขั้นตอนด้านล่างเพื่อเรียนรู้วิธีสร้างการคำนวณสตริง
ใน Tableau Desktop ให้เชื่อมต่อกับแหล่งข้อมูลที่บันทึกไว้ ตัวอย่าง - Superstore ที่มาพร้อมกับ Tableau
ไปยังเวิร์กชีต
จากแผงข้อมูล ในส่วน “มิติข้อมูล” ให้ลากID ลำดับไปยังแผงแถว
โปรดทราบว่าทุก ID ลำดับมีค่าประเทศ (ตัวอย่างเช่น CA และ US), ปี (2011) และหมายเลขลำดับ (100006) สำหรับตัวอย่างนี้ คุณจะสร้างการคำนวณเพื่อดึงเฉพาะหมายเลขลำดับจากฟิลด์
เลือก "การวิเคราะห์” > สร้างฟิลด์ที่คำนวณ
ในตัวแก้ไขการคำนวณที่เปิดขึ้น ให้ทำดังนี้
ตั้งชื่อฟิลด์คำนวณหมายเลข ID ลำดับ
ป้อนสูตรต่อไปนี้:
RIGHT([Order ID], 6)
สูตรนี้จะนำตัวเลขที่ระบุ (6) จากด้านขวาของสตริงและดึงไปยังฟิลด์ใหม่
ดังนั้น
RIGHT('CA-2011-100006' , 6)
= '100006'เมื่อเสร็จแล้ว ให้คลิกตกลง
ฟิลด์ที่คำนวณใหม่จะปรากฏในส่วน "มิติข้อมูล" ในแผง "ข้อมูล" คุณสามารถใช้ฟิลด์นี้ในการแสดงเป็นภาพได้มากกว่าหนึ่งรายการ เช่นเดียวกับฟิลด์อื่นๆ
จากแผง ข้อมูล ให้ลากหมายเลข ID ลำดับ ไปยังแถบ แถว วางลงบนด้านขวาของ ID ลำดับ
สังเกตถึงความแตกต่างที่เกิดขึ้นกับฟิลด์
ข้อจำกัดของ SPLIT ตามแหล่งข้อมูล
แหล่งข้อมูลบางแห่งจะกำหนดขีดจำกัดในการแยกสตริง ตารางต่อไปนี้แสดงให้เห็นว่าแหล่งข้อมูลใดรองรับหมายเลขโทเค็นค่าลบ (แยกจากด้านขวา) และมีการจำกัดจำนวนการแยกที่อนุญาตต่อแหล่งข้อมูลหรือไม่
ฟังก์ชัน SPLIT
ที่ระบุหมายเลขโทเค็นค่าลบและใช้ได้กับแหล่งข้อมูลอื่นจะส่งกลับข้อผิดพลาดนี้ที่เกิดขึ้นกับแหล่งข้อมูลเหล่านี้: “แหล่งข้อมูลไม่รองรับการแยกจากด้านขวา”
แหล่งข้อมูล | ข้อจำกัดด้านซ้าย/ขวา | จำนวนการแยกสูงสุด | ข้อจำกัดเวอร์ชัน |
การแยกข้อมูลใน Tableau | ทั้งคู่ | ไม่จำกัด | |
Microsoft Excel | ทั้งคู่ | ไม่จำกัด | |
ไฟล์ข้อความ | ทั้งคู่ | ไม่จำกัด | |
Salesforce | ทั้งคู่ | ไม่จำกัด | |
OData | ทั้งคู่ | ไม่จำกัด | |
Google Analytics | ทั้งคู่ | ไม่จำกัด | |
เซิร์ฟเวอร์ข้อมูล Tableau | ทั้งคู่ | ไม่จำกัด | รองรับในเวอร์ชัน 9.0 |
Vertica | เฉพาะด้านซ้ายเท่านั้น | 10 | |
Oracle | เฉพาะด้านซ้ายเท่านั้น | 10 | |
MySQL | ทั้งคู่ | 10 | |
PostgreSQL | เฉพาะด้านซ้ายเท่านั้นสำหรับเวอร์ชันก่อน 9.0 ทั้งสองด้านสำหรับเวอร์ชัน 9.0 ขึ้นไป | 10 | |
Teradata | เฉพาะด้านซ้ายเท่านั้น | 10 | เวอร์ชัน 14 และใหม่กว่า |
Amazon Redshift | เฉพาะด้านซ้ายเท่านั้น | 10 | |
ฐานข้อมูล Aster | เฉพาะด้านซ้ายเท่านั้น | 10 | |
Google BigQuery | เฉพาะด้านซ้ายเท่านั้น | 10 | |
Hortonworks Hadoop Hive | เฉพาะด้านซ้ายเท่านั้น | 10 | |
Cloudera Hadoop | เฉพาะด้านซ้ายเท่านั้น | 10 | รองรับ Impala ตั้งแต่เวอร์ชัน 2.3.0 |
Microsoft SQL Server | ทั้งคู่ | 10 | 2008 และใหม่กว่า |
ดูเพิ่มเติม
ฟังก์ชัน Tableau (เรียงตามตัวอักษร)