เด’เดฐเต เดšเต†เดฑเดฟเดฏ เดกเดพเดฑเตเดฑ เดตเต†เดฏเตผเดนเต—เดธเดฟเตฝ ETL เดชเตเดฐเด•เตเดฐเดฟเดฏเด•เตพ เดจเดฟเดฐเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเต

เดฑเดฟเดฒเต‡เดทเดฃเตฝ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเตเด•เดณเดฟเดฒเต‡เด•เตเด•เต เดกเดพเดฑเตเดฑ เดŽเด•เตโ€Œเดธเตโ€ŒเดŸเตเดฐเดพเด•เตเดฑเตเดฑเตเดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด‚ เดฐเต‚เดชเดพเดจเตเดคเดฐเดชเตเดชเต†เดŸเตเดคเตเดคเตเดจเตเดจเดคเดฟเดจเตเด‚ เดฒเต‹เดกเตเดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดฎเตเดณเตเดณ เดฆเดฟเดจเดšเดฐเตเดฏเด•เตพ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เดพเตป เดชเดฒเดฐเตเด‚ เดชเตเดฐเดคเตเดฏเต‡เด• เด‰เดชเด•เดฐเดฃเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต. เด‰เดชเด•เดฐเดฃเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเด•เตเดฐเดฟเดฏ เดฒเต‹เด—เต เดšเต†เดฏเตเดคเต, เดชเดฟเดถเด•เตเด•เตพ เดฐเต‡เด–เดชเตเดชเต†เดŸเตเดคเตเดคเตเดจเตเดจเต.

เด’เดฐเต เดชเดฟเดถเด•เต เดธเด‚เดญเดตเดฟเดšเตเดšเดพเตฝ, เดŸเดพเดธเตโ€Œเด•เต เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเด•เตเดจเตเดจเดคเดฟเตฝ เด‰เดชเด•เดฐเดฃเด‚ เดชเดฐเดพเดœเดฏเดชเตเดชเต†เดŸเตเดŸเตเดตเต†เดจเตเดจเตเด‚ เดเดคเต เดฎเตŠเดกเตเดฏเต‚เดณเตเด•เตพ (เดชเดฒเดชเตเดชเต‹เดดเตเด‚ เดœเดพเดต) เดŽเดตเดฟเดŸเต† เดจเดฟเตผเดคเตเดคเดฟเดฏเต†เดจเตเดจเตเด‚ เด‰เดณเตเดณ เดตเดฟเดตเดฐเด™เตเด™เตพ เดฒเต‹เด—เดฟเตฝ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เด…เดตเดธเดพเดจ เดตเดฐเดฟเด•เดณเดฟเตฝ เดชเดŸเตเดŸเดฟเด•เดฏเตเดŸเต† เดคเดจเดคเต เด•เต€เดฏเตเดŸเต† เดฒเด‚เด˜เดจเด‚ เดชเต‹เดฒเตเดณเตเดณ เด’เดฐเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดชเดฟเดถเด•เต เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เดพเด‚.

ETL เดชเดฟเดถเด•เต เดตเดฟเดตเดฐเด™เตเด™เตพ เดŽเดจเตเดคเต เดชเด™เตเด•เดพเดฃเต เดตเดนเดฟเด•เตเด•เตเดจเตเดจเดคเต เดŽเดจเตเดจ เดšเต‹เดฆเตเดฏเดคเตเดคเดฟเดจเต เด‰เดคเตเดคเดฐเด‚ เดจเตฝเด•เดพเตป, เด•เดดเดฟเดžเตเดž เดฐเดฃเตเดŸเต เดตเตผเดทเดฎเดพเดฏเดฟ เดธเด‚เดญเดตเดฟเดšเตเดš เดŽเดฒเตเดฒเดพ เดชเตเดฐเดถเตเดจเด™เตเด™เดณเตเด‚ เด’เดฐเต เดตเดฒเดฟเดฏ เดถเต‡เด–เดฐเดคเตเดคเดฟเตฝ เดžเดพเตป เดคเดฐเด‚เดคเดฟเดฐเดฟเดšเตเดšเต.

เด’เดฐเต เดšเต†เดฑเดฟเดฏ เดกเดพเดฑเตเดฑ เดตเต†เดฏเตผเดนเต—เดธเดฟเตฝ ETL เดชเตเดฐเด•เตเดฐเดฟเดฏเด•เตพ เดจเดฟเดฐเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเต

เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดชเดฟเดถเด•เตเด•เดณเดฟเตฝ เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดต เด‰เตพเดชเตเดชเต†เดŸเตเดจเตเดจเต: เด†เดตเดถเตเดฏเดคเตเดคเดฟเดจเต เด‡เดŸเดฎเดฟเดฒเตเดฒเดพเดฏเดฟเดฐเตเดจเตเดจเต, เด•เดฃเด•เตเดทเตป เดจเดทเตเดŸเดชเตเดชเต†เดŸเตเดŸเต, เดธเต†เดทเตป เดนเดพเด‚เด—เต, เดฎเตเดคเดฒเดพเดฏเดต.

เดŸเต‡เดฌเดฟเตพ เด•เต€เด•เดณเตเดŸเต† เดฒเด‚เด˜เดจเด™เตเด™เตพ, เด…เดธเดพเดงเตเดตเดพเดฏ เด’เดฌเตโ€Œเดœเด•เตโ€Œเดฑเตเดฑเตเด•เตพ, เด’เดฌเตโ€Œเดœเด•เตโ€Œเดฑเตเดฑเตเด•เดณเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด†เด•เตโ€Œเดธเดธเดฟเดจเตเดฑเต† เด…เดญเดพเดตเด‚ เดคเตเดŸเด™เตเด™เดฟเดฏเดต เดฒเต‹เดœเดฟเด•เตเด•เตฝ เดชเดฟเดถเด•เตเด•เดณเดฟเตฝ เด‰เตพเดชเตเดชเต†เดŸเตเดจเตเดจเต.
เดทเต†เดกเตเดฏเต‚เดณเตผ เด•เตƒเดคเตเดฏเดธเดฎเดฏเดคเตเดคเต เดธเดฎเดพเดฐเด‚เดญเดฟเดšเตเดšเต‡เด•เตเด•เดฟเดฒเตเดฒ, เดฎเดฐเดตเดฟเดชเตเดชเดฟเดšเตเดšเต‡เด•เตเด•เดพเด‚, เดฎเตเดคเดฒเดพเดฏเดต.

เดฒเดณเดฟเดคเดฎเดพเดฏ เดคเต†เดฑเตเดฑเตเด•เตพ เดคเดฟเดฐเตเดคเตเดคเดพเตป เด•เต‚เดŸเตเดคเตฝ เดธเดฎเดฏเด‚ เดŽเดŸเตเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ. เด’เดฐเต เดจเดฒเตเดฒ ETL-เดจเต เด…เดตเดฏเดฟเตฝ เดฎเดฟเด•เตเด•เดคเตเด‚ เดธเตเดตเดจเตเดคเดฎเดพเดฏเดฟ เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚.

เดธเด™เตเด•เต€เตผเดฃเตเดฃเดฎเดพเดฏ เดชเดฟเดถเด•เตเด•เตพ เดกเดพเดฑเตเดฑ เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดจเดŸเดชเดŸเดฟเด•เตเดฐเดฎเด™เตเด™เตพ เดคเตเดฑเด•เตเด•เตเด•เดฏเตเด‚ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดกเดพเดฑเตเดฑ เด‰เดฑเดตเดฟเดŸเด™เตเด™เตพ เด…เดจเตเดตเต‡เดทเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต. เดชเดฒเดชเตเดชเต‹เดดเตเด‚ เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเดฟเดจเตเดฑเต† เด†เดตเดถเตเดฏเด•เดคเดฏเดฟเดฒเต‡เด•เตเด•เต เดจเดฏเดฟเด•เตเด•เตเดจเตเดจเต.

เด…เดคเดฟเดจเดพเตฝ, เดŽเดฒเตเดฒเดพ เดชเตเดฐเดถเตเดจเด™เตเด™เดณเดฟเดฒเตเด‚ เดชเด•เตเดคเดฟเดฏเตเด‚ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดŸเดคเดพเดฃเต. เดŽเดฒเตเดฒเดพ เดชเดฟเดถเด•เตเด•เดณเตเดŸเต†เดฏเตเด‚ 48% เดฒเดณเดฟเดคเดฎเดพเดฏ เดชเดฟเดถเด•เตเด•เดณเดพเดฃเต.
เดŽเดฒเตเดฒเดพ เดชเตเดฐเดถเตโ€Œเดจเด™เตเด™เดณเตเดŸเต†เดฏเตเด‚ เดฎเต‚เดจเตเดจเดฟเดฒเตŠเดจเตเดจเต เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเต เดฒเต‹เดœเดฟเด•เตเด•เดฟเดฒเต†เดฏเต‹ เดฎเต‹เดกเดฒเดฟเดฒเต†เดฏเต‹ เดฎเดพเดฑเตเดฑเด™เตเด™เดณเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดŸเดคเดพเดฃเต; เด‡เดคเดฟเตฝ เดชเด•เตเดคเดฟเดฏเดฟเดฒเดงเดฟเด•เด‚ เดชเดฟเดถเด•เตเด•เดณเตเด‚ เดธเด™เตเด•เต€เตผเดฃเตเดฃเดฎเดพเดฃเต.

เดŽเดฒเตเดฒเดพ เดชเตเดฐเดถเตโ€Œเดจเด™เตเด™เดณเดฟเดฒเตเด‚ เดจเดพเดฒเดฟเดฒเตŠเดจเตเดจเดฟเตฝ เดคเดพเดดเต† เดฎเดพเดคเตเดฐเด‚ เดŸเดพเดธเตโ€Œเด•เต เดทเต†เดกเตเดฏเต‚เดณเดฑเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดŸเดคเดพเดฃเต, เด…เดคเดฟเตฝ 18% เดฒเดณเดฟเดคเดฎเดพเดฏ เดชเดฟเดถเด•เตเด•เดณเดพเดฃเต.

เดฎเตŠเดคเตเดคเดคเตเดคเดฟเตฝ, เดธเด‚เดญเดตเดฟเด•เตเด•เตเดจเตเดจ เดŽเดฒเตเดฒเดพ เดชเดฟเดถเด•เตเด•เดณเตเดŸเต†เดฏเตเด‚ 22% เดธเด™เตเด•เต€เตผเดฃเตเดฃเดตเตเด‚ เดคเดฟเดฐเตเดคเตเดคเดพเตป เดเดฑเตเดฑเดตเตเด‚ เดถเตเดฐเดฆเตเดงเดฏเตเด‚ เดธเดฎเดฏเดตเตเด‚ เด†เดตเดถเตเดฏเดฎเดพเดฃเต. เด…เดต เด†เดดเตเดšเดฏเดฟเตฝ เด’เดฐเดฟเด•เตเด•เตฝ เดธเด‚เดญเดตเดฟเด•เตเด•เตเดจเตเดจเต. เดฒเดณเดฟเดคเดฎเดพเดฏ เดคเต†เดฑเตเดฑเตเด•เตพ เดฎเดฟเด•เตเด•เดตเดพเดฑเตเด‚ เดŽเดฒเตเดฒเดพ เดฆเดฟเดตเดธเดตเตเด‚ เดธเด‚เดญเดตเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ.

เดตเตเดฏเด•เตเดคเดฎเดพเดฏเตเด‚, เดฒเต‹เด—เดฟเตฝ เดชเดฟเดถเด•เดฟเดจเตเดฑเต† เดธเตเดฅเดพเดจเด‚ เด•เดดเดฟเดฏเตเดจเตเดจเดคเตเดฐ เด•เตƒเดคเตเดฏเดฎเดพเดฏเดฟ เดธเต‚เดšเดฟเดชเตเดชเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ ETL เดชเตเดฐเด•เตเดฐเดฟเดฏเด•เตพ เดจเดฟเดฐเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเดคเต เดซเดฒเดชเตเดฐเดฆเดฎเดพเด•เตเด‚, เด•เต‚เดŸเดพเดคเต† เดชเตเดฐเดถเตเดจเดคเตเดคเดฟเดจเตเดฑเต† เด‰เดฑเดตเดฟเดŸเด‚ เด•เดฃเตเดŸเต†เดคเตเดคเดพเตป เด•เตเดฑเดžเตเดž เดธเดฎเดฏเด‚ เด†เดตเดถเตเดฏเดฎเดพเดฃเต.

เดซเดฒเดชเตเดฐเดฆเดฎเดพเดฏ เดจเดฟเดฐเต€เด•เตเดทเดฃเด‚

ETL เดฎเต‹เดฃเดฟเดฑเตเดฑเดฑเดฟเด‚เด—เต เดชเตเดฐเด•เตเดฐเดฟเดฏเดฏเดฟเตฝ เดžเดพเตป เดŽเดจเตเดคเดพเดฃเต เด•เดพเดฃเดพเตป เด†เด—เตเดฐเดนเดฟเดšเตเดšเดคเต?

เด’เดฐเต เดšเต†เดฑเดฟเดฏ เดกเดพเดฑเตเดฑ เดตเต†เดฏเตผเดนเต—เดธเดฟเตฝ 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 เดจเดŸเดชเดŸเดฟเด•เตเดฐเดฎเดคเตเดคเดฟเดจเตเดฑเต† เด…เดตเดธเดพเดจ เดตเดฟเดœเดฏเด•เดฐเดฎเดพเดฏ เดฑเต†เด•เตเด•เต‹เตผเดกเต เดจเต‡เดŸเตเดจเตเดจเต

Oracle เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ Postgres เดชเต‹เดฒเตเดณเตเดณ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเตเด•เดณเดฟเตฝ, เดˆ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ เดฌเดฟเตฝเดฑเตเดฑเต-เด‡เตป เดซเด‚เด—เตเดทเดจเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚. sqlite-เดจเต เด’เดฐเต เดฌเดพเดนเตเดฏ เดธเด‚เดตเดฟเดงเดพเดจเด‚ เด†เดตเดถเตเดฏเดฎเดพเดฃเต, เดˆ เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ เด…เดคเต PHP-เดฏเดฟเตฝ เดชเตเดฐเต‹เดŸเตเดŸเต‹เดŸเตˆเดชเตเดชเต เดšเต†เดฏเตเดคเต.

เดคเต€เดฐเตเดฎเดพเดจเด‚

เด…เดคเดฟเดจเดพเตฝ, เดกเดพเดฑเตเดฑ เดชเตเดฐเต‹เดธเดธเตเดธเดฟเด‚เด—เต เดŸเต‚เดณเตเด•เดณเดฟเดฒเต† เดชเดฟเดถเด•เต เดฑเดฟเดชเตเดชเต‹เตผเดŸเตเดŸเดฟเด‚เด—เต เด’เดฐเต เดฎเต†เด—เดพ-เดชเตเดฐเดงเดพเดจ เดชเด™เตเด•เต เดตเดนเดฟเด•เตเด•เตเดจเตเดจเต. เดŽเดจเตเดจเดพเตฝ เดชเตเดฐเดถเตเดจเดคเตเดคเดฟเดจเตเดฑเต† เด•เดพเดฐเดฃเด‚ เดตเต‡เด—เดคเตเดคเดฟเตฝ เด•เดฃเตเดŸเต†เดคเตเดคเตเดจเตเดจเดคเดฟเดจเต เด…เดตเดฏเต† เด’เดชเตเดฑเตเดฑเดฟเดฎเตฝ เดŽเดจเตเดจเต เดตเดฟเดณเดฟเด•เตเด•เดพเดจเดพเดตเดฟเดฒเตเดฒ. เดจเดŸเดชเดŸเดฟเด•เตเดฐเดฎเด™เตเด™เดณเตเดŸเต† เดŽเดฃเตเดฃเด‚ เดจเต‚เดฑเต เด…เดŸเตเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดชเตเดฐเด•เตเดฐเดฟเดฏ เดจเดฟเดฐเต€เด•เตเดทเดฃเด‚ เด’เดฐเต เดธเด™เตเด•เต€เตผเดฃเตเดฃ เดชเดฆเตเดงเดคเดฟเดฏเดพเดฏเดฟ เดฎเดพเดฑเตเดจเตเดจเต.

เด’เดฐเต เดชเตเดฐเต‹เดŸเตเดŸเต‹เดŸเตˆเดชเตเดชเดฟเดจเตเดฑเต† เดฐเต‚เดชเดคเตเดคเดฟเตฝ เดชเตเดฐเดถเตเดจเดคเตเดคเดฟเดจเต เดธเดพเดงเตเดฏเดฎเดพเดฏ เดชเดฐเดฟเดนเดพเดฐเดคเตเดคเดฟเดจเตเดฑเต† เด’เดฐเต เด‰เดฆเดพเดนเดฐเดฃเด‚ เดฒเต‡เด–เดจเด‚ เดจเตฝเด•เตเดจเตเดจเต. เดšเต†เดฑเดฟเดฏ เดถเต‡เด–เดฐเดฃเดคเตเดคเดฟเดจเตเดฑเต† เดฎเตเดดเตเดตเตป เดชเตเดฐเต‹เดŸเตเดŸเต‹เดŸเตˆเดชเตเดชเตเด‚ gitlab-เตฝ เดฒเดญเตเดฏเดฎเดพเดฃเต SQLite PHP ETL เดฏเต‚เดŸเตเดŸเดฟเดฒเดฟเดฑเตเดฑเดฟเด•เตพ.

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•