๋น„์šฉ ์˜ˆ์ธก ๋ฐ ๊ด€๋ฆฌ

์ด ํŽ˜์ด์ง€์—์„œ๋Š” BigQuery์—์„œ ๋น„์šฉ์„ ์ถ”์ •ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ถŒ์žฅ์‚ฌํ•ญ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

BigQuery์˜ ๊ธฐ๋ณธ ๋น„์šฉ์€ ์ฟผ๋ฆฌ ์ฒ˜๋ฆฌ ๋ฐ ์Šคํ† ๋ฆฌ์ง€, BigQuery์— ์ €์žฅ๋˜๋Š” ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ปดํ“จํŒ…์ž…๋‹ˆ๋‹ค. BigQuery์—์„œ๋Š” ์ฟผ๋ฆฌ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์˜ ๊ฐ€๊ฒฉ ์ฑ…์ • ๋ชจ๋ธ์ธ ์ฃผ๋ฌธํ˜• ๋ฐ ์šฉ๋Ÿ‰ ๊ธฐ๋ฐ˜ ๊ฐ€๊ฒฉ ์ฑ…์ • ๋ชจ๋ธ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ๋ชจ๋ธ์€ ๋น„์šฉ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ๊ถŒ์žฅ์‚ฌํ•ญ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. BigQuery์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ์˜ ๊ฒฝ์šฐ ๋น„์šฉ์€ ๊ฐ ๋ฐ์ดํ„ฐ ์„ธํŠธ์— ๋Œ€ํ•ด ๊ตฌ์„ฑ๋œ ์Šคํ† ๋ฆฌ์ง€ ์ฒญ๊ตฌ ๋ชจ๋ธ์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

BigQuery ์ปดํ“จํŒ… ๊ฐ€๊ฒฉ ์ฑ…์ • ์ดํ•ดํ•˜๊ธฐ

์šฉ๋Ÿ‰ ๊ณ„ํš ๋ฐ ๋น„์šฉ ๊ด€๋ฆฌ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” BigQuery์˜ ์ปดํ“จํŒ… ๊ฐ€๊ฒฉ ์ฑ…์ •์—๋Š” ๋ฏธ๋ฌ˜ํ•œ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ€๊ฒฉ ์ฑ…์ • ๋ชจ๋ธ

BigQuery์˜ ์ฃผ๋ฌธํ˜• ์ปดํ“จํŒ…์˜ ๊ฒฝ์šฐ BigQuery ์ฟผ๋ฆฌ์— ๋Œ€ํ•ด TiB๋‹น ์š”๊ธˆ์ด ์ฒญ๊ตฌ๋ฉ๋‹ˆ๋‹ค.

๋˜๋Š” BigQuery์˜ ์šฉ๋Ÿ‰ ์ปดํ“จํŒ…์˜ ๊ฒฝ์šฐ ์ฟผ๋ฆฌ ์ฒ˜๋ฆฌ์— ์‚ฌ์šฉ๋˜๋Š” ์ปดํ“จํŒ… ๋ฆฌ์†Œ์Šค(์Šฌ๋กฏ)์— ๋Œ€ํ•œ ์š”๊ธˆ์ด ์ฒญ๊ตฌ๋ฉ๋‹ˆ๋‹ค. ์ด ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์Šฌ๋กฏ์— ๋Œ€ํ•œ ์˜ˆ์•ฝ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์•ฝ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์Šฌ๋กฏ ํ’€์— ํ• ๋‹น๋˜๋ฉฐ ์กฐ์ง์— ์ ํ•ฉํ•œ ๋ฐฉ์‹์œผ๋กœ ์šฉ๋Ÿ‰์„ ๊ด€๋ฆฌํ•˜๊ณ  ์›Œํฌ๋กœ๋“œ๋ฅผ ๊ฒฉ๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ•˜๋‚˜์˜ ๊ด€๋ฆฌ ํ”„๋กœ์ ํŠธ์— ์žˆ์–ด์•ผ ํ•˜๋ฉฐ ํ• ๋‹น๋Ÿ‰ ๋ฐ ํ•œ๋„๊ฐ€ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

์šฉ๋Ÿ‰ ๊ฐ€๊ฒฉ ์ฑ…์ • ๋ชจ๋ธ์€ ์—ฌ๋Ÿฌ ๋ฒ„์ „์„ ์ œ๊ณตํ•˜๋ฉฐ, ๋ชจ๋‘ ์Šฌ๋กฏ ์‹œ๊ฐ„ ๋‹จ์œ„๋กœ ์ฒญ๊ตฌ๋˜๋Š” ์‚ฌ์šฉํ•œ ๋งŒํผ ์ง€๋ถˆํ•˜๋Š” ์˜ต์…˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Enterprise ๋ฐ Enterprise Plus ๋ฒ„์ „์€ ์‚ฌ์šฉํ•œ ๋งŒํผ๋งŒ ์ง€๋ถˆํ•˜๋Š” ์š”๊ธˆ๋ณด๋‹ค ๋น„์šฉ์„ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ๋Š” 1๋…„ ๋˜๋Š” 3๋…„ ์Šฌ๋กฏ ์•ฝ์ •(์„ ํƒ์‚ฌํ•ญ)๋„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

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

๊ฐ ๋ชจ๋ธ์— ๋Œ€ํ•œ ๋น„์šฉ ์ œํ•œ

์ฃผ๋ฌธํ˜• ๊ฐ€๊ฒฉ ์ฑ…์ • ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋น„์šฉ์„ ์ œํ•œํ•˜๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ ํ”„๋กœ์ ํŠธ ์ˆ˜์ค€ ๋˜๋Š” ์‚ฌ์šฉ์ž ์ˆ˜์ค€์˜ ์ผ์ผ ํ• ๋‹น๋Ÿ‰์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ํ• ๋‹น๋Ÿ‰์€ ์‚ฌ์šฉ์ž๊ฐ€ ํ• ๋‹น๋Ÿ‰ ํ•œ๋„๋ฅผ ์ดˆ๊ณผํ•˜์—ฌ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜์ง€ ๋ชปํ•˜๋„๋ก ํ•˜๋Š” ํ•˜๋“œ์บก์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ• ๋‹น๋Ÿ‰์„ ์„ค์ •ํ•˜๋ ค๋ฉด ์ปค์Šคํ…€ ์ฟผ๋ฆฌ ํ• ๋‹น๋Ÿ‰ ๋งŒ๋“ค๊ธฐ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

์Šฌ๋กฏ ์˜ˆ์•ฝ์„ ์‚ฌ์šฉํ•˜์—ฌ ์šฉ๋Ÿ‰ ์š”๊ธˆ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์˜ˆ์•ฝ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์Šฌ๋กฏ ์ˆ˜๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์•ฝ์ • ๊ธฐ๊ฐ„ ๋™์•ˆ ํ• ์ธ๋œ ๊ฐ€๊ฒฉ์„ ์ œ๊ณตํ•˜๋Š” ์Šฌ๋กฏ ์•ฝ์ •์„ ๊ตฌ๋งคํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ์•ฝ ๊ธฐ์ค€์„ 0์œผ๋กœ ์„ค์ •ํ•˜๊ณ  ์›Œํฌ๋กœ๋“œ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜๋Š” ์„ค์ •์œผ๋กœ ์ตœ๋Œ€ ์„ค์ •ํ•˜๋ฉด ์ฃผ๋ฌธํ˜• ๋ฒ„์ „์„ ์˜จ์ „ํžˆ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. BigQuery๋Š” ์›Œํฌ๋กœ๋“œ์— ํ•„์š”ํ•œ ์Šฌ๋กฏ ์ˆ˜๊นŒ์ง€ ์ž๋™์œผ๋กœ ํ™•์žฅํ•˜๋ฉฐ ์‚ฌ์šฉ์ž๊ฐ€ ์„ค์ •ํ•œ ์ตœ๋Œ€ ๊ฐ’์„ ์ดˆ๊ณผํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์˜ˆ์•ฝ์„ ์‚ฌ์šฉํ•œ ์›Œํฌ๋กœ๋“œ ๊ด€๋ฆฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ฟผ๋ฆฌ ๋น„์šฉ ๊ด€๋ฆฌ

๊ฐœ๋ณ„ ์ฟผ๋ฆฌ์˜ ๋น„์šฉ์„ ๊ด€๋ฆฌํ•˜๋ ค๋ฉด ๋จผ์ € ์ฟผ๋ฆฌ ๊ณ„์‚ฐ ์ตœ์ ํ™” ๋ฐ ์Šคํ† ๋ฆฌ์ง€ ์ตœ์ ํ™”์— ๊ด€ํ•œ ๊ถŒ์žฅ์‚ฌํ•ญ์„ ๋”ฐ๋ฅด๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ์„น์…˜์—์„œ๋Š” ์ฟผ๋ฆฌ ๋น„์šฉ์„ ์ถ”๊ฐ€๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ถ”๊ฐ€ ๊ถŒ์žฅ์‚ฌํ•ญ์„ ๊ฐ„๋žตํ•˜๊ฒŒ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์ปค์Šคํ…€ ์ฟผ๋ฆฌ ํ• ๋‹น๋Ÿ‰ ๋งŒ๋“ค๊ธฐ

๊ถŒ์žฅ์‚ฌํ•ญ: ์ปค์Šคํ…€ ์ผ์ผ ์ฟผ๋ฆฌ ํ• ๋‹น๋Ÿ‰์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•˜๋ฃจ์— ์ฒ˜๋ฆฌ๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์–‘์„ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ๋ณ„ ๋˜๋Š” ์‚ฌ์šฉ์ž๋ณ„๋กœ ํ•˜๋ฃจ์— ์ฒ˜๋ฆฌ๋˜๋Š” ๋ฐ์ดํ„ฐ ์–‘์˜ ํ•œ๋„๋ฅผ ์ง€์ •ํ•˜๋Š” ์ปค์Šคํ…€ ํ• ๋‹น๋Ÿ‰์„ ์„ค์ •ํ•˜์—ฌ ๋น„์šฉ์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ• ๋‹น๋Ÿ‰์— ๋„๋‹ฌํ•˜๋ฉด ์‚ฌ์šฉ์ž๋Š” ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ปค์Šคํ…€ ํ• ๋‹น๋Ÿ‰์„ ์„ค์ •ํ•˜๋ ค๋ฉด ํŠน์ • ์—ญํ•  ๋˜๋Š” ๊ถŒํ•œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์„ค์ •ํ•  ํ• ๋‹น๋Ÿ‰์— ๋Œ€ํ•ด์„œ๋Š” ํ• ๋‹น๋Ÿ‰ ๋ฐ ํ•œ๋„๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

์ž์„ธํ•œ ๋‚ด์šฉ์€ ๊ฐ ๊ฐ€๊ฒฉ ์ฑ…์ • ๋ชจ๋ธ์˜ ๋น„์šฉ ์ œํ•œ์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ์˜ˆ์ƒ ๋น„์šฉ ํ™•์ธ

๊ถŒ์žฅ์‚ฌํ•ญ: ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ๋จผ์ € ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ํ†ตํ•ด ์˜ˆ์ƒ ๋น„์šฉ์„ ์•Œ์•„๋ณด์„ธ์š”.

์ฃผ๋ฌธํ˜• ๊ฐ€๊ฒฉ ์ฑ…์ • ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ฟผ๋ฆฌ๋Š” ์ฝ์€ ๋ฐ”์ดํŠธ ์ˆ˜์— ๋”ฐ๋ผ ์š”๊ธˆ์ด ์ฒญ๊ตฌ๋ฉ๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ์˜ˆ์ƒ ๋น„์šฉ์„ ์•Œ์•„๋ณด๋ ค๋ฉด ๋‹ค์Œ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ฟผ๋ฆฌ ๊ฒ€์‚ฌ๊ธฐ ์‚ฌ์šฉ

Google Cloud ์ฝ˜์†”์— ์ฟผ๋ฆฌ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์ฟผ๋ฆฌ ๊ฒ€์‚ฌ๊ธฐ๊ฐ€ ์ฟผ๋ฆฌ ๊ตฌ๋ฌธ์„ ํ™•์ธํ•˜๊ณ  ์ฝ์„ ๋ฐ”์ดํŠธ ์ˆ˜๋ฅผ ์ถ”์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ถ”์ •๊ฐ’์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€๊ฒฉ ๊ณ„์‚ฐ๊ธฐ์—์„œ ์ฟผ๋ฆฌ ๋น„์šฉ์„ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ฟผ๋ฆฌ๊ฐ€ ์œ ํšจํ•˜์ง€ ์•Š์œผ๋ฉด ์ฟผ๋ฆฌ ๊ฒ€์‚ฌ๊ธฐ์— ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    Not found: Table myProject:myDataset.myTable was not found in location US

  • ์ฟผ๋ฆฌ๊ฐ€ ์œ ํšจํ•˜๋ฉด ์ฟผ๋ฆฌ ๊ฒ€์‚ฌ๊ธฐ์—์„œ ์ฟผ๋ฆฌ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ฐ”์ดํŠธ ์ˆ˜๋ฅผ ์ถ”์ •ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    This query will process 623.1 KiB when run.

ํ…Œ์ŠคํŠธ ์‹คํ–‰ ์ˆ˜ํ–‰

์‹œํ—˜ ์ด์ „์„ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ฝ˜์†”

  1. BigQuery ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    BigQuery๋กœ ์ด๋™

  2. ์ฟผ๋ฆฌ ํŽธ์ง‘๊ธฐ์— ์ฟผ๋ฆฌ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

    ์ฟผ๋ฆฌ๊ฐ€ ์œ ํšจํ•˜๋ฉด ์ฟผ๋ฆฌ์—์„œ ์ฒ˜๋ฆฌํ•  ๋ฐ์ดํ„ฐ ์–‘๊ณผ ํ•จ๊ป˜ ์ฒดํฌํ‘œ์‹œ๊ฐ€ ์ž๋™์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ๊ฐ€ ์œ ํšจํ•˜์ง€ ์•Š์œผ๋ฉด ๋А๋‚Œํ‘œ๊ฐ€ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€์™€ ํ•จ๊ป˜ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

bq

--dry_run ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฟผ๋ฆฌ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

bq query \
--use_legacy_sql=false \
--dry_run \
'SELECT
   COUNTRY,
   AIRPORT,
   IATA
 FROM
   `project_id`.dataset.airports
 LIMIT
   1000'
 

์œ ํšจํ•œ ์ฟผ๋ฆฌ์ธ ๊ฒฝ์šฐ ์ด ๋ช…๋ น์–ด๋Š” ๋‹ค์Œ ์‘๋‹ต์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

Query successfully validated. Assuming the tables are not modified,
running this query will process 10918 bytes of data.

API

API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ŠคํŠธ ์‹คํ–‰์„ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด JobConfiguration ์œ ํ˜•์—์„œ dryRun์„ true๋กœ ์„ค์ •ํ•œ ์ฑ„๋กœ ์ฟผ๋ฆฌ ์ž‘์—…์„ ์ œ์ถœํ•ฉ๋‹ˆ๋‹ค.

Go

์ด ์ƒ˜ํ”Œ์„ ์‚ฌ์šฉํ•ด ๋ณด๊ธฐ ์ „์— BigQuery ๋น ๋ฅธ ์‹œ์ž‘: ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ์˜ Go ์„ค์ • ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”. ์ž์„ธํ•œ ๋‚ด์šฉ์€ BigQuery Go API ์ฐธ๊ณ  ๋ฌธ์„œ๋ฅผ ํ™•์ธํ•˜์„ธ์š”.

BigQuery์— ์ธ์ฆํ•˜๋ ค๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ธฐ๋ณธ ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ธ์ฆ ์„ค์ •์„ ์ฐธ์กฐํ•˜์„ธ์š”.

import (
	"context"
	"fmt"
	"io"

	"cloud.google.com/go/bigquery"
)

// queryDryRun demonstrates issuing a dry run query to validate query structure and
// provide an estimate of the bytes scanned.
func queryDryRun(w io.Writer, projectID string) error {
	// projectID := "my-project-id"
	ctx := context.Background()
	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	q := client.Query(`
	SELECT
		name,
		COUNT(*) as name_count
	FROM ` + "`bigquery-public-data.usa_names.usa_1910_2013`" + `
	WHERE state = 'WA'
	GROUP BY name`)
	q.DryRun = true
	// Location must match that of the dataset(s) referenced in the query.
	q.Location = "US"

	job, err := q.Run(ctx)
	if err != nil {
		return err
	}
	// Dry run is not asynchronous, so get the latest status and statistics.
	status := job.LastStatus()
	if err := status.Err(); err != nil {
		return err
	}
	fmt.Fprintf(w, "This query will process %d bytes\n", status.Statistics.TotalBytesProcessed)
	return nil
}

Java

์ด ์ƒ˜ํ”Œ์„ ์‚ฌ์šฉํ•ด ๋ณด๊ธฐ ์ „์— BigQuery ๋น ๋ฅธ ์‹œ์ž‘: ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ์˜ Java ์„ค์ • ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”. ์ž์„ธํ•œ ๋‚ด์šฉ์€ BigQuery Java API ์ฐธ๊ณ  ๋ฌธ์„œ๋ฅผ ํ™•์ธํ•˜์„ธ์š”.

BigQuery์— ์ธ์ฆํ•˜๋ ค๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ธฐ๋ณธ ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ธ์ฆ ์„ค์ •์„ ์ฐธ์กฐํ•˜์„ธ์š”.

import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.Job;
import com.google.cloud.bigquery.JobInfo;
import com.google.cloud.bigquery.JobStatistics;
import com.google.cloud.bigquery.QueryJobConfiguration;

// Sample to run dry query on the table
public class QueryDryRun {

  public static void runQueryDryRun() {
    String query =
        "SELECT name, COUNT(*) as name_count "
            + "FROM `bigquery-public-data.usa_names.usa_1910_2013` "
            + "WHERE state = 'WA' "
            + "GROUP BY name";
    queryDryRun(query);
  }

  public static void queryDryRun(String query) {
    try {
      // Initialize client that will be used to send requests. This client only needs to be created
      // once, and can be reused for multiple requests.
      BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();

      QueryJobConfiguration queryConfig =
          QueryJobConfiguration.newBuilder(query).setDryRun(true).setUseQueryCache(false).build();

      Job job = bigquery.create(JobInfo.of(queryConfig));
      JobStatistics.QueryStatistics statistics = job.getStatistics();

      System.out.println(
          "Query dry run performed successfully." + statistics.getTotalBytesProcessed());
    } catch (BigQueryException e) {
      System.out.println("Query not performed \n" + e.toString());
    }
  }
}

Node.js

์ด ์ƒ˜ํ”Œ์„ ์‚ฌ์šฉํ•ด ๋ณด๊ธฐ ์ „์— BigQuery ๋น ๋ฅธ ์‹œ์ž‘: ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ์˜ Node.js ์„ค์ • ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”. ์ž์„ธํ•œ ๋‚ด์šฉ์€ BigQuery Node.js API ์ฐธ๊ณ  ๋ฌธ์„œ๋ฅผ ํ™•์ธํ•˜์„ธ์š”.

BigQuery์— ์ธ์ฆํ•˜๋ ค๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ธฐ๋ณธ ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ธ์ฆ ์„ค์ •์„ ์ฐธ์กฐํ•˜์„ธ์š”.

// Import the Google Cloud client library
const {BigQuery} = require('@google-cloud/bigquery');
const bigquery = new BigQuery();

async function queryDryRun() {
  // Runs a dry query of the U.S. given names dataset for the state of Texas.

  const query = `SELECT name
    FROM \`bigquery-public-data.usa_names.usa_1910_2013\`
    WHERE state = 'TX'
    LIMIT 100`;

  // For all options, see https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs/query
  const options = {
    query: query,
    // Location must match that of the dataset(s) referenced in the query.
    location: 'US',
    dryRun: true,
  };

  // Run the query as a job
  const [job] = await bigquery.createQueryJob(options);

  // Print the status and statistics
  console.log('Status:');
  console.log(job.metadata.status);
  console.log('\nJob Statistics:');
  console.log(job.metadata.statistics);
}

PHP

์ด ์ƒ˜ํ”Œ์„ ์‚ฌ์šฉํ•ด ๋ณด๊ธฐ ์ „์— BigQuery ๋น ๋ฅธ ์‹œ์ž‘: ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ์˜ PHP ์„ค์ • ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”. ์ž์„ธํ•œ ๋‚ด์šฉ์€ BigQuery PHP API ์ฐธ๊ณ  ๋ฌธ์„œ๋ฅผ ํ™•์ธํ•˜์„ธ์š”.

BigQuery์— ์ธ์ฆํ•˜๋ ค๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ธฐ๋ณธ ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ธ์ฆ ์„ค์ •์„ ์ฐธ์กฐํ•˜์„ธ์š”.

use Google\Cloud\BigQuery\BigQueryClient;

/** Uncomment and populate these variables in your code */
// $projectId = 'The Google project ID';
// $query = 'SELECT id, view_count FROM `bigquery-public-data.stackoverflow.posts_questions`';

// Construct a BigQuery client object.
$bigQuery = new BigQueryClient([
    'projectId' => $projectId,
]);

// Set job configs
$jobConfig = $bigQuery->query($query);
$jobConfig->useQueryCache(false);
$jobConfig->dryRun(true);

// Extract query results
$queryJob = $bigQuery->startJob($jobConfig);
$info = $queryJob->info();

printf('This query will process %s bytes' . PHP_EOL, $info['statistics']['totalBytesProcessed']);

Python

QueryJobConfig.dry_run ์†์„ฑ์„ True๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์‹คํ–‰ ์ฟผ๋ฆฌ ๊ตฌ์„ฑ์„ ์ œ๊ณตํ•˜๋ฉด Client.query()๋Š” ํ•ญ์ƒ ์™„๋ฃŒ๋œ QueryJob์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ด ์ƒ˜ํ”Œ์„ ์‚ฌ์šฉํ•ด ๋ณด๊ธฐ ์ „์— BigQuery ๋น ๋ฅธ ์‹œ์ž‘: ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ์˜ Python ์„ค์ • ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”. ์ž์„ธํ•œ ๋‚ด์šฉ์€ BigQuery Python API ์ฐธ๊ณ  ๋ฌธ์„œ๋ฅผ ํ™•์ธํ•˜์„ธ์š”.

BigQuery์— ์ธ์ฆํ•˜๋ ค๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ธฐ๋ณธ ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ธ์ฆ ์„ค์ •์„ ์ฐธ์กฐํ•˜์„ธ์š”.

from google.cloud import bigquery

# Construct a BigQuery client object.
client = bigquery.Client()

job_config = bigquery.QueryJobConfig(dry_run=True, use_query_cache=False)

# Start the query, passing in the extra configuration.
query_job = client.query(
    (
        "SELECT name, COUNT(*) as name_count "
        "FROM `bigquery-public-data.usa_names.usa_1910_2013` "
        "WHERE state = 'WA' "
        "GROUP BY name"
    ),
    job_config=job_config,
)  # Make an API request.

# A dry run query completes immediately.
print("This query will process {} bytes.".format(query_job.total_bytes_processed))

์ฟผ๋ฆฌ ๋น„์šฉ ์ถ”์ •

์ฃผ๋ฌธํ˜• ๊ฐ€๊ฒฉ ์ฑ…์ • ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ฒ˜๋ฆฌ๋œ ๋ฐ”์ดํŠธ ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜์—ฌ ์ฟผ๋ฆฌ ์‹คํ–‰ ๋น„์šฉ์„ ์ถ”์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃผ๋ฌธํ˜• ์ฟผ๋ฆฌ ํฌ๊ธฐ ๊ณ„์‚ฐ

๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ ์ฟผ๋ฆฌ์—์„œ ์ฒ˜๋ฆฌ๋˜๋Š” ๋ฐ”์ดํŠธ ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๋ ค๋ฉด ๋‹ค์Œ ์„น์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ ํƒ์ƒ‰ ๋ฐฉ์ง€

๊ถŒ์žฅ์‚ฌํ•ญ: ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ๋ฅผ ํƒ์ƒ‰ํ•˜๊ฑฐ๋‚˜ ๋ฏธ๋ฆฌ ๋ณด์ง€ ๋งˆ์„ธ์š”.

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

BigQuery๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐ์ดํ„ฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์˜ต์…˜์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

  • Google Cloud ์ฝ˜์†”์˜ ํ…Œ์ด๋ธ” ์„ธ๋ถ€์ •๋ณด ํŽ˜์ด์ง€์—์„œ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ํƒญ์„ ํด๋ฆญํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ˜ํ”Œ๋งํ•ฉ๋‹ˆ๋‹ค.
  • bq ๋ช…๋ น์ค„ ๋„๊ตฌ์—์„œ bq head ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•  ํ–‰ ๋ฒˆํ˜ธ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
  • API์—์„œ tabledata.list๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ง€์ •๋œ ํ–‰ ์„ธํŠธ์—์„œ ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.
  • ํด๋Ÿฌ์Šคํ„ฐ๋ง๋˜์ง€ ์•Š์€ ํ…Œ์ด๋ธ”์—์„œ LIMIT๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์„ธ์š”. ํด๋Ÿฌ์Šคํ„ฐ๋ง๋˜์ง€ ์•Š์€ ํ…Œ์ด๋ธ”์˜ ๊ฒฝ์šฐ LIMIT ์ ˆ์€ ์ปดํ“จํŒ… ๋น„์šฉ์„ ์ค„์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ฟผ๋ฆฌ๋‹น ์ฒญ๊ตฌ๋˜๋Š” ๋ฐ”์ดํŠธ ์ˆ˜ ์ œํ•œ

๊ถŒ์žฅ์‚ฌํ•ญ: ์ฃผ๋ฌธํ˜• ๊ฐ€๊ฒฉ ์ฑ…์ • ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ์ฒญ๊ตฌ ๊ฐ€๋Šฅํ•œ ์ตœ๋Œ€ ๋ฐ”์ดํŠธ ์„ค์ •์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฟผ๋ฆฌ ๋น„์šฉ์„ ์ œํ•œํ•˜์„ธ์š”.

์ฒญ๊ตฌ ๊ฐ€๋Šฅํ•œ ์ตœ๋Œ€ ๋ฐ”์ดํŠธ ์„ค์ •์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฟผ๋ฆฌ์— ๋Œ€ํ•ด ์ฒญ๊ตฌ๋˜๋Š” ๋ฐ”์ดํŠธ ์ˆ˜๋ฅผ ์ œํ•œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒญ๊ตฌ ๊ฐ€๋Šฅํ•œ ์ตœ๋Œ€ ๋ฐ”์ดํŠธ๋ฅผ ์„ค์ •ํ•˜๋ฉด ์ฟผ๋ฆฌ๊ฐ€ ์‹คํ–‰๋˜๊ธฐ ์ „์— ์ฟผ๋ฆฌ๊ฐ€ ์ฝ๋Š” ๋ฐ”์ดํŠธ ์ˆ˜๊ฐ€ ์ถ”์ •๋ฉ๋‹ˆ๋‹ค. ์˜ˆ์ƒ ๋ฐ”์ดํŠธ ์ˆ˜๊ฐ€ ํ•œ๋„๋ฅผ ์ดˆ๊ณผํ•˜๋ฉด ๋น„์šฉ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ณ  ์ฟผ๋ฆฌ๋Š” ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

ํด๋Ÿฌ์Šคํ„ฐ๋ง๋œ ํ…Œ์ด๋ธ”์˜ ๊ฒฝ์šฐ ์ฟผ๋ฆฌ์— ์ฒญ๊ตฌ๋˜๋Š” ๋ฐ”์ดํŠธ ์ˆ˜์˜ ์ถ”์ •๊ฐ’์€ ์ƒํ•œ๊ฐ’์ด๋ฉฐ, ์ฟผ๋ฆฌ ์‹คํ–‰ ํ›„ ์ฒญ๊ตฌ๋˜๋Š” ์‹ค์ œ ๋ฐ”์ดํŠธ ์ˆ˜๋ณด๋‹ค ํด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ์ฒญ๊ตฌ ๊ฐ€๋Šฅํ•œ ์ตœ๋Œ€ ๋ฐ”์ดํŠธ๋ฅผ ์„ค์ •ํ•œ ๊ฒฝ์šฐ ์ฒญ๊ตฌ ๊ฐ€๋Šฅํ•œ ์‹ค์ œ ๋ฐ”์ดํŠธ๊ฐ€ ์ฒญ๊ตฌ ๊ฐ€๋Šฅํ•œ ์ตœ๋Œ€ ๋ฐ”์ดํŠธ ์„ค์ •์„ ์ดˆ๊ณผํ•˜์ง€ ์•Š๋”๋ผ๋„ ํด๋Ÿฌ์Šคํ„ฐ๋ง๋œ ํ…Œ์ด๋ธ”์˜ ์ฟผ๋ฆฌ๊ฐ€ ์‹คํŒจํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฒญ๊ตฌ ๊ฐ€๋Šฅํ•œ ์ตœ๋Œ€ ๋ฐ”์ดํŠธ ์„ค์ •์œผ๋กœ ์ธํ•ด ์ฟผ๋ฆฌ๊ฐ€ ์‹คํŒจํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๋น„์Šทํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.

Error: Query exceeded limit for bytes billed: 1000000. 10485760 or higher required.

์ฒญ๊ตฌ ๊ฐ€๋Šฅํ•œ ์ตœ๋Œ€ ๋ฐ”์ดํŠธ๋ฅผ ์„ค์ •ํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ๋”ฐ๋ฅด์„ธ์š”.

์ฝ˜์†”

  1. ์ฟผ๋ฆฌ ํŽธ์ง‘๊ธฐ์—์„œ ๋”๋ณด๊ธฐ > ์ฟผ๋ฆฌ ์„ค์ • > ๊ณ ๊ธ‰ ์˜ต์…˜์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  2. ์ฒญ๊ตฌ ๊ฐ€๋Šฅํ•œ ์ตœ๋Œ€ ๋ฐ”์ดํŠธ ํ•„๋“œ์— ์ •์ˆ˜๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  3. ์ €์žฅ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

bq

bq query ๋ช…๋ น์–ด๋ฅผ --maximum_bytes_billed ํ”Œ๋ž˜๊ทธ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  bq query --maximum_bytes_billed=1000000 \
  --use_legacy_sql=false \
  'SELECT
     word
   FROM
     `bigquery-public-data`.samples.shakespeare'

API

JobConfigurationQuery ๋˜๋Š” QueryRequest์—์„œ maximumBytesBilled ์†์„ฑ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

ํด๋Ÿฌ์Šคํ„ฐ๋ง๋˜์ง€ ์•Š์€ ํ…Œ์ด๋ธ”์—์„œ LIMIT๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ

๊ถŒ์žฅ์‚ฌํ•ญ: ํด๋Ÿฌ์Šคํ„ฐ๋ง๋˜์ง€ ์•Š์€ ํ…Œ์ด๋ธ”์˜ ๊ฒฝ์šฐ ๋น„์šฉ ๊ด€๋ฆฌ ๋ฐฉ๋ฒ•์œผ๋กœ LIMIT ์ ˆ์„ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์„ธ์š”.

ํด๋Ÿฌ์Šคํ„ฐ๋ง๋˜์ง€ ์•Š์€ ํ…Œ์ด๋ธ”์˜ ๊ฒฝ์šฐ LIMIT ์ ˆ์„ ์ฟผ๋ฆฌ์— ์ ์šฉํ•ด๋„ ์ฝ์€ ๋ฐ์ดํ„ฐ ์–‘์€ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ๊ฐ€ ํ•˜์œ„ ์ง‘ํ•ฉ๋งŒ ๋ฐ˜ํ™˜ํ•˜๋”๋ผ๋„ ์ฟผ๋ฆฌ์— ํ‘œ์‹œ๋œ ๋Œ€๋กœ ์ „์ฒด ํ…Œ์ด๋ธ”์—์„œ ์ฝ์€ ๋ชจ๋“  ๋ฐ”์ดํŠธ ์š”๊ธˆ์ด ์ฒญ๊ตฌ๋ฉ๋‹ˆ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ๋ง๋œ ํ…Œ์ด๋ธ”์„ ์‚ฌ์šฉํ•˜๋ฉด LIMIT ์ ˆ์ด ์Šค์บ”๋˜๋Š” ๋ฐ”์ดํŠธ ์ˆ˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด ์ถฉ๋ถ„ํ•œ ๋ธ”๋ก์ด ์Šค์บ”๋˜๋ฉด ์Šค์บ”์ด ์ค‘์ง€๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์Šค์บ”๋œ ๋ฐ”์ดํŠธ์— ๋Œ€ํ•ด์„œ๋งŒ ์š”๊ธˆ์ด ์ฒญ๊ตฌ๋ฉ๋‹ˆ๋‹ค.

์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋‹จ๊ณ„๋ณ„๋กœ ๊ตฌ์ฒดํ™”ํ•˜๊ธฐ

๊ถŒ์žฅ์‚ฌํ•ญ: ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋‹จ๊ณ„๋ณ„๋กœ ๊ตฌ์ฒดํ™”ํ•ฉ๋‹ˆ๋‹ค.

๋Œ€๋Ÿ‰์˜ ๋‹ค๋‹จ๊ณ„ ์ฟผ๋ฆฌ๋ฅผ ๋งŒ๋“ค๋ฉด ์‹คํ–‰ํ•  ๋•Œ๋งˆ๋‹ค BigQuery๊ฐ€ ์ฟผ๋ฆฌ์— ํ•„์š”ํ•œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์Šต๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ๊ฐ€ ์‹คํ–‰๋  ๋•Œ๋งˆ๋‹ค ์ฝ๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์š”๊ธˆ์ด ์ฒญ๊ตฌ๋ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ฟผ๋ฆฌ๋ฅผ ๋‹จ๊ณ„๋ณ„๋กœ ๋ถ„ํ• ํ•˜๋ฉด ๊ฐ ๋‹จ๊ณ„์—์„œ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋Œ€์ƒ ํ…Œ์ด๋ธ”์— ๊ธฐ๋กํ•˜์—ฌ ๊ตฌ์ฒดํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž‘์€ ๋Œ€์ƒ ํ…Œ์ด๋ธ”์„ ์ฟผ๋ฆฌํ•˜๋ฏ€๋กœ ์ฝ๋Š” ๋ฐ์ดํ„ฐ์˜ ์–‘์ด ์ค„์–ด๋“ค๊ณ  ๋น„์šฉ์ด ์ ˆ๊ฐ๋ฉ๋‹ˆ๋‹ค. ๊ตฌ์ฒดํ™”๋œ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•˜๋Š” ๋น„์šฉ์ด ๋งŽ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋น„์šฉ๋ณด๋‹ค ํ›จ์”ฌ ๋‚ฎ์Šต๋‹ˆ๋‹ค.

์›Œํฌ๋กœ๋“œ ๋น„์šฉ ๊ด€๋ฆฌ

์ด ์„น์…˜์—์„œ๋Š” ์›Œํฌ๋กœ๋“œ ๋‚ด์—์„œ ๋น„์šฉ์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ถŒ์žฅ์‚ฌํ•ญ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์›Œํฌ๋กœ๋“œ๋Š” ๊ด€๋ จ ๊ฒ€์ƒ‰์–ด ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์›Œํฌ๋กœ๋“œ๋Š” ๋งค์ผ ์‹คํ–‰๋˜๋Š” ๋ฐ์ดํ„ฐ ๋ณ€ํ™˜ ํŒŒ์ดํ”„๋ผ์ธ, ๋น„์ฆˆ๋‹ˆ์Šค ๋ถ„์„๊ฐ€ ๊ทธ๋ฃน์—์„œ ์‹คํ–‰ํ•˜๋Š” ๋Œ€์‹œ๋ณด๋“œ ์„ธํŠธ ๋˜๋Š” ๋ฐ์ดํ„ฐ ๊ณผํ•™์ž ๊ทธ๋ฃน์—์„œ ์‹คํ–‰ํ•˜๋Š” ์—ฌ๋Ÿฌ ์ž„์‹œ ์ฟผ๋ฆฌ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Google Cloud ๊ฐ€๊ฒฉ ๊ณ„์‚ฐ๊ธฐ ์‚ฌ์šฉ

๊ถŒ์žฅ์‚ฌํ•ญ: Google Cloud ๊ฐ€๊ฒฉ ๊ณ„์‚ฐ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜ˆ์ƒ ์‚ฌ์šฉ๋Ÿ‰์„ ๊ธฐ์ค€์œผ๋กœ BigQuery์˜ ์ „์ฒด ์›”๋ณ„ ๋น„์šฉ์„ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ด ์ถ”์ •์น˜๋ฅผ ์‹ค์ œ ๋น„์šฉ๊ณผ ๋น„๊ตํ•˜์—ฌ ์ตœ์ ํ™”ํ•  ์˜์—ญ์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃผ๋ฌธํ˜•

์ฃผ๋ฌธํ˜• ๊ฐ€๊ฒฉ ์ฑ…์ • ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•  ๋•Œ Google Cloud ๊ฐ€๊ฒฉ ๊ณ„์‚ฐ๊ธฐ๋กœ ๋น„์šฉ์„ ์ถ”์ •ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. Google Cloud ๊ฐ€๊ฒฉ ๊ณ„์‚ฐ๊ธฐ๋ฅผ ์—ฝ๋‹ˆ๋‹ค.
  2. ํ•ฉ์‚ฐํ•˜์—ฌ ์ถ”์ •์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  3. BigQuery๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  4. ์„œ๋น„์Šค ์œ ํ˜•์—์„œ '์ฃผ๋ฌธํ˜•'์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  5. ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•  ์œ„์น˜๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  6. ์ฟผ๋ฆฌ๋œ ๋ฐ์ดํ„ฐ ์–‘์— ํ…Œ์ŠคํŠธ ์‹คํ–‰ ๋˜๋Š” ์ฟผ๋ฆฌ ๊ฒ€์‚ฌ๊ธฐ๋กœ ์ฝ์€ ๋ฐ”์ดํŠธ ์ˆ˜ ์ถ”์ •๊ฐ’์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  7. ํ™œ์„ฑ ์Šคํ† ๋ฆฌ์ง€, ์žฅ๊ธฐ ์Šคํ† ๋ฆฌ์ง€, ์ŠคํŠธ๋ฆฌ๋ฐ ์‚ฝ์ž…, ์ŠคํŠธ๋ฆฌ๋ฐ ์ฝ๊ธฐ์— ๋Œ€ํ•œ ์Šคํ† ๋ฆฌ์ง€ ์‚ฌ์šฉ๋Ÿ‰์˜ ์ถ”์ •๊ฐ’์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์„ธํŠธ ์Šคํ† ๋ฆฌ์ง€ ์ฒญ๊ตฌ ๋ชจ๋ธ์— ๋”ฐ๋ผ ๋ฌผ๋ฆฌ์  ์Šคํ† ๋ฆฌ์ง€ ๋˜๋Š” ๋…ผ๋ฆฌ์  ์Šคํ† ๋ฆฌ์ง€๋งŒ ์ถ”์ •ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
  8. ์˜ˆ์ƒ ๋น„์šฉ์€ ๋น„์šฉ ์„ธ๋ถ€์ •๋ณด ํŒจ๋„์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ์ƒ ๋น„์šฉ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์„ ๋ณด๋ ค๋ฉด ์„ธ๋ถ€์ •๋ณด ๋ณด๊ธฐ ์—ด๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์ƒ ๋น„์šฉ์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ๊ณต์œ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ฃผ๋ฌธํ˜• ๊ฐ€๊ฒฉ ์ฑ…์ •์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๋ฒ„์ „

BigQuery ๋ฒ„์ „๊ณผ ํ•จ๊ป˜ ์šฉ๋Ÿ‰ ๊ธฐ๋ฐ˜ ๊ฐ€๊ฒฉ ์ฑ…์ • ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•  ๋•Œ Google Cloud ๊ฐ€๊ฒฉ ๊ณ„์‚ฐ๊ธฐ๋กœ ๋น„์šฉ์„ ์ถ”์ •ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. Google Cloud ๊ฐ€๊ฒฉ ๊ณ„์‚ฐ๊ธฐ๋ฅผ ์—ฝ๋‹ˆ๋‹ค.
  2. ํ•ฉ์‚ฐํ•˜์—ฌ ์ถ”์ •์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  3. BigQuery๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  4. ์„œ๋น„์Šค ์œ ํ˜•์—์„œ '๋ฒ„์ „'์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  5. ์Šฌ๋กฏ์ด ์‚ฌ์šฉ๋˜๋Š” ์œ„์น˜๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  6. ๋ฒ„์ „์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  7. ์ตœ๋Œ€ ์Šฌ๋กฏ, ๊ธฐ์ค€ ์Šฌ๋กฏ, ์„ ํƒ์  ์•ฝ์ •, ์˜ˆ์ƒ ์ž๋™ ํ™•์žฅ ์‚ฌ์šฉ๋ฅ ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  8. ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š” ์œ„์น˜๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  9. ํ™œ์„ฑ ์Šคํ† ๋ฆฌ์ง€, ์žฅ๊ธฐ ์Šคํ† ๋ฆฌ์ง€, ์ŠคํŠธ๋ฆฌ๋ฐ ์‚ฝ์ž…, ์ŠคํŠธ๋ฆฌ๋ฐ ์ฝ๊ธฐ์— ๋Œ€ํ•œ ์Šคํ† ๋ฆฌ์ง€ ์‚ฌ์šฉ๋Ÿ‰์˜ ์ถ”์ •๊ฐ’์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์„ธํŠธ ์Šคํ† ๋ฆฌ์ง€ ์ฒญ๊ตฌ ๋ชจ๋ธ์— ๋”ฐ๋ผ ๋ฌผ๋ฆฌ์  ์Šคํ† ๋ฆฌ์ง€ ๋˜๋Š” ๋…ผ๋ฆฌ์  ์Šคํ† ๋ฆฌ์ง€๋งŒ ์ถ”์ •ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
  10. ์˜ˆ์ƒ ๋น„์šฉ์€ ๋น„์šฉ ์„ธ๋ถ€์ •๋ณด ํŒจ๋„์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ์ƒ ๋น„์šฉ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์„ ๋ณด๋ ค๋ฉด ์„ธ๋ถ€์ •๋ณด ๋ณด๊ธฐ ์—ด๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์ƒ ๋น„์šฉ์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ๊ณต์œ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ ์šฉ๋Ÿ‰ ๊ธฐ๋ฐ˜ ๊ฐ€๊ฒฉ ์ฑ…์ •์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์˜ˆ์•ฝ ๋ฐ ์•ฝ์ • ์‚ฌ์šฉ

๊ถŒ์žฅ์‚ฌํ•ญ: BigQuery ์˜ˆ์•ฝ ๋ฐ ์•ฝ์ •์„ ์‚ฌ์šฉํ•˜์—ฌ ๋น„์šฉ์„ ๊ด€๋ฆฌํ•˜์„ธ์š”.

์ž์„ธํ•œ ๋‚ด์šฉ์€ ๊ฐ ๊ฐ€๊ฒฉ ์ฑ…์ • ๋ชจ๋ธ์˜ ๋น„์šฉ ์ œํ•œ์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

์Šฌ๋กฏ ์—์Šคํ‹ฐ๋ฉ”์ดํ„ฐ ์‚ฌ์šฉ

๊ถŒ์žฅ์‚ฌํ•ญ: ์Šฌ๋กฏ ์—์Šคํ‹ฐ๋ฉ”์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›Œํฌ๋กœ๋“œ์— ํ•„์š”ํ•œ ์Šฌ๋กฏ ์ˆ˜๋ฅผ ์ถ”์ •ํ•ฉ๋‹ˆ๋‹ค.

BigQuery ์Šฌ๋กฏ ์—์Šคํ‹ฐ๋ฉ”์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด์ „ ์„ฑ๋Šฅ์˜ ์ธก์ •ํ•ญ๋ชฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์Šฌ๋กฏ ์šฉ๋Ÿ‰์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์ฃผ๋ฌธํ˜• ๊ฐ€๊ฒฉ ์ฑ…์ • ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ณ ๊ฐ์€ ์šฉ๋Ÿ‰ ๊ธฐ๋ฐ˜ ๊ฐ€๊ฒฉ ์ฑ…์ •์œผ๋กœ ์ „ํ™˜ํ•  ๋•Œ ๋น„์Šทํ•œ ์„ฑ๋Šฅ์˜ ์•ฝ์ • ๋ฐ ์ž๋™ ํ™•์žฅ ์˜ˆ์•ฝ์— ๋Œ€ํ•œ ํฌ๊ธฐ ์กฐ์ • ๊ถŒ์žฅ ์‚ฌํ•ญ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ถˆํ•„์š”ํ•œ ์žฅ๊ธฐ ์‹คํ–‰ ์ž‘์—… ์ทจ์†Œ

์šฉ๋Ÿ‰์„ ํ™•๋ณดํ•˜๋ ค๋ฉด ์žฅ๊ธฐ ์‹คํ–‰ ์ค‘์ธ ์ž‘์—…์„ ํ™•์ธํ•˜์—ฌ ๊ณ„์† ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ทจ์†Œํ•ฉ๋‹ˆ๋‹ค.

๋Œ€์‹œ๋ณด๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋น„์šฉ ๋ณด๊ธฐ

๊ถŒ์žฅ์‚ฌํ•ญ: BigQuery ์‚ฌ์šฉ๋Ÿ‰์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก Cloud Billing ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์„ํ•˜๋Š” ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

BigQuery๋กœ ๊ฒฐ์ œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‚ด๋ณด๋‚ด๊ณ  Looker Studio์™€ ๊ฐ™์€ ๋„๊ตฌ๋กœ ์‹œ๊ฐํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ์ œ ๋Œ€์‹œ๋ณด๋“œ ๋งŒ๋“ค๊ธฐ์— ๋Œ€ํ•œ ํŠœํ† ๋ฆฌ์–ผ์€ BigQuery์™€ Looker Studio๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Google Cloud ๊ฒฐ์ œ ์‹œ๊ฐํ™”๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

๊ฒฐ์ œ ์˜ˆ์‚ฐ ๋ฐ ์•Œ๋ฆผ ์‚ฌ์šฉํ•˜๊ธฐ

๊ถŒ์žฅ์‚ฌํ•ญ: Cloud Billing ์˜ˆ์‚ฐ์„ ์‚ฌ์šฉํ•˜์—ฌ BigQuery ์ฒญ๊ตฌ ๋‚ด์—ญ์„ ํ•œ๊ณณ์—์„œ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜์„ธ์š”.

Cloud Billing ์˜ˆ์‚ฐ์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ณ„ํšํ•œ ๋น„์šฉ ๋Œ€๋น„ ์‹ค์ œ ๋น„์šฉ์„ ์ถ”์ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ์‚ฐ ๊ธˆ์•ก์„ ์„ค์ •ํ•œ ํ›„์—๋Š” ์ด๋ฉ”์ผ ์•Œ๋ฆผ์„ ํŠธ๋ฆฌ๊ฑฐํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์˜ˆ์‚ฐ ์•Œ๋ฆผ ๊ธฐ์ค€ ๊ทœ์น™์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์‚ฐ ์•Œ๋ฆผ ์ด๋ฉ”์ผ์„ ํ†ตํ•ด ์˜ˆ์‚ฐ ๋Œ€๋น„ BigQuery ๋น„์šฉ์˜ ์ถ”์ด๋ฅผ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์Šคํ† ๋ฆฌ์ง€ ๋น„์šฉ ๊ด€๋ฆฌ

BigQuery ์Šคํ† ๋ฆฌ์ง€ ๋น„์šฉ์„ ์ตœ์ ํ™”ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๊ถŒ์žฅ์‚ฌํ•ญ์„ ๋”ฐ๋ฅด์„ธ์š”. ์ฟผ๋ฆฌ ์„ฑ๋Šฅ์„ ์œ„ํ•ด ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์ตœ์ ํ™”ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์žฅ๊ธฐ ์Šคํ† ๋ฆฌ์ง€ ์‚ฌ์šฉ

๊ถŒ์žฅ์‚ฌํ•ญ: ์žฅ๊ธฐ ์Šคํ† ๋ฆฌ์ง€ ๊ฐ€๊ฒฉ ์ฑ…์ •์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด์ „ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๋น„์šฉ์„ ์ค„์ด์„ธ์š”.

๋ฐ์ดํ„ฐ๋ฅผ BigQuery ์Šคํ† ๋ฆฌ์ง€๋กœ ๋กœ๋“œํ•˜๋ฉด ๋ฐ์ดํ„ฐ์— BigQuery ์Šคํ† ๋ฆฌ์ง€ ๊ฐ€๊ฒฉ ์ฑ…์ •์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด์ „ ๋ฐ์ดํ„ฐ์˜ ๊ฒฝ์šฐ BigQuery์˜ ์žฅ๊ธฐ ์Šคํ† ๋ฆฌ์ง€ ๊ฐ€๊ฒฉ ์ฑ…์ •์„ ์ž๋™์œผ๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์Šคํ† ๋ฆฌ์ง€ ์ฒญ๊ตฌ ๋ชจ๋ธ ๊ตฌ์„ฑ

๊ถŒ์žฅ์‚ฌํ•ญ: ์‚ฌ์šฉ๋Ÿ‰ ํŒจํ„ด์— ๋”ฐ๋ผ ์Šคํ† ๋ฆฌ์ง€ ์ฒญ๊ตฌ ๋ชจ๋ธ์„ ์ตœ์ ํ™”ํ•˜์„ธ์š”.

BigQuery๋Š” ๋…ผ๋ฆฌ์ (๋น„์••์ถ•) ๋ฐ”์ดํŠธ๋‚˜ ๋ฌผ๋ฆฌ์ (์••์ถ•) ๋ฐ”์ดํŠธ ๋˜๋Š” ์ด ๋‘˜์˜ ์กฐํ•ฉ์„ ์‚ฌ์šฉํ•˜์—ฌ ์Šคํ† ๋ฆฌ์ง€ ์ฒญ๊ตฌ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ๋ฐ์ดํ„ฐ ์„ธํŠธ์— ๊ตฌ์„ฑ๋œ ์Šคํ† ๋ฆฌ์ง€ ์ฒญ๊ตฌ ๋ชจ๋ธ์— ๋”ฐ๋ผ ์Šคํ† ๋ฆฌ์ง€ ๊ฐ€๊ฒฉ์ด ๊ฒฐ์ •๋˜์ง€๋งŒ ์ฟผ๋ฆฌ ์„ฑ๋Šฅ์€ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

INFORMATION_SCHEMA ๋ทฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ ํŒจํ„ด์— ๋”ฐ๋ผ ๊ฐ€์žฅ ์ ํ•ฉํ•œ ์Šคํ† ๋ฆฌ์ง€ ์ฒญ๊ตฌ ๋ชจ๋ธ์„ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ…Œ์ด๋ธ” ๋ฎ์–ด์“ฐ๊ธฐ ๋ฐฉ์ง€

๊ถŒ์žฅ์‚ฌํ•ญ: ๋ฌผ๋ฆฌ์  ์Šคํ† ๋ฆฌ์ง€ ๊ฒฐ์ œ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ํ…Œ์ด๋ธ”์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋ฎ์–ด์“ฐ์ง€ ๋งˆ์„ธ์š”.

์ผ๊ด„ ๋กœ๋“œ ์ž‘์—…์—์„œ --replace ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ TRUNCATE TABLE SQL ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ด๋ธ”์„ ๋ฎ์–ด์“ฐ๋Š” ๊ฒฝ์šฐ ๋Œ€์ฒด๋œ ๋ฐ์ดํ„ฐ๋Š” ์‹œ๊ฐ„ ์ด๋™ ๋ฐ ์žฅ์•  ์•ˆ์ „ ๊ธฐ๊ฐ„ ๋™์•ˆ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ํ…Œ์ด๋ธ”์„ ์ž์ฃผ ๋ฎ์–ด์“ฐ๋ฉด ์ถ”๊ฐ€ ์Šคํ† ๋ฆฌ์ง€ ์š”๊ธˆ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋Œ€์‹  ๋กœ๋“œ ์ž‘์—…์˜ WRITE_APPEND ๋งค๊ฐœ๋ณ€์ˆ˜, MERGE SQL ๋ฌธ์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ storage write API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ํ…Œ์ด๋ธ”์— ์ ์ง„์ ์œผ๋กœ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹œ๊ฐ„ ์ด๋™ ๊ธฐ๊ฐ„ ์ค„์ด๊ธฐ

๊ถŒ์žฅ์‚ฌํ•ญ: ์š”๊ตฌ์‚ฌํ•ญ์— ๋”ฐ๋ผ ์‹œ๊ฐ„ ์ด๋™ ๊ธฐ๊ฐ„์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹œ๊ฐ„ ์ด๋™ ๊ธฐ๊ฐ„์„ ๊ธฐ๋ณธ๊ฐ’์ธ 7์ผ์—์„œ ์ค„์ด๋ฉด ํ…Œ์ด๋ธ”์—์„œ ์‚ญ์ œ๋˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝ๋œ ๋ฐ์ดํ„ฐ์˜ ๋ณด๊ด€ ๊ธฐ๊ฐ„์ด ์ค„์–ด๋“ญ๋‹ˆ๋‹ค. ๋ฌผ๋ฆฌ์ (์••์ถ•) ์Šคํ† ๋ฆฌ์ง€ ์ฒญ๊ตฌ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ์‹œ๊ฐ„ ์ด๋™ ์Šคํ† ๋ฆฌ์ง€์— ๋Œ€ํ•œ ์š”๊ธˆ์ด ์ฒญ๊ตฌ๋ฉ๋‹ˆ๋‹ค.

์‹œ๊ฐ„ ์ด๋™ ๊ธฐ๊ฐ„์€ ๋ฐ์ดํ„ฐ ์„ธํŠธ ์ˆ˜์ค€์—์„œ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ๊ตฌ์„ฑ ์„ค์ •์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ ๋ฐ์ดํ„ฐ ์„ธํŠธ์˜ ๊ธฐ๋ณธ ์‹œ๊ฐ„ ์ด๋™ ๊ธฐ๊ฐ„์„ ์„ค์ •ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋Œ€์ƒ ํ…Œ์ด๋ธ”์— ํ…Œ์ด๋ธ” ๋งŒ๋ฃŒ ์‹œ๊ฐ„ ์‚ฌ์šฉ

๊ถŒ์žฅ์‚ฌํ•ญ: ๋Œ€๋Ÿ‰์˜ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋Œ€์ƒ ํ…Œ์ด๋ธ”์— ์“ฐ๋Š” ๊ฒฝ์šฐ, ๊ธฐ๋ณธ ํ…Œ์ด๋ธ” ๋งŒ๋ฃŒ ์‹œ๊ฐ„์„ ์‚ฌ์šฉํ•˜์—ฌ ๋” ์ด์ƒ ํ•„์š” ์—†๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

BigQuery ์Šคํ† ๋ฆฌ์ง€์— ๋Œ€๋Ÿ‰์˜ ๊ฒฐ๊ณผ ์ง‘ํ•ฉ์„ ๋ณด๊ด€ํ•˜๋ฉด ๋น„์šฉ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์— ์˜๊ตฌ์ ์œผ๋กœ ์•ก์„ธ์Šคํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฉด ๊ธฐ๋ณธ ํ…Œ์ด๋ธ” ๋งŒ๋ฃŒ ์‹œ๊ฐ„์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž๋™์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

Cloud Storage๋กœ ๋ฐ์ดํ„ฐ ๋ณด๊ด€์ฒ˜๋ฆฌ

๊ถŒ์žฅ์‚ฌํ•ญ: Cloud Storage์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ด€์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

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

๋‹ค์Œ ๋‹จ๊ณ„