ฟังก์ชันนิรนามเกล็ดหิมะ

Jan 16 2023
คุณสมบัติการแสดงตัวอย่างคืออะไร? Snowflake กำลังพัฒนาคุณสมบัติใหม่อย่างต่อเนื่อง และพวกเขาได้คิดค้นระบบการเผยแพร่ซึ่งช่วยให้ผู้ใช้สามารถลงมือปฏิบัติได้โดยเร็วที่สุด สิ่งนี้ทำให้เราสามารถตรวจสอบการทำงานของมันได้ล่วงหน้าและดูว่าพวกมันรวมเข้ากับโครงการที่เรากำลังดำเนินการได้อย่างไร

คุณสมบัติการแสดงตัวอย่างคืออะไร?

Snowflake กำลังพัฒนาคุณสมบัติใหม่อย่างต่อเนื่อง และพวกเขาได้คิดค้นระบบการเผยแพร่ซึ่งช่วยให้ผู้ใช้สามารถลงมือปฏิบัติได้โดยเร็วที่สุด สิ่งนี้ทำให้เราสามารถตรวจสอบการทำงานของมันได้ล่วงหน้าและดูว่าพวกมันรวมเข้ากับโครงการที่เรากำลังดำเนินการได้อย่างไร

การทำความเข้าใจว่าคุณลักษณะใหม่พร้อมใช้งานในขั้นตอนใดบ้าง หรือที่เรียกว่าวงจรการเผยแพร่คุณลักษณะ เป็นข้อพิจารณาที่สำคัญอย่างยิ่ง หากคุณกำลังจัดการปริมาณงานการผลิตหรือจัดเก็บข้อมูลที่ละเอียดอ่อน เนื่องจากคุณลักษณะบางอย่างที่เผยแพร่ต่อสาธารณะไม่เหมาะสำหรับใช้ในสภาพแวดล้อมการผลิต

ฟีเจอร์ใน Snowflake เช่น การสนับสนุน Snowpark Python มีสามขั้นตอนการเผยแพร่:

วงจรชีวิตคุณลักษณะ

ดูตัวอย่างส่วนตัว

ขั้นตอนนี้อธิบายคุณลักษณะที่มีให้สำหรับบัญชี Snowflake เมื่อมีการร้องขอ คุณลักษณะเหล่านี้โดยทั่วไปอยู่ในช่วงเริ่มต้นของการพัฒนา ดังนั้นจึงเป็นการทดลองมากกว่าและมีแนวโน้มที่จะเกิดข้อบกพร่อง สามารถเปิดใช้งานคุณสมบัติการแสดงตัวอย่างส่วนตัวได้โดยติดต่อฝ่ายสนับสนุนของ Snowflake

ตัวอย่างสาธารณะ

ขั้นตอนนี้รวมคุณสมบัติที่บัญชี Snowflake ใช้งานได้โดยไม่ต้องร้องขอ แต่ยังไม่ได้รับการทดสอบอย่างสมบูรณ์โดย Snowflake และอาจรวมถึงข้อบกพร่อง ด้วยเหตุนี้ Snowflake จึงยืนยันว่า จะไม่มีการใช้คุณลักษณะการแสดงตัวอย่างแบบส่วนตัวและแบบสาธารณะ ในการ ผลิต นี่เป็นสิ่งสำคัญอย่างยิ่งเมื่อพิจารณาข้อมูลที่ละเอียดอ่อนในการผลิตที่อาจพบโดยจุดบกพร่องที่ยังไม่ได้แก้ไขในคุณลักษณะการแสดงตัวอย่าง

ความพร้อมใช้งานทั่วไป

หลังจากการทดสอบการแสดงตัวอย่างแบบสาธารณะ ฟีเจอร์ Snowflake จะเข้าสู่ความพร้อมใช้งานทั่วไป ซึ่งหมายความว่าบัญชี Snowflake ทั้งหมดสามารถใช้งานได้อย่างอิสระ และถือว่า Snowflake รองรับอย่างเต็มที่และเหมาะสำหรับปริมาณงานการผลิต

เราสามารถเรียกดูคุณลักษณะ Snowflake ใดที่อยู่ใน โหมดแสดงตัวอย่างโดยไปที่หน้าต่อไปนี้ในเอกสารประกอบ

เพื่อให้ล้ำหน้ากว่าใครและทดสอบคุณลักษณะใหม่ ๆ คุณควรตรวจดูว่ามีคุณลักษณะใหม่ใดบ้างที่พร้อมใช้งานในโหมดดูตัวอย่างเป็นประจำ นอกจากนี้ คุณควรติดตามว่าฟีเจอร์ใดเหมาะสมที่จะโปรโมตในเวอร์ชันที่ใช้งานจริงในขณะนี้

ในโพสต์นี้ เราจะพิจารณาคุณลักษณะที่น่าสนใจที่กำลังแสดงตัวอย่างสาธารณะอย่างใกล้ชิดยิ่งขึ้นกระบวนการที่ไม่เปิดเผยตัวตน

ขั้นตอนที่เก็บไว้

เพื่อทำความเข้าใจว่าขั้นตอนที่ไม่ระบุตัวตนอยู่ในภาพใด ลองทบทวนขั้นตอนมาตรฐานอย่างรวดเร็ว หรือที่เรียกว่ากระบวนงานที่เก็บไว้

ใน Snowflake กระบวนงานที่เก็บไว้คือชุดคำสั่งที่มีชื่อ ซึ่งเขียนด้วย JavaScript, SQL, Python, Java หรือ Scala ซึ่งโดยทั่วไปแล้วออกแบบมาเพื่อดำเนินงานด้านการดูแลระบบ โค้ดตัวอย่างต่อไปนี้สร้างกระบวนงานที่เก็บไว้โดยใช้ JavaScript เพื่อลบข้อมูลตารางที่เก่ากว่าช่วงเวลาที่กำหนดได้ จากนั้นในคำสั่งที่แยกต่างหาก ดำเนินการโดยใช้คีย์เวิร์ดการโทร:

create or replace procedure table_retention(table_name string, years float)
  returns string
  language javascript
  execute as owner
  as
  $$ 
    var table_name = TABLE_NAME;
    var years = YEARS;
    
    var sql_command = `DELETE FROM ${table_name} WHERE JOIN_DATE < DATEADD(YEAR, -${years}, current_date())`
    snowflake.execute({sqlText:sql_command});
  $$;
  
call table_retention('emp',10);

ขั้นตอนนิรนาม

ในทางกลับกัน โพรซีเดอร์ที่ไม่ระบุชื่อจะไม่สร้างโพรซีเดอร์อ็อบเจกต์ในฐานข้อมูลและสคีมา มีอยู่เฉพาะในช่วงระยะเวลาเซสชันของผู้ใช้รายใดรายหนึ่งเท่านั้น และสามารถดำเนินการได้ในบริบทนั้นเท่านั้น

เรามาแจกแจงวิธีที่เราสร้างและเรียกใช้โพรซีเดอร์ที่ไม่ระบุชื่อโดยนำตรรกะของโพรซีเดอร์ที่จัดเก็บไปใช้ใหม่:

with table_retention as procedure (table_name string, years float)
  returns string
  language javascript
  as
  $$ 
    var table_name = TABLE_NAME;
    var years = YEARS;
    
    var sql_command = `DELETE FROM ${table_name} WHERE JOIN_DATE < DATEADD(YEAR, -${years}, current_date())`
    snowflake.execute({sqlText:sql_command});
  $$
  
call table_retention('emp',10);

บรรทัดถัดไปคือตัวเลือกขั้นตอนของเรา ประเภทแรกคือประเภทผลตอบแทน นี่เป็นตัวเลือกที่จำเป็นในการระบุชนิดข้อมูลที่โพรซีเดอร์ที่เก็บไว้สามารถส่งคืนได้ และแม้ว่าจะจำเป็นต้องรวมตัวเลือกนี้ไว้ในคำนิยามของโพรซีเดอร์ แต่ก็เป็นทางเลือกที่จะส่งคืนค่าอย่างชัดเจนในเนื้อหาของโพรซีเดอร์ หากไม่มีการส่งคืนค่าอย่างชัดเจน ระบบจะส่งคืนค่า NULL

ถัดไปคือพารามิเตอร์ภาษาซึ่งระบุภาษาโปรแกรมที่เราจะใช้ในเนื้อความของขั้นตอน ในกรณีนี้ เรากำลังสร้างขั้นตอน JavaScript แต่ตัวเลือกนี้ยังยอมรับ Java, Scala และ Python โดยใช้ Snowpark ขณะ นี้การเขียนสคริปต์ Snowflake ยังไม่รองรับฟังก์ชันนิรนาม

คุณอาจสังเกตเห็นว่าในกระบวนการที่ไม่เปิดเผยตัวตน เราไม่ได้รวมตัวเลือก 'ดำเนินการเป็น' โพรซีเดอร์ที่จัดเก็บเป็นประจำมีรูปแบบสิทธิ์เฉพาะที่สามารถดำเนินการได้ด้วยสิทธิ์ของบทบาทที่เป็นเจ้าของโพรซีเดอร์ (สิทธิ์ของเจ้าของ) หรือบทบาทที่เรียกใช้โพรซีเดอร์ (สิทธิ์ของผู้โทร) ในกรณีของขั้นตอนที่ไม่ระบุตัวตนจะดำเนินการโดยใช้สิทธิ์ของผู้โทรเสมอ นั่นคือสิทธิพิเศษของบทบาทที่ผู้ใช้มีเมื่อดำเนินการขั้นตอนที่ไม่ระบุตัวตน

ต่อไป เรามีเนื้อหาโค้ดของกระบวนการซึ่งคั่นด้วยเครื่องหมายดอลลาร์สองตัว ที่นี่เราสามารถคัดลอกรหัสไม่เปลี่ยนแปลง

หลังจากคู่ที่สองของเครื่องหมายดอลลาร์ แทนที่จะจบคำสั่งด้วยเครื่องหมายอัฒภาคเหมือนที่เราทำกับกระบวนงานที่เก็บไว้ เราจะทำตามคำนิยามของกระบวนงานที่ไม่ระบุชื่อทันทีด้วยคีย์เวิร์ดการโทร ดังนั้น ความแตกต่างที่สำคัญอีกประการระหว่างฟังก์ชันที่เก็บไว้และฟังก์ชันที่ไม่ระบุตัวตนที่ต้องจำไว้ก็คือ ฟังก์ชันที่ไม่ระบุชื่อนั้นถูกกำหนดและเรียกใช้ในคำสั่งเดียว

เหตุใดจึงต้องใช้ขั้นตอนที่ไม่ระบุชื่อ

เนื่องจากหนึ่งในประโยชน์หลักของขั้นตอนการจัดเก็บคือความสามารถในการจัดเก็บเพื่อใช้ซ้ำในภายหลัง เหตุใดจึงต้องใช้ขั้นตอนที่ไม่ระบุชื่อ ข้อดีประการหนึ่งที่ต้องคำนึงถึงคือ ขั้นตอนที่ไม่ระบุ ชื่อไม่จำเป็นต้องมีบทบาทในการเรียกใช้โค้ดเพื่อให้มีสิทธิ์ในการสร้างขั้นตอน นอกจากนี้ ด้วยขั้นตอนที่ไม่ระบุชื่อ เราได้รับฟังก์ชันการทำงานของโปรแกรมระดับสูง เช่น การแยกสาขา การวนลูป และการจัดการข้อผิดพลาด แต่ไม่ต้องเก็บโค้ดเวอร์ชันถาวรหากไม่จำเป็น

ต้องการเรียนรู้เพิ่มเติมเกี่ยวกับเกล็ดหิมะหรือไม่

หากคุณต้องการผ่านการรับรองหลักของ SnowPro หรือเพียงแค่ต้องการเรียนรู้เพิ่มเติมเกี่ยวกับแนวคิดของ Snowflake เช่น ขั้นตอนการจัดเก็บ ลองดูหลักสูตร Snowflake เบื้องต้นของฉันที่มีอยู่บน Udemy สำหรับส่วนลด 50% ตามลิงค์ นี้ หรือป้อน NEWYEAR50 เมื่อชำระเงิน

เราครอบคลุมข้อมูลพื้นฐาน เช่น สถาปัตยกรรมข้อมูลที่ใช้ร่วมกันหลายคลัสเตอร์ และหัวข้อที่ซับซ้อนมากขึ้น เช่น การเข้าถึงข้อมูลกึ่งโครงสร้างและฟังก์ชันการประมาณค่า

หากคุณต้องการติดต่อ โปรดส่งข้อความถึงฉันบนLinkedInหรือเยี่ยมชมเว็บไซต์ของฉัน:https://www.tombaileycourses.com/.

ขอขอบคุณและมีความสุขในการเรียนรู้!