เจ‡เฉฑเจ• เจ›เฉ‹เจŸเฉ‡ เจกเฉ‡เจŸเจพ เจตเฉ‡เจ…เจฐเจนเจพเจŠเจธ เจตเจฟเฉฑเจš ETL เจชเฉเจฐเจ•เจฟเจฐเจฟเจ†เจตเจพเจ‚ เจฆเฉ€ เจจเจฟเจ—เจฐเจพเจจเฉ€ เจ•เจฐเจจเจพ

เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจฐเจฟเจฒเฉ‡เจธเจผเจจเจฒ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจตเจฟเฉฑเจš เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจเจ•เจธเจŸเจฐเฉˆเจ•เจŸ เจ•เจฐเจจ, เจฌเจฆเจฒเจฃ เจ…เจคเฉ‡ เจฒเฉ‹เจก เจ•เจฐเจจ เจฒเจˆ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ†เจตเจพเจ‚ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจตเจฟเจธเจผเฉ‡เจธเจผ เจธเจพเจงเจจเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค เจ•เฉฐเจฎ เจ•เจฐเจจ เจตเจพเจฒเฉ‡ เจธเจพเจงเจจเจพเจ‚ เจฆเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจฒเฉŒเจ— เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ, เจ—เจฒเจคเฉ€เจ†เจ‚ เจ เฉ€เจ• เจ•เฉ€เจคเฉ€เจ†เจ‚ เจœเจพเจ‚เจฆเฉ€เจ†เจ‚ เจนเจจ.

เจ•เจฟเจธเฉ‡ เจ—เจฒเจคเฉ€ เจฆเฉ€ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš, เจฒเฉŒเจ— เจตเจฟเฉฑเจš เจœเจพเจฃเจ•เจพเจฐเฉ€ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ เจ•เจฟ เจŸเฉ‚เจฒ เจ•เฉฐเจฎ เจจเฉ‚เฉฐ เจชเฉ‚เจฐเจพ เจ•เจฐเจจ เจตเจฟเฉฑเจš เจ…เจธเจซเจฒ เจฐเจฟเจนเจพ เจ…เจคเฉ‡ เจ•เจฟเจนเฉœเฉ‡ เจฎเฉ‹เจกเฉ€เจŠเจฒ (เจ…เจ•เจธเจฐ java) เจ•เจฟเฉฑเจฅเฉ‡ เจฐเฉเจ•เฉ‡เฅค เจ†เจ–เจฐเฉ€ เจฒเจพเจˆเจจเจพเจ‚ เจตเจฟเฉฑเจš, เจคเฉเจธเฉ€เจ‚ เจ‡เฉฑเจ• เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจ—เจฒเจคเฉ€ เจฒเฉฑเจญ เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจ‡เฉฑเจ• เจธเจพเจฐเจฃเฉ€ เจตเจฟเจฒเฉฑเจ–เจฃ เจ•เฉเฉฐเจœเฉ€ เจฆเฉ€ เจ‰เจฒเฉฐเจ˜เจฃเจพ.

เจ‡เจธ เจธเจตเจพเจฒ เจฆเจพ เจœเจตเจพเจฌ เจฆเฉ‡เจฃ เจฒเจˆ เจ•เจฟ เจˆเจŸเฉ€เจเจฒ เจ—เจฒเจคเฉ€ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจ•เฉ€ เจญเฉ‚เจฎเจฟเจ•เจพ เจจเจฟเจญเจพเจ‰เจ‚เจฆเฉ€ เจนเฉˆ, เจฎเฉˆเจ‚ เจ‰เจนเจจเจพเจ‚ เจธเจพเจฐเฉ€เจ†เจ‚ เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚ เจจเฉ‚เฉฐ เจธเจผเฉเจฐเฉ‡เจฃเฉ€เจฌเฉฑเจง เจ•เฉ€เจคเจพ เจนเฉˆ เจœเฉ‹ เจชเจฟเจ›เจฒเฉ‡ เจฆเฉ‹ เจธเจพเจฒเจพเจ‚ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจตเฉฑเจกเฉ€ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจ†เจˆเจ†เจ‚ เจนเจจเฅค

เจ‡เฉฑเจ• เจ›เฉ‹เจŸเฉ‡ เจกเฉ‡เจŸเจพ เจตเฉ‡เจ…เจฐเจนเจพเจŠเจธ เจตเจฟเฉฑเจš ETL เจชเฉเจฐเจ•เจฟเจฐเจฟเจ†เจตเจพเจ‚ เจฆเฉ€ เจจเจฟเจ—เจฐเจพเจจเฉ€ เจ•เจฐเจจเจพ

เจกเจพเจŸเจพเจฌเฉ‡เจธ เจฆเฉ€เจ†เจ‚ เจคเจฐเฉเฉฑเจŸเฉ€เจ†เจ‚ เจตเจฟเฉฑเจš เจ•เจพเจซเจผเฉ€ เจฅเจพเจ‚ เจจเจพ เจนเฉ‹เจฃเจพ, เจ•เฉเจจเฉˆเจ•เจธเจผเจจ เจ—เฉเจ†เจšเจฃเจพ, เจธเฉˆเจธเจผเจจ เจนเฉฐเจ—, เจ†เจฆเจฟ เจธเจผเจพเจฎเจฒ เจนเจจเฅค

เจฒเจพเจœเจผเฉ€เจ•เจฒ เจ—เจฒเจคเฉ€เจ†เจ‚ เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจนเจจ เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจŸเฉ‡เจฌเจฒ เจ•เฉเฉฐเจœเฉ€เจ†เจ‚ เจฆเฉ€ เจ‰เจฒเฉฐเจ˜เจฃเจพ, เจ—เฉˆเจฐ-เจตเฉˆเจง เจตเจธเจคเฉ‚เจ†เจ‚, เจตเจธเจคเฉ‚เจ†เจ‚ เจคเฉฑเจ• เจชเจนเฉเฉฐเจš เจฆเฉ€ เจ˜เจพเจŸ, เจ†เจฆเจฟเฅค
เจธเจผเจกเจฟเจŠเจฒเจฐ เจธเจฎเฉ‡เจ‚ 'เจคเฉ‡ เจธเจผเฉเจฐเฉ‚ เจจเจนเฉ€เจ‚ เจนเฉ‹ เจธเจ•เจฆเจพ, เจ‡เจน เจœเฉฐเจฎ เจธเจ•เจฆเจพ เจนเฉˆ, เจ†เจฆเจฟเฅค

เจธเจงเจพเจฐเจฃ เจ—เจฒเจคเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจ เฉ€เจ• เจ•เจฐเจจ เจตเจฟเฉฑเจš เจฆเฉ‡เจฐ เจจเจนเฉ€เจ‚ เจฒเฉฑเจ—เจฆเฉ€เฅค เจ‡เฉฑเจ• เจšเฉฐเจ—เจพ เจˆเจŸเฉ€เจเจฒ เจ‰เจนเจจเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจฌเจนเฉเจคเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจ†เจชเจฃเฉ‡ เจ†เจช เจธเฉฐเจญเจพเจฒ เจธเจ•เจฆเจพ เจนเฉˆเฅค

เจ—เฉเฉฐเจเจฒเจฆเจพเจฐ เจฌเฉฑเจ— เจกเฉ‡เจŸเจพ เจธเจฐเฉ‹เจคเจพเจ‚ เจฆเฉ€ เจชเฉœเจšเฉ‹เจฒ เจ•เจฐเจจ เจฒเจˆ, เจกเฉ‡เจŸเจพ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ†เจตเจพเจ‚ เจจเฉ‚เฉฐ เจ–เฉ‹เจœเจฃ เจ…เจคเฉ‡ เจŸเฉˆเจธเจŸ เจ•เจฐเจจ เจฒเจˆ เจœเจผเจฐเฉ‚เจฐเฉ€ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเจจเฅค เจ…เจ•เจธเจฐ เจชเจฐเจฟเจตเจฐเจคเจจ เจœเจพเจ‚เจš เจ…เจคเฉ‡ เจคเฉˆเจจเจพเจคเฉ€ เจฆเฉ€ เจฒเฉ‹เฉœ เจตเฉฑเจฒ เจ…เจ—เจตเจพเจˆ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจ‡เจธ เจฒเจˆ, เจธเจพเจฐเฉ€เจ†เจ‚ เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ…เฉฑเจงเฉ€เจ†เจ‚ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจจเจพเจฒ เจธเจฌเฉฐเจงเจค เจนเจจ. เจธเจพเจฐเฉ€เจ†เจ‚ เจ—เจฒเจคเฉ€เจ†เจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ 48% เจธเจงเจพเจฐเจจ เจ—เจฒเจคเฉ€เจ†เจ‚ เจนเจจเฅค
เจธเจพเจฐเฉ€เจ†เจ‚ เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚ เจฆเจพ เจคเฉ€เจœเจพ เจนเจฟเฉฑเจธเจพ เจธเจŸเฉ‹เจฐเฉ‡เจœเจผ เจคเจฐเจ• เจœเจพเจ‚ เจฎเจพเจกเจฒ เจจเฉ‚เฉฐ เจฌเจฆเจฒเจฃ เจจเจพเจฒ เจธเจฌเฉฐเจงเจค เจนเฉˆ, เจ‡เจนเจจเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ…เฉฑเจงเฉ‡ เจคเฉ‹เจ‚ เจตเฉฑเจง เจคเจฐเฉเจŸเฉ€เจ†เจ‚ เจ—เฉเฉฐเจเจฒเจฆเจพเจฐ เจนเจจเฅค

เจ…เจคเฉ‡ เจธเจพเจฐเฉ€เจ†เจ‚ เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚ เจฆเฉ‡ เจ‡เฉฑเจ• เจšเฉŒเจฅเจพเจˆ เจคเฉ‹เจ‚ เจตเฉ€ เจ˜เฉฑเจŸ เจ•เจพเจฐเจœ เจ…เจจเฉเจธเฉ‚เจšเฉ€ เจจเจพเจฒ เจธเจฌเฉฐเจงเจค เจนเจจ, เจœเจฟเจจเฉเจนเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ 18% เจธเจงเจพเจฐเจจ เจ—เจฒเจคเฉ€เจ†เจ‚ เจนเจจเฅค

เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡, เจนเฉ‹เจฃ เจตเจพเจฒเฉ€เจ†เจ‚ เจธเจพเจฐเฉ€เจ†เจ‚ เจ—เจฒเจคเฉ€เจ†เจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ 22% เจ—เฉเฉฐเจเจฒเจฆเจพเจฐ เจนเฉเฉฐเจฆเฉ€เจ†เจ‚ เจนเจจ, เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจฆเฉ‡ เจธเฉเจงเจพเจฐ เจฒเจˆ เจธเจญ เจคเฉ‹เจ‚ เจตเฉฑเจง เจงเจฟเจ†เจจ เจ…เจคเฉ‡ เจธเจฎเฉ‡เจ‚ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค เจ‰เจน เจนเจซเจผเจคเฉ‡ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจตเจพเจฐ เจนเฉเฉฐเจฆเฉ‡ เจนเจจ. เจœเจฆเฉ‹เจ‚ เจ•เจฟ เจธเจพเจงเจพเจฐเจจ เจ—เจฒเจคเฉ€เจ†เจ‚ เจฒเจ—เจญเจ— เจนเจฐ เจฐเฉ‹เจœเจผ เจนเฉเฉฐเจฆเฉ€เจ†เจ‚ เจนเจจเฅค

เจ‡เจน เจธเจชเฉฑเจธเจผเจŸ เจนเฉˆ เจ•เจฟ ETL เจชเฉเจฐเจ•เจฟเจฐเจฟเจ†เจตเจพเจ‚ เจฆเฉ€ เจจเจฟเจ—เจฐเจพเจจเฉ€ เจ‰เจฆเฉ‹เจ‚ เจชเฉเจฐเจญเจพเจตเจธเจผเจพเจฒเฉ€ เจนเฉ‹เจตเฉ‡เจ—เฉ€ เจœเจฆเฉ‹เจ‚ เจฒเฉŒเจ— เจตเจฟเฉฑเจš เจ—เจฒเจคเฉ€ เจฆเฉ€ เจธเจฅเจฟเจคเฉ€ เจจเฉ‚เฉฐ เจœเจฟเฉฐเจจเจพ เจธเฉฐเจญเจต เจนเฉ‹ เจธเจ•เฉ‡ เจธเจนเฉ€ เจขเฉฐเจ— เจจเจพเจฒ เจฆเจฐเจธเจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆ เจ…เจคเฉ‡ เจธเจฎเฉฑเจธเจฟเจ† เจฆเฉ‡ เจธเจฐเฉ‹เจค เจจเฉ‚เฉฐ เจฒเฉฑเจญเจฃ เจฒเจˆ เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ เจธเจฎเจพเจ‚ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเจพ เจนเฉˆเฅค

เจชเฉเจฐเจญเจพเจตเจธเจผเจพเจฒเฉ€ เจจเจฟเจ—เจฐเจพเจจเฉ€

เจฎเฉˆเจ‚ เจˆเจŸเฉ€เจเจฒ เจจเจฟเจ—เจฐเจพเจจเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจตเจฟเฉฑเจš เจ•เฉ€ เจฆเฉ‡เจ–เจฃเจพ เจšเจพเจนเฉเฉฐเจฆเจพ เจธเฉ€?

เจ‡เฉฑเจ• เจ›เฉ‹เจŸเฉ‡ เจกเฉ‡เจŸเจพ เจตเฉ‡เจ…เจฐเจนเจพเจŠเจธ เจตเจฟเฉฑเจš ETL เจชเฉเจฐเจ•เจฟเจฐเจฟเจ†เจตเจพเจ‚ เจฆเฉ€ เจจเจฟเจ—เจฐเจพเจจเฉ€ เจ•เจฐเจจเจพ
เจธเจผเฉเจฐเฉ‚ เจ•เจฐเฉ‹ - เจœเจฆเฉ‹เจ‚ เจ‰เจธเจจเฉ‡ เจ•เฉฐเจฎ เจธเจผเฉเจฐเฉ‚ เจ•เฉ€เจคเจพ,
เจธเจฐเฉ‹เจค - เจกเจพเจŸเจพ เจธเจฐเฉ‹เจค,
เจฒเฉ‡เจ…เจฐ - เจธเจŸเฉ‹เจฐเฉ‡เจœ เจฆเจพ เจ•เจฟเจนเฉœเจพ เจชเฉฑเจงเจฐ เจฒเฉ‹เจก เจ•เฉ€เจคเจพ เจœเจพ เจฐเจฟเจนเจพ เจนเฉˆ,
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 เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจฆเจพ เจ†เจ–เจฐเฉ€ เจธเจซเจฒ เจฐเจฟเจ•เจพเจฐเจก เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจเจพ

เจกเจพเจŸเจพเจฌเฉ‡เจธ เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจ“เจฐเฉ‡เจ•เจฒ เจœเจพเจ‚ เจชเฉ‹เจธเจŸเจ—เฉเจฐเฉ‡เจธ เจตเจฟเฉฑเจš, เจ‡เจนเจจเจพเจ‚ เจ“เจชเจฐเฉ‡เจธเจผเจจเจพเจ‚ เจจเฉ‚เฉฐ เจฌเจฟเจฒเจŸ-เจ‡เจจ เจซเฉฐเจ•เจธเจผเจจเจพเจ‚ เจตเจœเฉ‹เจ‚ เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค sqlite เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจฌเจพเจนเจฐเฉ€ เจตเจฟเจงเฉ€ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ, เจ…เจคเฉ‡ เจ‡เจธ เจ•เฉ‡เจธ เจตเจฟเฉฑเจš เจ‡เจน PHP เจตเจฟเฉฑเจš เจชเฉเจฐเฉ‹เจŸเฉ‹เจŸเจพเจˆเจช.

เจธเจฟเฉฑเจŸเจพ

เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚, เจกเฉ‡เจŸเจพ เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฟเฉฐเจ— เจŸเฉ‚เจฒเจธ เจตเจฟเฉฑเจš เจ—เจฒเจคเฉ€ เจธเฉเจจเฉ‡เจนเฉ‡ เจ‡เฉฑเจ• เจตเฉฑเจกเฉ€-เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจฃ เจญเฉ‚เจฎเจฟเจ•เจพ เจจเจฟเจญเจพเจ‰เจ‚เจฆเฉ‡ เจนเจจเฅค เจชเจฐ เจธเจฎเฉฑเจธเจฟเจ† เจฆเจพ เจ•เจพเจฐเจจ เจœเจฒเจฆเฉ€ เจฒเฉฑเจญเจฃ เจฒเจˆ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ…เจจเฉเจ•เฉ‚เจฒ เจ•เจนเจฟเจฃเจพ เจฎเฉเจธเจผเจ•เจฒ เจนเฉˆ. เจœเจฆเฉ‹เจ‚ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ†เจตเจพเจ‚ เจฆเฉ€ เจ—เจฟเจฃเจคเฉ€ เจธเฉŒ เจฆเฉ‡ เจจเฉ‡เฉœเฉ‡ เจชเจนเฉเฉฐเจš เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ, เจคเจพเจ‚ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจฆเฉ€ เจจเจฟเจ—เจฐเจพเจจเฉ€ เจ‡เฉฑเจ• เจ—เฉเฉฐเจเจฒเจฆเจพเจฐ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจตเจฟเฉฑเจš เจฌเจฆเจฒ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ.

เจฒเฉ‡เจ– เจ‡เฉฑเจ• เจชเฉเจฐเฉ‹เจŸเฉ‹เจŸเจพเจˆเจช เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจธเจฎเฉฑเจธเจฟเจ† เจฆเฉ‡ เจธเฉฐเจญเจต เจนเฉฑเจฒ เจฆเฉ€ เจ‡เฉฑเจ• เจ‰เจฆเจพเจนเจฐเจฃ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเจพ เจนเฉˆ. เจชเฉ‚เจฐเจพ เจ›เฉ‹เจŸเจพ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจชเฉเจฐเฉ‹เจŸเฉ‹เจŸเจพเจˆเจช gitlab เจตเจฟเฉฑเจš เจ‰เจชเจฒเจฌเจง เจนเฉˆ SQLite PHP ETL เจ‰เจชเจฏเฉ‹เจ—เจคเจพเจตเจพเจ‚.

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹