こちらのDatabricks SQL Statement Execution APIを試してみます。
要件
- 稼働しているDatabricksワークスペース(プレミアム/エンタープライズプラン)
- Databricks SQLウェアハウス
- パーソナルアクセストークン
準備
-
パーソナルアクセストークンを生成してメモしておきます。
-
アクセスするDatabricks SQLウェアハウスがなければ作成します。
-
ワークスペースのホスト名をメモしておきます。
https://
や末尾の/
は不要です。 -
REST APIを呼び出すマシンで環境変数を設定します。以下の例はMacでのターミナルで実行しています。SQL文は
SELECT * FROM hive_metastore.japan_covid_takaakiyayoidatabrickscom.covid_cases LIMIT 10
としています。export DATABRICKS_TOKEN='<パーソナルアクセストークン>' export DATABRICKS_HOST='<Databricksワークスペースのホスト名>' export DATABRICKS_SQL_WAREHOUSE_ID='<SQLウェアハウスID>'
-
curlを使ってREST APIを呼び出します。
curl --request POST \ https://${DATABRICKS_HOST}/api/2.0/sql/statements/ \ --header "Authorization: Bearer ${DATABRICKS_TOKEN}" \ --header "Content-Type: application/json" \ --data '{ "warehouse_id": "'"$DATABRICKS_SQL_WAREHOUSE_ID"'", "catalog": "samples", "schema": "tpch", "statement": "SELECT * FROM hive_metastore.japan_covid_takaakiyayoidatabrickscom.covid_cases LIMIT 10" }' | jq
以下のレスポンスが返ってきます。
JSON
{
"statement_id": "01edbd4f-8398-1304-a164-c5f1d85fbb8a",
"status": {
"state": "SUCCEEDED"
},
"manifest": {
"format": "JSON_ARRAY",
"schema": {
"column_count": 5,
"columns": [
{
"name": "Prefecture",
"type_text": "STRING",
"type_name": "STRING",
"position": 0
},
{
"name": "Cases",
"type_text": "BIGINT",
"type_name": "LONG",
"position": 1
},
{
"name": "date_timestamp",
"type_text": "TIMESTAMP",
"type_name": "TIMESTAMP",
"position": 2
},
{
"name": "pref_no",
"type_text": "INT",
"type_name": "INT",
"position": 3
},
{
"name": "Area",
"type_text": "STRING",
"type_name": "STRING",
"position": 4
}
]
},
"total_chunk_count": 1,
"chunks": [
{
"chunk_index": 0,
"row_offset": 0,
"row_count": 10
}
],
"total_row_count": 10
},
"result": {
"chunk_index": 0,
"row_offset": 0,
"row_count": 10,
"data_array": [
[
"Hokkaido",
"24",
"2022-01-01T00:00:00.000Z",
"1",
"北海道地方"
],
[
"Hokkaido",
"6",
"2022-01-02T00:00:00.000Z",
"1",
"北海道地方"
],
[
"Hokkaido",
"15",
"2022-01-03T00:00:00.000Z",
"1",
"北海道地方"
],
[
"Hokkaido",
"30",
"2022-01-04T00:00:00.000Z",
"1",
"北海道地方"
],
[
"Hokkaido",
"60",
"2022-01-05T00:00:00.000Z",
"1",
"北海道地方"
],
[
"Hokkaido",
"62",
"2022-01-06T00:00:00.000Z",
"1",
"北海道地方"
],
[
"Hokkaido",
"98",
"2022-01-07T00:00:00.000Z",
"1",
"北海道地方"
],
[
"Hokkaido",
"148",
"2022-01-08T00:00:00.000Z",
"1",
"北海道地方"
],
[
"Hokkaido",
"99",
"2022-01-09T00:00:00.000Z",
"1",
"北海道地方"
],
[
"Hokkaido",
"95",
"2022-01-10T00:00:00.000Z",
"1",
"北海道地方"
]
]
}
}
REST APIを使ってアプリケーションを構築するケースは多いと思いますので、こちらのREST APIをご活用いただくことで柔軟にデータアプリケーションを構築いいただけるかと思います。ぜひご活用ください!