มีภาษา / อินเตอร์เฟสมาตรฐานสำหรับ ETL แบบเป็นโปรแกรมใน SQL Server หรือไม่?


10

ขณะนี้ฉันกำลังอยู่ระหว่างการสร้าง ETL สำหรับคลังข้อมูลของเรา เรากำลังใช้ SSIS 2008 แต่เราพบเจอปัญหาที่ใหญ่ที่สุดคือความยากลำบากในการใช้ส่วนประกอบซ้ำ เรามีแพ็คเกจแยกต่างหากสำหรับแต่ละตารางและแต่ละแพ็คเกจใช้เป็นตัวแปรจำนวนหนึ่งจากแพ็คเกจหลัก เมื่อเราทำการเปลี่ยนแปลงตัวแปรอินพุตเหล่านี้เราจำเป็นต้องเข้าไปในแต่ละแพ็กเกจ (ตอนนี้เรามี 15 หรือมากกว่านั้น แต่จำนวนนี้จะเพิ่มขึ้นอย่างมีนัยสำคัญ) และปรับเปลี่ยนแพคเกจเพื่อจัดการกับการเปลี่ยนแปลงเหล่านั้น นอกจากนี้ยังมีปัญหาอื่น ๆ รวมถึงการไม่สามารถเรียกใช้ SQL โดยพลการสำหรับการดึงข้อมูลของเราความสามารถในการบันทึกที่ไม่ดีเป็นต้น

กระบวนการทั้งหมดนี้จะมีประสิทธิภาพมากกว่านี้หากมีวิธีการพัฒนา ETL ของเราในรหัสการเปิดใช้งานการใช้รหัสซ้ำไลบรารีทั่วไปการทดสอบหน่วยที่ดีกว่า ฯลฯ มีภาษา ETL มาตรฐาน / API สำหรับ SQL Server โดยแท้จริงหรือไม่? ฉันต้องการหลีกเลี่ยงเครื่องมือ GUI มากที่สุด

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


นี่คือหนึ่งในภารกิจของเรา เรากำลังใช้ SSIS Package เดียวเพื่อโหลดแต่ละตารางในคลังสินค้าของเรา แต่ละแพคเกจความจริงและแพคเกจขนาดโดยทั่วไปแล้วจะแตกต่างกันเท่านั้น

  • แยกออกจากฐานข้อมูลต้นทาง
  • กิจวัตรในกระแสข้อมูล
  • ผสานเข้ากับตารางปลายทาง

สิ่งที่ฉันอยากจะทำ (ฉันพบว่ายากที่จะทำใน SSIS)

  • โหลดแบบสอบถามแยกจากไฟล์ข้อความ เมื่อนักพัฒนากำลังเขียนและทดสอบคิวรีการแยกข้อมูลฉันไม่ควรต้องจัดการคิวรีของพวกเขาด้วยวิธีใด ๆ ก่อนที่ SSIS จะรันและฉันไม่ควรต้องตัดและวางคิวรีลงในวัตถุ DB Source
  • ทดสอบแต่ละองค์ประกอบแยกกัน ฉันควรจะสามารถทดสอบกระบวนการ ETL ที่สมบูรณ์สำหรับแต่ละตารางแยกโดยไม่ขึ้นอยู่กับการโหลดตารางอื่น ๆ
  • ทำการแก้ไขตรรกะที่แชร์ในที่เดียวโดยไม่ต้องแก้ไขแต่ละแพ็คเกจ ทุกแพ็คเกจโหลดข้อมูลลงในตารางการตรวจสอบในลักษณะเดียวกันหากฉันต้องการเปลี่ยนข้อมูลที่ถูกตรวจสอบโหลดฉันไม่ต้องการแก้ไขทั้ง 15 แพ็กเกจ (หมายเลขนี้จะยิ่งใหญ่ขึ้นเรื่อย ๆ )

กระบวนการทั้งหมดรู้สึกว่ามันจะง่ายกว่ามากในการใช้งานและมีประสิทธิภาพมากขึ้นถ้าทำตามโปรแกรมด้วยการใช้รหัสที่ใช้ร่วมกันที่เหมาะสม


4
ฉันไม่ใช่ผู้ใช้รายใหญ่ของ SSIS แต่สามารถเข้าใจการรับรู้ของเส้นโค้งการเรียนรู้ที่สูงชันที่นี่ ฉันแนะนำให้คุณดูวิดีโอ / บล็อกของ Andy Leonard, Jamie Thompson, Brian Knight ที่เป็นผู้เชี่ยวชาญในสาขาและได้รับคำแนะนำ ดูเว็บไซต์ sqlpass.org สำหรับวิดีโอฟรีของการประชุมสุดยอดผ่าน & sqlblog.com, pragmaticworks.com
Sankar Reddy

ฉันไม่เชื่อว่าช่วงการเรียนรู้เป็นปัญหา ฉันรู้วิธีการทำงานที่ฉันต้องการทำใน SSIS ฉันกำลังมองหากระบวนการใหม่เพราะโซลูชั่นที่ฉันพบมีความซ้ำซ้อนบอบบางและซับซ้อนโดยไม่จำเป็น
kubi

Kubi, ถ้าคุณสามารถเพิ่มรายละเอียดเกี่ยวกับส่วนประกอบที่คุณอ้างถึง, ฉันจะนำคนที่สามารถตอบคำถามนั้นให้คุณได้ เนื่องจากตอนนี้คำถามของคุณกว้างเกินไปที่จะตอบ
Sankar Reddy

4
@kubi - คุณได้สัมผัสกับหนึ่งในความลับเล็ก ๆ น้อย ๆ ที่สกปรกของอุตสาหกรรม BI เครื่องมือ ETL นั้นยากจนมาก ๆ ในเชิงนามธรรมและตรรกะที่นำมาใช้ซ้ำได้ เป็นผลให้พวกเขาปรับขนาดได้แย่มากด้วยการเพิ่มความซับซ้อนของโดเมน
กังวล OfTunbridgeWells

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

คำตอบ:


6

มีเครื่องมือที่เปิดใช้งานสิ่งนี้ - http://www.varigence.com/products/biml.html

มีรุ่นเชิงพาณิชย์ แต่เรายังรวมฟังก์ชัน BIML บางอย่างใน BIDS Helper ซึ่งเป็นเครื่องมือฟรี http://bidshelper.codeplex.com/

ฉันยินดีที่จะตอบคำถามใด ๆ ที่คุณอาจมีเกี่ยวกับเรื่องนี้

นี่เป็นเครื่องมือที่ บริษัท ของฉันให้บริการ


6

เมื่ออ่านสิ่งนี้ฉันคิดทันทีว่าแนะนำเครื่องมือของ Varigence อย่างไรก็ตามฉันเห็นว่าหนึ่งในสถาปนิกหัวหน้าที่ Varigence, John Welch ได้มาที่นี่ก่อนฉัน

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

คิดว่าเป็น Dynamic SQL สำหรับแพ็คเกจ SSIS ด้วย GUI เจ๋งจริงๆ


3

ฉันลองใช้ SSIS หลายครั้งและยอมแพ้ IMO มันง่ายกว่าที่จะทำทุกอย่างที่ฉันต้องการใน C # SSIS ซับซ้อนเกินไปมีโกตมากเกินไปและมันก็ไม่คุ้มค่า มันเป็นการดีกว่าที่จะใช้เวลาในการพัฒนาทักษะ C # มากกว่าที่จะใช้เวลาเดียวกันกับการเรียนรู้ SSIS - คุณจะได้รับผลตอบแทนจากการฝึกอบรมมากขึ้น ผมไม่จำเป็นต้องไปลงรายละเอียดมากที่นี่ - Ayende เขียนเป็นบทสรุปที่ดีผมไม่มีอะไรที่จะเพิ่ม

การค้นหาและบำรุงรักษาฟังก์ชั่นในโซลูชัน VS นั้นง่ายกว่ามาก การทดสอบหน่วยด้วย VS นั้นง่ายมาก สิ่งที่ฉันต้องทำคือการตรวจสอบแหล่งที่มาในการโค่นล้มและตรวจสอบวิธีการโหลด การทดสอบหน่วยบรรจุภัณฑ์ SSIS นั้นเกี่ยวข้องอย่างมาก

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

นอกจากนี้Rhino ETL ก็ดูเท่ห์เหมือนกัน

มีการอภิปรายไม่กี่ที่คล้ายกันใน StackOverflow


2

ส่วนตัวผมจัดการกระบวนการ ETL ให้ได้มากที่สุดใน SQL ฉันใช้ SSIS เพื่อนำเข้าจากแหล่งข้อมูลแปลก ๆ เช่นไซต์ FTP หรือ Excel แต่นั่นเป็นเพียงการรับข้อมูลดิบเข้าสู่ฐานข้อมูลที่ SQL ทำส่วนที่เหลือ

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

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

ถ้าคุณต้องการมากกว่านี้ฉันแนะนำ. NET ถ้าเพียงเพราะมันใช้ใน SSIS และ SQLCLR ฉันใช้แอพ C # เพื่อจัดการกระบวนการ ETL โดยรวม - เริ่มขั้นตอนย่อยตรวจสอบผลลัพธ์ส่งอีเมล แต่สิ่งเกือบทั้งหมดสามารถทำได้กับ SQL Agent, dbmail และอื่น ๆ

มีเหตุผลใดที่คุณไม่สามารถใช้ SQL สำหรับ ETL ของคุณได้หรือไม่? คุณไม่สามารถทำอะไรให้คุณได้บ้าง?


อันที่จริงเราใช้ SSIS เพื่อถ่ายโอนข้อมูลดิบลงใน Temp DBs จากนั้นเราใช้ TSQL กำหนดวิธีที่เราต้องการ T และ L
พอล
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.