ฟังก์ชันเชิงตรรกะ
บทความนี้จะอธิบายถึงฟังก์ชันเชิงตรรกะและการใช้งานฟังก์ชันเหล่านั้นใน Tableau นอกจากนี้ยังสาธิตวิธีในการสร้างการคำนวณเชิงตรรกะโดยมีตัวอย่างอีกด้วย
เหตุใดจึงต้องใช้การคำนวณเชิงตรรกะ
การคำนวณเชิงตรรกะช่วยให้คุณสามารถกำหนดได้ว่าเงื่อนเป็นนั้นจริงหรือเท็จ (ตรรกะแบบบูล) ตัวอย่างเช่น คุณอาจต้องการจัดหมวดหมู่ค่าตามจุดตัดบางอย่าง
การคำนวณเชิงตรรกะอาจมีลักษณะดังนี้
IF [Profit] > 0
THEN 'Profitable'
ELSEIF [Profit] = 0 THEN 'Break even'
ELSE 'Loss'
END
ฟังก์ชันเชิงตรรกะและตัวดำเนินการที่พร้อมให้บริการใน Tableau
และ
ไวยากรณ์ | <expr1> AND <expr2> |
คำนิยาม | ดำเนินการเชื่อมตรรกะกับสองนิพจน์ (ถ้าทั้งสองฝ่ายเป็นจริง การทดสอบเชิงตรรกะจะคืนค่าเป็นจริง) |
เอาต์พุต | บูลีน (True หรือ False) |
ตัวอย่าง | IF [Season] = "Spring" AND "[Season] = "Fall" “ถ้าทั้ง (ฤดูกาล = ฤดูใบไม้ผลิ) และ (ฤดูกาล = ฤดูใบไม้ร่วง) เป็นจริงพร้อมๆ กัน ให้กลับมา มันคือวันสิ้นโลกและรองเท้าก็ไม่สำคัญ” |
หมายเหตุ | มักใช้กับ IF และ IIF ดูเพิ่มเติมที่ NOT และ OR หากทั้งสองนิพจน์เป็น หากคุณสร้างการคำนวณโดยแสดงผลลัพธ์ของการเปรียบเทียบ หมายเหตุ: ตัวดำเนินการ |
CASE
ไวยากรณ์ | CASE <expression>
|
เอาต์พุต | ขึ้นอยู่กับประเภทข้อมูลของค่า <then> |
คำนิยาม | ประเมินว่า |
ตัวอย่าง |
“ดูที่ฟิลด์ฤดูกาล หากค่าเป็นฤดูร้อน ให้แสดงผลรองเท้าแตะ หากค่าเป็นฤดูหนาว ให้แสดงผลรองเท้าบู้ท หากไม่มีตัวเลือกในการคำนวณที่ตรงกับสิ่งที่อยู่ในฟิลด์ฤดูกาล ให้แสดงผลรองเท้าผ้าใบ” |
หมายเหตุ | ใช้กับ WHEN, THEN, ELSE และ END เคล็ดลับ: หลายครั้งที่คุณสามารถใช้กลุ่มเพื่อให้ได้ผลลัพธ์เหมือนกับฟังก์ชัน CASE ที่ซับซ้อน หรือใช้ CASE เพื่อแทนที่ฟังก์ชันการจัดกลุ่มดั้งเดิม เช่น ในตัวอย่างก่อนหน้านี้ คุณอาจต้องการทดสอบว่าสถานการณ์ใดมีประสิทธิภาพมากกว่าสำหรับสถานการณ์ของคุณ |
ELSE
ไวยากรณ์ | CASE <expression>
|
คำนิยาม | ส่วนเสริมของ IF หรือนิพจน์ CASE ที่ใช้ในการระบุค่าเริ่มต้นที่จะแสดงหากไม่มีนิพจน์ที่ทดสอบใดเป็นจริง |
ตัวอย่าง | IF [Season] = "Summer" THEN 'Sandals' CASE [Season] |
หมายเหตุ | ใช้กับ CASE, WHEN, IF, ELSEIF, THEN และ END
|
ELSEIF
ไวยากรณ์ | [ELSEIF <test2> THEN <then2>] |
คำนิยาม | ส่วนเสริมของนิพจน์ IF ที่ใช้ในการระบุเงื่อนไขเพิ่มเติมนอกเหนือจาก IF เริ่มต้น |
ตัวอย่าง | IF [Season] = "Summer" THEN 'Sandals' |
หมายเหตุ |
ไม่เหมือน |
END
คำนิยาม | ใช้เพื่อปิดนิพจน์ IF หรือ CASE |
ตัวอย่าง | IF [Season] = "Summer" THEN 'Sandals' “ถ้าฤดูกาล = ฤดูร้อน ก็ให้แสดงรองเท้าแตะ ถ้าไม่เช่นนั้น ให้ดูที่นิพจน์ถัดไป ถ้าฤดูกาล = ฤดูหนาว ก็ให้แสดงรองเท้าบู้ต ถ้าไม่มีนิพจน์ใดเป็นค่า True ให้แสดงรองเท้าผ้าใบ” CASE [Season] “ดูที่ฟิลด์ฤดูกาล หากค่าเป็นฤดูร้อน ให้แสดงผลรองเท้าแตะ หากค่าเป็นฤดูหนาว ให้แสดงผลรองเท้าบู้ท หากไม่มีตัวเลือกในการคำนวณที่ตรงกับสิ่งที่อยู่ในฟิลด์ฤดูกาล ให้แสดงผลรองเท้าผ้าใบ” |
หมายเหตุ |
IF
ไวยากรณ์ | IF <test1> THEN <then1> |
เอาต์พุต | ขึ้นอยู่กับประเภทข้อมูลของค่า <then> |
คำนิยาม | ทดสอบชุดของนิพจน์และแสดงค่า |
ตัวอย่าง | IF [Season] = "Summer" THEN 'Sandals' “ถ้าฤดูกาล = ฤดูร้อน ก็ให้แสดงรองเท้าแตะ ถ้าไม่เช่นนั้น ให้ดูที่นิพจน์ถัดไป ถ้าฤดูกาล = ฤดูหนาว ก็ให้แสดงรองเท้าบู้ต ถ้าไม่มีนิพจน์ใดเป็นค่า True ให้แสดงรองเท้าผ้าใบ” |
หมายเหตุ |
IFNULL
ไวยากรณ์ | IFNULL(expr1, expr2) |
เอาต์พุต | ขึ้นอยู่กับประเภทข้อมูลของค่า <expr> |
คำนิยาม | แสดง |
ตัวอย่าง | IFNULL([Assigned Room], "TBD") "ถ้าฟิลด์ห้องที่ได้รับมอบหมายไม่เป็น null ให้แสดงค่าของฟิลด์นี้ ถ้าฟิลด์ห้องที่ได้รับมอบหมายเป็น null ให้แสดง TBD แทน” |
หมายเหตุ | เปรียบเทียบกับ ISNULL ดูเพิ่มเติมที่ ZN |
IIF
ไวยากรณ์ | IIF(<test>, <then>, <else>, [<unknown>]) |
เอาต์พุต | ขึ้นอยู่กับประเภทข้อมูลของค่าในนิพจน์ |
คำนิยาม | ตรวจสอบว่าตรงตามเงื่อนไข (<test> ) และแสดง <then> หากการทดสอบเป็น True <else> หากการทดสอบเป็น False และมีค่าเผื่อเลือกสำหรับ <unknown> ถ้าการทดสอบเป็นค่า null หากไม่ได้ระบุตัวเลือกที่ไม่รู้จัก IIF แสดงค่า null |
ตัวอย่าง | IIF([Season] = 'Summer', 'Sandals', 'Other footwear') “ถ้าฤดูกาล = ฤดูร้อน ก็ให้แสดงรองเท้าแตะ ถ้าไม่เช่นนั้น ให้แสดงรองเท้าอื่นๆ” IIF([Season] = 'Summer', 'Sandals', “ถ้าฤดูกาล = ฤดูร้อน ก็ให้แสดงรองเท้าแตะ ถ้าไม่เช่นนั้น ให้ดูที่นิพจน์ถัดไป ถ้าฤดูกาล = ฤดูหนาว ก็ให้แสดงรองเท้าบู้ต หากทั้งสองกรณีไม่เป็น True ให้แสดงสนีกเกอร์” IIF('Season' = 'Summer', 'Sandals', “ถ้าฤดูกาล = ฤดูร้อน ก็ให้แสดงรองเท้าแตะ ถ้าไม่เช่นนั้น ให้ดูที่นิพจน์ถัดไป ถ้าฤดูกาล = ฤดูหนาว ก็ให้แสดงรองเท้าบู้ต ถ้าไม่มีนิพจน์ใดเป็น True ให้แสดงรองเท้าผ้าใบ” |
หมายเหตุ |
กล่าวคือ ในการคำนวณด้านล่าง ผลลัพธ์จะเป็นสีแดง ไม่ใช่สีส้ม เนื่องจากนิพจน์หยุดได้รับการประเมินทันทีที่ A=A ได้รับการประเมินว่าเป็นจริง:
|
IN
ไวยากรณ์ | <expr1> IN <expr2> |
เอาต์พุต | บูลีน (True หรือ False) |
คำนิยาม | แสดงค่า TRUE หากค่าใน <expr1> ตรงกับค่าใดๆ ใน <expr2> |
ตัวอย่าง | SUM([Cost]) IN (1000, 15, 200) “ค่าของฟิลด์ต้นทุนคือ 1,000, 15 หรือ 200” [Field] IN [Set] “ค่าของฟิลด์อยู่ในเซตหรือไม่” |
หมายเหตุ | ค่าต่างๆ ใน ดูเพิ่มเติมที่ WHEN |
ISDATE
ไวยากรณ์ | ISDATE(string) |
เอาต์พุต | บูลีน (True หรือ False) |
คำนิยาม | แสดงค่า True หาก <string> เป็นวันที่ที่ถูกต้อง นิพจน์อินพุตต้องเป็นฟิลด์สตริง (ข้อความ) |
ตัวอย่าง | ISDATE("2018-09-22") “สตริง 2018-09-22 เป็นวันที่ที่มีรูปแบบถูกต้องหรือไม่” |
หมายเหตุ | สิ่งที่ถือว่าเป็นวันที่ที่ถูกต้องนั้นขึ้นอยู่กับภาษา(ลิงก์จะเปิดในหน้าต่างใหม่)ของระบบประเมินผลการคำนวณ ตัวอย่าง: ในสหรัฐอเมริกา:
ในสหราชอาณาจักร:
|
ISNULL
ไวยากรณ์ | ISNULL(expression) |
เอาต์พุต | บูลีน (True หรือ False) |
คำนิยาม | แสดงค่า True หาก |
ตัวอย่าง | ISNULL([Assigned Room]) “ฟิลด์ห้องที่ได้รับมอบหมายเป็น null หรือไม่" |
หมายเหตุ | เปรียบเทียบกับ IFNULL ดูเพิ่มเติมที่ ZN |
MAX
ไวยากรณ์ | MAX(expression) หรือ MAX(expr1, expr2) |
เอาต์พุต | ประเภทข้อมูลเดียวกันกับอาร์กิวเมนต์หรือ NULL หากส่วนใดส่วนหนึ่งของอาร์กิวเมนต์เป็นค่า null |
คำนิยาม | แสดงค่าสูงสุดของสองอาร์กิวเมนต์ ซึ่งต้องเป็นประเภทข้อมูลเดียวกัน
|
ตัวอย่าง | MAX(4,7) = 7 |
หมายเหตุ | สำหรับสตริง โดยปกติ สำหรับแหล่งข้อมูลของฐานข้อมูล ค่าสตริง สำหรับวันที่ สำหรับวันที่ เป็นการรวบรวม
เป็นการเปรียบเทียบ
ดูเพิ่มเติมที่ |
MIN
ไวยากรณ์ | MIN(expression) หรือ MIN(expr1, expr2) |
เอาต์พุต | ประเภทข้อมูลเดียวกันกับอาร์กิวเมนต์หรือ NULL หากส่วนใดส่วนหนึ่งของอาร์กิวเมนต์เป็นค่า null |
คำนิยาม | แสดงค่าสูงสุดของสองอาร์กิวเมนต์ ซึ่งต้องเป็นประเภทข้อมูลเดียวกัน
|
ตัวอย่าง | MIN(4,7) = 4 |
หมายเหตุ | สำหรับสตริง โดยปกติแล้ว สำหรับแหล่งข้อมูลของฐานข้อมูล ค่าสตริง สำหรับวันที่ สำหรับวันที่ เป็นการรวบรวม
เป็นการเปรียบเทียบ
ดูเพิ่มเติมที่ |
NOT
ไวยากรณ์ | NOT <expression> |
เอาต์พุต | บูลีน (True หรือ False) |
คำนิยาม | ดำเนินการปฏิเสธตรรกะในนิพจน์ |
ตัวอย่าง | IF NOT [Season] = "Summer" “ถ้าฤดูกาลไม่เท่ากับฤดูร้อน ให้แสดงอย่าสวมรองเท้าแตะ” ถ้าไม่เช่นนั้น ก็แสดงสวมรองเท้าแตะ” |
หมายเหตุ |
OR
ไวยากรณ์ | <expr1> OR <expr2> |
เอาต์พุต | บูลีน (True หรือ False) |
คำนิยาม | ดำเนินการแยกทางตรรกะในสองนิพจน์ |
ตัวอย่าง | IF [Season] = "Spring" OR [Season] = "Fall" "ถ้า (ฤดูกาล = ฤดูใบไม้ผลิ) หรือ (ฤดูกาล = ฤดูใบไม้ร่วง) เป็น True ให้แสดงรองเท้าผ้าใบ" |
หมายเหตุ | มักใช้กับ IF และ IIF ดูเพิ่มเติมที่ และ และ NOT หากนิพจน์ใดนิพจน์หนึ่งเป็น หากคุณสร้างการคำนวณซึ่งแสดงผลลัพธ์ของการเปรียบเทียบ หมายเหตุ: ตัวดำเนินการ |
THEN
ไวยากรณ์ | IF <test1> THEN <then1>
|
คำนิยาม | ส่วนที่จำเป็นของ IF , ELSEIF , หรือ CASE นิพจน์ ใช้เพื่อกำหนดผลลัพธ์ที่จะแสดงหากค่าเฉพาะหรือการทดสอบเป็น True |
ตัวอย่าง | IF [Season] = "Summer" THEN 'Sandals' “ถ้าฤดูกาล = ฤดูร้อน ก็ให้แสดงรองเท้าแตะ ถ้าไม่เช่นนั้น ให้ดูที่นิพจน์ถัดไป ถ้าฤดูกาล = ฤดูหนาว ก็ให้แสดงรองเท้าบู้ต ถ้าไม่มีนิพจน์ใดเป็นค่า True ให้แสดงรองเท้าผ้าใบ” CASE [Season] “ดูที่ฟิลด์ฤดูกาล หากค่าเป็นฤดูร้อน ให้แสดงผลรองเท้าแตะ หากค่าเป็นฤดูหนาว ให้แสดงผลรองเท้าบู้ท หากไม่มีตัวเลือกในการคำนวณที่ตรงกับสิ่งที่อยู่ในฟิลด์ฤดูกาล ให้แสดงผลรองเท้าผ้าใบ” |
หมายเหตุ |
WHEN
ไวยากรณ์ | CASE <expression>
|
คำนิยาม | ส่วนที่จำเป็นของนิพจน์ CASE ค้นหา <value> แรกที่ตรงกับ <expression> และแสดงค่า <then> ที่ตรงกัน |
ตัวอย่าง | CASE [Season] “ดูที่ฟิลด์ฤดูกาล หากค่าเป็นฤดูร้อน ให้แสดงผลรองเท้าแตะ หากค่าเป็นฤดูหนาว ให้แสดงผลรองเท้าบู้ท หากไม่มีตัวเลือกในการคำนวณที่ตรงกับสิ่งที่อยู่ในฟิลด์ฤดูกาล ให้แสดงผลรองเท้าผ้าใบ” |
หมายเหตุ | ใช้กับ CASE, THEN, ELSE และ END
CASE <expression> ค่าที่ |
ZN
ไวยากรณ์ | ZN(expression) |
เอาต์พุต | ขึ้นอยู่กับประเภทข้อมูลของ <expression> หรือ 0 |
คำนิยาม | แสดง <expression> หากไม่ใช่ค่า null มิฉะนั้นจะแสดงค่าเป็นศูนย์ |
ตัวอย่าง | ZN([Test Grade]) "หากเกรดการทดสอบไม่เป็นค่า null ให้แสดงค่า หากเกรดการทดสอบเป็น null ให้แสดง 0” |
หมายเหตุ |
ดูเพิ่มเติมที่ ISNULL |
หมายเหตุ: บางส่วนเป็นตัวดำเนินการเชิงตรรกะที่แท้จริงและจะปรากฏเป็นสีดำ ไม่ใช่สีน้ำเงิน หากต้องการข้อมูลเพิ่มเติม โปรดดู ไวยากรณ์ตัวดำเนินการ
CASE มักใช้งานได้ง่ายกว่า IF หรือ IIF ในหลายกรณี IF, IIF และ CASE สามารถใช้สลับกันได้ สามารถเขียนคำสั่ง CASE ใหม่เป็นคำสั่ง IF ได้เสมอ แม้ว่าโดยทั่วไปแล้วฟังก์ชัน CASE จะมีความรัดกุมกว่าและอาจเข้าใจได้ง่ายกว่าก็ตาม อย่างไรก็ตาม ไม่ใช่ทุกคำสั่ง IF ที่สามารถเขียนเป็นคำสั่ง CASE ได้ เนื่องจากแต่ละ ELSEIF สามารถอ้างอิงไปยังฟิลด์อื่นได้
เคล็ดลับ: ลองเปรียบเทียบตัวอย่างโดยใช้ตรรกะเดียวกันกับฟังก์ชันทั้งสามนี้
CASE | IF | IIF |
CASE [Region] | IF [Region] = 'West' THEN 1 | IIF([Region] = 'West', 1, |
โครงสร้าง CASE นั้นเรียบง่ายมาก และง่ายต่อการเขียนและทำความเข้าใจ อย่างไรก็ตาม นิพจน์ (ในที่นี้ [ภูมิภาค]) ไม่สามารถเป็นการดำเนินการเชิงตรรกะได้ ซึ่งต่างจาก IF หรือ IIF ค่า null จะได้รับการจัดการเหมือนกันสำหรับ CASE เช่นเดียวกับค่า IF | โครงสร้าง IF THEN อนุญาตให้ใช้ส่วนคำสั่ง ELSEIF ได้หลายรายการ ซึ่งทำให้การประเมินหลายรายการง่ายกว่า IIF มาก การจัดการค่า null: ผลลัพธ์ที่ไม่รู้จัก (null) ใดๆ จะได้รับการจัดการโดยส่วนคำสั่ง ELSE เดียวกันกับผลลัพธ์ที่เป็น False ในที่นี้ ภูมิภาคอื่นๆ นอกเหนือจากสี่ที่ระบุไว้ (รวมถึงค่าว่าง) จะได้รับการกำหนดค่าเป็น 5 | โครงสร้าง IIF จัดการผลลัพธ์ที่ไม่รู้จักแตกต่างจากผลลัพธ์ที่เป็น False และมีไวยากรณ์ที่แตกต่างจาก IF ข้อเสียเปรียบสำหรับการจัดการค่า null เฉพาะเจาะจงคือการซ้อนกัน ดังที่กล่าวข้างต้น ซึ่งอาจเป็นเรื่องยุ่งยากในการเขียนและทำความเข้าใจ การจัดการค่า null: ขอบเขตที่ไม่ใช่ค่า null ใดๆ นอกเหนือจากสี่ขอบเขตที่ระบุจะถูกกำหนดค่าเป็น 5 แต่ค่า null จะถูกกำหนดให้เป็น 0 |
หมายเหตุ: ในหลายๆ ครั้งคุณสามารถใช้กลุ่มเพื่อให้ได้ผลลัพธ์เหมือนกับฟังก์ชัน CASE ที่ซับซ้อนได้ ทดสอบเพื่อดูว่าตัวเลือกหนึ่งมีประสิทธิภาพมากกว่าตัวเลือกอื่นหรือไม่
ตัวอย่าง
ฟังก์ชัน CASE จะมีประโยชน์ในสถานการณ์ต่างๆ เช่น การรับรู้:
CASE LEFT(DATENAME('weekday',[Order Date]),3)
WHEN 'Sun' THEN 0
WHEN 'Mon' THEN 1
WHEN 'Tue' THEN 2
WHEN 'Wed' THEN 3
WHEN 'Thu' THEN 4
WHEN 'Fri' THEN 5
WHEN 'Sat' THEN 6
END
หรือให้ผู้ใช้สามารถเลือกหน่วยวัดที่จะดูในแผนภูมิเมื่อใช้กับพารามิเตอร์(ลิงก์จะเปิดในหน้าต่างใหม่): :
CASE [Choose a Measure]
WHEN "Sales" THEN SUM([Sales])
WHEN "Profit" THEN AVG([Profit])
WHEN "Quantity" THEN COUNT([Quantity])
WHEN "Shipping Cost" THEN MEDIAN([Shipping Cost])
END
สร้างการคำนวณเชิงตรรกะ
ปฏิบัติตามขั้นตอนด้านล่างเพื่อเรียนรู้วิธีสร้างการคำนวณเชิงตรรกะ
- ใน Tableau Desktop ให้เชื่อมต่อกับแหล่งข้อมูลที่บันทึกไว้ ตัวอย่าง - Superstore ที่มาพร้อมกับ Tableau
- ไปยังเวิร์กชีต
- ลากรัฐจากแผงข้อมูลไปยังแถบแถว
- ลากหมวดหมู่จากแผงข้อมูลไปยังแถบแถว และวางไว้ที่ด้านขวาของรัฐ
- ลากยอดขายจากแผงข้อมูลไปยังแผงคอลัมน์
- เลือก “การวิเคราะห์” > สร้างฟิลด์ที่คำนวณ
- ในตัวแก้ไขการคำนวณที่เปิดขึ้น ให้ทำดังนี้
- ตั้งชื่อฟิลด์ที่คำนวณว่า KPI
- ป้อนสูตรต่อไปนี้:
SUM([Profit]) > 0
การคำนวณนี้จะดำเนินการตรวจสอบอย่างรวดเร็วว่าสมาชิกมีค่ามากกว่าศูนย์หรือไม่ หากใช่ การคำนวณจะเป็นจริง หากไม่ใช่ การคำนวณจะเป็นเท็จ
- เมื่อเสร็จแล้ว ให้คลิกตกลง
- ลาก KPI จากแผงข้อมูลไปยังสีบนการ์ด “เครื่องหมาย”
ขณะนี้คุณสามารถดูได้แล้วว่าหมวดหมู่ใดที่กำลังสูญเสียเงินในแต่ละรัฐ
ฟิลด์ที่คำนวณใหม่จะปรากฏภายใต้ “การวัดผล” ในแผงข้อมูล คุณสามารถใช้ฟิลด์นี้ในการแสดงเป็นภาพได้มากกว่าหนึ่งรายการ เช่นเดียวกับฟิลด์อื่นๆ
ดูเพิ่มเติม
แสดงภาพตัวบ่งชี้ความคืบหน้าที่สำคัญ