ขณะนี้ฉันกำลังอยู่ระหว่างการสร้าง ETL สำหรับคลังข้อมูลของเรา เรากำลังใช้ SSIS 2008 แต่เราพบเจอปัญหาที่ใหญ่ที่สุดคือความยากลำบากในการใช้ส่วนประกอบซ้ำ เรามีแพ็คเกจแยกต่างหากสำหรับแต่ละตารางและแต่ละแพ็คเกจใช้เป็นตัวแปรจำนวนหนึ่งจากแพ็คเกจหลัก เมื่อเราทำการเปลี่ยนแปลงตัวแปรอินพุตเหล่านี้เราจำเป็นต้องเข้าไปในแต่ละแพ็กเกจ (ตอนนี้เรามี 15 หรือมากกว่านั้น แต่จำนวนนี้จะเพิ่มขึ้นอย่างมีนัยสำคัญ) และปรับเปลี่ยนแพคเกจเพื่อจัดการกับการเปลี่ยนแปลงเหล่านั้น นอกจากนี้ยังมีปัญหาอื่น ๆ รวมถึงการไม่สามารถเรียกใช้ SQL โดยพลการสำหรับการดึงข้อมูลของเราความสามารถในการบันทึกที่ไม่ดีเป็นต้น
กระบวนการทั้งหมดนี้จะมีประสิทธิภาพมากกว่านี้หากมีวิธีการพัฒนา ETL ของเราในรหัสการเปิดใช้งานการใช้รหัสซ้ำไลบรารีทั่วไปการทดสอบหน่วยที่ดีกว่า ฯลฯ มีภาษา ETL มาตรฐาน / API สำหรับ SQL Server โดยแท้จริงหรือไม่? ฉันต้องการหลีกเลี่ยงเครื่องมือ GUI มากที่สุด
แก้ไข: ฉันควรพูดถึงพื้นหลังของฉัน ฉันไม่ใช่ DBA และไม่มีการฝึกอบรมอย่างเป็นทางการ (หรือไม่เป็นทางการ) DBA โดยทั่วไปฉันคิดว่าสิ่งนี้ออกมาเมื่อฉันไปตามดังนั้นจึงมีความเป็นไปได้ทุกครั้งที่ฉันพยายามทำสิ่งที่ไม่เหมาะสมกับ SSIS หรือเข้าใกล้ ETL นี้ โครงการจากมุมที่ผิด นอกจากนี้ฉันยังทำงานในหน่วยงานของรัฐดังนั้นการแก้ปัญหาใด ๆ ที่จำเป็นต้องซื้อแพคเกจซอฟต์แวร์ใหม่ไม่ได้อยู่ในขอบเขตของความเป็นไปได้
นี่คือหนึ่งในภารกิจของเรา เรากำลังใช้ SSIS Package เดียวเพื่อโหลดแต่ละตารางในคลังสินค้าของเรา แต่ละแพคเกจความจริงและแพคเกจขนาดโดยทั่วไปแล้วจะแตกต่างกันเท่านั้น
- แยกออกจากฐานข้อมูลต้นทาง
- กิจวัตรในกระแสข้อมูล
- ผสานเข้ากับตารางปลายทาง
สิ่งที่ฉันอยากจะทำ (ฉันพบว่ายากที่จะทำใน SSIS)
- โหลดแบบสอบถามแยกจากไฟล์ข้อความ เมื่อนักพัฒนากำลังเขียนและทดสอบคิวรีการแยกข้อมูลฉันไม่ควรต้องจัดการคิวรีของพวกเขาด้วยวิธีใด ๆ ก่อนที่ SSIS จะรันและฉันไม่ควรต้องตัดและวางคิวรีลงในวัตถุ DB Source
- ทดสอบแต่ละองค์ประกอบแยกกัน ฉันควรจะสามารถทดสอบกระบวนการ ETL ที่สมบูรณ์สำหรับแต่ละตารางแยกโดยไม่ขึ้นอยู่กับการโหลดตารางอื่น ๆ
- ทำการแก้ไขตรรกะที่แชร์ในที่เดียวโดยไม่ต้องแก้ไขแต่ละแพ็คเกจ ทุกแพ็คเกจโหลดข้อมูลลงในตารางการตรวจสอบในลักษณะเดียวกันหากฉันต้องการเปลี่ยนข้อมูลที่ถูกตรวจสอบโหลดฉันไม่ต้องการแก้ไขทั้ง 15 แพ็กเกจ (หมายเลขนี้จะยิ่งใหญ่ขึ้นเรื่อย ๆ )
กระบวนการทั้งหมดรู้สึกว่ามันจะง่ายกว่ามากในการใช้งานและมีประสิทธิภาพมากขึ้นถ้าทำตามโปรแกรมด้วยการใช้รหัสที่ใช้ร่วมกันที่เหมาะสม