คำถามและคำตอบสัมภาษณ์ SAS 50 อันดับแรก (2026)

การเตรียมตัวสำหรับการสัมภาษณ์ SAS จำเป็นต้องมีการเตรียมตัวอย่างเข้มข้น โดยเฉพาะอย่างยิ่งเมื่อต้องทำความเข้าใจสิ่งที่สำคัญอย่างแท้จริงในการสัมภาษณ์ SAS การประเมินเหล่านี้เผยให้เห็นถึงความลึกซึ้งในการแก้ปัญหา การคิดเชิงวิเคราะห์ และความเกี่ยวข้องเชิงปฏิบัติในสภาพแวดล้อมข้อมูลสมัยใหม่
โอกาสในตำแหน่งงาน SAS ครอบคลุมการวิเคราะห์ การรายงาน และปัญญาประดิษฐ์ (Business Intelligence) ซึ่งประสบการณ์ทางเทคนิคและความเชี่ยวชาญเฉพาะด้านจะสร้างผลกระทบที่แท้จริง ผู้เชี่ยวชาญที่ทำงานในสาขานี้ต้องอาศัยทักษะการวิเคราะห์ที่แข็งแกร่ง ชุดทักษะที่ได้รับการพัฒนา และความมั่นใจที่สร้างขึ้นจากคำถามและคำตอบทั้งแบบทั่วไปและแบบขั้นสูง ซึ่งช่วยให้ผู้สมัครระดับเริ่มต้น ระดับกลาง และระดับสูง สามารถบรรลุความคาดหวังทางเทคนิคที่หลากหลาย อ่านเพิ่มเติม ...
👉 ดาวน์โหลด PDF ฟรี: คำถามและคำตอบสัมภาษณ์ SAS
คำถามและคำตอบสัมภาษณ์ SAS ยอดนิยม
1) SAS ประมวลผลขั้นตอนข้อมูลภายในอย่างไร และผ่านขั้นตอนวงจรชีวิตใดบ้าง
ขั้นตอน DATA ใน SAS ดำเนินการผ่านวงจรชีวิตที่กำหนดไว้อย่างชัดเจน ซึ่งประกอบด้วยสองขั้นตอนหลัก ได้แก่ ขั้นตอนการคอมไพล์และขั้นตอนการรัน การทำความเข้าใจวงจรชีวิตนี้มีความสำคัญอย่างยิ่ง เพราะจะอธิบายวิธีที่ SAS สร้างชุดข้อมูล ตรวจจับไวยากรณ์ กำหนดแอตทริบิวต์ของตัวแปร และจัดการการวนซ้ำ ในระหว่างการคอมไพล์ SAS จะตรวจสอบไวยากรณ์ สร้างเวกเตอร์ข้อมูลโปรแกรม (PDV) และเตรียมส่วนตัวอธิบายของชุดข้อมูลเอาต์พุต ในระหว่างการดำเนินการ SAS จะอ่านข้อมูล เติมค่า PDV ประเมินเงื่อนไข และเขียนข้อมูลสังเกตลงในชุดข้อมูลเอาต์พุต
ระยะวงจรชีวิต:
| ระยะ | ลักษณะ | ตัวอย่าง |
|---|---|---|
| การรวบรวม | สร้าง PDV กำหนดความยาวตัวแปร ระบุตัวแปรที่หายไป | การขาดเครื่องหมายอัฒภาคทำให้เกิดข้อผิดพลาดในระหว่างการคอมไพล์ |
| การกระทำ | ดำเนินการคำสั่งทีละบรรทัด เขียนข้อมูลเอาต์พุต | SET sales; |
วงจรชีวิตนี้ช่วยเพิ่มประสิทธิภาพการดีบักและเพิ่มประสิทธิภาพการประมวลผลข้อมูล
2) มีวิธีใดบ้างในการรวมชุดข้อมูลใน SAS และควรใช้แต่ละวิธีเมื่อใด
SAS มีเทคนิคหลากหลายสำหรับการรวมชุดข้อมูล ซึ่งแต่ละเทคนิคมีข้อดีที่แตกต่างกันไป ขึ้นอยู่กับโครงสร้างข้อมูล ความสัมพันธ์ระหว่างชุดข้อมูล และข้อกำหนดด้านประสิทธิภาพ การรวม การผนวก การต่อข้อมูล การสลับข้อมูล และการรวม SQL จะช่วยแก้ปัญหาที่แตกต่างกัน การเลือกวิธีการที่ถูกต้องจะช่วยเพิ่มความแม่นยำและป้องกันการซ้ำซ้อนโดยไม่ได้ตั้งใจ
วิธีการสำคัญ:
- การรวม (ขั้นตอนข้อมูล): ใช้เมื่อชุดข้อมูลมีตัวแปร BY ร่วมกัน เหมาะสำหรับความสัมพันธ์แบบหนึ่งต่อหนึ่งหรือหนึ่งต่อหลาย
- SET (การต่อกัน): จัดเรียงชุดข้อมูลในแนวตั้ง ใช้เมื่อตัวแปรเหมือนกัน แต่การสังเกตต่างกัน
- PROC SQL เข้าร่วม: ใช้เพื่อความยืดหยุ่นเต็มที่—การเชื่อมต่อซ้าย ขวา เต็ม และด้านใน
- การสลับ: รวมชุดข้อมูลหลายชุดโดยยังคงรักษาลำดับการเรียงลำดับไว้
ตัวอย่าง: การรวมการขายและลูกค้าโดยใช้ Customer_ID ช่วยให้คุณสามารถสร้างโปรไฟล์ที่มีประสิทธิภาพมากขึ้นสำหรับการรายงานและการวิเคราะห์
3) อธิบายความแตกต่างระหว่าง SAS informat และ SAS format พร้อมตัวอย่าง
Informat และ format มีบทบาทที่แตกต่างกันอย่างสิ้นเชิงใน SAS Informat บอกกับ SAS วิธีการอ่านข้อมูลในขณะที่รูปแบบบอก SAS วิธีการแสดงข้อมูลลักษณะเฉพาะเหล่านี้เป็นตัวกำหนดว่าข้อมูลจะถูกตีความหรือนำเสนอแตกต่างกันอย่างไร การจดจำความแตกต่างนี้เป็นสิ่งสำคัญอย่างยิ่งต่อการจัดการวันที่ ทศนิยม มูลค่าทางการเงิน และตัวแปรอักขระอย่างถูกต้อง
ตารางเปรียบเทียบ:
| คุณสมบัติ (Feature) | ข้อมูล | รูปแบบ |
|---|---|---|
| จุดมุ่งหมาย | อ่านข้อมูลภายนอก | แสดงข้อมูลภายใน |
| ประยุกต์ | ขั้นตอนการป้อนข้อมูล | ขั้นตอนการส่งออก |
| ตัวอย่าง | input date mmddyy10.; |
format date date9.; |
ตัวอย่าง: หากข้อมูลมี 20250114, ข้อมูล yymmdd8แปลงเป็นค่าวันที่ SAS รูปแบบ date9. แล้วแสดงเป็น 14JAN2025หากไม่มีข้อมูล SAS จะอ่านวันที่ผิดทั้งหมด
4) ปัจจัยใดบ้างที่มีผลกระทบต่อประสิทธิภาพของ SAS และคุณสามารถเพิ่มประสิทธิภาพโปรแกรมที่ทำงานช้าได้อย่างไร
ประสิทธิภาพใน SAS ขึ้นอยู่กับประสิทธิภาพของโค้ด ทรัพยากรฮาร์ดแวร์ ขนาดชุดข้อมูล และการใช้ดัชนี เพื่อเพิ่มประสิทธิภาพโปรแกรมที่ช้า คุณต้องประเมินทั้งปัจจัยขั้นตอนข้อมูล (DATA step) และขั้นตอนกระบวนการ (PROC step) การรวมข้อมูลที่ไม่มีประสิทธิภาพ การเรียงลำดับที่มากเกินไป ตัวแปรที่ไม่จำเป็น หรือการขาดดัชนี มักนำไปสู่ปัญหาคอขวด
กลยุทธ์การเพิ่มประสิทธิภาพ:
- ตัวแปรจำกัด: ใช้
KEEP=orDROP=เพื่อลดการใช้งานหน่วยความจำ - การเพิ่มประสิทธิภาพการเข้าร่วม: ใช้ตัวแปร BY ที่ทำดัชนีหรือ SQL ที่มีการจอยน์แบบแฮช
- หลีกเลี่ยงการจัดเรียงที่ไม่จำเป็น: การเรียงลำดับนั้นใช้ CPU หนัก ดังนั้นจะเรียงลำดับเฉพาะเมื่อจำเป็นเท่านั้น
- ใช้ WHERE แทน IF: WHERE กรองข้อมูลก่อนหน้านี้ในรอบ PDV
- ใช้ประโยชน์จากวัตถุแฮช: มีประสิทธิภาพสำหรับการค้นหาเมื่อเทียบกับ MERGE
ตัวอย่าง: ชุดข้อมูลที่มี 10 ล้านแถวสามารถประมวลผลได้เร็วขึ้นอย่างเห็นได้ชัดเมื่อมีการจัดทำดัชนี โดยลดเวลาการผสานข้อมูลจากนาทีเหลือเพียงวินาที
5) คุณควรใช้คำสั่ง SAS WHERE แทน IF ที่ไหน และมีข้อดีอะไรบ้าง
คำสั่ง WHERE จะถูกประมวลผลระหว่างการดึงข้อมูล ในขณะที่คำสั่ง IF จะทำงานหลังจากข้อมูลเข้าสู่ PDV ซึ่งหมายความว่า WHERE สามารถกรองข้อมูลได้เร็วขึ้น ลด I/O และเพิ่มประสิทธิภาพการทำงาน นอกจากนี้ WHERE ยังรองรับการทำดัชนี ทำให้สามารถแบ่งกลุ่มย่อยสำหรับชุดข้อมูลขนาดใหญ่ได้เร็วขึ้น
ข้อดีของ WHERE:
- กรองข้อมูลก่อนโหลดเข้าสู่ PDV
- รองรับดัชนีเพื่อการเลือกที่รวดเร็วยิ่งขึ้น
- ทำงานได้ทั้งในขั้นตอน DATA และขั้นตอน PROC
- จัดการตัวดำเนินการแบบ SQL
ตัวอย่าง:
set sales(where=(region='EUROPE'));
เวอร์ชันนี้โหลดเฉพาะข้อมูลยุโรปเท่านั้น ในขณะที่การใช้ IF จะโหลดข้อมูลทั้งหมดก่อนแล้วจึงกรอง ซึ่งทำให้เสียหน่วยความจำและเวลา
6) อธิบายตัวแปร SAS ประเภทต่างๆ รวมถึงตัวแปรตัวเลข ตัวแปรอักขระ ตัวแปรอัตโนมัติ และตัวแปรชั่วคราว
ตัวแปร SAS ถูกจัดประเภทตามลักษณะเฉพาะและวิธีที่ SAS ใช้งาน ตัวแปรตัวเลขและอักขระจะจัดเก็บข้อมูลที่ผู้ใช้กำหนด แต่ SAS ยังสร้างตัวแปรอัตโนมัติและตัวแปรชั่วคราวสำหรับการประมวลผลภายในอีกด้วย การทำความเข้าใจประเภทตัวแปรเหล่านี้จะช่วยให้การจัดการข้อมูลมีประสิทธิภาพและช่วยให้นักพัฒนาสามารถแก้ไขจุดบกพร่องได้ง่ายขึ้น
ประเภทของตัวแปร SAS:
- ตัวเลข: เก็บตัวเลขจริง ความยาวเริ่มต้นคือ 8 ไบต์
- ตัวอักษร: จัดเก็บสตริง ความยาวที่ผู้ใช้กำหนดหรืออนุมานได้
- ตัวแปรอัตโนมัติ: สร้างขึ้นโดย SAS เช่น
_N_(ตัวนับการวนซ้ำ) และ_ERROR_. - ตัวแปรชั่วคราว: สร้างขึ้นโดยใช้ LENGTH หรือ RETAIN โดยไม่ต้องเขียนลงในชุดข้อมูล
ตัวอย่าง: _N_ โดยทั่วไปใช้ในการประมวลผลเฉพาะการสังเกตครั้งแรกสำหรับงานเช่นการเริ่มต้นอาร์เรย์
7) ความแตกต่างระหว่าง PROC MEANS และ PROC SUMMARY คืออะไร? จงยกตัวอย่างประกอบ
ทั้งสองโพรซีเดอร์คำนวณสถิติเชิงพรรณนา แต่ PROC MEANS จะแสดงผลลัพธ์ตามค่าเริ่มต้น ในขณะที่ PROC SUMMARY ต้องใช้คำสั่ง OUTPUT ที่ชัดเจน ความแตกต่างระหว่างพฤติกรรมเริ่มต้นนี้ทำให้ PROC SUMMARY เหมาะสมกว่าสำหรับการสร้างชุดข้อมูลโดยไม่ต้องพิมพ์ผลลัพธ์ออกมา
การเปรียบเทียบ:
| คุณสมบัติ (Feature) | กระบวนการหมายถึง | สรุปกระบวนการ |
|---|---|---|
| เอาท์พุต | พิมพ์ตามค่าเริ่มต้น | ไม่มีการพิมพ์ผลลัพธ์ |
| ใช้กรณี | การดูสถิติอย่างรวดเร็ว | สร้างชุดข้อมูลสรุป |
ตัวอย่าง:
proc means data=sales; var revenue; run; shows results immediately.proc summary data=sales; var revenue; output out=summary_stats sum=Total; run;สร้างชุดข้อมูลเท่านั้น
8) ดัชนี SAS ทำงานอย่างไร และมีประโยชน์อย่างไรสำหรับชุดข้อมูลขนาดใหญ่?
ดัชนีใน SAS ทำหน้าที่เหมือนดัชนีของหนังสือ คือช่วยเร่งความเร็วในการดึงข้อมูลโดยหลีกเลี่ยงการสแกนชุดข้อมูลทั้งหมด ดัชนีจะจัดเก็บตัวชี้ที่เรียงลำดับไปยังข้อมูลสังเกตโดยอิงตามตัวแปรสำคัญ ดัชนีมีประโยชน์อย่างยิ่งสำหรับชุดข้อมูลขนาดใหญ่และการค้นหาแบบซ้ำๆ
ประโยชน์ที่ได้รับ:
- การประมวลผล WHERE ที่รวดเร็วยิ่งขึ้น
- ประสิทธิภาพการเข้าร่วมที่ได้รับการปรับปรุง
- ลดการดำเนินการ I/O
- ปรับปรุงการดำเนินการ MERGE ด้วยคำสั่ง BY
ตัวอย่าง: การสร้างดัชนีบน Customer_ID ในตารางที่มี 15 ล้านแถวนั้น SAS สามารถดึงข้อมูลลูกค้าเฉพาะได้เกือบจะทันที ในขณะที่หากไม่มีการสร้างดัชนี SAS จะต้องอ่านชุดข้อมูลทั้งหมดตามลำดับ
9) วัตถุแฮชใน SAS มีข้อได้เปรียบเหนือคำสั่ง MERGE แบบดั้งเดิมหรือไม่? อธิบายพร้อมยกตัวอย่าง
วัตถุแฮชมีกลไกการค้นหาในหน่วยความจำ ทำให้เร็วกว่า MERGE อย่างมากสำหรับการค้นหาแบบหลายต่อหนึ่ง วัตถุแฮชหลีกเลี่ยงการเรียงลำดับ ลด I/O และจัดการตารางการค้นหาขนาดใหญ่ได้อย่างมีประสิทธิภาพ วงจรชีวิตของวัตถุแฮชจะเกิดขึ้นเฉพาะในขั้นตอน DATA เท่านั้น จึงเหมาะอย่างยิ่งสำหรับการเชื่อมต่อแบบชั่วคราว
ข้อดี:
- ไม่จำเป็นต้องจัดเรียงข้อมูล
- การค้นหาที่รวดเร็วยิ่งขึ้น
- มีประสิทธิภาพสำหรับชุดข้อมูลแบบมิติ
- ใช้หน่วยความจำ ลด I/O ของดิสก์
ตัวอย่าง: การใช้แฮชออบเจ็กต์เพื่อจับคู่ข้อมูลหลักของลูกค้า (300 แถว) กับธุรกรรม (50 ล้านแถว) ส่งผลให้ประสิทธิภาพการทำงานดีขึ้นอย่างมากเมื่อเทียบกับ MERGE ซึ่งต้องใช้ข้อมูลที่เรียงลำดับและผ่านหลายครั้ง
10) ฟังก์ชัน SAS มีกี่ประเภท และมีการใช้งานในสถานการณ์จริงอย่างไร
SAS นำเสนอฟังก์ชันมากมายที่จัดหมวดหมู่ตามวัตถุประสงค์การใช้งาน เช่น ฟังก์ชันทางคณิตศาสตร์ ฟังก์ชันอักขระ ฟังก์ชันวันที่/เวลา ฟังก์ชันสถิติ และฟังก์ชันพิเศษ ฟังก์ชันเหล่านี้ช่วยเพิ่มประสิทธิภาพ ความแม่นยำ และความสามารถในการอ่านข้อมูลในการประมวลผล
ประเภทที่สำคัญ:
- ฟังก์ชั่นตัวละคร:
SCAN, UPCASE, SUBSTRสำหรับการประมวลผลข้อความ - ฟังก์ชั่นวันที่:
INTNX, INTCK, MDYสำหรับการจัดการวันที่ - ฟังก์ชันทางคณิตศาสตร์:
ROUND, SUM, ABS - ฟังก์ชันสถิติ:
MEAN, STD, VAR
ตัวอย่าง: นักวิเคราะห์ธุรกิจสามารถคำนวณอายุลูกค้าโดยใช้ฟังก์ชันวันที่ INTCK('year', BirthDate, Today())เพื่อให้มั่นใจถึงการแบ่งกลุ่มประชากรได้อย่างแม่นยำ
11) คำสั่ง RETAIN ทำงานอย่างไรใน SAS และมีข้อดีในทางปฏิบัติอะไรบ้าง
คำสั่ง RETAIN จะสั่งให้ SAS ไม่รีเซ็ตค่าตัวแปรเป็นค่าสูญหายเมื่อเริ่มต้นการวนซ้ำแต่ละขั้นตอนของ DATA โดยปกติ SAS จะกำหนดค่าเริ่มต้นให้ตัวแปรเป็นค่าสูญหายในระหว่างการวนซ้ำแต่ละครั้ง แต่ RETAIN จะรักษาค่าของการวนซ้ำก่อนหน้าไว้ ความสามารถนี้จำเป็นสำหรับการคำนวณแบบสะสม การกำหนดหมายเลขลำดับ และการนำค่าไปต่อ คำสั่ง RETAIN ยังปรากฏโดยปริยายเมื่อใช้คำสั่ง SUM (var + expression).
ประโยชน์ที่ได้รับ:
- รักษาผลรวมการทำงาน
- รักษาค่าที่ไม่หายไปก่อนหน้านี้
- หลีกเลี่ยงตัวแปรชั่วคราวที่ไม่จำเป็น
- ช่วยนำตรรกะการมองย้อนกลับไปใช้
ตัวอย่าง:
retain Total_Sales 0; Total_Sales + Sales;
โค้ดนี้สร้างผลรวมสะสมจากการสังเกตโดยไม่ต้องมีลูปภายนอก
12) ความแตกต่างระหว่างขั้นตอน DATA MERGE และ PROC SQL JOIN ใน SAS คืออะไร? ระบุสถานการณ์ที่ต้องการใช้ทั้งสองอย่าง
MERGE ต้องใช้ชุดข้อมูลที่เรียงลำดับไว้ล่วงหน้าและทำงานบนตัวแปร BY ในขณะที่ SQL JOIN ไม่จำเป็นต้องเรียงลำดับและสามารถจัดการความสัมพันธ์ที่ซับซ้อนกว่าได้ MERGE มีประสิทธิภาพสำหรับความสัมพันธ์แบบหนึ่งต่อหนึ่งหรือหนึ่งต่อหลาย เมื่อชุดข้อมูลได้รับการเรียงลำดับและทำความสะอาดแล้ว SQL JOIN มีความยืดหยุ่นมากกว่า รองรับการรวมข้อมูลแบบ inner, left, right และ full join พร้อมด้วยเงื่อนไข นิพจน์ และการกรองขั้นสูงภายในการรวมข้อมูลเอง
เมื่อใดควรใช้ MERGE:
- ข้อมูลได้รับการจัดเรียงเรียบร้อยแล้ว
- ตัวแปร BY ตรงกันอย่างสมบูรณ์แบบ
- ต้องการพฤติกรรมขั้นตอนข้อมูล SAS ที่กำหนดแน่นอน
เมื่อใดควรใช้ SQL JOIN:
- ต้องมีการรวมภายนอก
- ชุดข้อมูลประกอบด้วยค่าที่ขาดหายไปหรือไม่ตรงกัน
- จำเป็นต้องมีตรรกะการรวมที่ซับซ้อน
ตัวอย่าง: การเพิ่มข้อมูลการขายด้วยรายละเอียดข้อมูลประชากรของลูกค้า มักใช้ SQL เพื่อความสะดวกและอ่านง่าย
13) ตัวแปรอัตโนมัติ SAS คืออะไร และมีไว้ทำอะไร N และ ข้อผิดพลาด ปกติแล้วจะใช้?
ตัวแปรอัตโนมัติถูกสร้างและจัดการภายในโดย SAS ในระหว่างการดำเนินการขั้นตอน DATA ตัวแปรเหล่านี้ไม่ได้ถูกเขียนลงในชุดข้อมูล แต่ช่วยให้ SAS จัดการข้อมูลได้ track รอบการประมวลผลและข้อผิดพลาด _N_ นับจำนวนการวนซ้ำขั้นตอนข้อมูล ทำให้มีประโยชน์สำหรับการดำเนินการตามเงื่อนไขหรือการดีบักแถวที่เจาะจง _ERROR_ เป็นตัวบ่งชี้ไบนารีที่กลายเป็น 1 เมื่อ SAS พบข้อผิดพลาดในการดำเนินการ
ใช้กรณี:
- รันโค้ดการเริ่มต้นเฉพาะการสังเกตครั้งแรกเท่านั้น:
if _N_=1 then put 'Start'; - จับแถวที่มีปัญหาโดยใช้
_ERROR_เพื่อการตรวจสอบคุณภาพ
ตัวอย่าง: _N_ มักใช้เพื่อโหลดวัตถุแฮชเพียงครั้งเดียวเพื่อให้แน่ใจว่าใช้หน่วยความจำได้อย่างเหมาะสมที่สุด
14) อธิบายประเภทต่างๆ ของอาร์เรย์ SAS และวิธีที่ทำให้การแปลงข้อมูลง่ายขึ้น
อาร์เรย์ SAS จัดกลุ่มตัวแปรที่เกี่ยวข้องภายใต้ชื่อเดียว ช่วยให้สามารถประมวลผลแบบวนซ้ำได้ ซึ่งช่วยลดความซ้ำซ้อนของโค้ด อาร์เรย์ไม่ได้สร้างตัวแปรใหม่ แต่มีวิธีการอ้างอิงตัวแปรที่มีอยู่แล้วอย่างมีโครงสร้าง ประเภทที่พบมากที่สุดคือ อาร์เรย์ตัวเลข, อาร์เรย์อักขระและ อาร์เรย์ชั่วคราวอาร์เรย์ชั่วคราวมีอยู่เฉพาะในระหว่างขั้นตอน DATA และจะไม่ปรากฏในชุดข้อมูลเอาต์พุต
ประโยชน์ที่ได้รับ:
- ลดความซับซ้อนในการจัดการตัวแปรที่ซ้ำกัน (เช่น ค่ารายเดือน)
- เปิดใช้งานลูปเพื่อลดความซ้ำซ้อนของโค้ด
- รองรับการแปลงแบบมีเงื่อนไขระหว่างกลุ่มตัวแปร
ตัวอย่าง: การแปลงคะแนนสอบหลายรายการเป็นเปอร์เซ็นต์สามารถทำได้โดยใช้ลูป DO บนอาร์เรย์แทนที่จะเขียนคำสั่งแยกกัน 10 คำสั่ง
15) ค่าที่หายไปมีประเภทใดบ้างใน SAS และ SAS จัดการกับค่าเหล่านี้ในระหว่างการเรียงลำดับและการคำนวณอย่างไร
SAS รองรับค่าที่หายไปหลายประเภท ได้แก่ ค่าที่หายไปแบบตัวเลขทั่วไปที่แสดงเป็น “.” และค่าที่หายไปแบบตัวเลขพิเศษ เช่น “.A” ถึง “.Z” ค่าอักขระที่หายไปทั้งหมดจะแสดงเป็นช่องว่าง ประเภทต่างๆ เหล่านี้ช่วยให้นักวิเคราะห์สามารถเข้ารหัสหมวดหมู่ของค่าที่หายไปได้ เช่น “ไม่เกี่ยวข้อง” หรือ “ปฏิเสธที่จะตอบ”
ในระหว่างการเรียงลำดับ SAS จะใส่ค่าตัวเลขที่หายไปทั้งหมดก่อนตัวเลขจริงใดๆ ในการคำนวณ ค่าที่หายไปมักจะแพร่กระจาย ทำให้ผลลัพธ์หายไป เว้นแต่จะจัดการอย่างชัดเจนด้วยฟังก์ชันเช่น SUM() ซึ่งละเลยค่าที่หายไป
ตัวอย่าง: เมื่อวิเคราะห์การสำรวจ .A อาจหมายถึง “ไม่มีการตอบสนอง” ในขณะที่ .B อาจหมายถึง “ข้อผิดพลาดของระบบ”
16) การประมวลผล BY-group และตัวแปร FIRST./LAST. มีข้อดีอะไรบ้าง
การประมวลผลแบบ BY-group ช่วยให้ SAS สามารถจัดการข้อมูลที่เรียงลำดับแล้วเป็นกลุ่มย่อยที่จัดกลุ่มแล้ว ซึ่งช่วยให้สามารถดำเนินการต่างๆ ได้อย่างมีประสิทธิภาพ เช่น การสรุปสะสม การแปลงข้อมูลระดับกลุ่ม และการรายงานเฉพาะกลุ่ม FIRST.variable และ LAST.variable เป็นตัวบ่งชี้ชั่วคราวที่สร้างขึ้นโดยอัตโนมัติระหว่างการประมวลผลแบบ BY-group โดยตัวบ่งชี้เหล่านี้จะระบุจุดเริ่มต้นและจุดสิ้นสุดของการสังเกตของแต่ละกลุ่ม
ข้อดี:
- ลดความซับซ้อนในการคำนวณผลรวมกลุ่ม
- ช่วยให้สามารถประมวลผลข้อมูลแบบลำดับชั้นได้
- ลดตรรกะด้วยตนเองสำหรับกลุ่มหลายแถว
- รองรับโค้ดที่สะอาดกว่าสำหรับการแปลงลำดับเวลา
ตัวอย่างสถานการณ์: ในการคำนวณรายได้รวมต่อลูกค้า สามารถสะสมค่าได้จนถึง LAST.Customer_ID ทริกเกอร์การเขียนลงในชุดข้อมูลสรุป
17) PROC TRANSPOSE ทำงานอย่างไร และเมื่อใดควรเลือกใช้การเปลี่ยนสถานะแทนการปรับโครงสร้างใหม่ด้วยอาร์เรย์
PROC TRANSPOSE ปรับเปลี่ยนรูปแบบข้อมูลโดยการหมุนตัวแปรไปยังข้อมูลการสังเกตหรือในทางกลับกัน เหมาะอย่างยิ่งเมื่อข้อมูลจำเป็นต้องมีการหมุนเพื่อการวิเคราะห์ การรายงาน หรือการผสานเข้ากับระบบอื่นๆ ประโยชน์หลักคือการทำงานอัตโนมัติ — PROC TRANSPOSE สามารถจัดการจำนวนตัวแปรแบบไดนามิกและทำงานได้ดีกับโครงสร้างสคีมาที่ไม่รู้จักหรือกำลังพัฒนา
ใช้เมื่อ:
- จำเป็นต้องแปลงข้อมูลกว้างเป็นรูปแบบยาวหรือย้อนกลับ
- จำนวนตัวแปรมีขนาดใหญ่หรือไม่สามารถคาดเดาได้
- ชุดข้อมูลแหล่งที่มามีการเปลี่ยนแปลงบ่อยครั้ง
อาร์เรย์จะดีกว่าเมื่อทราบชื่อตัวแปรและสามารถวนซ้ำตรรกะการแปลงได้อย่างมีประสิทธิภาพ
ตัวอย่าง: การแปลงตัวแปรยอดขายรายไตรมาส (ไตรมาสที่ 1, ไตรมาสที่ 2, ไตรมาสที่ 3, ไตรมาสที่ 4) ให้เป็นโครงสร้างแนวตั้งสำหรับการวิเคราะห์ลำดับเวลา
18) การใช้ SAS macro มีข้อดีและข้อเสียอะไรบ้าง? ยกตัวอย่างจริงมาด้วย
แมโคร SAS ช่วยทำงานซ้ำ ๆ โดยอัตโนมัติด้วยการสร้างโค้ดแบบไดนามิก ซึ่งช่วยเพิ่มประสิทธิภาพและความสอดคล้อง แมโครช่วยกำหนดพารามิเตอร์ตรรกะ สร้างกระบวนการหลายขั้นตอน และสร้างยูทิลิตี้ที่นำกลับมาใช้ใหม่ได้ อย่างไรก็ตาม หากเขียนมาโครไม่ดี แมโครก็อาจทำให้เกิดความซับซ้อนและความท้าทายในการดีบักได้เช่นกัน
ตารางข้อดีและข้อเสีย:
| ข้อดี | ข้อเสีย |
|---|---|
| การเขียนโค้ดซ้ำๆ โดยอัตโนมัติ | การดีบักอาจเป็นเรื่องยาก |
| ปรับปรุงความสามารถในการบำรุงรักษา | สามารถบดบังการไหลของโปรแกรมได้ |
| เปิดใช้งานการสร้างตรรกะแบบไดนามิก | การใช้งานมากเกินไปทำให้โค้ดอ่านไม่ออก |
| ลดข้อผิดพลาดด้วยตนเอง | ต้องเรียนรู้ภาษาแมโคร |
ตัวอย่าง: การสร้างรายงานรายสัปดาห์แบบแมโครสำหรับภูมิภาคต่างๆ โดยใช้เทมเพลตเดียวช่วยลดเวลาในการพัฒนาลงอย่างมาก
19) คุณสามารถอธิบายความแตกต่างระหว่างตัวแปรมาโครและตัวแปรขั้นตอนข้อมูลพร้อมตัวอย่างได้หรือไม่?
ตัวแปรแมโครจะถูกแก้ไขในระหว่างการคอมไพล์และทำงานเป็นเครื่องมือแทนที่ข้อความ ในขณะที่ตัวแปรขั้นตอน DATA จะยังคงอยู่ระหว่างการดำเนินการขั้นตอน DATA และเก็บค่าข้อมูลจริง ตัวแปรแมโครไม่สามารถโต้ตอบกับ PDV โดยตรงได้ เว้นแต่จะถูกส่งผ่านหรืออ้างอิงอย่างชัดเจน
ความแตกต่างที่สำคัญ:
- มาโคร: ระดับโลกหรือระดับท้องถิ่น ประเมินก่อนดำเนินการ
- ขั้นตอนข้อมูล: สร้างแถวต่อแถวในระหว่างการดำเนินการ
- ตัวแปรแมโครไม่เก็บชนิดตัวเลข แต่จะเก็บข้อความ
- ตัวแปร DATA อาจเป็นตัวเลขหรืออักขระก็ได้
ตัวอย่าง:
%let threshold = 100; if sales > &threshold then flag='High';
ที่นี่ตัวแปรแมโครจะแทรกค่า 100 แต่การเปรียบเทียบจะเกิดขึ้นในขณะดำเนินการ
20) ประเภทการเข้าร่วมใน PROC SQL มีอะไรบ้าง และแตกต่างกันอย่างไรในการใช้งานจริง
PROC SQL รองรับการรวมข้อมูลหลายประเภท ได้แก่ การรวมข้อมูลแบบ Inner, Left, Right และ Full Join ซึ่งแต่ละประเภทจะช่วยแก้ปัญหาการประมวลผลข้อมูลที่แตกต่างกัน Inner Join จะเก็บเรคคอร์ดที่ตรงกัน ในขณะที่ Outer Join จะเก็บแถวที่ไม่ตรงกันจากชุดข้อมูลใดชุดหนึ่งหรือทั้งสองชุด FULL JOIN มีประสิทธิภาพอย่างยิ่งในการปรับข้อมูลให้ตรงกัน เนื่องจากช่วยเน้นความไม่ตรงกัน
การเปรียบเทียบประเภทการเข้าร่วม:
| ประเภทการเข้าร่วม | ลักษณะ | ตัวอย่างการใช้งานกรณี |
|---|---|---|
| INNER | เฉพาะแถวที่ตรงกันเท่านั้น | ลูกค้าที่มีธุรกรรมที่ถูกต้อง |
| LEFT | ทั้งหมดซ้าย + ตรงกับขวา | รักษาลูกค้าทุกคนไว้แม้จะไม่มีการซื้อ |
| ขวา | ขวาทั้งหมด + จับคู่ซ้าย | เก็บรักษาธุรกรรมทั้งหมดไว้แม้จะไม่มีข้อมูลลูกค้า |
| เต็ม | ทุกแถว ตรงกันหรือไม่ | การตรวจสอบข้อมูลระหว่างระบบ |
ตัวอย่าง: การตรวจสอบการขายระหว่างระบบ CRM และระบบเรียกเก็บเงินโดยทั่วไปจะต้องอาศัย FULL JOIN เพื่อระบุความคลาดเคลื่อน
21) SAS จัดการการแปลงอักขระเป็นตัวเลขและตัวเลขเป็นอักขระอย่างไร และโดยทั่วไปจะมีปัญหาอะไรบ้าง
SAS จะทำการแปลงค่าโดยปริยายโดยอัตโนมัติเมื่อใช้ค่าตัวเลขในตำแหน่งที่คาดว่าจะเป็นอักขระ หรือในทางกลับกัน แต่การทำเช่นนี้อาจทำให้เกิดคำเตือนหรือค่าที่ไม่ถูกต้อง การแปลงค่าโดยปริยายโดยใช้ PUT() และ INPUT() ให้การควบคุมที่แม่นยำและหลีกเลี่ยงความคลุมเครือ การแปลงอักขระเป็นตัวเลขต้องใช้ข้อมูลประกอบ ในขณะที่การแปลงตัวเลขเป็นอักขระต้องใช้รูปแบบ
ปัญหาที่พบบ่อย ได้แก่ ความยาวไม่ตรงกัน ข้อมูลไม่ถูกต้อง และข้อมูลที่ไม่ถูกต้องทำให้ค่าหายไป การแปลงโดยปริยายจะสร้างหมายเหตุในบันทึกเสมอ ซึ่งเป็นสัญญาณบ่งชี้ถึงปัญหาคุณภาพข้อมูลที่อาจเกิดขึ้น
ตัวอย่าง:
- แปลง char → numeric:
num = input(char_date, yymmdd8.); - แปลงตัวเลข → อักขระ:
char = put(amount, dollar12.2);
22) Program Data Vector (PDV) มีบทบาทอย่างไรในการประมวลผล SAS และการทำความเข้าใจ PDV จะช่วยปรับปรุงการออกแบบโปรแกรมได้อย่างไร
PDV คือโครงสร้างพื้นที่หน่วยความจำที่ SAS ใช้สร้างการสังเกตระหว่างการดำเนินการขั้นตอนข้อมูล (DATA step execution) โดยจะเก็บค่าตัวแปร ตัวแปรอัตโนมัติ และตัวแปรชั่วคราวสำหรับการวนซ้ำแต่ละครั้ง PDV จะรีเซ็ตเมื่อเริ่มต้นแต่ละรอบ เว้นแต่จะเก็บตัวแปรไว้โดยใช้กลไกต่างๆ เช่น คำสั่ง RETAIN หรือ SUM
การทำความเข้าใจพฤติกรรมของ PDV จะช่วยอธิบายสาเหตุของค่าที่หายไป วิธีการทำงานของอาร์เรย์ และการทำงานของตรรกะ FIRST./LAST. นอกจากนี้ยังช่วยในการปรับแต่งประสิทธิภาพ เนื่องจากนักพัฒนาสามารถคาดการณ์การใช้งานหน่วยความจำและหลีกเลี่ยงการสร้างตัวแปรที่ไม่จำเป็น
ตัวอย่าง: การเก็บรักษาค่าตัวแปรโดยไม่ได้ตั้งใจ มักเกิดจากการใช้คำสั่ง SUM โดยที่ SAS ใช้คำสั่ง RETAIN โดยปริยาย
23) ดัชนี SAS มีประเภทใดบ้าง และคุณควรเลือกระหว่างดัชนีแบบง่ายและแบบผสมอย่างไร
SAS รองรับ ง่าย และ ประกอบด้วย ดัชนี ดัชนีแบบง่ายจะสร้างขึ้นจากตัวแปรตัวเดียว ในขณะที่ดัชนีแบบผสมจะรวมตัวแปรสองตัวหรือมากกว่าเข้าด้วยกัน การเลือกดัชนีจะขึ้นอยู่กับรูปแบบการค้นหา: หากการค้นหาส่วนใหญ่ใช้คีย์เดียว เช่น Customer_IDดัชนีแบบง่ายก็เพียงพอแล้ว หากแบบสอบถามโดยทั่วไปกรองตัวแปรหลายตัว เช่น State และ Categoryดัชนีรวมจะช่วยปรับปรุงประสิทธิภาพ
ตารางเปรียบเทียบ:
| ประเภทดัชนี | ลักษณะ | กรณีใช้งานที่ดีที่สุด |
|---|---|---|
| ง่าย | ตัวแปรหนึ่ง | การค้นหาตัวระบุที่ไม่ซ้ำกัน |
| ประกอบด้วย | ตัวแปรหลายตัว | ตัวกรอง WHERE หลายเงื่อนไข |
ตัวอย่าง: ดัชนีรวมบน (Region, Product) เร่งความเร็วการวิเคราะห์ผลิตภัณฑ์ในแต่ละภูมิภาค
24) อธิบายข้อดีของการใช้ PROC FORMAT และรูปแบบที่ผู้ใช้กำหนดช่วยปรับปรุงการตีความได้อย่างไร
PROC FORMAT ช่วยให้นักพัฒนาสามารถกำหนดป้ายกำกับที่มีความหมายให้กับค่าที่เข้ารหัสได้ ซึ่งช่วยเพิ่มความสามารถในการอ่านรายงาน ความสอดคล้องกันระหว่างกระบวนการ และการควบคุมการตีความข้อมูล รูปแบบที่ผู้ใช้กำหนดขึ้นทำหน้าที่เหมือนตารางค้นหา และสามารถลดความจำเป็นในการรวมข้อมูลหรือตรรกะ CASE รูปแบบเหล่านี้สามารถนำกลับมาใช้ซ้ำได้ในชุดข้อมูลและกระบวนการต่างๆ ช่วยเพิ่มความสามารถในการบำรุงรักษา
ตัวอย่าง:
การสร้างรูปแบบสำหรับ 1=Male และ 2=Female ช่วยให้ PROC FREQ หรือ PROC REPORT แสดงป้ายกำกับอธิบายโดยอัตโนมัติ เช่นเดียวกัน ช่วงรายได้สามารถจัดกลุ่มได้โดยใช้รูปแบบค่าที่กำหนดเองสำหรับการวิเคราะห์การแบ่งกลุ่ม
ข้อได้เปรียบหลักคือข้อมูลพื้นฐานยังคงไม่เปลี่ยนแปลงในขณะที่ข้อมูลที่แสดงสามารถตีความได้มากขึ้น
25) PROC SORT ทำงานภายในอย่างไร และตัวเลือกใดที่ช่วยเพิ่มประสิทธิภาพการเรียงลำดับชุดข้อมูลขนาดใหญ่
PROC SORT จัดเรียงข้อมูลสังเกตใหม่โดยอิงจากตัวแปรหนึ่งตัวหรือมากกว่า อย่างไรก็ตาม อาจต้องใช้ทรัพยากรมาก โดยเฉพาะอย่างยิ่งสำหรับชุดข้อมูลขนาดใหญ่ ภายใน SAS จะสร้างไฟล์ยูทิลิตี้ชั่วคราว ทำการผสานข้อมูลที่ถูกเรียงลำดับแล้ว และเขียนผลลัพธ์ลงในชุดข้อมูลเอาต์พุต
สามารถปรับปรุงประสิทธิภาพได้โดย:
- การใช้
SORTEDBY=สำหรับการเพิ่มประสิทธิภาพข้อมูลเมตา - การประยุกต์ใช้
NODUPKEYorNODUPRECเพื่อลบข้อมูลซ้ำซ้อนอย่างมีประสิทธิภาพ - การเรียงลำดับเฉพาะตัวแปรที่จำเป็นโดยใช้
KEEP=orDROP= - การใช้ดัชนีแทนการเรียงลำดับทางกายภาพสำหรับการดำเนินการบางอย่าง
ตัวอย่าง: การเรียงลำดับ 50 ล้านแถวจะเร็วขึ้นเมื่ออ่านเฉพาะตัวแปรที่จำเป็น 3 ตัวแทนที่จะอ่านทั้ง 100 ฟิลด์ในชุดข้อมูล
26) เหตุใดคำสั่ง LENGTH จึงมีความสำคัญใน SAS และการกำหนดความยาวที่ไม่ถูกต้องส่งผลต่อข้อมูลอย่างไร
คำสั่ง LENGTH กำหนดขนาดพื้นที่เก็บข้อมูลของตัวแปรอักขระ และส่งผลต่อการใช้งานหน่วยความจำ ความเสี่ยงในการตัดทอน และความแม่นยำของผลลัพธ์ SAS กำหนดค่าความยาวอักขระเริ่มต้นตามการกำหนดค่าครั้งแรกที่พบ ซึ่งอาจทำให้เกิดการตัดทอนหากค่าที่ยาวกว่าปรากฏขึ้นในภายหลัง คำสั่ง LENGTH ที่ชัดเจนช่วยป้องกันปัญหานี้และรับประกันความสอดคล้องกันในทุกขั้นตอนของ DATA
ความยาวที่ไม่ถูกต้องอาจทำให้สตริงถูกตัดทอน หมวดหมู่ถูกจัดประเภทไม่ถูกต้อง หรือผลลัพธ์ที่ไม่คาดคิดในการรวมเนื่องจากคีย์ไม่ตรงกัน
ตัวอย่าง: การตั้งค่า length ProductName $50; ช่วยให้แน่ใจว่าชื่อเต็มจะถูกเก็บไว้แม้ว่าค่าแรกในชุดข้อมูลจะสั้นกว่าก็ตาม
27) วัตถุประสงค์ของคำสั่งคอมไพเลอร์ SAS เช่น %PUT, %EVAL และ %SYSFUNC ในการประมวลผลแมโครคืออะไร
คำสั่งคอมไพเลอร์ หรือที่เรียกว่าฟังก์ชันแมโคร จะช่วยเพิ่มประสิทธิภาพการประมวลผลแมโครด้วยการเปิดใช้งานการประเมิน การบันทึก และการเรียกฟังก์ชันในระหว่างเวลาคอมไพล์ %PUT เขียนข้อความลงในบันทึกเพื่อแก้ไขข้อบกพร่อง %EVAL ดำเนินการเลขคณิตจำนวนเต็มบนตัวแปรแมโคร และ %SYSFUNC เรียกใช้ฟังก์ชันขั้นตอน DATA ภายในโค้ดแมโคร
เครื่องมือเหล่านี้ช่วยปรับปรุงความสามารถการเขียนโปรแกรมแบบไดนามิกโดยอนุญาตให้จัดการตัวแปรแมโครได้แม่นยำยิ่งขึ้น
ตัวอย่าง:
%let today = %sysfunc(today(), date9.); %put Current Date: &today;
ซึ่งจะสร้างวันที่จัดรูปแบบในเวลาคอมไพล์แมโคร
28) SAS จัดการกับข้อผิดพลาด คำเตือน และบันทึกอย่างไร และเหตุใดการตรวจสอบบันทึกจึงมีความจำเป็น
บันทึกของ SAS แบ่งประเภทปัญหาออกเป็นสามประเภท ได้แก่ ข้อผิดพลาด คำเตือน และหมายเหตุ ข้อผิดพลาดขัดขวางการทำงานของโปรแกรมหรือการสร้างชุดข้อมูล คำเตือนบ่งชี้ถึงปัญหาที่อาจเกิดขึ้น และหมายเหตุแสดงข้อความแจ้งข้อมูล รวมถึงการแปลงค่าโดยนัยและตัวแปรที่ไม่ได้กำหนดค่าเริ่มต้น การตรวจสอบบันทึกช่วยรับรองความถูกต้องของข้อมูล ป้องกันความล้มเหลวแบบเงียบ และระบุจุดคอขวดของประสิทธิภาพ
การละเว้นบันทึกอาจทำให้เกิดข้อผิดพลาดที่ไม่คาดคิด เช่น การจัดการข้อมูลที่ไม่ถูกต้อง ตัวแปรที่ถูกตัดทอน หรือการผสานที่ไม่ได้ตั้งใจ
ตัวอย่าง: หมายเหตุเกี่ยวกับ "ค่าอักขระได้รับการแปลงเป็นตัวเลขแล้ว" แสดงถึงการแปลงโดยนัยซึ่งอาจทำให้เกิดค่าที่หายไป
29) คุณสามารถใช้เทคนิคใดเพื่อตรวจสอบคุณภาพข้อมูลใน SAS ก่อนการวิเคราะห์หรือการรายงาน?
การตรวจสอบความถูกต้องของข้อมูลใน SAS อาศัยการตรวจสอบทางสถิติ การตรวจสอบโครงสร้าง และการตรวจสอบกฎทางธุรกิจ เทคนิคต่างๆ ประกอบด้วยการใช้ PROC FREQ เพื่อตรวจจับหมวดหมู่ที่ไม่คาดคิด, PROC MEANS สำหรับค่าผิดปกติ, PROC COMPARE สำหรับการตรวจสอบความถูกต้องของชุดข้อมูล และแบบสอบถามการตรวจสอบความถูกต้องของ PROC SQL การตรวจสอบความถูกต้องแบบกำหนดเองด้วยตรรกะ IF-THEN, การตรวจสอบ FIRST./LAST. หรือการค้นหาแฮช ช่วยให้การประเมินกฎมีความละเอียดมากขึ้น
เทคนิคทั่วไป:
- การตรวจสอบช่วงโดยใช้เงื่อนไข IF
- การตรวจจับข้อมูลซ้ำด้วย PROC SORT + NODUPKEY
- รูปแบบค่าที่หายไปโดยใช้ PROC FREQ
- การตรวจสอบแบบตารางไขว้โดยใช้ PROC TABULATE
ตัวอย่าง: การใช้ PROC COMPARE เพื่อตรวจสอบข้อมูลที่ย้ายระหว่างระบบช่วยให้มั่นใจถึงความสอดคล้องกันทั้งในระดับโครงสร้างและค่า
30) คุณควรใช้ SAS ODS (Output Delivery System) เมื่อใด และมีข้อดีอย่างไรต่อการรายงาน?
ODS ควบคุมการจัดรูปแบบผลลัพธ์ ช่วยให้กระบวนการ SAS สามารถแสดงผลลัพธ์ในรูปแบบ HTML, PDF, Excel, RTF และรูปแบบอื่นๆ ได้ ระบบนี้แยกการสร้างข้อมูลจากการนำเสนอข้อมูล พร้อมความสามารถในการจัดรูปแบบ เทมเพลต และการกำหนดเส้นทางผลลัพธ์ นักวิเคราะห์ใช้ ODS เพื่อรายงานที่ปรับแต่งได้และดูเป็นมืออาชีพ
ข้อดี:
- รองรับรูปแบบเอาต์พุตหลายรูปแบบ
- เปิดใช้งานตาราง กราฟ และเทมเพลตที่มีสไตล์
- อนุญาตให้จับชุดข้อมูลเอาต์พุตโดยใช้ ODS OUTPUT
- ปรับปรุงการทำงานอัตโนมัติสำหรับรายงานที่เกิดขึ้นซ้ำ
ตัวอย่าง: การสร้างแดชบอร์ดประสิทธิภาพรายสัปดาห์อัตโนมัติใน Excel ผ่านทาง ODS Excel ปรับปรุงกระบวนการทำงานการรายงานให้มีประสิทธิภาพ
31) คำสั่ง INFILE ใน SAS ทำงานอย่างไร และตัวเลือกใดที่ช่วยควบคุมการอ่านไฟล์ดิบ
คำสั่ง INFILE จะบอก SAS ถึงวิธีการอ่านไฟล์ข้อมูลดิบภายนอก คำสั่งนี้ทำงานร่วมกับคำสั่ง INPUT เพื่อแมปข้อความแบบคงที่ แบบมีตัวคั่น หรือแบบผสมลงในชุดข้อมูลที่มีโครงสร้าง ตัวเลือก INFILE ให้การควบคุมโดยละเอียดเกี่ยวกับความยาวเรกคอร์ด การจัดการตัวคั่น ข้อมูลที่หายไป และตัวชี้บรรทัด
ตัวเลือกที่มีประโยชน์ได้แก่ ดล.= สำหรับตัวแบ่งที่กำหนดเอง มิสโซเวอร์ เพื่อป้องกันไม่ให้ SAS อ่านเกินขอบเขตของฟิลด์ที่มีอยู่ เฟิร์สทอบส์= เพื่อระบุเส้นเริ่มต้น LRECL= สำหรับบันทึกยาวและ ทรันโคเวอร์ สำหรับบรรทัดที่มีความยาวแปรผัน ตัวเลือกเหล่านี้ช่วยให้มั่นใจได้ว่าข้อมูลจะถูกนำเข้าอย่างสม่ำเสมอ แม้จากไฟล์ที่มีการจัดรูปแบบไม่ถูกต้อง
ตัวอย่าง:
infile "sales.txt" dlm="," missover dsd lrecl=300;
การกำหนดค่านี้จะป้องกันไม่ให้มีฟิลด์ท้ายหายไปและค่าที่มีเครื่องหมายคำพูด
32) ไลบรารี SAS มีประเภทใดบ้าง และมีการใช้งานในสภาพแวดล้อมองค์กรอย่างไร
ไลบรารี SAS ทำหน้าที่เป็นตัวชี้ไปยังตำแหน่งจัดเก็บข้อมูลที่จัดเก็บชุดข้อมูล แคตตาล็อก และไฟล์ SAS อื่นๆ ไลบรารีอาจเป็นแบบชั่วคราวหรือถาวร และตัวเลือกขึ้นอยู่กับความต้องการในการคงอยู่และสถาปัตยกรรมของแพลตฟอร์ม
ประเภทของห้องสมุด:
- ห้องสมุดงาน: พื้นที่เก็บข้อมูลชั่วคราวที่จะหายไปเมื่อสิ้นสุดเซสชัน
- ห้องสมุดถาวร: สร้างขึ้นโดยใช้ LIBNAME ที่ชี้ไปยังตำแหน่งของดิสก์หรือฐานข้อมูล
- ไลบรารีที่ใช้เอนจิ้น: เช่น V9, BASE, SPDE และโปรแกรมฐานข้อมูล (เช่น ORACLE, TERADATA)
- ห้องสมุดข้อมูลเมตา: ใช้ในสภาพแวดล้อม SAS Enterprise Guide และ SAS Studio เพื่อการเข้าถึงที่มีการควบคุม
ตัวอย่าง: ในองค์กรขนาดใหญ่ การเชื่อมต่อ LIBNAME มักจะชี้ไปที่ความปลอดภัยโดยตรง Oracle หรือตาราง Hadoop ช่วยให้วิเคราะห์ได้อย่างราบรื่นและไม่มีข้อมูลซ้ำซ้อน
33) จุดประสงค์ของฟังก์ชัน COMPRESS และตัวเลือกชุดข้อมูล COMPRESS= คืออะไร และแตกต่างกันอย่างไร
แม้ว่าฟังก์ชัน COMPRESS และตัวเลือกชุดข้อมูล COMPRESS= จะมีชื่อเดียวกัน แต่มีวัตถุประสงค์การใช้งานที่แตกต่างกัน ฟังก์ชันการบีบอัด ลบอักขระที่ระบุออกจากสตริง ช่วยด้วยping ด้วยการทำความสะอาดหรือกำหนดมาตรฐานข้อมูล ในทางตรงกันข้าม COMPRESS= ตัวเลือกชุดข้อมูล ลดขนาดชุดข้อมูลทางกายภาพโดยนำอัลกอริธึมการบีบอัด RLE (Run Length Encoding) หรือ RDC ไปใช้กับข้อมูลที่สังเกตที่จัดเก็บไว้
ตารางเปรียบเทียบ:
| คุณสมบัติ (Feature) | ฟังก์ชันการบีบอัด | COMPRESS=ตัวเลือก |
|---|---|---|
| จุดมุ่งหมาย | ลบตัวอักษรออกจากข้อความ | ลดขนาดไฟล์ |
| ขอบเขต | ระดับตัวแปร | ระดับชุดข้อมูล |
| ตัวอย่าง | name_clean = compress(name,,'kd'); |
set data(compress=yes); |
ตัวอย่าง: การบีบอัดชุดข้อมูล 50 ล้านแถวอาจลดพื้นที่เก็บข้อมูลลง 60% ซึ่งจะช่วยปรับปรุงประสิทธิภาพ I/O
34) คุณจะดีบักโปรแกรม SAS ได้อย่างมีประสิทธิภาพได้อย่างไร และคุณสมบัติใดบ้างที่ช่วยในการระบุปัญหา?
การดีบั๊กที่มีประสิทธิภาพใน SAS จำเป็นต้องใช้ข้อความบันทึก (log messages), คำสั่ง PUT และ ODS อย่างเป็นระบบ TRACE และตัวเลือกการวินิจฉัย บันทึกจะให้เบาะแสผ่านข้อความ ERROR, WARNING และ NOTE ซึ่งระบุปัญหาทางไวยากรณ์ ตัวแปรที่ไม่ได้เริ่มต้น หรือความไม่ตรงกันของประเภท คำสั่ง PUTLOG อนุญาตให้แสดงผลลัพธ์การดีบักแบบกำหนดเองได้ ช่วยเหลือping tracค่าตัวแปร e ระหว่างการดำเนินการ
เทคนิคเพิ่มเติมรวมถึงการใช้ OPTIONS MPRINT, SYMBOLGENและ MLOGIC สำหรับการดีบักแมโครและการใช้งาน PROC CONTENTS เพื่อตรวจสอบแอตทริบิวต์ของชุดข้อมูล สำหรับการดีบักขั้นตอนข้อมูล การโต้ตอบ โปรแกรมดีบักเกอร์ขั้นตอนข้อมูล ช่วยให้สามารถดำเนินการแบบทีละขั้นตอน จุดหยุด และการเฝ้าติดตามแบบแปรผัน
ตัวอย่าง: การเปิดใช้งาน MPRINT ช่วยยืนยันว่าโค้ด SQL ที่สร้างโดยแมโครถูกต้องหรือไม่
35) ความแตกต่างระหว่าง PROC REPORT และ PROC TABULATE คืออะไร และควรใช้เมื่อใด
PROC REPORT นำเสนอรายงานแบบกำหนดเองที่หลากหลาย พร้อมการควบคุมแบบรายแถว ช่วยให้สามารถสร้างรายงานได้ทั้งแบบรายละเอียด ระดับสรุป และแบบคำนวณ PROC TABULATE สร้างสรุปแบบตารางไขว้หลายมิติ โดยเน้นที่ตารางที่เน้นการนำเสนอ ความเข้าใจในคุณลักษณะเหล่านี้จะช่วยให้นักวิเคราะห์เลือกรูปแบบที่อ่านง่ายและมีประสิทธิภาพที่สุด
การเปรียบเทียบ:
| คุณสมบัติ (Feature) | รายงานการดำเนินการ | ตารางการดำเนินการ |
|---|---|---|
| Control | การควบคุมสูงเหนือตรรกะแถว | การควบคุมสูงเหนือตารางโครงสร้าง |
| เอาท์พุต | รายงานข้อความหรือรายงานที่มีรูปแบบ | เมทริกซ์ตารางไขว้ |
| ใช้กรณี | แดชบอร์ด KPI ที่กำหนดเอง | บทสรุปหลายมิติ |
ตัวอย่าง: แดชบอร์ดทางการเงินที่ต้องมีการจัดรูปแบบตามเงื่อนไขจะอยู่ใน PROC REPORT ในขณะที่สรุปยอดขายแบบสามมิติตามภูมิภาค ไตรมาส และกลุ่มจะอยู่ใน PROC TABULATE
36) ความสำคัญของคำสั่ง CLASS และ BY ในขั้นตอน SAS คืออะไร และแตกต่างกันอย่างไร
ทั้ง CLASS และ BY สร้างการวิเคราะห์ระดับกลุ่ม แต่มีพฤติกรรมที่แตกต่างกัน CLASS ไม่ต้องการข้อมูลที่เรียงลำดับไว้ล่วงหน้า และถูกใช้ในกระบวนการต่างๆ เช่น PROC MEANS, PROC SUMMARY และ PROC TABULATE เพื่อสร้างสถิติตามตัวแปรเชิงหมวดหมู่ ส่วน BY ต้องการข้อมูลที่เรียงลำดับแล้วและสร้างการดำเนินการตามกระบวนการแยกกันสำหรับแต่ละกลุ่ม BY ซึ่งทำให้กระบวนการมีความเป็นอิสระมากขึ้นและมีบล็อกเอาต์พุต ODS แยกจากกัน
ความแตกต่างที่สำคัญ:
- CLASS: ไม่จำเป็นต้องเรียงลำดับ มีประสิทธิภาพมากขึ้นในการรวมข้อมูล
- BY: จำเป็นต้องมีการเรียงลำดับ เพื่อสร้างผลลัพธ์ที่เป็นอิสระ
ตัวอย่าง: หากต้องการคำนวณแบบจำลองการถดถอยแยกตามภูมิภาค ควรใช้การประมวลผล BY หากต้องการสรุปยอดขายแยกตามภูมิภาคในตารางเดียว ควรใช้ CLASS
37) SAS จัดการวันที่และเวลาภายในอย่างไร และเหตุใดการทำความเข้าใจโครงสร้างการจัดเก็บข้อมูลนี้จึงมีความสำคัญ
SAS จัดเก็บวันที่เป็นจำนวนวันนับตั้งแต่วันที่ 1 มกราคม ค.ศ. 1960 และค่า datetime เป็นจำนวนวินาทีนับตั้งแต่วันดังกล่าว ค่าเวลาแสดงวินาทีนับจากเที่ยงคืน การแสดงตัวเลขเหล่านี้ช่วยให้สามารถจัดการทางคณิตศาสตร์ได้ เช่น การบวกวันหรือการคำนวณระยะเวลา
การทำความเข้าใจโครงสร้างนี้มีความสำคัญอย่างยิ่งต่อการรายงานที่แม่นยำ ป้องกันข้อผิดพลาดแบบคลาดเคลื่อนหนึ่ง และรับรองการใช้รูปแบบและข้อมูลอย่างถูกต้อง การคำนวณวันที่โดยปราศจากรูปแบบที่เหมาะสมมักสร้างความสับสนให้กับผู้เริ่มต้น เนื่องจากค่าตัวเลขดิบจะปรากฏขึ้นแทนวันที่ที่อ่านได้
ตัวอย่าง:
difference = intck('day', StartDate, EndDate);
การคำนวณนี้ได้ผลเนื่องจากวันที่ทั้งสองมีฐานตัวเลขที่สอดคล้องกัน
38) ฟังก์ชันแมโคร SAS เช่น %SCAN, %SUBSTR และ %UPCASE มีข้อดีอะไรบ้างในระหว่างการสร้างโค้ด
ฟังก์ชันมาโครช่วยให้สามารถจัดการข้อความในระดับข้อความระหว่างการคอมไพล์ ทำให้สามารถสร้างชื่อตัวแปร ชื่อชุดข้อมูล และส่วนของโค้ดแบบมีเงื่อนไขได้อย่างไดนามิก ตัวอย่างเช่น %SCANtracคำสั่ง `ts` ใช้สำหรับตัดคำจากตัวแปรมาโคร คำสั่ง `%SUBSTR` ใช้สำหรับแบ่งส่วนข้อความ และคำสั่ง `%UPCASE` ใช้สำหรับกำหนดการใช้ตัวพิมพ์ใหญ่ให้สม่ำเสมอเพื่อใช้ในการเปรียบเทียบ
ฟังก์ชันเหล่านี้ช่วยปรับปรุงการสรุปทั่วไปโดยอนุญาตให้แมโครปรับให้เข้ากับพารามิเตอร์ที่ผู้ใช้กำหนด ตัวอย่างเช่น การสร้างชุดข้อมูลรายเดือนโดยใช้ %substr(&date,1,6) อนุญาตให้ตั้งชื่อตารางโดยอัตโนมัติ
ตัวอย่าง:
%let region = north america; %put %upcase(®ion);
สิ่งนี้ทำให้เกิด อเมริกาเหนือเพื่อให้แน่ใจว่ามีการจับคู่ที่สอดคล้องกันในลอจิกแมโคร
39) คุณควรพิจารณาปัจจัยใดบ้างเมื่อเลือกใช้ชุดข้อมูล SAS และฐานข้อมูลภายนอกสำหรับจัดเก็บข้อมูล?
การเลือกระหว่างชุดข้อมูล SAS และฐานข้อมูลภายนอกขึ้นอยู่กับปริมาณข้อมูล ข้อกำหนดด้านการทำงานพร้อมกัน การควบคุมความปลอดภัย และความต้องการในการผสานรวม ชุดข้อมูล SAS ให้การเข้าถึงแบบต่อเนื่องที่รวดเร็วและเหมาะอย่างยิ่งสำหรับเวิร์กโฟลว์การวิเคราะห์ แต่ขาดการทำงานพร้อมกันแบบหลายผู้ใช้และการควบคุมธุรกรรมที่แข็งแกร่ง ฐานข้อมูลภายนอกเช่น OracleTeradata และ SQL Server นำเสนอการจัดทำดัชนี การปฏิบัติตาม ACID ความสามารถในการปรับขนาด และการเข้าถึงที่ควบคุม
ปัจจัยต่างๆ ได้แก่:
- ขนาดข้อมูลและการเติบโตที่คาดหวัง
- การค้นหาความพร้อมกัน
- ความปลอดภัยและการอนุญาตผู้ใช้
- การบูรณาการกับระบบองค์กร
- ต้นทุนและค่าใช้จ่ายในการบริหาร
ตัวอย่าง: ทีมงานวิทยาศาสตร์ข้อมูลที่วิเคราะห์ 5 ล้านแถวต่อวันอาจต้องการชุดข้อมูล SAS ในขณะที่ CRM ขององค์กรที่มีบันทึก 1 พันล้านรายการจำเป็นต้องใช้ฐานข้อมูล
40) SAS กำหนดความยาวและประเภทของตัวแปรอย่างไรในระหว่างขั้นตอนการคอมไพล์ และปัญหาใดบ้างที่เกิดขึ้นจากแหล่งที่มาที่ไม่สอดคล้องกัน
ในระหว่างการคอมไพล์ SAS จะตรวจสอบการเกิดขึ้นครั้งแรกของตัวแปรแต่ละตัวเพื่อกำหนดชนิดและความยาว สำหรับตัวแปรอักขระ ความยาวจะถูกตั้งค่าเริ่มต้นเป็นค่าที่ยาวที่สุดที่กำหนดไว้ในอินสแตนซ์แรกนั้น เมื่อตัวแปรปรากฏในชุดข้อมูล SET หรือ MERGE หลายชุด ความยาวที่ไม่สอดคล้องกันจะทำให้เกิดการตัดทอนและคำเตือน ตัวแปรตัวเลขจะได้รับ 8 ไบต์เสมอ เว้นแต่จะกำหนดไว้อย่างชัดเจน
ปัญหาต่างๆ เช่น ความยาวอักขระที่ไม่สอดคล้องกัน นำไปสู่คีย์ที่ไม่ตรงกันและการผสานที่ไม่ถูกต้อง นักพัฒนามักใช้คำสั่ง LENGTH ก่อนคำสั่ง SET เพื่อบังคับใช้ความสอดคล้องกัน
ตัวอย่าง:
length ID $15; set data1 data2;
วิธีนี้จะช่วยให้แน่ใจว่า ID ยังคงสม่ำเสมอในทั้งสองอินพุต
41) จุดประสงค์ของคำสั่ง OUTPUT ใน SAS คืออะไร และสามารถควบคุมการสร้างชุดข้อมูลได้อย่างไร
คำสั่ง OUTPUT จะบอก SAS อย่างชัดเจนว่าเมื่อใดควรเขียนเนื้อหาปัจจุบันของ Program Data Vector (PDV) ลงในชุดข้อมูลอย่างน้อยหนึ่งชุด หากไม่มี OUTPUT SAS จะเขียนข้อมูลการสังเกตหนึ่งรายการโดยอัตโนมัติต่อการวนซ้ำขั้นตอน DATA การใช้ OUTPUT อย่างตั้งใจช่วยให้คุณสามารถสร้างข้อมูลการสังเกตหลายรายการจากการวนซ้ำหนึ่งครั้ง เขียนข้อมูลการสังเกตแบบเลือก หรือกำหนดเส้นทางเอาต์พุตไปยังชุดข้อมูลต่างๆ ตามเงื่อนไข
ตัวอย่าง:
data high low; set sales; if revenue > 10000 then output high; else output low; run;
การดำเนินการนี้จะสร้างชุดข้อมูลสองชุดจากขั้นตอนข้อมูลเดียว การทำความเข้าใจ OUTPUT เป็นสิ่งสำคัญสำหรับการจัดการข้อมูลขั้นสูง เช่น การขยายเรกคอร์ดหรือการเขียนสรุปหลายรายการ
42) PROC COMPARE ช่วยตรวจสอบความถูกต้องของชุดข้อมูลอย่างไร และตัวเลือกใดที่ช่วยเพิ่มความแม่นยำในการเปรียบเทียบ
PROC COMPARE ประเมินชุดข้อมูลสองชุดและเน้นย้ำถึงความแตกต่างในโครงสร้าง เมตาดาต้า และค่าข้อมูลจริง โดยทั่วไปมักใช้สำหรับการตรวจสอบความถูกต้องของการย้ายข้อมูล การตรวจสอบคุณภาพ ETL และการทดสอบการถดถอยในกระบวนการวิเคราะห์ ตัวเลือกหลักๆ เช่น เกณฑ์=, รายการทั้งหมด, พิมพ์สูงสุด=และ เอาท์ดิฟ ช่วยสร้างรายงานที่มีรายละเอียดมากขึ้นและควบคุมระดับความคลาดเคลื่อนของตัวเลข
ขั้นตอนนี้ระบุประเภทตัวแปรที่ไม่ตรงกัน ค่าที่หายไปโดยไม่คาดคิด ความแตกต่างในระดับแถว และปัญหาเชิงโครงสร้าง
ตัวอย่าง: เมื่อย้ายจาก Oracle สำหรับ SAS, PROC COMPARE จะรับรองว่าชุดข้อมูล SAS ที่ได้จะตรงกับแหล่งที่มาโดยไม่มีการตัดทอนหรือข้อผิดพลาดในการปัดเศษแบบเงียบๆ
43) ความสำคัญของคำสั่ง RETAIN เมื่อใช้ร่วมกับตรรกะ FIRST./LAST. คืออะไร
การใช้ RETAIN ร่วมกับ FIRST./LAST. ช่วยให้สามารถคำนวณระดับกลุ่มได้อย่างมีประสิทธิภาพ โดยเฉพาะอย่างยิ่งสำหรับผลรวมสะสม ความแตกต่างที่กำลังทำงาน และแฟล็กประเภท ตัวแปร FIRST. ระบุจุดเริ่มต้นของกลุ่ม BY ดังนั้น RETAIN จึงช่วยรีเซ็ตหรือสะสมค่าได้อย่างเหมาะสม
ตัวอย่างภาพประกอบ:
by Customer_ID if first.Customer_ID then Total=0; Total + Amount; if last.Customer_ID then output;
ตรรกะนี้จะรวมผลรวมระดับลูกค้าโดยไม่ต้องใช้ PROC SUMMARY ตรรกะนี้แสดงให้เห็นถึงความสำคัญของ RETAIN ในการรักษาค่าข้ามแถวภายในกลุ่ม ขณะรีเซ็ตค่าสำหรับแต่ละกลุ่มใหม่ การเข้าใจรูปแบบนี้เป็นสิ่งสำคัญสำหรับการสรุปขั้นตอนข้อมูลอย่างมีประสิทธิภาพ
44) อะไรที่ทำให้ PROC FREQ แตกต่างจาก PROC SUMMARY สำหรับการวิเคราะห์เชิงหมวดหมู่?
PROC FREQ สร้างตารางความถี่ ตารางไขว้ และการทดสอบความสัมพันธ์ เช่น ไคสแควร์ ทำให้เหมาะอย่างยิ่งสำหรับการแจกแจงเชิงหมวดหมู่และการวิเคราะห์สถานการณ์ฉุกเฉิน PROC SUMMARY คำนวณสถิติเชิงตัวเลขในกลุ่มต่อเนื่องหรือกลุ่มแยก แต่โดยเนื้อแท้แล้วจะไม่สร้างจำนวนนับความถี่ เว้นแต่จะระบุไว้เป็นอย่างอื่น
ตารางเปรียบเทียบ:
| คุณสมบัติ (Feature) | ความถี่ของกระบวนการ | สรุปกระบวนการ |
|---|---|---|
| เอาท์พุต | ตารางความถี่ | สถิติโดยย่อ |
| เหมาะสำหรับ | จำนวน เปอร์เซ็นต์ ความสัมพันธ์ | ค่าเฉลี่ย, ผลรวม, ช่วง |
| การทดสอบทางสถิติ | ไคสแควร์, ฟิชเชอร์ส เอ็กแอ็กต์ | ไม่มีตามค่าเริ่มต้น |
ตัวอย่าง: ในการประเมินข้อมูลประชากรของลูกค้า (เพศและภูมิภาค) พบว่า PROC FREQ ดีกว่า ส่วนการคำนวณรายได้เฉลี่ยต่อกลุ่มนั้น PROC SUMMARY เหมาะสมกว่า
45) ตัวเลือก FIRSTOBS และ OBS ช่วยควบคุมการสุ่มตัวอย่างได้อย่างไรtraction?
FIRSTOBS และ OBS เป็นตัวเลือกชุดข้อมูลที่จำกัดส่วนของชุดข้อมูลที่จะอ่าน FIRSTOBS ระบุการสังเกตแรกที่จะอ่าน ในขณะที่ OBS ระบุการสังเกตสุดท้าย ตัวเลือกเหล่านี้มีประโยชน์สำหรับการสุ่มตัวอย่าง การดีบัก และการทดสอบประสิทธิภาพ เนื่องจากช่วยลดเวลาในการประมวลผลระหว่างการพัฒนา
ตัวอย่าง:
set bigdata(firstobs=1 obs=1000);
อดีตนี้tracโค้ดจะดึงข้อมูลเพียง 1000 แถวแรกเท่านั้น ทำให้การทดสอบโค้ดทำได้อย่างรวดเร็ว ค่าที่ได้จะไม่เปลี่ยนแปลงชุดข้อมูล และจะใช้ได้เฉพาะในขั้นตอน DATA หรือการดำเนินการของโปรซีเจอร์เท่านั้น ตัวเลือกเหล่านี้ช่วยเพิ่มประสิทธิภาพเมื่อทำงานกับชุดข้อมูลขนาดใหญ่มาก
46) ข้อดีของการใช้ PROC FORMAT กับ CNTLIN และ CNTLOUT คืออะไร และรองรับรูปแบบไดนามิกได้อย่างไร
CNTLIN ช่วยให้คุณสร้างรูปแบบจากชุดข้อมูล ทำให้ระบบการติดป้ายกำกับแบบไดนามิกที่ขับเคลื่อนด้วยข้อมูลเป็นไปได้ CNTLOUT extracแปลงรูปแบบที่มีอยู่ให้เป็นชุดข้อมูล ทำให้สามารถแก้ไข ตรวจสอบ หรือกำหนดเวอร์ชันของรูปแบบได้ ฟังก์ชันนี้มีประโยชน์อย่างยิ่งเมื่อค่ารูปแบบมีการเปลี่ยนแปลงบ่อยครั้ง หรือถูกควบคุมโดยกฎทางธุรกิจที่จัดเก็บไว้ในตารางฐานข้อมูล
ตัวอย่าง: ธนาคารอาจมีชุดข้อมูลที่เก็บรักษารหัสความเสี่ยงและความหมายเชิงพรรณนา SAS จะสร้างรูปแบบโดยอัตโนมัติโดยใช้ CNTLIN โดยไม่ต้องเขียนคำสั่งค่าด้วยตนเอง วิธีนี้รวมศูนย์ตรรกะการจัดรูปแบบและลดความยุ่งยากในการบำรุงรักษาในระบบรายงานขนาดใหญ่
47) อะไรที่ทำให้คำสั่ง SUM แตกต่างจากฟังก์ชัน SUM() ใน SAS และเมื่อใดจึงจะเลือกใช้ฟังก์ชันทั้งสองนี้
คำสั่ง SUM (x + y;) จะคงตัวแปรไว้โดยปริยายและถือว่าค่าที่หายไปเป็นศูนย์ ทำให้เหมาะอย่างยิ่งสำหรับการคำนวณผลรวม ฟังก์ชัน SUM() (x = sum(a,b,c);) ประเมินอาร์กิวเมนต์ภายในการวนซ้ำปัจจุบันเท่านั้น และละเว้นค่าที่หายไปโดยไม่เก็บผลลัพธ์ไว้
การเปรียบเทียบ:
| แง่มุม | คำสั่ง SUM | ฟังก์ชัน SUM() |
|---|---|---|
| การเก็บรักษา | มี (ใบกำกับภาษีเต็มรูปแบบ) | ไม่ |
| ค่าที่หายไป | ถือเป็นศูนย์ | ละเว้น |
| ใช้กรณี | ยอดรวมสะสม | ผลรวมระดับแถว |
ตัวอย่าง: total + amount; สะสมข้ามการสังเกตในขณะที่ sum(amount1, amount2) คำนวณผลรวมเฉพาะภายในแถวเดียวกันเท่านั้น
48) วัตถุประสงค์ของตัวเลือกชุดข้อมูล END= คืออะไร และช่วยตรวจจับแถวสุดท้ายในชุดข้อมูลได้อย่างไร
ตัวเลือก END= dataset จะกำหนดตัวแปรชั่วคราวที่ตั้งค่าเป็น 1 เมื่อ SAS อ่านข้อมูลการสังเกตการณ์ครั้งสุดท้ายของชุดข้อมูล ตัวเลือกนี้มีประโยชน์อย่างยิ่งเมื่อดำเนินการเริ่มต้นระบบหรือสรุปข้อมูล เช่น การเขียนเรคคอร์ดสรุป การปิดไฟล์ หรือการสรุปผลลัพธ์ของแฮชออบเจ็กต์
ตัวอย่าง:
set sales end=last; if last then put "Dataset processing complete.";
ตรรกะนี้ช่วยให้แน่ใจว่าการดำเนินการบางอย่างจะเกิดขึ้นเพียงครั้งเดียวหลังจากการวนซ้ำทั้งหมด END= มีประโยชน์อย่างยิ่งในการสร้างรายงานตามโปรแกรมและการสร้างชุดข้อมูลสรุปสะสม
49) ข้อดีและข้อเสียหลักของการใช้ SPDE (Scalable Performance Data Engine) ใน SAS คืออะไร
เอ็นจิ้น SPDE ช่วยเพิ่มประสิทธิภาพสำหรับสภาพแวดล้อมข้อมูลแบบมัลติเธรดขนาดใหญ่ เอ็นจิ้นนี้จะกระจายข้อมูลไปยังหน่วยจัดเก็บข้อมูลและดำเนินการอ่านและเขียนแบบขนาน เอ็นจิ้นนี้เหมาะสำหรับการวิเคราะห์ข้อมูลปริมาณงานสูงและเวิร์กโหลด ETL ขนาดใหญ่
ข้อดีและข้อเสีย:
| ข้อดี | ข้อเสีย |
|---|---|
| I/O แบบขนานเพื่อประสิทธิภาพที่รวดเร็วยิ่งขึ้น | ต้องใช้สภาพแวดล้อมแบบหลายดิสก์ |
| มีประสิทธิภาพสำหรับชุดข้อมูลขนาดใหญ่ | การกำหนดค่าที่ซับซ้อน |
| รองรับการแบ่งพาร์ติชั่นและการสร้างดัชนี | ไม่เหมาะสำหรับชุดข้อมูลขนาดเล็ก |
ตัวอย่าง: การประมวลผลข้อมูล 300 ล้านรายการด้วย SPDE สามารถลดระยะเวลาการทำงานลงอย่างมาก โดยเฉพาะในระบบที่มี CPU และดิสก์หลายตัว
50) PROC SQL จัดการกับซับเควรีอย่างไร และมีประโยชน์อะไรบ้างในการเขียนโปรแกรม SAS
PROC SQL รองรับซับเควรีแบบสหสัมพันธ์และไม่สหสัมพันธ์ ช่วยให้สามารถกรองข้อมูลได้ลึกขึ้น การค้นหาแบบมีเงื่อนไข และการคำนวณแบบไดนามิก ซับเควรีช่วยให้ SQL สามารถคำนวณค่าได้ทันที จับคู่เซ็ตย่อยที่กรองแล้ว หรือทำการเชื่อมต่อแบบมีเงื่อนไขโดยไม่ต้องใช้ชุดข้อมูลตัวกลาง
ตัวอย่าง:
select * from sales where revenue > (select avg(revenue) from sales);
ฟังก์ชันนี้จะระบุเรคคอร์ดที่มีประสิทธิภาพสูง ซับเควรีช่วยลดความจำเป็นในการใช้ชุดข้อมูลชั่วคราว เพิ่มความสามารถในการอ่าน และอนุญาตให้มีตรรกะที่ซับซ้อนมากขึ้นในคำสั่ง SELECT เดียว ซับเควรีมีประโยชน์อย่างยิ่งในการสืบค้นข้อมูลเมตาและการกรองข้อมูลเชิงวิเคราะห์
🔍 คำถามสัมภาษณ์ SAS ยอดนิยมพร้อมสถานการณ์จริงและคำตอบเชิงกลยุทธ์
1) ความแตกต่างระหว่างขั้นตอน DATA และขั้นตอน PROC ใน SAS คืออะไร
สิ่งที่คาดหวังจากผู้สมัคร: ผู้สัมภาษณ์ต้องการประเมินความเข้าใจของคุณเกี่ยวกับพื้นฐานของ SAS และวิธีการประมวลผลและวิเคราะห์ข้อมูล
ตัวอย่างคำตอบ:
ขั้นตอน DATA ใช้สำหรับอ่าน จัดการ และสร้างชุดข้อมูล ในขณะที่ขั้นตอน PROC ใช้สำหรับวิเคราะห์ข้อมูลหรือสร้างรายงาน ขั้นตอน DATA มุ่งเน้นไปที่การเตรียมข้อมูล ส่วนขั้นตอน PROC จะใช้กระบวนการทางสถิติหรือการวิเคราะห์
2) คุณจัดการกับค่าที่หายไปใน SAS อย่างไร
สิ่งที่คาดหวังจากผู้สมัคร: ผู้สัมภาษณ์ต้องการทราบแนวทางของคุณเกี่ยวกับคุณภาพและความครบถ้วนของข้อมูล
ตัวอย่างคำตอบ:
“ผมจัดการกับค่าที่หายไปโดยเริ่มจากการระบุค่าเหล่านั้นผ่าน PROC MEANS หรือ PROC FREQ จากนั้นผมจะพิจารณาว่าจะใส่ค่า ลบ หรือแยกค่าเหล่านั้นเป็นหมวดหมู่ต่างหาก โดยพิจารณาจากบริบทของการวิเคราะห์และผลกระทบที่มีต่อแบบจำลอง”
3) คุณสามารถอธิบายจุดประสงค์ของคำสั่ง MERGE ใน SAS ได้หรือไม่
สิ่งที่คาดหวังจากผู้สมัคร: ผู้สัมภาษณ์ต้องการทราบว่าคุณเข้าใจเรื่องการผสานข้อมูลและแนวคิดเชิงสัมพันธ์หรือไม่
ตัวอย่างคำตอบ:
คำสั่ง MERGE ใช้เพื่อรวมชุดข้อมูลโดยอิงจากตัวแปรร่วม คำสั่งนี้ช่วยให้คุณสามารถรวมชุดข้อมูลในแนวนอนได้ และกำหนดให้ชุดข้อมูลต้องเรียงลำดับตามตัวแปร BY
4) อธิบายโครงการ SAS ที่ท้าทายที่คุณทำงานด้วยและวิธีที่คุณจัดการมัน
สิ่งที่คาดหวังจากผู้สมัคร: การประเมินการแก้ปัญหา ความคิดริเริ่ม และความสามารถในการส่งมอบผลลัพธ์
ตัวอย่างคำตอบ (ใช้คำที่จำเป็น #1):
ในบทบาทก่อนหน้า ผมได้ทำงานในโครงการบูรณาการข้อมูลที่ซับซ้อน ซึ่งเกี่ยวข้องกับแหล่งข้อมูลหลายแหล่งที่ไม่สอดคล้องกัน ผมได้สร้างกฎการตรวจสอบที่กำหนดเอง รูปแบบมาตรฐาน และการตรวจสอบคุณภาพอัตโนมัติโดยใช้แมโครของ SAS ซึ่งช่วยให้มั่นใจได้ถึงการรายงานที่แม่นยำและลดเวลาในการประมวลผล
5) คุณจะเพิ่มประสิทธิภาพโค้ด SAS เพื่อประสิทธิภาพที่ดีขึ้นได้อย่างไร
สิ่งที่คาดหวังจากผู้สมัคร: ความเข้าใจเกี่ยวกับประสิทธิภาพ การเพิ่มประสิทธิภาพ และแนวทางปฏิบัติที่ดีที่สุดของ SAS
ตัวอย่างคำตอบ:
ผมปรับแต่งโค้ด SAS ให้เหมาะสมที่สุดโดยการลดการใช้ตัวแปรที่ไม่จำเป็น ใช้ WHERE แทน IF เมื่อแบ่งกลุ่มย่อย จัดทำดัชนีชุดข้อมูลขนาดใหญ่ และหลีกเลี่ยงการคำนวณซ้ำโดยใช้ตัวแปรมาโคร นอกจากนี้ ผมยังตรวจสอบบันทึกการทำงานเพื่อขจัดปัญหาความไม่มีประสิทธิภาพอีกด้วย
6) เล่าให้ฉันฟังเกี่ยวกับช่วงเวลาที่คุณต้องร่วมมือกับทีมเพื่อแก้ไขปัญหาที่เกี่ยวข้องกับ SAS
สิ่งที่คาดหวังจากผู้สมัคร: Teamworkทักษะการสื่อสารและการแก้ไขข้อขัดแย้ง
ตัวอย่างคำตอบ (ใช้คำที่จำเป็น #2):
ก่อนหน้านี้ ผมได้ทำงานร่วมกับทีมวิศวกรรมข้อมูลเพื่อแก้ไขความไม่สอดคล้องกันของผลลัพธ์ในการรายงาน ผมได้อำนวยความสะดวกในการสนทนาเพื่อทำความเข้าใจการไหลของข้อมูล ตรวจสอบความถูกต้องของชุดข้อมูลโดยใช้ PROC COMPARE และบันทึกกระบวนการที่ใช้ร่วมกันเพื่อใช้งานในอนาคต
7) คุณมั่นใจได้อย่างไรว่าข้อมูลเอาต์พุต SAS ของคุณมีความถูกต้องและสมบูรณ์?
สิ่งที่คาดหวังจากผู้สมัคร: ความใส่ใจในรายละเอียด การรับรองคุณภาพ และวิธีการตรวจสอบ
ตัวอย่างคำตอบ:
“ผมรับประกันความถูกต้องแม่นยำโดยการตรวจสอบความถูกต้องของข้อมูล การใช้ PROC CONTENTS เพื่อตรวจสอบคุณสมบัติของตัวแปร และตรวจสอบผลลัพธ์กับแบบสอบถามอิสระ นอกจากนี้ ผมยังมีกระบวนการตรวจสอบโดยผู้เชี่ยวชาญสำหรับรายงานสำคัญอีกด้วย”
8) อธิบายสถานการณ์ที่กำหนดเวลากระชั้นชิด แต่การวิเคราะห์ SAS กลับซับซ้อน คุณจัดการกับมันอย่างไร
สิ่งที่คาดหวังจากผู้สมัคร: การบริหารเวลา การจัดลำดับความสำคัญ และความสงบภายใต้ความกดดัน
ตัวอย่างคำตอบ (ใช้คำที่จำเป็น #3):
ในงานก่อนหน้านี้ ผมต้องส่งมอบรายงานสถิติโดยละเอียดภายในกรอบเวลาที่จำกัดมาก ผมให้ความสำคัญกับการวิเคราะห์ที่สำคัญก่อน จัดการงานซ้ำๆ โดยอัตโนมัติด้วย SAS macros และแจ้งอัปเดตสถานะเป็นประจำเพื่อจัดการความคาดหวัง
9) คุณใช้ SAS Macros อย่างไร และมีประโยชน์อะไรบ้าง?
สิ่งที่คาดหวังจากผู้สมัคร: ความรู้เกี่ยวกับระบบอัตโนมัติ ความสามารถในการปรับขนาด และประสิทธิภาพในการเขียนโค้ด
ตัวอย่างคำตอบ:
ฉันใช้ SAS Macros เพื่อจัดการงานซ้ำๆ ให้เป็นอัตโนมัติ ลดข้อผิดพลาดในการเขียนโค้ด และปรับปรุงการนำโค้ดกลับมาใช้ใหม่ พวกมันช่วยรักษาความสอดคล้องกันในโครงการขนาดใหญ่ และทำให้การวิเคราะห์ที่ขับเคลื่อนด้วยพารามิเตอร์ง่ายขึ้น
10) อธิบายสถานการณ์ในโลกแห่งความเป็นจริงที่คุณปรับปรุงกระบวนการโดยใช้ SAS
สิ่งที่คาดหวังจากผู้สมัคร: การประยุกต์ใช้ในทางปฏิบัติ การปรับปรุงประสิทธิภาพ และผลกระทบต่อธุรกิจ
ตัวอย่างคำตอบ (ใช้คำที่จำเป็น #4):
ในบทบาทล่าสุดของฉัน ฉันได้จัดทำเวิร์กโฟลว์การรายงานรายเดือนที่สร้างขึ้นด้วยตนเองให้เป็นระบบอัตโนมัติ ด้วยการใช้ PROC SQL และ SAS Macros ฉันจึงลดเวลาในการประมวลผลจากหลายชั่วโมงเหลือเพียงไม่กี่นาที ซึ่งช่วยเพิ่มประสิทธิภาพการทำงานของทีมได้อย่างมาก
