์ฃผ์š” ์ปจํ…์ธ ๋กœ ์ด๋™
๊ณต์ง€์‚ฌํ•ญ

Announcing the General Availability of the Databricks SQL Statement Execution API

์ž‘์„ฑ์ž: Adriana Ispas, ํฌ๋ฆฌ์Šค ์Šคํ‹ฐ๋ธ์Šค, Christian Stuart , Sander Goos

์˜ค๋Š˜, AWS์™€ Azure์—์„œ Databricks SQL ๋ช…๋ น๋ฌธ ์‹คํ–‰ API๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Œ์„ ์•Œ๋ ค๋“œ๋ฆฌ๊ฒŒ ๋˜์–ด ๊ธฐ์˜๊ฒŒ ์ƒ๊ฐํ•˜๋ฉฐ, GCP์— ๋Œ€ํ•œ ์ง€์›์€ ๋‚ด๋…„ ์ดˆ์— ๊ณต๊ฐœ ํ”„๋ฆฌ๋ทฐ๋กœ ์ œ๊ณต๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ์ด API๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด REST API๋ฅผ ํ†ตํ•ด Databricks SQL ์›จ์–ดํ•˜์šฐ์Šค์— ์—ฐ๊ฒฐํ•˜์—ฌ Databricks ๋ ˆ์ดํฌํ•˜์šฐ์Šค ํ”Œ๋žซํผ์—์„œ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ์ดํ„ฐ์— ์•ก์„ธ์Šคํ•˜๊ณ  ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

Statement Execution API, in brief

BI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค์˜ ์ฃผ์š” ์†Œ๋น„์ž ์ค‘ ํ•˜๋‚˜์ด๋ฉฐ, ๋ฐ์ดํ„ฐ๋ธŒ๋ฆญ์Šค SQL์€ ๋“œ๋ผ์ด๋ฒ„, ์ปค๋„ฅํ„ฐ, ๊ธฐ์กด BI ๋„๊ตฌ์™€์˜ ๊ธฐ๋ณธ ํ†ตํ•ฉ์œผ๋กœ ๊ตฌ์„ฑ๋œ ํ’๋ถ€ํ•œ ์—ฐ๊ฒฐ ์—์ฝ”์‹œ์Šคํ…œ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ , ๋ฐ์ดํ„ฐ๋ธŒ๋ฆญ์Šค ๋ ˆ์ดํฌํ•˜์šฐ์Šค ํ”Œ๋žซํผ์—์„œ ๊ด€๋ฆฌ๋˜๋Š” ๋ฐ์ดํ„ฐ๋Š” ์ „์ž์ƒ๊ฑฐ๋ž˜ ํ”Œ๋žซํผ, CRM ์‹œ์Šคํ…œ, SaaS ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ๊ณ ๊ฐ์ด ์ž์ฒด ๊ฐœ๋ฐœํ•œ ๋งž์ถคํ˜• ๋ฐ์ดํ„ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋“ฑ BI ์ด์™ธ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ ์‚ฌ์šฉ ์‚ฌ๋ก€์™€๋„ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋„๊ตฌ๋Š” ํ‘œ์ค€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธํ„ฐํŽ˜์ด์Šค์™€ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ํ†ตํ•ด ์‰ฝ๊ฒŒ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์ง€๋งŒ, ๊ฑฐ์˜ ๋ชจ๋“  ๋„๊ตฌ์™€ ์‹œ์Šคํ…œ์€ REST API์™€ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ธŒ๋ฆญ์Šค SQL ๋ฌธ ์‹คํ–‰ API๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ‘œ์ค€ SQL over HTTP๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์–‘ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ๊ธฐ์ˆ  ๋ฐ ์ปดํ“จํŒ… ์žฅ์น˜์™€์˜ ํ†ตํ•ฉ์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด API๋Š” ์‹คํ–‰์„ ์œ„ํ•ด SQL ๋ฌธ์„ SQL ์›จ์–ดํ•˜์šฐ์Šค์— ์ œ์ถœํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ๋ จ์˜ ์—”๋“œํฌ์ธํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜ ์ด๋ฏธ์ง€๋Š” ์ผ๋ฐ˜์ ์ธ ๋ฐ์ดํ„ฐ ํ๋ฆ„์— ๋Œ€ํ•œ ๊ฐœ๋žต์ ์ธ ๊ฐœ์š”๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Announcing the General Availability of the Databricks SQL Statement Execution API

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

New features available in the GA release

AWS ๋ฐ Azure์—์„œ API๊ฐ€ ์ผ๋ฐ˜์— ๊ณต๊ฐœ๋จ์— ๋”ฐ๋ผ ๋ช‡ ๊ฐ€์ง€ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ๊ณผ ๊ฐœ์„  ์‚ฌํ•ญ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • ๋งค๊ฐœ๋ณ€์ˆ˜ํ™”๋œ ์ฟผ๋ฆฌ๋ฌธย - ์œ ํ˜• ์•ˆ์ „ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ SQL ์ฟผ๋ฆฌ์— ๋™์  ๋ฆฌํ„ฐ๋Ÿด ๊ฐ’์„ ์•ˆ์ „ํ•˜๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฆฌํ„ฐ๋Ÿด ๊ฐ’์€ SQL ์ฝ”๋“œ์™€ ๋ณ„๋„๋กœ ์ฒ˜๋ฆฌ๋˜๋ฏ€๋กœ, ๋ฐ์ดํ„ฐ๋ธŒ๋ฆญ์Šค SQL์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ œ๊ณตํ•œ ๋ณ€์ˆ˜์™€ ๋…๋ฆฝ์ ์œผ๋กœ ์ฝ”๋“œ์˜ ๋กœ์ง์„ ํ•ด์„ํ•˜์—ฌ ์ผ๋ฐ˜์ ์ธ SQL ์ธ์ ์…˜ ๊ณต๊ฒฉ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฒฐ๊ณผ ๋ณด์กด - ํ•œ ๋ฌธ์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ตœ๋Œ€ 1์‹œ๊ฐ„ ๋™์•ˆ ์—ฌ๋Ÿฌ ๋ฒˆ ๋‹ค์‹œ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ „์—๋Š” ๋งˆ์ง€๋ง‰ ์ฒญํฌ๋ฅผ ์ฝ์€ ํ›„์—๋Š” ๋” ์ด์ƒ ๊ฒฐ๊ณผ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฒญํฌ๋ฅผ ๋ณ‘๋ ฌ๋กœ ๊ฐ€์ ธ์˜ฌ ๋•Œ ๋งˆ์ง€๋ง‰ ์ฒญํฌ๋ฅผ ํŠน๋ณ„ํžˆ ์ฒ˜๋ฆฌํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์—ฌ๋Ÿฌ ๊ฒฐ๊ณผ ํ˜•์‹ - ์ด์ œ EXTERNAL_LINKS ์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•ด JSON_ARRAY ๋ฐ CSV ํ˜•์‹์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ตœ์ ์˜ ์„ฑ๋Šฅ์„ ์œ„ํ•ด ์—ฌ์ „ํžˆ Arrow๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋„๊ตฌ์™€ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ JSON๊ณผ CSV๋ฅผ ๋” ๋งŽ์ด ์ง€์›ํ•˜๋ฏ€๋กœ ์ƒํ˜ธ ์šด์šฉ์„ฑ์ด ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค.
  • ๋ฐ”์ดํŠธ ๋ฐ ํ–‰ ์ œํ•œ - ๊ฒฐ๊ณผ์— ์ œํ•œ์„ ์ ์šฉํ•˜์—ฌ ์˜ˆ๊ธฐ์น˜ ์•Š์€ ๋Œ€์šฉ๋Ÿ‰ ์ถœ๋ ฅ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. API๋Š” ์ง€์ •๋œ ์ œํ•œ์„ ์ดˆ๊ณผํ•  ๋•Œ๋งˆ๋‹ค ์ž˜๋ฆผ ํ”Œ๋ž˜๊ทธ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ์„น์…˜์—์„œ๋Š” ์ด๋Ÿฌํ•œ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ ์‹คํ–‰ API ์œ„์— ์‚ฌ์šฉ์ž ์ง€์ • API๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Along with the general availability of the API on AWS and Azure, we are enabling some new features and improvements.

  • Parameterized statements - Safely apply dynamic literal values to your SQL queries with type-safe parameters. Literal values are handled separately from your SQL code, which allows Databricks SQL to interpret the logic of the code independently from user-supplied variables, preventing common SQL injection attacks.
  • Result retention - Refetch the results for a statement multiple times for up to one hour. Previously, results were no longer available after the last chunk was read, requiring special treatment of the last chunk when fetching chunks in parallel.
  • Multiple result formats - JSON_ARRAY and CSV formats are now available with the EXTERNAL_LINKS disposition. While you can still use Arrow for optimal performance, JSON and CSV are more ubiquitously supported by tools and frameworks, improving interoperability.
  • Byte and row limits - Apply limits to your results to prevent unexpected large outputs. The API will return a truncation flag whenever the specified limit is exceeded.

In the next section, we will go into more detail as we use these new features to build a custom API on top of the Statement Execution API.

Build your special-purpose API

์˜ฌํ•ด ๋ฐ์ดํ„ฐ+AI ์„œ๋ฐ‹์—์„œ๋Š” ์ด ์ƒˆ๋กœ์šด ๋ช…๋ น๋ฌธ ์‹คํ–‰ API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ธŒ๋ฆญ์Šค ๋ ˆ์ดํฌํ•˜์šฐ์Šค ํ”Œ๋žซํผ ์œ„์— ์ปค์Šคํ…€ API๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๊ณผ์ •์„ ์•ˆ๋‚ดํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๊ณผ์ •์„ ๋†“์น˜์‹  ๋ถ„๋“ค์„ ์œ„ํ•ด Acme, Inc๋ผ๋Š” ๊ฐ€์ƒ์˜ ํšŒ์‚ฌ๋ฅผ ์œ„ํ•œ ๊ฐ„๋‹จํ•œ ์›น์‚ฌ์ดํŠธ์™€ ์„œ๋น„์Šค ๋ฐฑ์—”๋“œ๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ๊ณผ์ •์„ ์ง€๊ธˆ ๋‹ค์‹œ ๋ณด์—ฌ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„๋กœ `setup.sh` ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์—ฌ๊ธฐ์—์„œ ์ฝ”๋“œ๋ฅผ ๋”ฐ๋ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Acme, Inc.๋Š” ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ๊ธฐ๊ณ„ ๋ถ€ํ’ˆ์„ ํŒ๋งคํ•˜๋Š” 100๊ฐœ์˜ ๋งค์žฅ์„ ๋ณด์œ ํ•œ ์ค‘์†Œ๊ธฐ์—…์ž…๋‹ˆ๋‹ค. ์ด ํšŒ์‚ฌ๋Š” ๋ฐ์ดํ„ฐ๋ธŒ๋ฆญ์Šค ๋ ˆ์ดํฌํ•˜์šฐ์Šค๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๊ฐ ๋งค์žฅ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ถ”์ ํ•˜๊ณ  ๋ฉ”๋‹ฌ๋ฆฌ์˜จ ์•„ํ‚คํ…์ฒ˜๋กœ ํŒ๋งค ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋งค์žฅ ๊ด€๋ฆฌ์ž๊ฐ€ ๊ธˆ ํŒ๋งค ๋ฐ์ดํ„ฐ์™€ ๋งค์žฅ ์ •๋ณด๋ฅผ ์‰ฝ๊ฒŒ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋งค์žฅ ๊ด€๋ฆฌ์ž๊ฐ€ ์ผ๋ฐ˜ POS๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š์€ ํŒ๋งค๋Ÿ‰์„ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ด ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ์ž ์ง€์ • ๋ฐ์ดํ„ฐ API์™€ ํ•ด๋‹น API๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์“ฐ๋Š” HTML/JQuery ํ”„๋ŸฐํŠธ์—”๋“œ๋ฅผ ๋…ธ์ถœํ•˜๋Š” Python ํ”Œ๋ผ์Šคํฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  ์Šคํ† ์–ด๋ฅผ ๋‚˜์—ดํ•˜๋Š” ์‚ฌ์šฉ์ž ์ •์˜ API ์—”๋“œํฌ์ธํŠธ์™€ ์ด๊ฒƒ์ด ๋ฐฑ์—”๋“œ์˜ ๋ฌธ ์‹คํ–‰ API์— ์–ด๋–ป๊ฒŒ ๋งคํ•‘๋˜๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ธ์ˆ˜๋ฅผ ๋ฐ›์ง€ ์•Š๋Š” ๊ฐ„๋‹จํ•œ GET ์š”์ฒญ์ž…๋‹ˆ๋‹ค. ๋ฐฑ์—”๋“œ๋Š” ์ •์  SELECT ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ SQL ์›จ์–ดํ•˜์šฐ์Šค๋กœ ํ˜ธ์ถœํ•˜์—ฌ `stores` ํ…Œ์ด๋ธ”์„ ์ฝ์Šต๋‹ˆ๋‹ค.

Acme Inc's API Request ย  Statement Execution API Request
GET /stores โ†’ POST /sql/statements
ย  ย  statement: "SELECT * FROM stores"
ย  ย  wait_timeout: "50s"
ย  ย  on_wait_timeout: "CANCEL"
Acme Inc's API Response ย  Statement Execution API Response
state: "SUCCEEDED"
stores: [
ย  ["123", "Acme, Inc", โ€ฆ],ย 
ย  ["456", "Databricks", โ€ฆ]
]
โ† statement_id: "ID123"
status: { state: "SUCCEEDED" }
manifest: { ... }ย 
result: {ย 
ย  data_array: [
ย  ย  ["123", "Acme, Inc", โ€ฆ],ย 
ย  ย  ["456", "Databricks", โ€ฆ]
ย  ]

}

Acme์—๋Š” 100๊ฐœ์˜ ์Šคํ† ์–ด๋งŒ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋น ๋ฅธ ์ฟผ๋ฆฌ์™€ ์ž‘์€ ๋ฐ์ดํ„ฐ ์„ธํŠธ๊ฐ€ ์‘๋‹ต์— ํฌํ•จ๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐ์ดํ„ฐ๋ธŒ๋ฆญ์Šค์— ๋™๊ธฐ์‹ ์š”์ฒญ์„ ํ•˜๊ณ  ์Šคํ† ์–ด ๋ฐ์ดํ„ฐ ํ–‰์„ ์ธ๋ผ์ธ์œผ๋กœ ๋ฐ˜ํ™˜๋ฐ›๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋™๊ธฐํ™”ํ•˜๊ธฐ ์œ„ํ•ด `wait_timeout`์„ ์„ค์ •ํ•˜์—ฌ ์‘๋‹ต์„ ์ตœ๋Œ€ 50์ดˆ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋„๋ก ํ•˜๊ณ  `on_wait_timeout` ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜์—ฌ ๋” ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ๊ฒฝ์šฐ ์ฟผ๋ฆฌ๋ฅผ ์ทจ์†Œํ•˜๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ธŒ๋ฆญ์Šค์˜ ์‘๋‹ต์„ ๋ณด๋ฉด ๊ธฐ๋ณธ ๊ฒฐ๊ณผ์ธ `disposition`๊ณผ `format`์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ธ๋ผ์ธ์œผ๋กœ JSON ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด Acme์˜ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๊ฐ€ ํ•ด๋‹น ํŽ˜์ด๋กœ๋“œ๋ฅผ ๋ฆฌํŒจํ‚ค์ง•ํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ง€์ • API์˜ ํ˜ธ์ถœ์ž์—๊ฒŒ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์‚ฌ์šฉ์ž ์ง€์ • ์—”๋“œํฌ์ธํŠธ์˜ ์ „์ฒด ๋ฐฑ์—”๋“œ ์ฝ”๋“œ๋Š” ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋ก ํŠธ์—”๋“œ์—์„œ๋Š” ์‚ฌ์šฉ์ž ์ง€์ • `/api/1.0/stores` ์—”๋“œํฌ์ธํŠธ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์Šคํ† ์–ด ๋ชฉ๋ก์„ ๊ฐ€์ ธ์˜ค๊ณ  ์—ฌ๊ธฐ์— ์žˆ๋Š” JSON ๋ฐฐ์—ด์„ ๋ฐ˜๋ณตํ•˜์—ฌ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ด ๋‘ ๊ฐ€์ง€๋ฅผ ํ†ตํ•ด Acme๋Š” ๋ฐ์ดํ„ฐ๋ธŒ๋ฆญ์Šค SQL๋กœ ๋’ท๋ฐ›์นจ๋˜๋Š” ์ƒˆ๋กœ์šด ํ™ˆํŽ˜์ด์ง€๋ฅผ ๊ฐ–๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค!

Announcing the General Availability of the Databricks SQL Statement Execution API

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

  1. ์ œํ•œ๋œ ์ถœ๋ ฅ - ํ˜ธ์ถœ์ž๊ฐ€ ํ•ญ์ƒ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ํ•„์š”๊ฐ€ ์—†๋„๋ก ๋ฐ˜ํ’ˆ๋œ ํŒ๋งค ์ˆ˜๋ฅผ ์ œํ•œํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  2. ๋‹ค์ค‘ ํ˜•์‹ - ์›น ํŽ˜์ด์ง€์— ์‰ฝ๊ฒŒ ํ‘œ์‹œํ•˜๊ฑฐ๋‚˜ Excel๊ณผ ๊ฐ™์€ ๋„๊ตฌ์—์„œ ์˜คํ”„๋ผ์ธ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ฒฐ๊ณผ๋ฅผ ์—ฌ๋Ÿฌ ํ˜•์‹์œผ๋กœ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  3. ๋น„๋™๊ธฐ - ์Šคํ† ์–ด์˜ ํŒ๋งค ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋น„๋™๊ธฐ์‹์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  4. ํšจ์œจ์ ์ธ ์ถ”์ถœ - ์„ฑ๋Šฅ๊ณผ ์•ˆ์ •์„ฑ์„ ์œ„ํ•ด ๋Œ€๋Ÿ‰์˜ ํŒ๋งค ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฑ์—”๋“œ ์›น ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ๊ฐ€์ ธ์˜ค์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์•„๋ž˜์—์„œ ์ด๋Ÿฌํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜๊ธฐ ์œ„ํ•ด Python์šฉ ๋ฐ์ดํ„ฐ๋ธŒ๋ฆญ์Šค SDK๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ ์‹คํ–‰ API๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ „์ฒด ์ฝ”๋“œ๋Š” ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฒ˜์Œ ๋‘ ๊ฐ€์ง€ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ์ž ์ง€์ • API์—์„œ `row_limit` ๋ฐ `format` ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ๋…ธ์ถœํ•˜๊ณ  ์ด๋ฅผ ๋ฌธ ์‹คํ–‰ API์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํ˜ธ์ถœ์ž๊ฐ€ ์ฟผ๋ฆฌ์—์„œ ์ƒ์„ฑ๋˜๋Š” ์ด ํ–‰ ์ˆ˜๋ฅผ ์ œํ•œํ•˜๊ณ  ๊ฒฐ๊ณผ ํ˜•์‹(CSV, JSON ๋˜๋Š” Arrow)์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์ง€์ • API๋ฅผ ๋น„๋™๊ธฐ์‹์œผ๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด, ๋ฌธ ์‹คํ–‰ API์˜ `wait_timeout` ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ 0์ดˆ๋กœ ์„ค์ •ํ•˜๋ฉด, ๋ฐ์ดํ„ฐ๋ธŒ๋ฆญ์Šค๊ฐ€ ๋ฌธ ID์™€ ์ฟผ๋ฆฌ ์ƒํƒœ๋กœ ์ฆ‰์‹œ ์‘๋‹ตํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํ˜ธ์ถœ์ž์— ๋Œ€ํ•œ ์‘๋‹ต์—์„œ ์ƒํƒœ์™€ ํ•จ๊ป˜ ํ•ด๋‹น ๋ฌธ ID๋ฅผ `request_id`๋กœ ํŒจํ‚ค์ง•ํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญ ID์™€ ์ƒํƒœ๋ฅผ ๋ฐ›์œผ๋ฉด ๋™์ผํ•œ ์‚ฌ์šฉ์ž ์ง€์ • API ์—”๋“œํฌ์ธํŠธ๋ฅผ ํด๋งํ•˜์—ฌ ์‹คํ–‰ ์ƒํƒœ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—”๋“œํฌ์ธํŠธ๋Š” `get_statement` ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์š”์ฒญ์„ ๋ฐ์ดํ„ฐ๋ธŒ๋ฆญ์Šค SQL ์›จ์–ดํ•˜์šฐ์Šค๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ๊ฐ€ ์„ฑ๊ณตํ•˜๋ฉด API๋Š” ๊ฒฐ๊ตญ 'chunk_count'์™€ ํ•จ๊ป˜ `SUCCEEDED` ์ƒํƒœ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ฒญํฌ ์นด์šดํŠธ๋Š” ๊ฒฐ๊ณผ๊ฐ€ ๋ช‡ ๊ฐœ์˜ ํŒŒํ‹ฐ์…˜์œผ๋กœ ๋ถ„ํ• ๋˜์—ˆ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

ํšจ์œจ์ ์ธ ์ถ”์ถœ(๋„ค ๋ฒˆ์งธ ์š”๊ตฌ ์‚ฌํ•ญ)์„ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด EXTERNAL_LINKS ์ฒ˜๋ฆฌ๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ฐ ์ฒญํฌ์— ๋Œ€ํ•ด ๋ฏธ๋ฆฌ ์„œ๋ช…๋œ URL์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์‚ฌ์šฉ์ž ์ •์˜ API๋Š” 'request_id'์™€ 'chunk_index'๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ ์ด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ–‰ ์ œํ•œ 20๊ฐœ์™€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์นœํ™”์ ์ธ JSON_ARRAY ๊ฒฐ๊ณผ ํ˜•์‹์„ ์ œ๊ณตํ•˜์—ฌ ๊ฐ ์Šคํ† ์–ด์— ๋Œ€ํ•ด ๊ฐ€์žฅ ์ตœ๊ทผ ๋งค์ถœ์„ ํ‘œ์‹œํ•˜๋Š” ๋žœ๋”ฉ ํŽ˜์ด์ง€๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํŽ˜์ด์ง€ ์ƒ๋‹จ์— '๋‹ค์šด๋กœ๋“œ' ๋ฒ„ํŠผ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์Šคํ† ์–ด ๊ด€๋ฆฌ์ž๊ฐ€ ๋ชจ๋“  ํŒ๋งค์— ๋Œ€ํ•œ ๊ธฐ๋ก ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ, ์Šคํ† ์–ด ๊ด€๋ฆฌ์ž๊ฐ€ ์„ ํƒํ•œ ๋ถ„์„ ๋„๊ตฌ๋กœ ์‰ฝ๊ฒŒ ์ˆ˜์ง‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ œํ•œ์„ ๋‘์ง€ ์•Š๊ณ  CSV ํ˜•์‹์„ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ฟผ๋ฆฌ๊ฐ€ ์„ฑ๊ณตํ•˜๊ณ  ์ด ์ฒญํฌ ์ˆ˜๋ฅผ ํ™•์ธํ•˜๋ฉด ์‚ฌ์šฉ์ž ์ง€์ • API๋ฅผ ๋ณ‘๋ ฌ๋กœ ํ˜ธ์ถœํ•˜์—ฌ ๋ฏธ๋ฆฌ ์„œ๋ช…๋œ URL์„ ๊ฐ€์ ธ์˜ค๊ณ  ํด๋ผ์šฐ๋“œ ์Šคํ† ๋ฆฌ์ง€์—์„œ ์ง์ ‘ CSV ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๋ถ€์ ์œผ๋กœ EXTERNAL_LINKS ์ฒ˜๋ฆฌ๋Š” ์ˆœ์ฐจ์  ์ธ๋ผ์ธ ์ฝ๊ธฐ์— ๋น„ํ•ด ์ถ”์ถœ ์ฒ˜๋ฆฌ๋Ÿ‰์ด 12๋ฐฐ ํ–ฅ์ƒ๋œ ๊ฒƒ์œผ๋กœ ์ž…์ฆ๋œ Cloud Fetchย ๊ธฐ์ˆ ์„ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜ ์˜ˆ์‹œ์—์„œ๋Š” ์•ฝ 160Mbps๋กœ 500MB๋ฅผ ๋ณ‘๋ ฌ๋กœ ๋‹ค์šด๋กœ๋“œํ–ˆ์Šต๋‹ˆ๋‹ค.

Announcing the General Availability of the Databricks SQL Statement Execution API

์ด์ œ ๋งค์žฅ์˜ ๋งค์ถœ์„ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์œผ๋‹ˆ, Acme ํŒ€์€ ์ƒˆ๋กœ์šด ๋งค์ถœ ์ •๋ณด๋ฅผ ๋ ˆ์ดํฌํ•˜์šฐ์Šค์— ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด /api/1.0/stores/storeId/sales ์—”๋“œํฌ์ธํŠธ์— ๋Œ€ํ•œ POST ์š”์ฒญ์œผ๋กœ ๋’ท๋ฐ›์นจ๋˜๋Š” ๊ฐ„๋‹จํ•œ ์›น ์–‘์‹์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–‘์‹ ๋ฐ์ดํ„ฐ๋ฅผ ๋ ˆ์ดํฌํ•˜์šฐ์Šค๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด ๋งค๊ฐœ๋ณ€์ˆ˜ํ™”๋œ SQL ๋ฌธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค:

๊ทธ๋ฆฌ๊ณ  ๊ฐ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ด๋ฆ„, ๊ฐ’, ์œ ํ˜•๊ณผ ํ•จ๊ป˜ `parameters` ๋ชฉ๋ก ์ธ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›น ์–‘์‹์˜ ์ž…๋ ฅ์„ ๋ฌธ ์‹คํ–‰ API์— ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค:

SQL Warehouse ์—”์ง„์€ SQL ์ฝ”๋“œ๋ฅผ ํŒŒ์‹ฑํ•œ ํ›„ ์ œ๊ณต๋œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ฟผ๋ฆฌ ๊ณ„ํš์— ๋ฆฌํ„ฐ๋Ÿด๋กœ ์•ˆ์ „ํ•˜๊ฒŒ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์•…์˜์ ์œผ๋กœ ์‚ฝ์ž…๋œ SQL ๊ตฌ๋ฌธ์ด SQL๋กœ ํ•ด์„๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ '์œ ํ˜•' ํ•„๋“œ๋Š” ์ œ๊ณต๋œ '๊ฐ’'์˜ ์œ ํ˜• ์ •ํ™•์„ฑ์„ ๊ฒ€์‚ฌํ•˜์—ฌ ์ถ”๊ฐ€์ ์ธ ์•ˆ์ „ ๊ณ„์ธต์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์•…์˜์ ์ธ ์‚ฌ์šฉ์ž๊ฐ€ ์ˆ˜๋Ÿ‰ ํ•„๋“œ์˜ ์ž…๋ ฅ์œผ๋กœ "100); drop table sales"์™€ ๊ฐ™์€ ๊ฐ’์„ ์ œ๊ณตํ•˜๋ฉด INSERT INTO ๋ฌธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๊ณ  ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค:

[INVALID_PARAMETER_MARKER_VALUE.INVALID_VALUE_FOR_DATA_TYPE] An invalid parameter mapping was provided: the value '100); drop table sales' for parameter 'quantity' cannot be cast to INT because it is malformed.

ย 

์—ฌ๊ธฐ์—์„œ `POST /api/1.0/stores/store_id/sales` ์—”๋“œํฌ์ธํŠธ์˜ ์ผ๋ถ€๋กœ ์‚ฌ์šฉํ•  ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ๋„ฃ๋Š” ๋ฐฉ๋ฒ•์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์›น ์–‘์‹์˜ ์ž…๋ ฅ์ด ์˜ฌ๋ฐ”๋ฅธ ์œ ํ˜•์œผ๋กœ ์œ ํšจํ•˜๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ '์ œ์ถœ'์„ ํด๋ฆญํ•œ ํ›„ ํŒ๋งค ํ…Œ์ด๋ธ”์ด ์„ฑ๊ณต์ ์œผ๋กœ ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค.

์ด์ œ ์ด ์‚ฌ์šฉ์ž ์ •์˜ API๋ฅผ ๋ฐ˜๋ณตํ•˜๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ๋ธŒ๋ฆญ์Šค ๋ ˆ์ดํฌํ•˜์šฐ์Šค ํ”Œ๋žซํผ ์œ„์— ์ž์‹ ๋งŒ์˜ ์‚ฌ์šฉ์ž ์ •์˜ ๋ฐ์ดํ„ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ๋””๋”ค๋Œ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธ€ ์ „์ฒด์—์„œ ์‚ฌ์šฉํ•œ ์ƒ˜ํ”Œ ์ฝ”๋“œ์™€ ์ž์ฒด ๋ฐ์ดํ„ฐ๋ธŒ๋ฆญ์Šค ํ™˜๊ฒฝ์—์„œ ์ƒ˜ํ”Œ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•˜๋Š” `setup.sh` ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ์™ธ์—๋„, ์•„๋ž˜ ๋™์˜์ƒ์—์„œ ๋ฐ์ดํ„ฐ+AI ์„œ๋ฐ‹์˜ ๋ผ์ด๋ธŒ ์„ค๋ช…์„ ์‹œ์ฒญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Getting started with the Databricks SQL Statement Execution API

The Databricks SQL Statement Execution API is available with the Databricks Premium and Enterprise tiers. If you already have a Databricks account, follow our tutorial (AWS | Azure), the documentation (AWS | Azure), or check our repository of code samples. If you are not an existing Databricks customer, sign up for a free trial.

Try Databricks Now

์ตœ์‹  ๊ฒŒ์‹œ๋ฌผ์„ ์ด๋ฉ”์ผ๋กœ ๋ฐ›์•„๋ณด์„ธ์š”

๋ธ”๋กœ๊ทธ๋ฅผ ๊ตฌ๋…ํ•˜๊ณ  ์ตœ์‹  ๊ฒŒ์‹œ๋ฌผ์„ ์ด๋ฉ”์ผ๋กœ ๋ฐ›์•„๋ณด์„ธ์š”.