рдЙрддреНрдкрд╛рджрдХрддрд╛ рдХреЗ рд▓рд┐рдП рдЖрд░ рдХрд┐рддрдирд╛ рддреЗрдЬ рд╣реИ?

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


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


рдпрд╣ рдкрд┐рдЫрд▓реЗ рдкреНрд░рдХрд╛рд╢рдиреЛрдВ рдХрд╛ рдПрдХ рд╕рд┐рд▓рд╕рд┐рд▓рд╛ рд╣реИред


рдЖрдорддреМрд░ рдкрд░, рдПрдХ рд╕рддрд╣реА "рдорд╛рдереЗ" рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕рдмрд╕реЗ рдкреНрд░рднрд╛рд╡реА рдирд╣реАрдВ рд╣реИред рдбреЗрдЯрд╛ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдФрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдЬреБрдбрд╝реЗ 99% рдХрд╛рд░реНрдп рдЙрдирдХреЗ рдЖрдпрд╛рдд рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд┐рдмрдВрдз рдореЗрдВ, рд╣рдо рдЬреАрд░рд╛ рдкреНрд░рд╛рд░реВрдк рдбреЗрдЯрд╛ рдХреЗ "рдЧрд╣рди" рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, json рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рдореВрд▓ рдЪрд░рдг рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред json csv рд╡рд┐рдкрд░реАрдд рдПрдХ рдЬрдЯрд┐рд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдЬрдЯрд┐рд▓ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рдФрд░ рд▓рдВрдмрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред


рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдмрдпрд╛рди


рджрд┐рдП рдЧрдП:


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

рдЖрдХреГрддрд┐ рдореЗрдВ рдПрдХ рдирд┐рдпрдорд┐рдд рдЬреАрд░рд╛ рдЬреЛрдВрд╕ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдгред



рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ:


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

рдирд┐рд░реНрдгрдп


рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ, JSON рд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ data.frame рдХрдирд╡рд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП R рдореЗрдВ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреИрдХреЗрдЬ рд╣реИрдВред рд╕рдмрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдкреИрдХреЗрдЬ jsonlite ред рд╣рд╛рд▓рд╛рдБрдХрд┐, data.frame рдХреЗ рд▓рд┐рдП json рдкрджрд╛рдиреБрдХреНрд░рдо рдХрд╛ рдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдкрд╛рдВрддрд░рдг рдмрд╣реБ-рд╕реНрддрд░реАрдп рдиреЗрд╕реНрдЯрд┐рдВрдЧ рдФрд░ рд░рд┐рдХреЙрд░реНрдб рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдордЬрдмреВрдд рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдХрд╛рд░рдг рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рд╕рдВрдмрдВрдзрд┐рдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдХреНрд▓рдЪрд┐рдВрдЧ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдХреЗ рд▓рд┐рдП, рд╡рд┐рднрд┐рдиреНрди рдПрдХреНрд╕рдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЬрд╛рдБрдЪ рдФрд░ рдЫреЛрд░реЛрдВред рдпрд╛рдиреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди 32 рдХрд╛рд░реНрдпреЛрдВ рдХреА рдПрдХ json рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП (рд╕рднреА рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдкреВрд░рд╛ рдЗрддрд┐рд╣рд╛рд╕ рд╢рд╛рдорд┐рд▓ рд╣реИ) рдЗрд╕ рддрд░рд╣ рдХреЗ рдЧреИрд░-рд░реИрдЦрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдореЗрдВ jsonlite рдФрд░ tidyverse рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдФрд╕рдд рдкреНрд░рджрд░реНрд╢рди рд▓реИрдкрдЯреЙрдк рдкрд░ ~ 10 рд╕реЗрдХрдВрдб рд▓рдЧрддреЗ рд╣реИрдВред


рдЕрдХреЗрд▓реЗ 10 рд╕реЗрдХрдВрдб рдЬреНрдпрд╛рджрд╛ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдареАрдХ рдЙрд╕ рдХреНрд╖рдг рддрдХ рдЬрдм рдЗрдирдореЗрдВ рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реА рдлрд╛рдЗрд▓реЗрдВ рдирд╣реАрдВ рд╣реИрдВред рдПрдХ рд╕рдорд╛рди "рдкреНрд░рддреНрдпрдХреНрд╖" рд╡рд┐рдзрд┐ ~ 4000 рдлрд╝рд╛рдЗрд▓реЛрдВ (~ 4 рдЬреАрдмреА) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдирдореВрдирд╛ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдФрд░ рд▓реЛрдбрд┐рдВрдЧ рдкрд░ рдореВрд▓реНрдпрд╛рдВрдХрди рдиреЗ 8-9 рдШрдВрдЯреЗ рдХрд╛ рдХрд╛рдо рджрд┐рдпрд╛ред


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


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


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


рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╕рдорд╛рдзрд╛рди рдирд┐рдореНрди 10 рд▓рд╛рдЗрдиреЛрдВ рддрдХ рдХрдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ (рдпрд╣ рдПрдХ рдирдХрд▓реА рдХрдВрдХрд╛рд▓ рд╣реИ, рдмрд╛рдж рдореЗрдВ рдЧреИрд░-рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╢рд░реАрд░ рдХрд┐рдЯ рдХреЗ рдмрд┐рдирд╛):


 library(tidyverse) library(jsonlite) library(readtext) fnames <- fs::dir_ls(here::here("input_data"), glob = "*.txt") ff <- function(fname){ json_vec <- readtext(fname, text_field = "texts", encoding = "UTF-8") %>% .$text %>% jqr::jq('[. | {issues: .issues}[] | .[]', '{id: .id, key: .key, created: .fields.created, type: .fields.issuetype.name, summary: .fields.summary, descr: .fields.description}]') jsonlite::fromJSON(json_vec, flatten = TRUE) } tictoc::tic("Loading with jqr-jsonlite single-threaded technique") issues_df <- fnames %>% purrr::map(ff) %>% data.table::rbindlist(use.names = FALSE) tictoc::toc() system.time({fst::write_fst(issues_df, here::here("data", "issues.fst"))}) 

рдпрд╣рд╛рдБ рдХреНрдпрд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ?


  1. рд▓реЛрдбрд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд┐рд╢реЗрд╖, рдкреНрд░реЛрдлрд╛рдЗрд▓ рдкреИрдХреЗрдЬ рдЬреИрд╕реЗ рдХрд┐ readtext рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИред
  2. jq рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдкрд╛рд░реНрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ jq рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рднреА рд╣реБрдХрд┐рдВрдЧ рдХреЛ рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рднрд╛рд╖рд╛ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЗрд╕реЗ CPP рд╕реНрддрд░ рддрдХ рдХрдо рдХрд░рддрд╛ рд╣реИ рдФрд░ data.frame рдореЗрдВ data.frame рд╕реВрдЪрд┐рдпреЛрдВ рдпрд╛ рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рдореИрдиреБрдЕрд▓ рд╣реЗрд░рдлреЗрд░ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред
  3. рдорд╛рдЗрдХреНрд░реЛрдмреЗрдирдЪрд░реНрдЪ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рд╣реА рд╣реЛрдирд╣рд╛рд░ bench рдкреИрдХреЗрдЬ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рди рдХреЗрд╡рд▓ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рд╕реНрдореГрддрд┐ рдХрд╛ рд╣реЗрд░рдлреЗрд░ рднреА рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХреЛрдИ рд░рд╣рд╕реНрдп рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдк рдореЗрдореЛрд░реА рдореЗрдВ рдбреЗрдЯрд╛ рдХреЙрдкреА рдХрд░рдиреЗ рдкрд░ рдмрд╣реБрдд рдХреБрдЫ рдЦреЛ рд╕рдХрддреЗ рд╣реИрдВред
  4. рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдФрд░ рд╕рд░рд▓ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдХреНрд╕рд░ рдЕрдВрддрд┐рдо рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рд╕рдордп-рд╕рдордп рдкрд░ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ tidyverse рдФрд░ рд╕рдордп рд▓реЗрдиреЗ рд╡рд╛рд▓реЗ рднрд╛рдЧреЛрдВ рдХреЛ data.table рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ data.table , рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, data.table . data.table рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпрд╣рд╛рдВ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рд╡рд┐рд▓рдп рдХрд░ рджрд┐рдпрд╛ data.table ред рдФрд░ рдкреЛрд╕реНрдЯрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдЪрд░рдг рдкрд░ рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрди (рдЬреЛ рдХрд┐ ff рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрдХреНрд░ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ) рднреА рдбреЗрдЯрд╛ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рд╕рдВрджрд░реНрдн рджреНрд╡рд╛рд░рд╛ рдмрджрд▓рддреЗ рдбреЗрдЯрд╛ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╛ Rcpp рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ Rcpp рдкреИрдХреЗрдЬ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рддрд╛рд░реАрдЦреЛрдВ рдФрд░ рд╕рдордп рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП anytime рдкреИрдХреЗрдЬред
  5. рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдбреЗрдЯрд╛ рдбрдВрдк рдХрд░рдиреЗ рдФрд░ рдлрд┐рд░ рдЙрд╕реЗ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП fst рдкреИрдХреЗрдЬ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдпрд╣ 4 рд╕рд╛рд▓ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЬреАрд░рд╛ рдЗрддрд┐рд╣рд╛рд╕ рд╡рд┐рд╢реНрд▓реЗрд╖рд┐рдХреА рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╕ рдПрдХ рд╕реЗрдХрдВрдб рдХрд╛ рдПрдХ рдЕрдВрд╢ рд▓реЗрддрд╛ рд╣реИ, рдФрд░ рдбреЗрдЯрд╛ рдмрд┐рд▓реНрдХреБрд▓ рдЖрд░ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЙрдирдХреЗ рдмрд╛рдж рдХреЗ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд╣реИред

рд╕рдорд╛рдзрд╛рди рдХреЗ рджреМрд░рд╛рди, rjson рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд░ rjson рдЧрдпрд╛ рдерд╛ред jsonlite::fromJSON rjson = rjson::fromJSON(json_vec) рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд▓рдЧрднрдЧ 2 рдЧреБрдирд╛ рдзреАрдорд╛ рд╣реИ rjson = rjson::fromJSON(json_vec) , рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЫреЛрдбрд╝рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдбреЗрдЯрд╛ рдореЗрдВ NULL рдорд╛рди рд╣реИрдВ, рдФрд░ NULL рдХреЛ NA рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рдЪрд░рдг рдореЗрдВ rjson рджреНрд╡рд╛рд░рд╛ rjson рд╕реВрдЪрд┐рдпреЛрдВ рдореЗрдВ рд▓рд╛рдн, рдФрд░ рдХреЛрдб рднрд╛рд░реА рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред


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


  1. рдЗрд╕ рддрд░рд╣ рдХреЗ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рд╕реЗ 8-9 рдШрдВрдЯреЗ рд╕реЗ рд▓реЗрдХрд░ 10 рдорд┐рдирдЯ рддрдХ рдПрдХ рд╣реА рд▓реИрдкрдЯреЙрдк рдкрд░ рд╕рд┐рдВрдЧрд▓ рдереНрд░реЗрдбреЗрдб рдореЛрдб рдореЗрдВ рд╕рднреА рдЬреЛрдВрд╕ рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рд╕рдордп рдореЗрдВ рдмрджрд▓рд╛рд╡ рд╣реЛрддрд╛ рд╣реИред
  2. рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ foreach рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдп рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдЬреЛрдбрд╝рдирд╛ рдиреЗ рдХреЛрдб (+ 5 рд▓рд╛рдЗрдиреЛрдВ) рдХреЛ рдмреЛрдЭ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдмрд▓реНрдХрд┐ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдХреЛ 5 рдорд┐рдирдЯ рддрдХ рдХрдо рдХрд░ рджрд┐рдпрд╛ред
  3. рдХрдордЬреЛрд░ рд▓рд┐рдирдХреНрд╕ рд╕рд░реНрд╡рд░ (рдХреЗрд╡рд▓ 4 рдХреЛрд░) рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛, рд▓реЗрдХрд┐рди рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдореЛрдб рдореЗрдВ рдПрд╕рдПрд╕рдбреА рдкрд░ рдЪрд▓рдиреЗ рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп 40 рд╕реЗрдХрдВрдб рддрдХ рдХрдо рд╣реЛ рдЧрдпрд╛ред
  4. рдПрдХ рдЙрддреНрдкрд╛рджрдХ рд╕рд░реНрдХрд┐рдЯ рдкрд░ рдкреНрд░рдХрд╛рд╢рди (20 рдХреЛрд░, 3 рдЧреАрдЧрд╛рд╣рд░реНрдЯреНрдЬ, рдПрд╕рдПрд╕рдбреА) рдиреЗ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп 6-8 рд╕реЗрдХрдВрдб рддрдХ рдШрдЯрд╛ рджрд┐рдпрд╛ рд╣реИ, рдЬреЛ рдкрд░рд┐рдЪрд╛рд▓рди рд╡рд┐рд╢реНрд▓реЗрд╖рд┐рдХреА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред

рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, R рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░, рдПрдХ рд╕рд░рд▓ рдХреЛрдб рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдХреЛ ~ 9 рдШрдВрдЯреЗ рд╕реЗ ~ 9 рд╕реЗрдХрдВрдб рддрдХ рдХрдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдлрд▓ рд░рд╣рд╛ред


R рдкрд░ рдирд┐рд░реНрдгрдп рдХрд╛рдлреА рддреЗрдЬ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рдХреЛрдг рд╕реЗ рджреЗрдЦрдиреЗ рдФрд░ рдирдИ рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред


рдкрд┐рдЫрд▓рд╛ рдкреНрд░рдХрд╛рд╢рди - "рдкреНрд░рдмрдВрдзрдХ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рддреНрдордХ рдкреИрд░рд╛рд╢реВрдЯ" ред

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


All Articles