рдПрдХ рдЫреЛрдЯреЗ рдбреЗрдЯрд╛ рд╡реЗрдпрд░рд╣рд╛рдЙрд╕ рдореЗрдВ ETL рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдирд╛

рдХрдИ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдбреЗрдЯрд╛ рдирд┐рдХрд╛рд▓рдиреЗ, рдмрджрд▓рдиреЗ рдФрд░ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдБ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВред рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд▓реЙрдЧ рдХреА рдЧрдИ рд╣реИ, рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд▓реЙрдЧ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИ рдХрд┐ рдЙрдкрдХрд░рдг рдХрд╛рд░реНрдп рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рд╛ рдФрд░ рдХреМрди рд╕реЗ рдореЙрдбреНрдпреВрд▓ (рдЕрдХреНрд╕рд░ рдЬрд╛рд╡рд╛) рдЬрд╣рд╛рдВ рд╡реЗ рд░реБрдХреЗ рдереЗред рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдЖрдк рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рддреНрд░реБрдЯрд┐ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рддрд╛рд▓рд┐рдХрд╛ рдХреБрдВрдЬреА рдХрд╛ рдЙрд▓реНрд▓рдВрдШрдиред

рдЗрд╕ рд╕рд╡рд╛рд▓ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдИрдЯреАрдПрд▓ рддреНрд░реБрдЯрд┐ рдЬрд╛рдирдХрд╛рд░реА рдХреНрдпрд╛ рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рддреА рд╣реИ, рдореИрдВрдиреЗ рдкрд┐рдЫрд▓реЗ рджреЛ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рд╕рднреА рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╡рд░реНрдЧреАрдХреГрдд рдХрд┐рдпрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдмрдбрд╝реЗ рднрдВрдбрд╛рд░ рдореЗрдВред

рдЫрд╡рд┐

рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рдХреНрд╖рдг рдЬрд╣рд╛рдБ рд╡рд░реНрдЧреАрдХрд░рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:

  • 20 рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдЬреБрдбрд╝реЗ
  • 10.5 рдмрд┐рд▓рд┐рдпрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рджреИрдирд┐рдХ рд░реВрдк рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
  • рдЬреЛ 50 рдорд┐рд▓рд┐рдпрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рддрдХ рдПрдХрддреНрд░рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ,
  • рдбреЗрдЯрд╛ 700 рдЪрд░рдгреЛрдВ рдореЗрдВ 140 рдкреИрдХреЗрдЯ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ (рдПрдХ рдЪрд░рдг рдПрдХ sql рдЕрдиреБрд░реЛрдз рд╣реИ)
  • рд╕рд░реНрд╡рд░ - 4-рдиреЛрдб X5 рдбреЗрдЯрд╛рдмреЗрд╕

рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рдЕрдВрддрд░рд┐рдХреНрд╖ рд╕реЗ рдмрд╛рд╣рд░ рднрд╛рдЧрдирд╛, рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдХрдиреЗрдХреНрд╢рди, рдПрдХ рд╕рддреНрд░ рд▓рдЯрдХрд╛ рд╣реБрдЖ, рдЖрджрд┐ред

рддрд╛рд░реНрдХрд┐рдХ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдореЗрдВ рддрд╛рд▓рд┐рдХрд╛ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди, рдЕрдорд╛рдиреНрдп рд╡рд╕реНрддреБрдПрдВ, рд╡рд╕реНрддреБрдУрдВ рддрдХ рдкрд╣реБрдВрдЪ рдореЗрдВ рдХрдореА рдЖрджрд┐ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
рд╢реЗрдбреНрдпреВрд▓рд░ рд╕рд╣реА рд╕рдордп рдкрд░ рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рд▓рдЯрдХрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЖрджрд┐ред

рд╕рд╛рдзрд╛рд░рдг рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕рдордп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдЙрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреЗ рд╕рд╛рде, рдПрдХ рдЕрдЪреНрдЫрд╛ рдИрдЯреАрдПрд▓ рдЕрдкрдиреЗ рджрдо рдкрд░ рд╕рд╛рдордирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдЬрдЯрд┐рд▓ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдЦреЛрд▓рдирд╛ рдФрд░ рдбреЗрдЯрд╛ рд╕реНрд░реЛрддреЛрдВ рдХреА рд╢реЛрдз рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдмрдирд╛рддреА рд╣реИрдВред рдЕрдХреНрд╕рд░ рдкрд░рд┐рд╡рд░реНрддрди рдФрд░ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдЗрд╕рд▓рд┐рдП, рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдЖрдзреА рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред рд╕рднреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ 48% рд╕рд░рд▓ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВред
рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рддреАрд╕рд░рд╛ рд╣рд┐рд╕реНрд╕рд╛ рддрд░реНрдХрд╢рд╛рд╕реНрддреНрд░ рдХреЗ рддрд░реНрдХ рдпрд╛ рдореЙрдбрд▓ рдореЗрдВ рдмрджрд▓рд╛рд╡ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реИ, рдЗрдирдореЗрдВ рд╕реЗ рдЖрдзреЗ рд╕реЗ рдЕрдзрд┐рдХ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЬрдЯрд┐рд▓ рд╣реИрдВред

рдФрд░ рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдПрдХ рдЪреМрдерд╛рдИ рд╕реЗ рдХрдо рдХрд╛рд░реНрдп рдЕрдиреБрд╕реВрдЪрдХ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ 18% рд╕рд░рд▓ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╣реБрдИ рд╕рднреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ 22% рдЬрдЯрд┐рд▓ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдзреНрдпрд╛рди рдФрд░ рд╕рдордп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╡реЗ рд╕рдкреНрддрд╛рд╣ рдореЗрдВ рд▓рдЧрднрдЧ рдПрдХ рдмрд╛рд░ рд╣реЛрддреЗ рд╣реИрдВред рдЬрдмрдХрд┐ рд╕рд╛рдзрд╛рд░рдг рдЧрд▓рддрд┐рдпрд╛рдБ рд▓рдЧрднрдЧ рд╣рд░ рджрд┐рди рд╣реЛрддреА рд╣реИрдВред

рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдИрдЯреАрдПрд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рддрдм рдкреНрд░рднрд╛рд╡реА рд╣реЛрдЧреА рдЬрдм рд▓реЙрдЧ рдореЗрдВ рд╕рдВрднрд╡ рдХреЗ рд░реВрдк рдореЗрдВ рддреНрд░реБрдЯрд┐ рдХрд╛ рд╕реНрдерд╛рди рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕реНрд░реЛрдд рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо рд╕рдордп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдкреНрд░рднрд╛рд╡реА рдирд┐рдЧрд░рд╛рдиреА


рдИрдЯреАрдПрд▓ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдореИрдВ рдХреНрдпрд╛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛?

рдЫрд╡рд┐
рд╢реБрд░реВ - рдЬрдм рд╢реБрд░реВ рдХрд┐рдпрд╛
рд╕реНрд░реЛрдд - рдПрдХ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд
рдкрд░рдд - рднрдВрдбрд╛рд░рдг рдХрд╛ рдХреМрди рд╕рд╛ рд╕реНрддрд░ рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ,
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); 

рдбреАрдбреАрдПрд▓ рдЬрдорд╛ / рд░рд┐рдкреЛрд░реНрдЯ
 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 рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ; рдЗрд╕рдХреЗ рдмрд┐рдирд╛, рд╕рддреНрд░ рд╕рдВрдЦреНрдпрд╛ рдХреЗрд╡рд▓ рдкреВрд░реНрдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдЬрд╛рд░реА рдХреА рдЬрд╛рддреА рд╣реИ
  • рд╕рд╛рдорд╛рдиреНрдп рдореЛрдб рдореЗрдВ, рдЖрдк рд╕рдорд╛рди рдореЗрдВ рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рдЪрд▓рд╛ рд╕рдХрддреЗ

рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдВрдЪрд╛рд▓рди рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИрдВ:

  • рдИрдЯреАрдПрд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рддреНрд░ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╢реБрд░реВ рдХрд░рдирд╛
  • рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд▓реЙрдЧ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдбрд╛рд▓реЗрдВ
  • рдЕрдВрддрд┐рдо рд╕рдлрд▓ рдИрдЯреАрдПрд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд░рд┐рдХреЙрд░реНрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛

Oracle рдпрд╛ Postgres рдЬреИрд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ, рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕реНрдХреНрд▓рд╛рдЗрдЯ рдХреЛ рдПрдХ рдмрд╛рд╣рд░реА рддрдВрддреНрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ PHP рдореЗрдВ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╣реИ ред

рдирд┐рд╖реНрдХрд░реНрд╖


рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдЯреВрд▓ рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдПрдХ рдореЗрдЧрд╛-рдорд╣рддреНрд╡рдкреВрд░реНрдг рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╕рдорд╕реНрдпрд╛ рдХреЗ рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рддреНрд╡рд░рд┐рдд рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдЗрд╖реНрдЯрддрдо рдХреЙрд▓ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдЬрдм рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдПрдХ рд╕реМ рдХреЗ рдХрд░реАрдм рдЖрддреА рд╣реИ, рддреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдПрдХ рдЬрдЯрд┐рд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддреА рд╣реИред

рд▓реЗрдЦ рдПрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЫреЛрдЯреЗ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рдкреВрд░рд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк gitlab SQLite PHP ETL рдпреВрдЯрд┐рд▓рд┐рдЯреАрдЬ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИред

Source: https://habr.com/ru/post/hi465637/


All Articles