跳轉到主要內容
Beplay体育安卓版本平台的博客

磚的SQL語句執行API——宣布公共預覽

分享這篇文章

今天,我們很高興宣布的公共預覽磚SQL語句執行的API,可以在AWS和Azure。您現在可以連接到你的磚的SQL倉庫在一個REST API來訪問和操縱數據的管理磚Lakehouse平台Beplay体育安卓版本

磚的SQL語句執行API簡化了訪問您的數據,並使其更容易構建數據應用適合您的需要。API是異步的,這消除了需要管理連接與JDBC、ODBC像你一樣。此外,你可以連接到SQL倉庫,而無需首先安裝一個驅動程序。您可以使用語句執行API連接傳統和基於雲的應用程序,服務和設備數據磚SQL。你也可以創建自定義客戶端庫為您選擇的編程語言。

磚的SQL語句的執行

在這個博客中,我們回顧一些關鍵特性在公共預覽並展示如何利用你的數據在一個電子表格使用語句執行API和JavaScript。

語句執行API

語句執行API管理的執行SQL語句所有類型的數據和獲取結果磚的SQL倉庫通過HTTP端點下列操作:

提交一個SQL語句的執行 POST / sql語句
檢查狀態和檢索結果 獲得/ sql /報表/ {statement_id}
取消一個SQL語句的執行 POST / sql /報表/ {statement_id} /取消

例如,讓我們假設我們想要檢索當前年度的月度訂單收入顯示在我們的數據的應用程序。假設數據訂單已經由我們的Lakehouse, SQL語句可以如下所示:

選擇(o_orderdate)作為,總和(o_totalprice)作為“月收入”“樣品”。“tpch”。“訂單”在哪裏一年(o_orderdate)==一年(當前日期())集團通過1訂單通過1

我們可以開始執行SQL語句通過發送一個帖子請求/ api / 2.0 / sql語句端點。表示SQL語句提供的字符串作為請求體載荷,以及的IDSQL倉庫用於執行該語句。HTTP請求必須包含主機組件的URL和一個磚工作空間訪問令牌進行身份驗證。

帖子/api/2.0/sql/語句HTTP/1.1主持人:<your_HOST>授權:持票人<your_access_token>內容- - - - - -類型:應用程序/json{“聲明”:“選擇月(o_orderdate)月(o_totalprice)和“月收入”“樣品”。“tpch”。“訂單”,(o_orderdate) = =今年(當前日期())組1訂單1”,:“warehouse_id < your_SQL_warehouse_ID >”}

如果語句完成很快,API返回的結果作為一個POST請求直接回應。下麵是一個例子的回應:

{“statement_id”:“01 ed9a57 - ad5e - 1333 - 8 e76 - 8 c718723abf2”,“狀態”:{“狀態”:“成功”},“清單”:{“格式”:“JSON_ARRAY”,“模式”:{“column_count”:2,“列”:【{“名稱”:“月”,“type_name”:“INT”,“位置”:0},{“名稱”:“月收入”,“type_name”:“小數”,“位置”:1,“type_precision”:28,“type_scale”:2}]}},“結果”:{“chunk_index”:0,“row_offset”:0,“row_count”:2,“data_array”:【(“1”,“14615808096.95”),(“2”,“945871268.15”]]}}

如果聲明需要更長的時間,異步API仍在繼續。在這種情況下,響應包含一個語句ID和一個狀態。

{“statement_id”:“01 ed9a50 c9c9 - 178 e - 9 - be7 0 - ab52bc998b0”,“狀態”:{“狀態”:“等待”}}

您可以使用語句ID檢查執行狀態,如果準備好了,通過發送一個檢索結果得到請求/ api / 2.0 / sql /報表/ {statement_id}端點:

得到/api/2.0/sql/語句/<statement_id>HTTP/1.1主持人:<your_HOST>授權:持票人<your_access_token>

您還可以使用該語句ID通過發送取消請求帖子請求/ api / 2.0 / sql /報表/取消端點。

POST / api /2.0/ sql /報表/ < statement_id >/取消HTTP /1.1主機:< your_HOST >授權:無記名< your_access_token >

同步或異步API可以配置行為通過進一步配置您的請求。為了了解更多的情況,檢查本教程(AWS|Azure)和文檔(AWS|Azure)。

使用磚SQL語句執行的JavaScript API

你可以送磚的SQL語句執行API請求的任何編程語言。您可以使用方法等獲取API在JavaScript中;Python的請求在Python中;的net/http計劃,等等。

我們向您展示如何使用語句執行使用JavaScript API來填充一個穀歌表獲取API從一個電子表格應用程序

示例電子表格應用程序

假設我們想要構建一個穀歌電子表格應用程序,它將填充一個電子表格數據的命令。我們的用戶能獲得月度訂單收入數據基於預定義的標準,比如每月的訂單目前的月收入,當前,或之間的開始和結束日期。對於每一個標準,我們可以寫出相應的SQL語句,提交執行,獲取和處理結果使用語句執行API。

在下一節中,我們概述的主要構建塊來實現這個例子。你可以跟隨下載GitHub的電子表格。

建立電子表格應用程序

給定一個聲明,我們想使用SQL語句執行API,executeStatement下麵的函數捕獲整個邏輯處理API的默認模式。在這種模式下,語句執行後開始同步,異步的默認超時10秒。

我們先提交一份聲明執行使用submitStatement函數。如果在超時定義語句結束,我們通過調用獲取結果handleResult函數。否則,執行異步進行,這意味著我們需要調查的執行狀態,直到完成的checkStatus功能覆蓋所需的邏輯。一旦完成,我們使用相同的檢索結果handleResult函數。

函數executeStatement(聲明){var響應= submitStatement(聲明);如果(response.status。狀態= =“成功”){返回handleResult(響應。清單,response.result);}其他的{響應= checkStatus (response.statement_id)(response.status。狀態= =“等待”| | response.status。狀態= =“運行”){響應= checkStatus (response.statement_id)}返回handleResult(響應。清單,response.result);}}

submitStatement函數定義了請求主體,我們組執行參數如等待超時10秒(默認),執行模式和SQL語句。它進一步調用一個通用的fetchFromUrl提交一個HTTP請求的函數。我們還定義了一個HTTP_REQUEST_BASE不斷地通過為磚工作區用戶訪問令牌。我們將為所有HTTP請求重用這個常數將。

常量HTTP_REQUEST_BASE = {:{授權:不記名的$ {AUTH_TOKEN},},contentType:“application / json”,方法:“獲得”,有效載荷:,muteHttpExceptions:真正的,};
              函數submitStatement(聲明){身體= {“聲明”:聲明,“warehouse_id”:倉庫,“wait_timeout”:“10”,“on_wait_timeout”:“繼續”,};請求=對象HTTP_REQUEST_BASE .assign ({}, {方法:“職位”,有效載荷:JSON.stringify(身體)});響應= fetchFromUrl (“https://${主機}/ api / 2.0 / sql語句的,請求);如果(response.status。狀態= =“失敗”){showError (“提交請求失敗的和意想不到的狀態:$ {response.status.state})返回;}返回反應;}

fetchFromUrl函數是一個泛型函數提交HTTP請求以最少的錯誤處理,如下所示。

函數fetchFromUrl(url請求){試一試{= UrlFetchApp響應。fetch (url請求);responseJson =JSON.parse(響應);statusCode = response.getResponseCode ();開關(statusCode) {情況下200年:返回responseJson;默認的:showError (錯誤:代碼=$ {responseJson [“error_code”]}消息=$ {responseJson [“消息”]});返回;}}(錯誤){showError (的錯誤:錯誤=${錯誤});返回;}}

checkStatus函數,如果超出等待超時,我們輪詢服務器檢索語句執行的狀態,並確定當結果準備取回。

函數checkStatus(statement_id){響應= fetchFromUrl (“https://${主機}/ / api / 2.0 / sql語句$ {statement_id},HTTP_REQUEST_BASE);如果(response.status。狀態= =“失敗”){錯誤= responseJson [“狀態”][“錯誤”]showError (“獲取請求失敗:代碼=${錯誤(“error_code”]}消息=${錯誤(“消息”]});返回;}返回反應;}

handleResult函數,如果聲明已經成功完成,結果是可用的,取回響應會包含第一塊的行。函數處理結果並試圖獲取後續塊如果可用。

函數handleResult(清單,結果){varcolumnNames =清單(“模式”][“列”]. map (上校= >坳(“名稱”]);var塊= [result.data_array];
              (結果“next_chunk_internal_link”){塊=結果[“next_chunk_internal_link”];結果= fetchFromUrl (“https://${主機}${}塊,HTTP_REQUEST_BASE);chunks.push(結果“data_array”]);}
              返回[[columnNames]] .concat(塊).flat ()}

剩下的就是executeStatement函數連接到各種用戶界麵小部件的JavaScript事件處理程序,通過在SQL語句的用戶選擇。穀歌的應用程序的腳本文檔提供了說明與返回的數據填充表格。

開始使用磚SQL語句的執行API

磚的SQL語句執行API可用與磚溢價和企業層。如果你已經有一個磚,跟隨我們的教程(AWS|Azure)、文檔(AWS|Azure),或者檢查我們存儲庫的代碼樣本。如果你沒有一個現有的磚客戶,注冊一個免費試用

磚的SQL語句執行API補充廣泛的選項來連接你的磚SQL的倉庫。檢查我們的以前的博文Python,更多地了解本地連接,節點。js、CLI和ODBC / JDBC。數據由磚Lakehouse管理平台真正可以從任何地方訪問!Beplay体育安卓版本

加入我們的數據+人工智能峰會2023更多地了解磚SQL語句的執行API和更新接下來是什麼。

免費試著磚

相關的帖子

看到所有Beplay体育安卓版本平台的博客的帖子
Baidu
map