ืžืึธื ื™ื˜ืึธืจื™ื ื’ ETL ืคึผืจืึทืกืขืกืึทื– ืื™ืŸ ืึท ืงืœื™ื™ืŸ ื“ืึทื˜ืŸ ื•ื•ืขืจื›ืึทื•ืก

ืคื™ืœืข ื ื•ืฆืŸ ืกืคึผืขืฉืึทืœื™ื™ื–ื“ ืžื›ืฉื™ืจื™ื ืฆื• ืฉืึทืคึฟืŸ ืคึผืจืึธื•ืกื™ื“ื–ืฉืขืจื– ืคึฟืึทืจ ื™ืงืกื˜ืจืึทืงื˜ื™ื ื’, ื˜ืจืึทื ืกืคืึธืจืžื™ื ื’ ืื•ืŸ ืœืึธื•ื“ื™ื ื’ ื“ืึทื˜ืŸ ืื™ืŸ ืจื™ืœื™ื™ืฉืึทื ืึทืœ ื“ืึทื˜ืึทื‘ื™ื™ืกื™ื–. ื“ืขืจ ืคึผืจืึธืฆืขืก ืคื•ืŸ ืืจื‘ืขื˜ืŸ ืžื›ืฉื™ืจื™ื ืื™ื– ืœืึธื’ื“, ืขืจืจืึธืจืก ื–ืขื ืขืŸ ืคืึทืจืคืขืกื˜ื™ืงื˜.

ืื™ืŸ ืคืึทืœ ืคื•ืŸ ืึท ื˜ืขื•ืช, ื“ื™ ืงืœืึธืฅ ื›ึผื•ืœืœ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ืึทื– ื“ื™ ื’ืขืฆื™ื™ึทื’ ืื™ื– ื ื™ืฉื˜ ืฆื• ืคืึทืจืขื ื“ื™ืงืŸ ื“ื™ ืึทืจื‘ืขื˜ ืื•ืŸ ื•ื•ืึธืก ืžืึทื“ื–ืฉื•ืœื– (ืึธืคื˜ ื“ื–ืฉืึทื•ื•ืึท) ืกื˜ืึทืคึผื˜ ื•ื•ื•. ืื™ืŸ ื“ื™ ืœืขืฆื˜ืข ืฉื•ืจื•ืช, ืื™ืจ ืงืขื ืขืŸ ื’ืขืคึฟื™ื ืขืŸ ืึท ื“ืึทื˜ืึทื‘ื™ื™ืก ื˜ืขื•ืช, ืœืžืฉืœ, ืึท ื™ื™ื ืฆื™ืง ืฉืœื™ืกืœ ื”ื™ืœืขืœ ืคื•ืŸ ื“ื™ ื˜ื™ืฉ.

ืฆื• ืขื ื˜ืคึฟืขืจืŸ ื“ื™ ืงืฉื™ื ืคื•ืŸ ื•ื•ืึธืก ืจืึธืœืข ETL ื˜ืขื•ืช ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ืคื™ืขืกืขืก, ืื™ืš ื”ืึธื‘ืŸ ืงืœืึทืกืึทืคื™ื™ื“ ืึทืœืข ื“ื™ ืคืจืื‘ืœืขืžืขืŸ ื•ื•ืึธืก ื”ืึธื‘ืŸ ืคืืจื’ืขืงื•ืžืขืŸ ืื™ืŸ ื“ื™ ืœืขืฆื˜ืข ืฆื•ื•ื™ื™ ื™ืึธืจ ืื™ืŸ ืึท ื’ืึทื ืฅ ื’ืจื•ื™ืก ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™.

ืžืึธื ื™ื˜ืึธืจื™ื ื’ ETL ืคึผืจืึทืกืขืกืึทื– ืื™ืŸ ืึท ืงืœื™ื™ืŸ ื“ืึทื˜ืŸ ื•ื•ืขืจื›ืึทื•ืก

ื“ืึทื˜ืึทื‘ืึทืกืข ืขืจืจืึธืจืก ืึทืจื™ื™ึทื ื ืขืžืขืŸ ื ื™ื˜ ื’ืขื ื•ื’ ืคึผืœืึทืฅ, ืคืึทืจืคืึทืœืŸ ืงืฉืจ, ืกืขืกื™ืข ื’ืขื”ืื ื’ืขืŸ, ืขื˜ืง.

ืœืึทื“ื–ืฉื™ืงืึทืœ ืขืจืจืึธืจืก ืึทืจื™ื™ึทื ื ืขืžืขืŸ ืึทื–ืึท ื•ื•ื™ ื”ื™ืœืขืœ ืคื•ืŸ ื˜ื™ืฉ ืฉืœื™ืกืœืขืŸ, ื ื™ื˜-ื’ื™ืœื˜ื™ืง ืึทื‘ื“ื–ืฉืขืงืฅ, ืคืขืœืŸ ืคื•ืŸ ืึทืงืกืขืก ืฆื• ืึทื‘ื“ื–ืฉืขืงืฅ, ืขื˜ืง.
ื“ืขืจ ืกืงืขื“ื–ืฉื•ืœืขืจ ืงืขืŸ ื ื™ืฉื˜ ืึธื ื”ื™ื™ื‘ืŸ ืื™ืŸ ืฆื™ื™ื˜, ืขืก ืงืขืŸ ืคืจื™ืจืŸ, ืืื–"ื• ื•.

ืคึผืฉื•ื˜ ืžื™ืกื˜ื™ื™ืงืก ื˜ืึธืŸ ื ื™ื˜ ื ืขืžืขืŸ ืœืึทื ื’ ืฆื• ืคืึทืจืจื™ื›ื˜ืŸ. ื ื’ื•ื˜ ETL ืงืขื ืขืŸ ืฉืขืคึผืŸ ืจื•ื‘ึฟ ืคื•ืŸ ื–ื™ื™ ืื•ื™ืฃ ื–ื™ืš.

ืงืึธืžืคึผืœืขืงืก ื‘ืึทื’ื– ืžืึทื›ืŸ ืขืก ื ื™ื™ื˜ื™ืง ืฆื• ืึทื ื˜ื“ืขืงืŸ ืื•ืŸ ืคึผืจื•ื‘ื™ืจืŸ ืคึผืจืึธื•ืกื™ื“ื–ืฉืขืจื– ืคึฟืึทืจ ืืจื‘ืขื˜ืŸ ืžื™ื˜ ื“ืึทื˜ืŸ, ืฆื• ื•ื™ืกืคืึธืจืฉืŸ ื“ืึทื˜ืŸ ืงื•ื•ืืœืŸ. ืึธืคื˜ ืคื™ืจืŸ ืฆื• ื“ื™ ื ื•ื™ื˜ ืคึฟืึทืจ ื˜ื•ื™ืฉืŸ ื˜ืขืกื˜ื™ื ื’ ืื•ืŸ ื“ื™ืคึผืœื•ื™ืžืึทื ื˜.

ืึทื–ื•ื™, ื”ืึทืœื‘ ืคื•ืŸ ืึทืœืข ืคึผืจืึธื‘ืœืขืžืก ื–ืขื ืขืŸ ืฉื™ื™ึทื›ื•ืช ืฆื• ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก. 48% ืคื•ืŸ ืึทืœืข ืžื™ืกื˜ื™ื™ืงืก ื–ืขื ืขืŸ ืคึผืฉื•ื˜ ืžื™ืกื˜ื™ื™ืงืก.
ื ื“ืจื™ื˜ ืคื•ืŸ ืึทืœืข ืคึผืจืึธื‘ืœืขืžืก ื–ืขื ืขืŸ ืฉื™ื™ึทื›ื•ืช ืฆื• ื˜ืฉืึทื ื’ื™ื ื’ ื“ื™ ืกื˜ืึธืจื™ื“ื–ืฉ ืœืึธื’ื™ืง ืึธื“ืขืจ ืžืึธื“ืขืœ, ืžืขืจ ื•ื•ื™ ื”ืึทืœื‘ ืคื•ืŸ ื“ื™ ืขืจืจืึธืจืก ื–ืขื ืขืŸ ืงืึธืžืคึผืœืขืงืก.

ืื•ืŸ ื•ื•ื™ื™ื ื™ืงืขืจ ื•ื•ื™ 18/XNUMX ืคื•ืŸ ืึทืœืข ืคึผืจืึธื‘ืœืขืžืก ื–ืขื ืขืŸ ืฉื™ื™ึทื›ื•ืช ืฆื• ื“ื™ ืึทืจื‘ืขื˜ ืกืงืขื“ื–ืฉื•ืœืขืจ, XNUMX% ืคื•ืŸ ื•ื•ืึธืก ื–ืขื ืขืŸ ืคึผืฉื•ื˜ ืขืจืจืึธืจืก.

ืื™ืŸ ืึทืœื’ืขืžื™ื™ืŸ, 22% ืคื•ืŸ ืึทืœืข ืขืจืจืึธืจืก ื•ื•ืึธืก ืคืึทืœืŸ ื–ืขื ืขืŸ ืงืึธืžืคึผืœืขืงืก, ืื•ืŸ ื–ื™ื™ืขืจ ืงืขืจืขืงืฉืึทืŸ ืจื™ืงื•ื•ื™ื™ืขืจื– ื“ื™ ืžืขืจืกื˜ ื•ืคืžืขืจืงื–ืึทืžืงื™ื™ื˜ ืื•ืŸ ืฆื™ื™ื˜. ื–ื™ื™ ืคึผืึทืกื™ืจืŸ ืึทืžืึธืœ ืึท ื•ื•ืึธืš. ื›ื•ื•ืขืจืึทื– ืคึผืฉื•ื˜ ืžื™ืกื˜ื™ื™ืงืก ืคึผืึทืกื™ืจืŸ ื›ึผืžืขื˜ ื™ืขื“ืขืจ ื˜ืึธื’.

ื“ืึธืš, ืžืึธื ื™ื˜ืึธืจื™ื ื’ ืคื•ืŸ ETL ืคึผืจืึทืกืขืกืึทื– ื•ื•ืขื˜ ื–ื™ื™ืŸ ืขืคืขืงื˜ื™ื•ื• ื•ื•ืขืŸ ื“ื™ ื˜ืขื•ืช ืึธืจื˜ ืื™ื– ืื ื’ืขื•ื•ื™ื–ืŸ ืื™ืŸ ื“ื™ ืงืœืึธืฅ ื•ื•ื™ ืึทืงื™ืขืจืึทื˜ืœื™ ื•ื•ื™ ืžืขื’ืœืขืš ืื•ืŸ ื“ื™ ืžื™ื ื™ืžื•ื ืฆื™ื™ื˜ ืื™ื– ืคืืจืœืื ื’ื˜ ืฆื• ื’ืขืคึฟื™ื ืขืŸ ื“ื™ ืžืงื•ืจ ืคื•ืŸ ื“ืขื ืคึผืจืึธื‘ืœืขื.

ืขืคืขืงื˜ื™ื•ื• ืžืึธื ื™ื˜ืึธืจื™ื ื’

ื•ื•ืึธืก ืื™ืš ื•ื•ื™ืœืŸ ืฆื• ื–ืขืŸ ืื™ืŸ ื“ื™ ETL ืžืึธื ื™ื˜ืึธืจื™ื ื’ ืคึผืจืึธืฆืขืก?

ืžืึธื ื™ื˜ืึธืจื™ื ื’ ETL ืคึผืจืึทืกืขืกืึทื– ืื™ืŸ ืึท ืงืœื™ื™ืŸ ื“ืึทื˜ืŸ ื•ื•ืขืจื›ืึทื•ืก
ืึธื ื”ื™ื™ื‘ ืื™ืŸ - ื•ื•ืขืŸ ืขืจ ืกื˜ืึทืจื˜ืขื“ ืึทืจื‘ืขื˜,
ืžืงื•ืจ - ื“ืึทื˜ืŸ ืžืงื•ืจ,
ืฉื™ื›ื˜ืข - ื•ื•ืึธืก ืžื“ืจื’ื” ืคื•ืŸ ืกื˜ืึธืจื™ื“ื–ืฉ ืื™ื– ืœืึธื•ื“ื™ื“,
ETL ืึทืจื‘ืขื˜ ื ืึธืžืขืŸ - ืฆื•ืคึฟืขืœื™ืงืขืจ ืคึผืจืึธืฆืขื“ื•ืจ, ื•ื•ืึธืก ื‘ืืฉื˜ื™ื™ื˜ ืคื•ืŸ ืคื™ืœืข ืงืœื™ื™ืŸ ืกื˜ืขืคึผืก,
ืฉืจื™ื˜ ื ื•ืžืขืจ - ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ื“ืขื ืฉืจื™ื˜ ื•ื•ืึธืก ืื™ื– ื“ื•ืจื›ื’ืขืงืึธื›ื˜,
ืึทืคืขืงื˜ื™ื“ ืจืึธื•ื– - ื•ื•ื™ ืคื™ืœ ื“ืึทื˜ืŸ ืื™ื– ืฉื•ื™ืŸ ืคึผืจืึทืกืขืกื˜,
ื’ืขื“ื•ื™ืขืจ ืกืขืง - ื•ื•ื™ ืœืึทื ื’ ืขืก ื ืขืžื˜,
ืกื˜ืึทื˜ื•ืก - ืฆื™ ืึทืœืฅ ืื™ื– ื’ื•ื˜ ืึธื“ืขืจ ื ื™ืฉื˜: ื’ื•ื˜, ื˜ืขื•ืช, ืคืœื™ืกื ื“ื™ืง, ื›ืึทื ื’ื–
ืึธื ื–ืึธื’ - ืœืขืฆื˜ืข ืžืฆืœื™ื— ืึธื ื–ืึธื’ ืึธื“ืขืจ ื˜ืขื•ืช ื‘ืึทืฉืจื™ื™ึทื‘ื•ื ื’.

ื‘ืึทื–ื™ืจื˜ ืื•ื™ืฃ ื“ื™ ืกื˜ืึทื˜ื•ืก ืคื•ืŸ ื“ื™ ืื™ื™ื ืกืŸ, ืื™ืจ ืงืขื ืขืŸ ืฉื™ืงืŸ ืึทืŸ E- ื‘ืจื™ื•ื•. ื‘ืจื™ื•ื• ืฆื• ืื ื“ืขืจืข ืžื™ื˜ื’ืœื™ื“ืขืจ. ืื•ื™ื‘ ืขืก ื–ืขื ืขืŸ ืงื™ื™ืŸ ืขืจืจืึธืจืก, ื“ืขืจ ื‘ืจื™ื•ื• ืื™ื– ื ื™ื˜ ื ื™ื™ื˜ื™ืง.

ืื–ื•ื™, ืื™ืŸ ื“ื™ ื’ืขืฉืขืขื ื™ืฉ ืคื•ืŸ ืึท ื˜ืขื•ืช, ื“ื™ ืึธืจื˜ ืคื•ืŸ ื“ืขื ืื™ื ืฆื™ื“ืขื ื˜ ืื™ื– ืงืœืืจ ืื ื’ืขื•ื•ื™ื–ืŸ.

ืžืืœ ืขืก ื›ืึทืคึผืึทื ื– ืึทื– ื“ื™ ืžืึธื ื™ื˜ืึธืจื™ื ื’ ื’ืขืฆื™ื™ึทื’ ื–ื™ืš ื˜ื•ื˜ ื ื™ืฉื˜ ืึทืจื‘ืขื˜ืŸ. ืื™ืŸ ื“ืขื ืคืึทืœ, ืขืก ืื™ื– ืžืขื’ืœืขืš ืฆื• ืจื•ืคืŸ ืึท ืžื™ื™ื ื•ื ื’ (ืžื™ื™ื ื•ื ื’) ื’ืœื™ื™ึทืš ืื™ืŸ ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก, ืื•ื™ืฃ ื“ืขืจ ื‘ืื–ืข ืคื•ืŸ โ€‹โ€‹ื•ื•ืึธืก ื“ืขืจ ื‘ืึทืจื™ื›ื˜ ืื™ื– ื’ืขื‘ื•ื™ื˜.

ETL ืžืึธื ื™ื˜ืึธืจื™ื ื’ ื˜ื™ืฉ

ืฆื• ื™ื ืกื˜ืจื•ืžืขื ื˜ ืžืึธื ื™ื˜ืึธืจื™ื ื’ ืคื•ืŸ ETL ืคึผืจืึทืกืขืกืึทื–, ืื™ื™ืŸ ื˜ื™ืฉ ืื•ืŸ ืื™ื™ืŸ ืžื™ื™ื ื•ื ื’ ื–ืขื ืขืŸ ื’ืขื ื•ื’.

ืฆื• ื˜ืึธืŸ ื“ืึธืก, ืื™ืจ ืงืขื ืขืŸ ืฆื•ืจื™ืงืงื•ืžืขืŸ ืฆื• ื“ื™ื™ืŸ ื‘ื™ืกืœ ืกื˜ืึธืจื™ื“ื–ืฉ ืื•ืŸ ืฉืึทืคึฟืŸ ืคึผืจืึธื•ื˜ืึทื˜ื™ื™ืคึผ ืื™ืŸ sqlite ื“ืึทื˜ืึทื‘ื™ื™ืก.

ื“ื“ืœ ื˜ื™ืฉืŸ

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);

View/Report 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 ืฉืจื™ื˜ ืžื™ื˜ ื–ื™ื™ืŸ ื‘ืึทืฉืจื™ื™ึทื‘ื•ื ื’ ื–ืึธืœ ื–ื™ื™ืŸ ื‘ืืฉืืคืŸ
  • ื“ื™ ืกื•ืžืข ืคื•ืŸ โ€‹โ€‹ืคึผืจืึทืกืขืกื˜ ื“ืึทื˜ืŸ ื–ืึธืœ ื–ื™ื™ืŸ ื›ื™ื™ืœื™ื™ื˜ื™ื“, ืœืžืฉืœ, ืžื™ื˜ ืึทืกื˜ืขืจื™ืกืงืก
  • ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืคึผืจืึธืฆืขื“ื•ืจ ืงืขื ืขืŸ ื–ื™ื™ืŸ ืกื˜ืึทืจื˜ืขื“ ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืฆื™ื™ื˜ ืžื™ื˜ ื“ื™ ืคืึธืจืกืข_ืจื™ืกื˜ืึทืจื˜ = ื™ ืคึผืึทืจืึทืžืขื˜ืขืจ, ืึธืŸ ืขืก ื“ื™ ืกืขืกื™ืข ื ื•ืžืขืจ ืื™ื– ืืจื•ื™ืก ื‘ืœื•ื™ื– ืฆื• ื“ื™ ื’ืขืขื ื“ื™ืงื˜ ืคึผืจืึธืฆืขื“ื•ืจ
  • ืื™ืŸ ื ืึธืจืžืึทืœ ืžืึธื“ืข, ืื™ืจ ืงืขื ืขืŸ ื ื™ืฉื˜ ืœื•ื™ืคืŸ ื“ื™ ื–ืขืœื‘ืข ื“ืึทื˜ืŸ ืคึผืจืึทืกืขืกื™ื ื’ ืคึผืจืึธืฆืขื“ื•ืจ ืื™ืŸ ืคึผืึทืจืึทืœืขืœ

ื“ื™ ื ื™ื™ื˜ื™ืง ืึทืคึผืขืจื™ื™ืฉืึทื ื– ืคึฟืึทืจ ืืจื‘ืขื˜ืŸ ืžื™ื˜ ืึท ื˜ื™ืฉ ื–ืขื ืขืŸ ื•ื•ื™ ื’ื™ื™ื˜:

  • ื‘ืึทืงื•ืžืขืŸ ื“ื™ ืกืขืกื™ืข ื ื•ืžืขืจ ืคื•ืŸ ื“ื™ ืคืœื™ืกื ื“ื™ืง ETL ืคึผืจืึธืฆืขื“ื•ืจ
  • ืึทืจื™ื™ึทื ืœื™ื™ื’ืŸ ืงืœืึธืฅ ืคึผืึธื–ื™ืฆื™ืข ืื™ืŸ ื˜ื™ืฉ
  • ื‘ืึทืงื•ืžืขืŸ ื“ื™ ืœืขืฆื˜ืข ืžืฆืœื™ื— ืจืขืงืึธืจื“ ืคื•ืŸ ืึทืŸ ETL ืคึผืจืึธืฆืขื“ื•ืจ

ืื™ืŸ ื“ืึทื˜ืึทื‘ื™ื™ืกื™ื– ืึทื–ืึท ื•ื•ื™ Oracle ืึธื“ืขืจ Postgres, ื“ื™ ืึทืคึผืขืจื™ื™ืฉืึทื ื– ืงืขื ืขืŸ ื–ื™ื™ืŸ ื™ืžืคึผืœืึทืžืขื ืึทื“ ื•ื•ื™ ื’ืขื‘ื•ื™ื˜-ืื™ืŸ ืคืึทื ื’ืงืฉืึทื ื–. sqlite ืจื™ืงื•ื•ื™ื™ืขืจื– ืึท ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ืžืขืงืึทื ื™ื–ืึทื, ืื•ืŸ ืื™ืŸ ื“ืขื ืคืึทืœ ืขืก ืคึผืจืึธื•ื˜ืึทื˜ื™ื™ืคึผ ืื™ืŸ PHP.

ืจืขื–ื•ืœื˜ืึทื˜

ืื–ื•ื™, ื˜ืขื•ืช ืึทืจื˜ื™ืงืœืขืŸ ืื™ืŸ ื“ืึทื˜ืŸ ืคึผืจืึทืกืขืกื™ื ื’ ืžื›ืฉื™ืจื™ื ืฉืคึผื™ืœืŸ ืึท ืžืขื’ืึท-ื•ื•ื™ื›ื˜ื™ืง ืจืึธืœืข. ืื‘ืขืจ ืขืก ืื™ื– ืฉื•ื•ืขืจ ืฆื• ืจื•ืคืŸ ื–ื™ื™ ืึธืคึผื˜ื™ืžืึทืœ ืคึฟืึทืจ ื’ืขืฉื•ื•ื™ื ื“ ื’ืขืคึฟื™ื ืขืŸ ื“ื™ ื’ืจื•ื ื˜ ืคื•ืŸ ื“ื™ ืคึผืจืึธื‘ืœืขื. ื•ื•ืขืŸ ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ืคึผืจืึธื•ืกื™ื“ื–ืฉืขืจื– ืึทืคึผืจืึธื•ื˜ืฉื™ื– ืึท ื”ื•ื ื“ืขืจื˜, ื“ืขืžืึธืœื˜ ืคึผืจืึธืฆืขืก ืžืึธื ื™ื˜ืึธืจื™ื ื’ ื˜ื•ืจื ืก ืื™ืŸ ืึท ืงืึธืžืคึผืœืขืงืก ืคึผืจื•ื™ืขืงื˜.

ื“ืขืจ ืึทืจื˜ื™ืงืœ ื’ื™ื˜ ืึท ื‘ื™ื™ึทืฉืคึผื™ืœ ืคื•ืŸ ืึท ืžืขื’ืœืขืš ืœื™ื™ื–ื•ื ื’ ืฆื• ื“ืขื ืคึผืจืึธื‘ืœืขื ืื™ืŸ ื“ื™ ืคืึธืจืขื ืคื•ืŸ ืึท ืคึผืจืึธื•ื˜ืึทื˜ื™ื™ืคึผ. ื“ื™ ื’ืื ืฆืข ืงืœื™ื™ืŸ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืคึผืจืึธื•ื˜ืึทื˜ื™ื™ืคึผ ืื™ื– ื‘ื ื™ืžืฆื ืื™ืŸ ื’ื™ื˜ืœืึทื‘ SQLite PHP ETL Utilities.

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’