рдХреЙрд░реНрдкреЛрд░реЗрдЯ рднрдВрдбрд╛рд░рдг рдбреЗрдЯрд╛ рдЧреБрдгрд╡рддреНрддрд╛ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╕реНрд╡рдЪрд╛рд▓рди

рд░реЛрд╕реНрдЯреЗрд▓рдХреЙрдо рдореЗрдВ, рдХрд┐рд╕реА рднреА рдмрдбрд╝реА рдХрдВрдкрдиреА рдХреА рддрд░рд╣, рдПрдХ рдХреЙрд░реНрдкреЛрд░реЗрдЯ рдбреЗрдЯрд╛ рд╡реЗрдпрд░рд╣рд╛рдЙрд╕ (WCD) рд╣реИред рд╣рдорд╛рд░рд╛ рдбрдмреНрд▓реНрдпреВрд╕реАрдбреА рд▓рдЧрд╛рддрд╛рд░ рдмрдврд╝ рд░рд╣рд╛ рд╣реИ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИ, рд╣рдо рдЗрд╕ рдкрд░ рдЙрдкрдпреЛрдЧреА рд╕реНрдЯреЛрд░рдлреНрд░рдВрдЯ, рд░рд┐рдкреЛрд░реНрдЯ рдФрд░ рдбреЗрдЯрд╛ рдХреНрдпреВрдмреНрд╕ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВред рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░, рд╣рдореЗрдВ рдЗрд╕ рддрдереНрдп рд╕реЗ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдХрд┐ рдЦрд░рд╛рдм-рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рд╡рд┐рдВрдбреЛ рдбрд┐рд╕реНрдкреНрд▓реЗ рдХрд░рддреЗ рд╕рдордп рд╣рдорд╛рд░реЗ рд╕рд╛рде рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░рддреЗ рд╣реИрдВ, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЗрдХрд╛рдЗрдпрд╛рдВ рд╕реНрд░реЛрдд рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреА рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЬреБрдбрд╝рддреА рд╣реИрдВ рдФрд░ рд╡реНрдпрд╡рд╕рд╛рдп рдХреА рд╕рдордЭ рдХрд╛ рдЕрднрд╛рд╡ рдкреИрджрд╛ рдХрд░рддреА рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬрд┐рдпреЛрдВ (рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬрд┐рдпреЛрдВ) рдореЗрдВ рд╢реВрдиреНрдп рдорд╛рди рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдЕрдиреНрдп рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдбреЗрдЯрд╛ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред
WCD рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЪрд┐рддреНрд░:



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

рддреИрдпрд╛рд░ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ minuses рд╣рд░ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЬрд╛рдиреЗ рдЬрд╛рддреЗ рд╣реИрдВ: рдореВрд▓реНрдп, рд╕реАрдорд┐рдд рд▓рдЪреАрд▓рд╛рдкрди, рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдареАрдХ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреА рдХрдореАред рдкреЗрд╢реЗрд╡рд░реЛрдВ - mDM рднрд╛рдЧреЛрдВ (рд╕реЛрдиреЗ рдХреЗ рдбреЗрдЯрд╛, рдЖрджрд┐), рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдФрд░ рд╕рдорд░реНрдерди рднреА рдмрдВрдж рд╣реИрдВред рдЗрд╕рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдЦрд░реАрдж рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд▓реНрджреА рд╕реЗ рднреВрд▓ рдЧрдП рдФрд░ рдЕрдкрдиреЗ рд╕рдорд╛рдзрд╛рди рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд┐рдпрд╛ред

рд╣рдорд╛рд░реЗ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдореВрд▓ рдкрд╛рдпрдерди рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рд╕реНрдЯреЛрд░рд┐рдВрдЧ, рд▓реЙрдЧрд┐рдВрдЧ рдФрд░ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдУрд░реЗрдХрд▓ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдкрд╛рдпрдерди рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВ, рд╣рдо рд╣рд╛рдЗрд╡ (pyhive), рдЧреНрд░реАрдирдкреНрд▓рдо (pgdb), рдУрд░реЗрдХрд▓ (cx_Oracle) рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо рдЖрд╡рд╢реНрдпрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реНрд░реЛрдд рдХреЛ рдЬреЛрдбрд╝рдирд╛ рднреА рдПрдХ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рдкрд░рд┐рдгрд╛рдореА рдбреЗрдЯрд╛ рд╕реЗрдЯ (рдкрд░рд┐рдгрд╛рдо рд╕реЗрдЯ) рдлреНрд▓рд╛рдИ рдкрд░ рд╕рд╛рдордВрдЬрд╕реНрдп (SUCCESS / ERROR) рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкрд░рд┐рдгрд╛рдореА рдУрд░реЗрдХрд▓ рдЯреЗрдмрд▓ рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВред APEX рдХреЛ рдкрд░рд┐рдгрд╛рдореА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдкрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рд░рдЦрд░рдЦрд╛рд╡ рдФрд░ рдкреНрд░рдмрдВрдзрди рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред

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

рдЕрдм рдЗрд╕ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рд╕рд╛рдордВрдЬрд╕реНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред

рд╣рдордиреЗ рддрдХрдиреАрдХреА рд╕рд╛рдордВрдЬрд╕реНрдп рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХреА, рдЬреЛ рдХреБрдЫ рдлрд┐рд▓реНрдЯрд░ рдХреЗ рдЖрд╡реЗрджрди рдХреЗ рд╕рд╛рде рдбрдмреНрд▓реНрдпреВрд╕реАрдбреА рдХреЗ рдЗрдирдкреБрдЯ рдФрд░ рдкрд░рддреЛрдВ рдореЗрдВ рдбреЗрдЯрд╛ рдХреА рдорд╛рддреНрд░рд╛ рдХреА рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдбрдмреНрд▓реНрдпреВрдЯреАрдПрд▓ рдЗрдирдкреБрдЯ рдкрд░ рдЖрдП ctl рдлрд╝рд╛рдЗрд▓ рдХреЛ рд▓реЗрддреЗ рд╣реИрдВ, рдЗрд╕рд╕реЗ рд░рд┐рдХреЙрд░реНрдб рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрдврд╝рддреЗ рд╣реИрдВ рдФрд░ рд╕реНрдЯреЗрдЬ рдУрдбреАрдПрд▓ рдФрд░ / рдпрд╛ рд╕реНрдЯреЗрдЬ рдУрдбреАрдПрд╕ (рдЖрд░реЗрдЦ рдореЗрдВ 1, 2, 3) рдкрд░ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реИрдВред рд╕рддреНрдпрд╛рдкрди рдорд╛рдирджрдВрдб рдХреЛ рдЕрднрд┐рд▓реЗрдЦреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ (рдЧрдгрдирд╛) рдХреА рд╕рдорд╛рдирддрд╛ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрджрд┐ рдорд╛рддреНрд░рд╛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛрддреА рд╣реИ, рддреЛ рдкрд░рд┐рдгрд╛рдо SUCCESS рд╣реИ, рдирд╣реАрдВ - рддреНрд░реБрдЯрд┐ рдХрд╛ рдореИрдиреБрдЕрд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдгред

рдЕрднрд┐рд▓реЗрдЦреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддрдХрдиреАрдХреА рд╕рд╛рдордВрдЬрд╕реНрдп рдХреА рдпрд╣ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдПрдбреАрдПрд╕ рдкрд░рдд (рдЖрд░реЗрдЦ рдореЗрдВ 8) рддрдХ рдлреИрд▓реА рд╣реБрдИ рд╣реИред рдлрд┐рд▓реНрдЯрд░ рдкрд░рддреЛрдВ рдХреЗ рдмреАрдЪ рдмрджрд▓ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЬреЛ рд▓реЛрдбрд┐рдВрдЧ рдХреЗ рдкреНрд░рдХрд╛рд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВ - рдбреАрдЖрдИрдПрдо (рд╕рдВрджрд░реНрдн рдкреБрд╕реНрддрдХ), рдПрдЪрдбреАрдЖрдИрдПрдо (рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд╕рдВрджрд░реНрдн рдкреБрд╕реНрддрдХ), рдПрдлрдПрд╕реАрдЯреА (рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдПрдЯреНрд░реБрдЕрд▓ рдЯреЗрдмрд▓), рдЖрджрд┐ - рд╕рд╛рде рд╣реА рд╕рд╛рде рдПрд╕рд╕реАрдбреА рдФрд░ рдкрд░рдд рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рднреАред рдкреНрд░рджрд░реНрд╢рди рдкрд░рдд рдХреЗ рдХрд░реАрдм, рдЕрдзрд┐рдХ рдкрд░рд┐рд╖реНрдХреГрдд рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рдкрд╛рдпрдерди рдореЗрдВ рдЗрдирдкреБрдЯ рдкрд░ рдПрдХ рддрдХрдиреАрдХреА рдЬрд╛рдВрдЪ рднреА рдХреА рдЧрдИ, рдЬреЛ рдкреНрд░рдореБрдЦ рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддреА рд╣реИред рд╣рдорд╛рд░реЗ рдЧреНрд░реАрдирдкреНрд▓рдо рдореЗрдВ, рдкреНрд░рдореБрдЦ рдХреНрд╖реЗрддреНрд░ (PK) рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд┐рд╕реНрдЯрдо рдЯреВрд▓реНрд╕ рджреНрд╡рд╛рд░рд╛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдПрдХ рдкрд╛рдпрдерди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреА, рдЬреЛ рдкреАрдХреЗ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рд╕реЗ рд▓реЛрдб рдХреА рдЧрдИ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдкрдврд╝рддреА рд╣реИ рдФрд░ рдЙрди рдкрд░ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдПрдХ SQL рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЙрддреНрдкрдиреНрди рдХрд░рддреА рд╣реИред рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рд▓рдЪреАрд▓рд╛рдкрди рд╣рдореЗрдВ рдПрдХ рдпрд╛ рдХрдИ рдХреНрд╖реЗрддреНрд░реЛрдВ рд╕реЗ рдорд┐рд▓рдХрд░ рдкреАрдХреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдмреЗрд╣рдж рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХрд╛ рд╕рд╛рдордВрдЬрд╕реНрдп рдПрд╕рдЯреАрдЬреА рдПрдбреАрдПрд╕ рдкрд░рдд рддрдХ рдлреИрд▓рд╛ рд╣реБрдЖ рд╣реИред

unique_check  import sys import os from datetime import datetime log_tmstmp = datetime.now().strftime("%Y-%m-%d %H:%M:%S") def do_check(args, context): tab = args[0] data = [] fld_str = "" try: sql = """SELECT 't_'||lower(table_id) as tn, lower(column_name) as cn FROM src_column@meta_data WHERE  table_id = '%s' and is_primary_key = 'Y'""" % (tab,) for fld in context['ora_get_data'](context['ora_con'], sql): fld_str = fld_str + (fld_str and ",") + fld[1] if fld_str: config = context['script_config'] con_gp = context['pg_open_con'](config['user'], config['pwd'], config['host'], config['port'], config['dbname']) sql = """select %s as pkg_id, 't_%s' as table_name, 'PK fields' as column_name, coalesce(sum(cnt), 0) as NOT_UNIQUE_PK, to_char(current_timestamp, 'YYYY-MM-DD HH24:MI:SS') as sys_creation from (select 1 as cnt from edw_%s.t_%s where %s group by %s  having count(*) > 1 ) sq; """ % (context["package"] or '0',tab.lower(), args[1], tab.lower(), (context["package"] and ("package_id = " + context["package"]) or "1=1"), fld_str ) data.extend(context['pg_get_data'](con_gp, sql)) con_gp.close() except Exception as e: raise return data or [[(context["package"] or 0),'t_'+tab.lower(), None, 0, log_tmstmp]] if __name__ == '__main__': sys.exit(do_check([sys.argv[1], sys.argv[2]], {})) 

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

рдкреВрд░реНрдг рдорд╛рдиреЛрдВ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рд╕реБрд▓рд╣ рдкрд┐рдЫрд▓реЗ рдПрдХ рдФрд░ рдкрд╛рдпрдерди рдореЗрдВ рднреА рдЗрд╕реА рддрд░рд╣ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рд▓реЛрдб рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдлрд╝реАрд▓реНрдб рд╕реЗ рдкрдврд╝рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд░рд┐рдХреНрдд (NULL) рдорд╛рди рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХреА рдкреВрд░реНрдгрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред DDS рд▓реЗрдпрд░ (рдкрд╣рд▓реЗ рдЖрд░реЗрдЦ рдореЗрдВ 6) рд╕реЗ рдкрд╣рд▓реЗ рд░реЗрдХрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

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

STG (STAGE) _ODS рдФрд░ ODS (рдСрдкрд░реЗрд╢рдирд▓ рдбреЗрдЯрд╛ рд▓реЗрдпрд░) (рдЖрд░реЗрдЦ рдореЗрдВ 3 рдФрд░ 4) рдХреЗ рдмреАрдЪ, рдЯреЗрдХреНрдирд┐рдХрд▓ рдбрд┐рд▓реАрд╢рди рдлреАрд▓реНрдбреНрд╕ (рдбрд┐рд▓реАрдЯ рдЗрдВрдбрд┐рдХреЗрдЯрд░ = рдбрд┐рд▓реАрдЯ_рдЗрдВрдб) рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреА рд╢реБрджреНрдзрддрд╛ рд╣рдо рдПрд╕рдХреНрдпреВрдПрд▓ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреА рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВред рдЧреБрдо рдЗрдирдкреБрдЯ рдХреЛ рдУрдбреАрдПрд╕ рдореЗрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

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

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдПрдХ рдорд╛рдирдХреАрдХреГрдд рд╕рд╛рдордВрдЬрд╕реНрдп рд╣реИред рдЙрджрд╛рд╣рд░рдг HDG рдХреЗ рд▓рд┐рдП STG_ODS рдФрд░ ODS рдХреЗ рдмреАрдЪ SQL рд╕реБрд▓рд╣ рдХреЛрдб

 select package_id as pkg_id, 'T_~TABLE~' as table_name, to_char(current_timestamp, 'YYYY-MM-DD HH24:MI:SS'), coalesce(empty_in_ods, 0) as empty_in_ods, coalesce(not_equal_md5, 0) as not_equal_md5, coalesce(deleted_in_ods, 0) as deleted_in_ods, coalesce(not_deleted_in_ods, 0) as not_deleted_in_ods, max_load_dttm from (select    max (src.package_id) as package_id,    sum (case when tgt.md5 is null then 1 else 0 end) as empty_in_ods,    sum (case when src.md5<>tgt.md5 and tgt.~PK~ is not null and tgt.deleted_ind = 0 then 1 else 0 end) as not_equal_md5,    sum (case when tgt.deleted_ind = 1 and src.md5=tgt.md5 then 1 else 0 end) as deleted_in_ods from EDW_STG_ODS.T_~TABLE~  src left join EDW_ODS.T_~TABLE~  tgt       on ~P_JOIN_CONDITION~ and tgt.active_ind ='Y' where ~#PKG_ID#~ = 0   or src.package_id = ~#PKG_ID#~ ) aa, (select sum (case when src.~PK~ is null then 1 else 0 end) as not_deleted_in_ods, max (tgt.load_dttm) as max_load_dttm from EDW_STG_ODS.T_~TABLE~  src right join EDW_ODS.T_~TABLE~  tgt        on ~P_JOIN_CONDITION~ where tgt.deleted_ind = 0 and tgt.active_ind ='Y'  and tgt.~PERIOD_COL~ between (select min(~PERIOD_COL~) from EDW_STG_ODS.T_~TABLE~ where ~#PKG_ID#~ = 0 or package_id = ~#PKG_ID#~)                           and (select max(~PERIOD_COL~) from EDW_STG_ODS.T_~TABLE~ where ~#PKG_ID#~ = 0 or package_id = ~#PKG_ID#~) ) bb where 1=1 

рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдорд╛рдирдХреЛрдВ рдХреЗ рд╕рд╛рде HDIM рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП STG_ODS рдФрд░ ODS рдХреЗ рдмреАрдЪ SQL рд╕реБрд▓рд╣ рдХреЛрдб рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:


 --------------HDIM_CHECKS--------------- select package_id as pkg_id, 'TABLE_NAME' as table_name, to_char(current_timestamp, 'YYYY-MM-DD HH24:MI:SS'), coalesce(empty_in_ods, 0) as empty_in_ods, coalesce(not_equal_md5, 0) as not_equal_md5, coalesce(deleted_in_ods, 0) as deleted_in_ods, coalesce(not_deleted_in_ods, 0) as not_deleted_in_ods, max_load_dttm from (select    max (src.package_id) as package_id,    sum (case when tgt.md5 is null then 1 else 0 end) as empty_in_ods,    sum (case when src.md5<>tgt.md5 and tgt.ACTION_ID is not null and tgt.deleted_ind = 0 then 1 else 0 end) as not_equal_md5,    sum (case when tgt.deleted_ind = 1 and src.md5=tgt.md5 then 1 else 0 end) as deleted_in_ods from EDW_STG_ODS.TABLE_NAME  src left join EDW_ODS.TABLE_NAME  tgt       on SRC.PK_ID=TGT.PK_ID and tgt.active_ind ='Y' where 709083887 = 0   or src.package_id = 709083887 ) aa, (select sum (case when src.PK_ID is null then 1 else 0 end) as not_deleted_in_ods, max (tgt.load_dttm) as max_load_dttm from EDW_STG_ODS.TABLE_NAME  src right join EDW_ODS.TABLE_NAME  tgt        on SRC.PK_ID =TGT.PK_ID where tgt.del_ind = 0 and tgt.active_ind ='Y'  and tgt.DATE_SYS between (select min(DATE_SYS) from EDW_STG_ODS.TABLE_NAME where 70908 = 0 or package_id = 70908)                           and (select max(DATE_SYS) from EDW_STG_ODS.TABLE_NAME where 70908 = 0 or package_id = 70908) ) bb where 1=1 

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

DDS рд▓реЗрдпрд░ (рдкрд╣рд▓реЗ рдЖрд░реЗрдЦ рдореЗрдВ 6) рдкрд░, рд╡рд┐рднрд┐рдиреНрди SI (рд╕реНрд░реЛрдд рд╕рд┐рд╕реНрдЯрдо) рдХреЛ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реНрд░реЛрдд рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдбреЗрдЯрд╛ рд▓рд┐рдВрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░реЛрдЧреЗрдЯ рдХреБрдВрдЬреА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП HUB рдЯреЗрдмрд▓ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред рд╣рдо рдЙрдиреНрд╣реЗрдВ рдЪрд░рдг-рдкрд░рдд рдХреЗ рд╕рдорд╛рди рдПрдХ рдЕрдЬрдЧрд░-рдЬрд╛рдВрдЪ рдХреЗ рд╕рд╛рде рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВред

DDS рдкрд░рдд рдкрд░, рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ HUB рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдХреЗ рдмрд╛рдж, рдкреНрд░рдХрд╛рд░ 0, -1, -2 рдХреЗ рдорд╛рди рдореБрдЦреНрдп рдлрд╝реАрд▓реНрдб рдореЗрдВ рдкреНрд░рдХрдЯ рдирд╣реАрдВ рд╣реБрдП, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдЧрд▓рдд рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдирд╛, рдбреЗрдЯрд╛ рдХреА рдХрдореАред рд╡реЗ рдПрдЪрдпреВрдмреА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдХреЗ рдЕрднрд╛рд╡ рдореЗрдВ рдкреНрд░рдХрдЯ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдпрд╣ рдореИрдиреБрдЕрд▓ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧрд▓рддреА рд╣реИред

рдПрдбреАрдПрд╕ рд╢реЛрдХреЗрд╕ рдкрд░рдд (рдкрд╣рд▓реЗ рдЖрд░реЗрдЦ рдореЗрдВ 8) рдХреЗ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЬрдЯрд┐рд▓ рд╕рд╛рдордВрдЬрд╕реНрдпред рдкреНрд░рд╛рдкреНрдд рдкрд░рд┐рдгрд╛рдо рдХреЗ рдЕрднрд┐рд╕рд░рдг рдореЗрдВ рдкреВрд░реНрдг рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХреЗ рд▓рд┐рдП, рд╢реБрд▓реНрдХ рдХреА рд░рд╛рд╢рд┐ рдХреЗ рдПрдХрддреНрд░реАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрд░реЛрдд рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕рд╛рде рд╕рддреНрдпрд╛рдкрди рдпрд╣рд╛рдВ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдПрдХ рддрд░рдл, рд╕рдВрдХреЗрддрдХреЛрдВ рдХрд╛ рдПрдХ рд╡рд░реНрдЧ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░ рдЙрдЪреНрдЪрд╛рд░рдг рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВред рд╣рдо рдЙрдиреНрд╣реЗрдВ рдбрдмреНрд▓реНрдпреВрд╕реАрдбреА рдХреА рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рд╕реЗ рдПрдХ рдорд╣реАрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдХрдЯреНрдард╛ рдХрд░рддреЗ рд╣реИрдВред рджреВрд╕рд░реА рдУрд░, рд╣рдо рд╕реНрд░реЛрдд рдкреНрд░рдгрд╛рд▓реА рд╕реЗ рд╕рдорд╛рди рд╢реБрд▓реНрдХреЛрдВ рдХрд╛ рд╕рдореБрдЪреНрдЪрдп рд▓реЗрддреЗ рд╣реИрдВред 1% рд╕реЗ рдЕрдзрд┐рдХ рдпрд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдФрд░ рд╕рд╣рдордд рдирд┐рд░рдкреЗрдХреНрд╖ рдореВрд▓реНрдп рдХреА рд╡рд┐рд╕рдВрдЧрддрд┐ рд╕реНрд╡реАрдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реИред рд╕реБрд▓рд╣ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдкрд░рд┐рдгрд╛рдо рд╕реЗрдЯ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдмрдирд╛рдП рдЧрдП рдбреЗрдЯрд╛ рд╕реЗрдЯреЛрдВ рдореЗрдВ рд░рдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВ рдЬреЛ рдУрд░реЗрдХрд▓ рдЯреЗрдмрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдбреЗрдЯрд╛ рдХреА рддреБрд▓рдирд╛ Oracle рджреГрд╢реНрдп рдореЗрдВ рдХреА рдЬрд╛рддреА рд╣реИред рдЕрдкреЗрдХреНрд╕ рдореЗрдВ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рджреГрд╢реНрдпред рдбреЗрдЯрд╛ рдХреЗ рдкреВрд░реЗ рд╕реЗрдЯ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ (рдкрд░рд┐рдгрд╛рдо рд╕реЗрдЯ) рд╣рдореЗрдВ рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ, рдпрджрд┐ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВ, рддреЛ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЬрд╛рдиреЗ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд╡рд┐рд╕реНрддреГрдд рдбреЗрдЯрд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд▓реЗрдЦ рдвреВрдВрдвреЗрдВ, рдЬрд┐рд╕ рдкрд░ рд╡рд┐рд╕рдВрдЧрддрд┐ рд╣реБрдИ, рдФрд░ рдЗрд╕рдХреЗ рдХрд╛рд░рдгреЛрдВ рдХреА рддрд▓рд╛рд╢ рдХрд░реЗрдВред


APEX рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕реБрд▓рд╣ рдкрд░рд┐рдгрд╛рдо рдХреА рдкреНрд░рд╕реНрддреБрддрд┐

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

рдпрд╣ рд▓реЗрдЦ рд░реЛрд╕реНрдЯреЗрд▓рдХреЙрдо рдбреЗрдЯрд╛ рдкреНрд░рдмрдВрдзрди рдЯреАрдо рджреНрд╡рд╛рд░рд╛ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛

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


All Articles