เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบ‚เบฐเบšเบงเบ™เบเบฒเบ™ ETL เปƒเบ™เบ„เบฑเบ‡เบ‚เปเป‰เบกเบนเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบ

เบซเบผเบฒเบเบ„เบปเบ™เปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบžเบดเป€เบชเบ”เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เบชเบฐเบเบฑเบ”, เบเบฒเบ™เบซเบฑเบ™เบ›เปˆเบฝเบ™, เปเบฅเบฐเบเบฒเบ™เป‚เบซเบผเบ”เบ‚เปเป‰เบกเบนเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡. เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ–เบทเบเบšเบฑเบ™เบ—เบถเบ, เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เบˆเบฐเบ–เบทเบเปเบเป‰เป„เบ‚.

เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบกเบตเบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”, เบšเบฑเบ™เบ—เบถเบเบกเบตเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบชเปเบฒเป€เบฅเบฑเบ”เบซเบ™เป‰เบฒเบงเบฝเบเปเบฅเบฐเป‚เบกเบ”เบนเบ™เปƒเบ” (เบกเบฑเบ java) เบขเบธเบ”เบขเบนเปˆเบšเปˆเบญเบ™เปƒเบ”. เปƒเบ™เปเบ–เบงเบชเบธเบ”เบ—เป‰เบฒเบ, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบŠเบญเบเบซเบฒเบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เบ‚เบญเบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™, เบ•เบปเบงเบขเปˆเบฒเบ‡, เบเบฒเบ™เบฅเบฐเป€เบกเบตเบ”เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฑเบเบ‚เบญเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡.

เป€เบžเบทเปˆเบญเบ•เบญเบšเบ„เปเบฒเบ–เบฒเบกเบเปˆเบฝเบงเบเบฑเบšเบšเบปเบ”เบšเบฒเบ”เบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ” ETL, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบˆเบฑเบ”เบ›เบฐเป€เบžเบ”เบšเบฑเบ™เบซเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบทเป‰เบ™เปƒเบ™เบชเบญเบ‡เบ›เบตเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒเบขเบนเปˆเปƒเบ™เบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™เบ—เบตเปˆเปƒเบซเบเปˆเบเบงเปˆเบฒ.

เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบ‚เบฐเบšเบงเบ™เบเบฒเบ™ ETL เปƒเบ™เบ„เบฑเบ‡เบ‚เปเป‰เบกเบนเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบ

เบ‚เปเป‰โ€‹เบœเบดเบ”โ€‹เบžเบฒเบ”โ€‹เบ‚เบญเบ‡โ€‹เบ–เบฒเบ™โ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบฅเบงเบกโ€‹เบกเบตโ€‹เบžเบทเป‰เบ™โ€‹เบ—เบตเปˆโ€‹เบšเปเปˆโ€‹เบžเบฝเบ‡โ€‹เบžเปโ€‹, เบเบฒเบ™โ€‹เป€เบŠเบทเปˆเบญเบกโ€‹เบ•เปเปˆโ€‹เบ—เบตเปˆโ€‹เบชเบนเบ™โ€‹เป€เบชเบโ€‹เป„เบ›โ€‹, เบเบญเบ‡โ€‹เบ›เบฐโ€‹เบŠเบธเบก hangโ€‹, เปเบฅเบฐโ€‹เบญเบทเปˆเบ™เป†โ€‹.

เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ—เบฒเบ‡เป€เบซเบ”เบœเบปเบ™เบ›เบฐเบเบญเบšเบกเบตเป€เบŠเบฑเปˆเบ™: เบเบฒเบ™เบฅเบฐเป€เบกเบตเบ”เบเบฐเปเบˆเบ•เบฒเบ•เบฐเบฅเบฒเบ‡, เบงเบฑเบ”เบ–เบธเบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡, เบเบฒเบ™เบ‚เบฒเบ”เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบงเบฑเบ”เบ–เบธ, เปเบฅเบฐเบญเบทเปˆเบ™เป†.
เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒเบญเบฒเบ”เบˆเบฐเบšเปเปˆเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ•เบฒเบกเป€เบงเบฅเบฒ, เบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเบ„เป‰เบฒเบ‡, เปเบฅเบฐเบญเบทเปˆเบ™เป†.

เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ‡เปˆเบฒเบเป†เบšเปเปˆเปƒเบŠเป‰เป€เบงเบฅเบฒเบ”เบปเบ™เปƒเบ™เบเบฒเบ™เปเบเป‰เป„เบ‚. ETL เบ—เบตเปˆเบ”เบตเบชเบฒเบกเบฒเบ”เบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเบžเบงเบเบกเบฑเบ™เบชเปˆเบงเบ™เปƒเบซเบเปˆเบ”เป‰เบงเบเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡.

เบ‚เปเป‰เบšเบปเบเบœเปˆเบญเบ‡เบ—เบตเปˆเบชเบฑเบšเบชเบปเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ„เบปเป‰เบ™เบžเบปเบšเปเบฅเบฐเบ—เบปเบ”เบชเบญเบšเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบ‚เปเป‰เบกเบนเบ™, เป€เบžเบทเปˆเบญเบ„เบปเป‰เบ™เบซเบฒเปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™. เบกเบฑเบเบˆเบฐเบ™เปเบฒเป„เบ›เบชเบนเปˆเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปเบฅเบฐเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เป€เบ„เบดเปˆเบ‡เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบšเบฑเบ™เบซเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”เปเบกเปˆเบ™เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™. 48% เบ‚เบญเบ‡เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”เปเบกเปˆเบ™เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบ.
เบซเบ™เบถเปˆเบ‡เปƒเบ™เบชเบฒเบกเบ‚เบญเบ‡เบšเบฑเบ™เบซเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”เปเบกเปˆเบ™เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡ logic เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบซเบผเบทเบฎเบนเบšเปเบšเบš, เบซเบผเบฒเบเบเบงเปˆเบฒเป€เบ„เบดเปˆเบ‡เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบชเบฐเบฅเบฑเบšเบชเบฑเบšเบŠเป‰เบญเบ™.

เปเบฅเบฐเบซเบ™เป‰เบญเบเบเบงเปˆเบฒเบซเบ™เบถเปˆเบ‡เบชเปˆเบงเบ™เบชเบตเปˆเบ‚เบญเบ‡เบšเบฑเบ™เบซเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”เปเบกเปˆเบ™เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบงเบฝเบ, 18% เปเบกเปˆเบ™เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบ.

เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›, 22% เบ‚เบญเบ‡เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบทเป‰เบ™เปเบกเปˆเบ™เบชเบฑเบšเบชเบปเบ™, เปเบฅเบฐเบเบฒเบ™เปเบเป‰เป„เบ‚เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆเปเบฅเบฐเป€เบงเบฅเบฒเบซเบผเบฒเบเบ—เบตเปˆเบชเบธเบ”. เบžเบงเบเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป€เบเบตเบ”เบ‚เบถเป‰เบ™เบ›เบฐเบกเบฒเบ™เบซเบ™เบถเปˆเบ‡เบ„เบฑเป‰เบ‡เบ•เปเปˆเบญเบฒเบ—เบดเบ”. เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเป€เบเบตเบ”เบ‚เบถเป‰เบ™เป€เบเบทเบญเบšเบ—เบธเบเป†เบกเบทเป‰.

เปเบ™เปˆเบ™เบญเบ™, เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ‚เบฐเบšเบงเบ™เบเบฒเบ™ ETL เบˆเบฐเบกเบตเบ›เบฐเบชเบดเบ”เบ•เบดเบœเบปเบ™เป€เบกเบทเปˆเบญเบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เบ–เบทเบเบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™เบšเบฑเบ™เบ—เบถเบเบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡เป€เบ—เบปเปˆเบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เปเบฅเบฐเปƒเบŠเป‰เป€เบงเบฅเบฒเบ•เปเบฒเปˆเบชเบธเบ”เบ—เบตเปˆเบ•เป‰เบญเบ‡เบŠเบญเบเบซเบฒเปเบซเบผเปˆเบ‡เบ‚เบญเบ‡เบšเบฑเบ™เบซเบฒ.

เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš

เบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบšเบดเปˆเบ‡เบซเบเบฑเบ‡เปƒเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบš ETL?

เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบ‚เบฐเบšเบงเบ™เบเบฒเบ™ ETL เปƒเบ™เบ„เบฑเบ‡เบ‚เปเป‰เบกเบนเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบ
เป€เบฅเบตเปˆเบกโ€‹เบ•เบปเป‰เบ™โ€‹เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ—เบตเปˆโ€‹เป€เบ‚เบปเบฒโ€‹เป„เบ”เป‰โ€‹เป€เบฅเบตเปˆเบกโ€‹เบ•เบปเป‰เบ™โ€‹เบเบฒเบ™โ€‹เป€เบฎเบฑเบ”โ€‹เบงเบฝเบโ€‹,
เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™ - เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™,
เบŠเบฑเป‰เบ™ - เบฅเบฐเบ”เบฑเบšเบ‚เบญเบ‡เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบเปเบฒเบฅเบฑเบ‡เป‚เบซเบฅเบ”,
เบŠเบทเปˆเบงเบฝเบ ETL - เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เบญเบฑเบšเป‚เบซเบฅเบ”, เป€เบŠเบดเปˆเบ‡เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบซเบผเบฒเบเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ™เป‰เบญเบเป†,
เบˆเปเบฒเบ™เบงเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™ - เบˆเปเบฒเบ™เบงเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เบตเปˆเบเปเบฒเบฅเบฑเบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”,
เปเบ–เบงเบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเบœเบปเบ™เบเบฐเบ—เบปเบš - เบ‚เปเป‰เบกเบนเบ™เบซเบผเบฒเบเบ›เบฒเบ™เปƒเบ”เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบกเบงเบ™เบœเบปเบ™เปเบฅเป‰เบง,
เป„เบฅเบเบฐเป€เบงเบฅเบฒเบงเบดเบ™เบฒเบ—เบต - เบกเบฑเบ™เปƒเบŠเป‰เป€เบงเบฅเบฒเบ”เบปเบ™เบ›เบฒเบ™เปƒเบ”,
เบชเบฐโ€‹เบ–เบฒโ€‹เบ™เบฐ - เบšเปเปˆโ€‹เบงเปˆเบฒโ€‹เบ—เบธเบโ€‹เบชเบดเปˆเบ‡โ€‹เบ—เบธเบโ€‹เบขเปˆเบฒเบ‡โ€‹เปเบกเปˆเบ™โ€‹เบ”เบตโ€‹เบซเบผเบทโ€‹เบšเปเปˆโ€‹: OKโ€‹, เบœเบดเบ”โ€‹เบžเบฒเบ”โ€‹, เบเบฒเบ™โ€‹เปเบฅเปˆเบ™โ€‹, hangsโ€‹
เบ‚เปเป‰เบ„เบงเบฒเบก - เบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเบ›เบฐเบชเบปเบšเบœเบปเบ™เบชเปเบฒเป€เบฅเบฑเบ”เบซเบผเป‰เบฒเบชเบธเบ”เบซเบผเบทเบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”.

เบญเบตเบ‡เบ•เบฒเบกเบชเบฐเบ–เบฒเบ™เบฐเบžเบฒเบšเบ‚เบญเบ‡เบฅเบฒเบเบเบฒเบ™, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเบปเปˆเบ‡เบญเบตเป€เบกเบงเป„เบ”เป‰. เบˆเบปเบ”เปเบฒเบเป€เบ–เบดเบ‡เบชเบฐเบกเบฒเบŠเบดเบเบ„เบปเบ™เบญเบทเปˆเบ™เป†. เบ–เป‰เบฒเบšเปเปˆเบกเบตเบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบˆเบปเบ”เบซเบกเบฒเบเปเบกเปˆเบ™เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”, เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบ‚เบญเบ‡เป€เบซเบ”เบเบฒเบ™เปเบกเปˆเบ™เบŠเบตเป‰เปƒเบซเป‰เป€เบซเบฑเบ™เบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™.

เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบกเบฑเบ™เบเปเปˆเป€เบเบตเบ”เบ‚เบทเป‰เบ™เบงเปˆเบฒเป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ•เบดเบ”เบ•เบฒเบกเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡เบšเปเปˆเป€เบฎเบฑเบ”เบงเบฝเบ. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเป‚เบ—เบซเบฒเบกเบธเบกเป€เบšเบดเปˆเบ‡ (เป€เบšเบดเปˆเบ‡) เป‚เบ”เบเบเบปเบ‡เปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™, เบšเบปเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™เบ—เบตเปˆเบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™.

เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ•เบดเบ”เบ•เบฒเบกเบเบงเบ”เบเบฒ ETL

เป€เบžเบทเปˆเบญเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบ‚เบฐเบšเบงเบ™เบเบฒเบ™ ETL, เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบซเบ™เบถเปˆเบ‡เปเบฅเบฐเบซเบ™เบถเปˆเบ‡เป€เบšเบดเปˆเบ‡เปเบกเปˆเบ™เบžเบฝเบ‡เบžเป.

เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเบฑเบšเบ„เบทเบ™เป„เบ› เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบžเบฝเบ‡เป€เบฅเบฑเบเบ™เป‰เบญเบเบ‚เบญเบ‡เบ—เปˆเบฒเบ™ เปเบฅเบฐเบชเป‰เบฒเบ‡เบ•เบปเบงเปเบšเบšเปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™ sqlite.

เบ•เบฒเบ•เบฐเบฅเบฒเบ‡ DDL

CREATE TABLE UTL_JOB_STATUS (
/* Table for logging of job execution log. Important that the job has the steps ETL_START and ETL_END or ETL_ERROR */
  UTL_JOB_STATUS_ID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
  SID               INTEGER NOT NULL DEFAULT -1, /* Session Identificator. Unique for every Run of job */
  LOG_DT            INTEGER NOT NULL DEFAULT 0,  /* Date time */
  LOG_D             INTEGER NOT NULL DEFAULT 0,  /* Date */
  JOB_NAME          TEXT NOT NULL DEFAULT 'N/A', /* Job name like JOB_STG2DM_GEO */
  STEP_NAME         TEXT NOT NULL DEFAULT 'N/A', /* ETL_START, ... , ETL_END/ETL_ERROR */
  STEP_DESCR        TEXT,                        /* Description of task or error message */
  UNIQUE (SID, JOB_NAME, STEP_NAME)
);
INSERT INTO UTL_JOB_STATUS (UTL_JOB_STATUS_ID) VALUES (-1);

เป€เบšเบดเปˆเบ‡/เบฅเบฒเบเบ‡เบฒเบ™ DDL

CREATE VIEW IF NOT EXISTS UTL_JOB_STATUS_V
AS /* Content: Package Execution Log for last 3 Months. */
WITH SRC AS (
  SELECT LOG_D,
    LOG_DT,
    UTL_JOB_STATUS_ID,
    SID,
	CASE WHEN INSTR(JOB_NAME, 'FTP') THEN 'TRANSFER' /* file transfer */
	     WHEN INSTR(JOB_NAME, 'STG') THEN 'STAGE' /* stage */
	     WHEN INSTR(JOB_NAME, 'CLS') THEN 'CLEANSING' /* cleansing */
	     WHEN INSTR(JOB_NAME, 'DIM') THEN 'DIMENSION' /* dimension */
	     WHEN INSTR(JOB_NAME, 'FCT') THEN 'FACT' /* fact */
		 WHEN INSTR(JOB_NAME, 'ETL') THEN 'STAGE-MART' /* data mart */
	     WHEN INSTR(JOB_NAME, 'RPT') THEN 'REPORT' /* report */
	     ELSE 'N/A' END AS LAYER,
	CASE WHEN INSTR(JOB_NAME, 'ACCESS') THEN 'ACCESS LOG' /* source */
	     WHEN INSTR(JOB_NAME, 'MASTER') THEN 'MASTER DATA' /* source */
	     WHEN INSTR(JOB_NAME, 'AD-HOC') THEN 'AD-HOC' /* source */
	     ELSE 'N/A' END AS SOURCE,
    JOB_NAME,
    STEP_NAME,
    CASE WHEN STEP_NAME='ETL_START' THEN 1 ELSE 0 END AS START_FLAG,
    CASE WHEN STEP_NAME='ETL_END' THEN 1 ELSE 0 END AS END_FLAG,
    CASE WHEN STEP_NAME='ETL_ERROR' THEN 1 ELSE 0 END AS ERROR_FLAG,
    STEP_NAME || ' : ' || STEP_DESCR AS STEP_LOG,
	SUBSTR( SUBSTR(STEP_DESCR, INSTR(STEP_DESCR, '***')+4), 1, INSTR(SUBSTR(STEP_DESCR, INSTR(STEP_DESCR, '***')+4), '***')-2 ) AS AFFECTED_ROWS
  FROM UTL_JOB_STATUS
  WHERE datetime(LOG_D, 'unixepoch') >= date('now', 'start of month', '-3 month')
)
SELECT JB.SID,
  JB.MIN_LOG_DT AS START_DT,
  strftime('%d.%m.%Y %H:%M', datetime(JB.MIN_LOG_DT, 'unixepoch')) AS LOG_DT,
  JB.SOURCE,
  JB.LAYER,
  JB.JOB_NAME,
  CASE
  WHEN JB.ERROR_FLAG = 1 THEN 'ERROR'
  WHEN JB.ERROR_FLAG = 0 AND JB.END_FLAG = 0 AND strftime('%s','now') - JB.MIN_LOG_DT > 0.5*60*60 THEN 'HANGS' /* half an hour */
  WHEN JB.ERROR_FLAG = 0 AND JB.END_FLAG = 0 THEN 'RUNNING'
  ELSE 'OK'
  END AS STATUS,
  ERR.STEP_LOG     AS STEP_LOG,
  JB.CNT           AS STEP_CNT,
  JB.AFFECTED_ROWS AS AFFECTED_ROWS,
  strftime('%d.%m.%Y %H:%M', datetime(JB.MIN_LOG_DT, 'unixepoch')) AS JOB_START_DT,
  strftime('%d.%m.%Y %H:%M', datetime(JB.MAX_LOG_DT, 'unixepoch')) AS JOB_END_DT,
  JB.MAX_LOG_DT - JB.MIN_LOG_DT AS JOB_DURATION_SEC
FROM
  ( SELECT SID, SOURCE, LAYER, JOB_NAME,
           MAX(UTL_JOB_STATUS_ID) AS UTL_JOB_STATUS_ID,
           MAX(START_FLAG)       AS START_FLAG,
           MAX(END_FLAG)         AS END_FLAG,
           MAX(ERROR_FLAG)       AS ERROR_FLAG,
           MIN(LOG_DT)           AS MIN_LOG_DT,
           MAX(LOG_DT)           AS MAX_LOG_DT,
           SUM(1)                AS CNT,
           SUM(IFNULL(AFFECTED_ROWS, 0)) AS AFFECTED_ROWS
    FROM SRC
    GROUP BY SID, SOURCE, LAYER, JOB_NAME
  ) JB,
  ( SELECT UTL_JOB_STATUS_ID, SID, JOB_NAME, STEP_LOG
    FROM SRC
    WHERE 1 = 1
  ) ERR
WHERE 1 = 1
  AND JB.SID = ERR.SID
  AND JB.JOB_NAME = ERR.JOB_NAME
  AND JB.UTL_JOB_STATUS_ID = ERR.UTL_JOB_STATUS_ID
ORDER BY JB.MIN_LOG_DT DESC, JB.SID DESC, JB.SOURCE;

SQL เบเบงเบ”เบชเบญเบšเบงเปˆเบฒเบชเบฒเบกเบฒเบ”เป„เบ”เป‰เบฎเบฑเบšเบˆเปเบฒเบ™เบงเบ™เป€เบŠเบ”เบŠเบฑเบ™เปƒเบซเบกเปˆ

SELECT SUM (
  CASE WHEN start_job.JOB_NAME IS NOT NULL AND end_job.JOB_NAME IS NULL /* existed job finished */
	    AND NOT ( 'y' = 'n' ) /* force restart PARAMETER */
       THEN 1 ELSE 0
  END ) AS IS_RUNNING
  FROM
    ( SELECT 1 AS dummy FROM UTL_JOB_STATUS WHERE sid = -1) d_job
  LEFT OUTER JOIN
    ( SELECT JOB_NAME, SID, 1 AS dummy
      FROM UTL_JOB_STATUS
      WHERE JOB_NAME = 'RPT_ACCESS_LOG' /* job name PARAMETER */
	    AND STEP_NAME = 'ETL_START'
      GROUP BY JOB_NAME, SID
    ) start_job /* starts */
  ON d_job.dummy = start_job.dummy
  LEFT OUTER JOIN
    ( SELECT JOB_NAME, SID
      FROM UTL_JOB_STATUS
      WHERE JOB_NAME = 'RPT_ACCESS_LOG'  /* job name PARAMETER */
	    AND STEP_NAME in ('ETL_END', 'ETL_ERROR') /* stop status */
      GROUP BY JOB_NAME, SID
    ) end_job /* ends */
  ON start_job.JOB_NAME = end_job.JOB_NAME
     AND start_job.SID = end_job.SID

เบ„เบธเบ™โ€‹เบ™เบฐโ€‹เบชเบปเบกโ€‹เบšเบฑเบ”โ€‹เบ•เบฒโ€‹เบ•เบฐโ€‹เบฅเบฒเบ‡โ€‹:

  • เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ เปเบฅเบฐเบชเบดเป‰เบ™เบชเบธเบ”เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบ‚เปเป‰เบกเบนเบ™เบˆเบฐเบ•เป‰เบญเบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเบ‚เบฑเป‰เบ™เบ•เบญเบ™ ETL_START เปเบฅเบฐ ETL_END
  • เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”, เบ‚เบฑเป‰เบ™เบ•เบญเบ™ ETL_ERROR เบ—เบตเปˆเบกเบตเบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเบ‚เบญเบ‡เบกเบฑเบ™เบ„เบงเบ™เบˆเบฐเบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™
  • เบˆเปเบฒเบ™เบงเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบ–เบทเบเบ›เบธเบ‡เปเบ•เปˆเบ‡เบ„เบงเบ™เบˆเบฐเบ–เบทเบเป€เบ™เบฑเป‰เบ™เปƒเบชเปˆ, เบ•เบปเบงเบขเปˆเบฒเบ‡, เบกเบตเบฎเบนเบšเบ”เบฒเบง
  • เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ”เบฝเบงเบเบฑเบ™เบชเบฒเบกเบฒเบ”เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป„เบ”เป‰เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบžเบฒเบฅเบฒเบกเบดเป€เบ•เบต force_restart=y, เป‚เบ”เบเบšเปเปˆเบกเบตเบกเบฑเบ™, เบˆเปเบฒเบ™เบงเบ™เบเบญเบ‡เบ›เบฐเบŠเบธเบกเปเบกเปˆเบ™เบญเบญเบเบžเบฝเบ‡เปเบ•เปˆเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เบตเปˆเบชเปเบฒเป€เบฅเบฑเบ”.
  • เปƒเบ™เบฎเบนเบšเปเบšเบšเบ›เบปเบเบเบฐเบ•เบด, เบ—เปˆเบฒเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ”เบฝเบงเบเบฑเบ™เปƒเบ™เบ‚เบฐเบซเบ™เบฒเบ™

เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบกเบตเบ”เบฑเปˆเบ‡เบ™เบตเป‰:

  • เป„เบ”เป‰เบฎเบฑเบšเบˆเปเบฒเบ™เบงเบ™เป€เบŠเบ”เบŠเบฑเบ™เบ‚เบญเบ‡เบ‚เบฑเป‰เบ™เบ•เบญเบ™ ETL เบ—เบตเปˆเปเบฅเปˆเบ™
  • เปƒเบชเปˆเบ‚เปเป‰เบกเบนเบ™เบšเบฑเบ™เบ—เบถเบเป€เบ‚เบปเป‰เบฒเปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡
  • เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบšเบฑเบ™เบ—เบถเบเบœเบปเบ™เบชเปเบฒเป€เบฅเบฑเบ”เบชเบธเบ”เบ—เป‰เบฒเบเบ‚เบญเบ‡เบ‚เบฑเป‰เบ™เบ•เบญเบ™ ETL

เปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เป€เบŠเบฑเปˆเบ™ Oracle เบซเบผเบท Postgres, เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบ›เบฑเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆเบเปเปˆเบชเป‰เบฒเบ‡เปƒเบ™. sqlite เบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบเบปเบ™เป„เบเบžเบฒเบเบ™เบญเบ, เปเบฅเบฐเปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰เบกเบฑเบ™ เบ•เบปเป‰เบ™เปเบšเบšเปƒเบ™ PHP.

เบชเบฐเบซเบฅเบธเบš

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ‚เปเป‰เบ„เบงเบฒเบกเบชเบฐเปเบ”เบ‡เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ›เบฐเบกเบงเบ™เบœเบปเบ™เบ‚เปเป‰เบกเบนเบ™เบกเบตเบšเบปเบ”เบšเบฒเบ”เบชเปเบฒเบ„เบฑเบ™เบซเบผเบฒเบ. เปเบ•เปˆเบกเบฑเบ™เป€เบ›เบฑเบ™เบเบฒเบ™เบเบฒเบเบ—เบตเปˆเบˆเบฐเป‚เบ—เบซเบฒเบžเบงเบเป€เบ‚เบปเบฒเบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบŠเบญเบเบซเบฒเบชเบฒเป€เบซเบ”เบ‚เบญเบ‡เบšเบฑเบ™เบซเบฒเบขเปˆเบฒเบ‡เป„เบงเบงเบฒ. เป€เบกเบทเปˆเบญเบˆเปเบฒเบ™เบงเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เป€เบ‚เบปเป‰เบฒเปƒเบเป‰เบฎเป‰เบญเบ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบชเบฑเบšเบชเบปเบ™.

เบšเบปเบ”เบ„เบงเบฒเบกเบชเบฐเบซเบ™เบญเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบเบฒเบ™เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เปƒเบ™เบฎเบนเบšเปเบšเบšเบ‚เบญเบ‡เบ•เบปเป‰เบ™เปเบšเบš. เบ•เบปเป‰เบ™เปเบšเบšเบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเบ—เบฑเบ‡เปเบปเบ”เปเบกเปˆเบ™เบกเบตเบขเบนเปˆเปƒเบ™ gitlab SQLite PHP ETL Utilities.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™