SQL ๋ฐ Python์œผ๋กœ ์ €์žฅ ํ”„๋กœ์‹œ์ € ์ž‘์„ฑํ•˜๊ธฐยถ

์ฒ˜๋ฆฌ๊ธฐ๊ฐ€ Python์œผ๋กœ ์ฝ”๋”ฉ๋œ ์ €์žฅ ํ”„๋กœ์‹œ์ €๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒ˜๋ฆฌ๊ธฐ ๋‚ด Snowpark ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์—์„œ API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Snowflake ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ์ฟผ๋ฆฌ, ์—…๋ฐ์ดํŠธ ๋ฐ ๊ธฐํƒ€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ €์žฅ ํ”„๋กœ์‹œ์ €๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Snowflake ์›จ์–ดํ•˜์šฐ์Šค๋ฅผ ์ปดํ“จํŒ… ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ์‚ฌ์šฉํ•˜์—ฌ Snowflake ๋‚ด์—์„œ ๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์ถ•ํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Python์šฉ Snowpark API ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ์„ ๋งŒ๋“ค์–ด ์ €์žฅ ํ”„๋กœ์‹œ์ €๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ €์žฅ ํ”„๋กœ์‹œ์ €์˜ ์‹คํ–‰์„ ์˜ˆ์•ฝํ•˜๋ ค๋ฉด ์ž‘์—… ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋จธ์‹  ๋Ÿฌ๋‹ ๋ชจ๋ธ๊ณผ Snowpark Python์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Snowpark Python์œผ๋กœ ๋จธ์‹  ๋Ÿฌ๋‹ ๋ชจ๋ธ ํ•™์Šต์‹œํ‚ค๊ธฐ ์„น์…˜์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

Python ์›Œํฌ์‹œํŠธ๋ฅผ ์‚ฌ์šฉ ํ•˜๊ฑฐ๋‚˜ ๋กœ์ปฌ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ์‚ฌ์šฉํ•˜์—ฌ Python์šฉ ์ €์žฅ ํ”„๋กœ์‹œ์ €๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฒ˜๋ฆฌ๊ธฐ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋  ๋•Œ ๋กœ๊ทธ ๋ฐ ์ถ”์  ๋ฐ์ดํ„ฐ๋ฅผ ์บก์ฒ˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋กœ๊น…, ์ถ”์  ๋ฐ ๋ฉ”ํŠธ๋ฆญ ์„น์…˜์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์ฐธ๊ณ 

์ต๋ช… ํ”„๋กœ์‹œ์ €๋ฅผ ๋งŒ๋“ค๊ธฐ๋„ ํ•˜๊ณ  ํ˜ธ์ถœ๋„ ํ•˜๋ ค๋ฉด CALL(์ต๋ช… ํ”„๋กœ์‹œ์ € ์‚ฌ์šฉ) ๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. ์ต๋ช… ํ”„๋กœ์‹œ์ €๋ฅผ ๋งŒ๋“ค๊ณ  ํ˜ธ์ถœํ•˜๋Š” ๋ฐ๋Š” CREATE PROCEDURE ์Šคํ‚ค๋งˆ ๊ถŒํ•œ์ด ์žˆ๋Š” ์—ญํ• ์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ €์žฅ ํ”„๋กœ์‹œ์ €๋ฅผ ๋กœ์ปฌ์—์„œ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์ „์ œ ์กฐ๊ฑดยถ

๋กœ์ปฌ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ Python ์ €์žฅ ํ”„๋กœ์‹œ์ €๋ฅผ ์ž‘์„ฑํ•˜๋ ค๋ฉด ๋‹ค์Œ ์ „์ œ ์กฐ๊ฑด์„ ์ถฉ์กฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ๋ฒ„์ „ 0.4.0 ๋˜๋Š” ์ตœ์‹  ๋ฒ„์ „์˜ Snowpark ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • Snowpark Python์ด ํ•„์š”ํ•œ ์„œ๋“œ ํŒŒํ‹ฐ ์ข…์†์„ฑ์„ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋„๋ก Anaconda ํŒจํ‚ค์ง€๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. Anaconda์˜ ์„œ๋“œ ํŒŒํ‹ฐ ํŒจํ‚ค์ง€ ์‚ฌ์šฉํ•˜๊ธฐ ์„น์…˜์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

  • ์ง€์›๋˜๋Š” Python ๋ฒ„์ „์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    • 3.9

    • 3.10

    • 3.11

    • 3.12

Snowpark ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Snowpark๋ฅผ ์œ„ํ•œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ •ํ•˜๊ธฐ ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์ฐธ๊ณ 

ํ•„์ˆ˜ ์š”๊ตฌ ์‚ฌํ•ญ์€ ์•„๋‹ˆ์ง€๋งŒ, Python ํŒจํ‚ค์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด ์•„ํ‹ฐํŒฉํŠธ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๊ฐœ์š” ๋ฅผ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜ ์„น์…˜์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์•„ํ‹ฐํŒฉํŠธ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์‚ฌ์šฉํ•˜๊ธฐยถ

Python Package Index(PyPI)์—์„œ ์„ค์น˜ํ•  ํŒจํ‚ค์ง€๋ฅผ ์ง€์ •ํ•˜๊ณ  ์ด๋ฅผ Snowpark Python ์ €์žฅ ํ”„๋กœ์‹œ์ €์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„ํ‹ฐํŒฉํŠธ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๊ฐœ์š” ์„น์…˜์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

Anaconda์˜ ์„œ๋“œ ํŒŒํ‹ฐ ํŒจํ‚ค์ง€ ์‚ฌ์šฉํ•˜๊ธฐยถ

Snowpark Python ์ €์žฅ ํ”„๋กœ์‹œ์ €๋ฅผ ๋งŒ๋“ค ๋•Œ ์„ค์น˜ํ•  Anaconda ํŒจํ‚ค์ง€๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Anaconda์˜ ์„œ๋“œ ํŒŒํ‹ฐ ํŒจํ‚ค์ง€ ๋ชฉ๋ก์„ ๋ณด๋ ค๋ฉด Anaconda Snowflake ์ฑ„๋„ ์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ์ด๋Ÿฌํ•œ ์„œ๋“œ ํŒŒํ‹ฐ ํŒจํ‚ค์ง€๋Š” Anaconda์—์„œ ๋งŒ๋“ค์–ด ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Anaconda์˜ ์„œ๋น„์Šค ์•ฝ๊ด€์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ํฌํ•จ ์†Œํ”„ํŠธ์›จ์–ด ์•ฝ๊ด€์— ๋”ฐ๋ผ ํ˜„์ง€ ํ…Œ์ŠคํŠธ ๋ฐ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ Snowflake conda ์ฑ„๋„์„ ๋ฌด๋ฃŒ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ œํ•œ ์‚ฌํ•ญ์€ Python ์ €์žฅ ํ”„๋กœ์‹œ์ € ์ œํ•œ ์‚ฌํ•ญ ์„น์…˜์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์‹œ์ž‘ํ•˜๊ธฐยถ

Snowflake ๋‚ด๋ถ€์—์„œ Anaconda๊ฐ€ ์ œ๊ณตํ•˜๋Š” ํŒจํ‚ค์ง€๋ฅผ ์ฒ˜์Œ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋จผ์ € ์™ธ๋ถ€ ์ œ๊ณต ์„œ๋น„์Šค ์•ฝ๊ด€ ์— ๋™์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ 

์•ฝ๊ด€์— ๋™์˜ํ•˜๋ ค๋ฉด ORGADMIN ์—ญํ• ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Snowflake ๊ณ„์ •์— ๋Œ€ํ•ด ์™ธ๋ถ€ ์„œ๋น„์Šค ์•ฝ๊ด€ ์„ ํ•œ ๋ฒˆ๋งŒ ์ˆ˜๋ฝํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ORGADMIN ์—ญํ• ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ์—†๋Š” ๊ฒฝ์šฐ ๊ณ„์ •์—์„œ ORGADMIN ์—ญํ•  ํ™œ์„ฑํ™”ํ•˜๊ธฐ ์„น์…˜์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

  1. Snowsight ์— ๋กœ๊ทธ์ธํ•ฉ๋‹ˆ๋‹ค.

  2. Admin ยป Terms ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  3. Anaconda ์„น์…˜์—์„œ Enable ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  4. Anaconda Packages ๋Œ€ํ™” ์ƒ์ž์—์„œ ๋งํฌ๋ฅผ ํด๋ฆญํ•˜์—ฌ ์™ธ๋ถ€ ์ œ๊ณต ์„œ๋น„์Šค ์•ฝ๊ด€ ํŽ˜์ด์ง€ ๋ฅผ ๊ฒ€ํ† ํ•˜์‹ญ์‹œ์˜ค.

  5. ์•ฝ๊ด€์— ๋™์˜ํ•˜๋ฉด Acknowledge & Continue ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

์™ธ๋ถ€ ์„œ๋น„์Šค ์•ฝ๊ด€ ์— ๋™์˜ํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ด๋ฆ„, ์„ฑ ๋˜๋Š” ์ด๋ฉ”์ผ ์ฃผ์†Œ์™€ ๊ฐ™์€ ์‚ฌ์šฉ์ž ํ”„๋กœํ•„ ์ •๋ณด๊ฐ€ ๋ˆ„๋ฝ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์ด ์žˆ๋Š” ๊ฒฝ์šฐ Snowsight ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœํ•„์„ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด ์‚ฌ์šฉ์ž ํ”„๋กœํ•„์— ์‚ฌ์šฉ์ž ์„ธ๋ถ€ ์ •๋ณด ์ถ”๊ฐ€ํ•˜๊ธฐ ์„น์…˜์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๊ด€๋ฆฌ์ž์—๊ฒŒ ๋ฌธ์˜ํ•˜์—ฌ ๊ณ„์ •์„ ์—…๋ฐ์ดํŠธํ•˜์‹ญ์‹œ์˜ค.

์ฐธ๊ณ 

์œ„์—์„œ ์„ค๋ช…ํ•œ ๋Œ€๋กœ Snowflake ์™ธ๋ถ€ ์ œ๊ณต ์•ฝ๊ด€ ์„ ์ˆ˜๋ฝํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์—๋„ ์ €์žฅ ํ”„๋กœ์‹œ์ €๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋‹ค์Œ ์ œํ•œ์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

  • Anaconda์˜ ์„œ๋“œ ํŒŒํ‹ฐ ํŒจํ‚ค์ง€๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

  • Snowpark Python์„ ์ €์žฅ ํ”„๋กœ์‹œ์ €์˜ ํŒจํ‚ค์ง€๋กœ ๊ณ„์† ์ง€์ •ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ํŠน์ • ๋ฒ„์ „์„ ์ง€์ •ํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.

  • DataFrame ์˜ค๋ธŒ์ ํŠธ์™€ ์ƒํ˜ธ ์ž‘์šฉํ•  ๋•Œ๋Š” to_pandas ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

ํŒจํ‚ค์ง€ ํ‘œ์‹œ ๋ฐ ์‚ฌ์šฉํ•˜๊ธฐยถ

Information Schema์—์„œ PACKAGES ๋ทฐ๋ฅผ ์ฟผ๋ฆฌํ•˜์—ฌ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ํŒจํ‚ค์ง€์™€ ํ•ด๋‹น ๋ฒ„์ „ ์ •๋ณด๋ฅผ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

SELECT * FROM information_schema.packages WHERE LANGUAGE = 'python';
Copy

์ž์„ธํ•œ ๋‚ด์šฉ์€ Snowflake Python UDF ์„ค๋ช…์„œ์˜ ์„œ๋“œ ํŒŒํ‹ฐ ํŒจํ‚ค์ง€ ์‚ฌ์šฉํ•˜๊ธฐ ์„น์…˜์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์ €์žฅ ํ”„๋กœ์‹œ์ € ํ˜ธ์ถœํ•˜๊ธฐยถ

์ €์žฅ ํ”„๋กœ์‹œ์ €๋ฅผ ๋งŒ๋“  ํ›„์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.