1. TOP
  2. PRODUCT
  3. SQL Suggest API

SQL Suggest APIは、日本語の質問文をSQLに変換するプロダクトです。
SQLが書けなくても、質問文を入力すればデータベースになげるクエリを得ることができます。

DETAIL

SQL Suggest API は Seq2Seq の応用タスクであり、機械翻訳の分野で発展した技術です。
質問文とSQLの組み合わせを大量に学習させることで、未知の質問文に対してもSQLを予測することができる学習器です。
汎用的な学習器ではなく、テーブル定義にあわせてデータセットを準備することで高い精度の学習器が獲得できます。

NOTES

個人情報について:
  他人の名称・メールアドレス・住所・電話番号など個人を特定しうる情報はアップロードしないでください。

推奨ブラウザについて:
  本ページはGoogle Chromeを推奨しています。
  Google Chrome以外のブラウザでは正しく作動しないケースがあります。

REFERENCE

  • predict
  • dataset_URL
  • create_model
  • model_status

SQL Suggest API (predict)

文章からSQLへ翻訳するAPIです。 入力された文章を意図するSQLに変換し、クエリを返します。

デフォルトモデルとして、日付、地域、気温、湿度をカラムに持つテーブルを想定したものが利用できます。
想定しているテーブルの定義については SAMPLE REQUEST の predict を参照ください。


エンドポイント

URL:
https://api.a3rt.recruit-tech.co.jp/sql_suggest/v1/predict
メソッド:
GET
No. エンドポイント 説明
1 predict パラメータとして与えられた文章を指定されたモデルで、予測SQLを返答します

リクエストパラメータ

No. パラメータ名 説明 値サンプル 制約 必須
1 apikey APIキーを指定します AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 半角英数字
2 model_id モデルIDを指定します
defaultを指定すると天気情報を返すSQLを利用できます。
default レスポンス ContentType は
半角英数字・ハイフン
3 text 予測したいテキストを指定します 今日の東京の天気は 全角/半角文字列

レスポンスフィールド

 
No. 説明 値サンプル 返却条件 複数
項目
1 status 処理ステータス 0 int 常に返却 -
2 message メッセージ ok string 常に返却 -
3 sql 結果 SELECT temperature FROM <schema>.<table> WHERE dt = <date> AND location = 'Tokyo' ; seting 常に返却 -

ステータスコード / メッセージ

No. status HTTP
status
message 返却条件
1 0 200 ok 正常応答
2 1000 400 apikey is null APIキー未指定
3 1001 400 apikey not found APIキーが見つからない
4 1002 400 deleted account 退会済み
5 1003 400 temporary account アカウント未承認
6 1010 400 server not found サーバが見つからない
7 1011 400 server parameter error サーバ設定エラー
8 1030 403 access deny アクセス拒否
9 1400 400 bad request リクエストパラメータが不正
10 1404 404 not found 指定したオブジェクト見つからない
11 1405 405 method not allowed メソッドが正しくない
12 1413 413 request entity too long リクエストパラメータの値が長すぎる
13 1500 500 internal server error API処理で異常が発生しました

制限事項

API実行に関する制限事項

同一 API Key で一度に学習できるモデルは一つまでです

ファイルに関する制限事項(dataset_url実行時のみ)
データ行数:
ヘッダー含め100行以上、1万行以内
各レコードのテキスト文字数:
1000文字以内かつ500単語以内
エンコーディング:
UTF-8

ブラウザによるファイルのアップロードは、今後対応予定です

SQL Suggest API (dataset)

ユーザー独自モデル作成用のAPIです。
datasetではモデル作成に使う学習データを配置するパスを返却します。

エンドポイント

URL:
https://api.a3rt.recruit-tech.co.jp/sql_suggest/v1/dataset
メソッド:
POST
No. エンドポイント 説明
1 dataset 所定のファイル配置場所とdataset_idを返却します。

リクエストパラメータ

No. パラメータ名 説明 値サンプル 制約 必須
1 apikey APIキーを指定します AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 半角英数字

レスポンスフィールド

No. フィールド名 説明 値サンプル 返却条件 複数項目
1 status 処理ステータス 0 int 常に返却 -
2 message メッセージ ok string 常に返却 -
3 dataset_id データセットID xxxxxxxxxxx string 常に返却 -
4 dataset_url データセットURL 配置先URL string 常に返却 -

ステータスコード / メッセージ

No. status HTTP
status
message 返却条件
1 0 200 ok 正常応答
2 1000 400 apikey is null APIキー未指定
3 1001 400 apikey not found APIキーが見つからない
4 1002 400 deleted account 退会済み
5 1003 400 temporary account アカウント未承認
6 1010 400 server not found サーバが見つからない
7 1011 400 server parameter error サーバ設定エラー
8 1030 403 access deny アクセス拒否
9 1400 400 bad request リクエストパラメータが不正
10 1405 405 method not allowed メソッドが正しくない
11 1500 500 internal server error API処理で異常が発生しました

制限事項

アップロードするファイルに関する制限事項

同一 API Key で一度に学習できるモデルは一つまでです

データサイズ:
5MB以下
データ行数:
100行以上、1万行以内

ファイルフォーマット

学習データ(アップロードファイル)

  • 日本語の文章が書かれたテキストファイル
  • 文字コード:UTF-8
  • CSV形式のテキストファイル
  •  
    1. 改行文字 LF "\n" のみ対応となります
     
    2. カンマ "," を含む文字は指定は出来ません
     
    3. 行ヘッダあり(1行目に text, sqlが必要)
No. フィールド名 説明 値サンプル
1 text 学習テキスト <date>の温度は何だっけ
2 sql 予測SQL SELECT temperature WHERE dt = <date>

データフォーマット

日付形式
textに対象となる文字 ( 今日・今・本日、昨日・先日、一昨日、N日前、YYYY年MM月DD日 形式 ) が含まれる場合、
 
SQLにて<date> や <date_from> ・ <date_to> などdateという文字へ変換されます。
SQL構成
SELECT,WHEREの構成をSQL文として学習データを作成してください。
 
FROM句は自動で<schema>.<table>が入ります。

SQL Suggest API (create model)

ユーザー独自モデル作成用のAPIです。
modelでは配置済みのデータセットに対して学習を起動させます。

エンドポイント

URL:
https://api.a3rt.recruit-tech.co.jp/sql_suggest/v1/model
メソッド:
POST
No. エンドポイント 説明
1 model パラメータとして指定されたデータセットに対してユーザー独自モデルを作成します。

リクエストパラメータ

No. パラメータ名 説明 値サンプル 制約 必須
1 apikey APIキーを指定します AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 半角英数字
2 dataset_id データセットIDを指定します
(datasetでレスポンスとして受けたもの)
xxxxxxxxxxx 半角英数字・ハイフン

レスポンスフィールド

No. フィールド名 説明 値サンプル 返却条件 複数項目
1 status 処理ステータス 0 int 常に返却 -
2 message メッセージ ok string 常に返却 -
3 model_id モデルID xxxxxxxxxx string 常に返却 -

ステータスコード / メッセージ

No. status HTTP
status
message 返却条件
1 0 200 ok 正常応答
2 1000 400 apikey is null APIキー未指定
3 1001 400 apikey not found APIキーが見つからない
4 1002 400 deleted account 退会済み
5 1003 400 temporary account アカウント未承認
6 1010 400 server not found サーバが見つからない
7 1011 400 server parameter error サーバ設定エラー
8 1030 403 access deny アクセス拒否
9 1400 400 bad request リクエストパラメータが不正
10 1400 400 train data file not found 学習データファイルが見つからない
11 1400 400 bad train data file 学習データファイルの中身が形式が不正
12 1400 400 train data file size exceeds the size limit 学習データサイズが大きすぎるか小さすぎる
13 1403 403 order already exist すでに順番待ちしています
14 1404 404 not found 指定したオブジェクト見つからない
15 1405 405 method not allowed メソッドが正しくない
16 1413 413 request entity too long リクエストパラメータの値が長すぎる
17 1500 500 internal server error API処理で異常が発生しました

制限事項

API実行に関する制限事項

同一 API Key で一度に学習できるモデルは一つまでです

SQL Suggest API (get model status)

ユーザー独自モデル作成用のAPIです。
check_statusではmodelで作成を開始したモデルの状況を確認することができます。

エンドポイント

URL:
https://api.a3rt.recruit-tech.co.jp/sql_suggest/v1/check_status
メソッド:
GET
No. エンドポイント 説明
1 check_status パラメータとして指定されたモデルのステータスを返却します。

リクエストパラメータ

No. パラメータ名 説明 値サンプル 制約 必須
1 apikey APIキーを指定します AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 半角英数字
2 model_id モデルIDを指定します
(modelでレスポンスとして受けたもの)
xxxxxxxxxx 半角英数字・ハイフン

レスポンスフィールド

No. フィールド名 説明 値サンプル 返却条件 複数項目
1 status 処理ステータス 0 int 常に返却 -
2 message メッセージ ok string 常に返却 -
3 model_status モデルステータス
pending: 学習が予約されている状態
running: 学習中の状態
finish: 学習が完了し、suggest できる状態
error: 学習が失敗した状態

finishの状態になればそのmodel_idをsuggestで指定することができます
running string 常に返却 -

ステータスコード / メッセージ

No. status HTTP
status
message 返却条件
1 0 200 ok 正常応答
2 1000 400 apikey is null APIキー未指定
3 1001 400 apikey not found APIキーが見つからない
4 1002 400 deleted account 退会済み
5 1003 400 temporary account アカウント未承認
6 1010 400 server not found サーバが見つからない
7 1011 400 server parameter error サーバ設定エラー
8 1030 403 access deny アクセス拒否
9 1400 400 bad request リクエストパラメータが不正
10 1404 404 not found 指定したオブジェクト見つからない
11 1405 405 method not allowed メソッドが正しくない
12 1500 500 internal server error サーバ処理中に想定外のエラーが発生

制限事項

API実行に関する制限事項

同一 API Key で一度に学習できるモデルは一つまでです

ファイルに関する制限事項(dataset_url実行時のみ)
データ行数:
ヘッダー含め100行以上、1万行以内
各レコードのテキスト文字数:
1000文字以内かつ500単語以内
エンコーディング:
UTF-8

ブラウザによるファイルのアップロードは、今後対応していく予定です

モデル作成インスタンスに関する制限事項(create_model実行時のみ)

バージョンv1では、最大3並列までとなります

3並列すべてのインスタンスにリクエストがきている場合は、いずれかの学習が完了次第順次割り当てになります。モデル作成に時間がかかることもありますがご了承ください。

SAMPLE REQUEST

  • predict
  • dataset_URL
  • create_model
  • model_status

前提条件:
  APIキーを事前に取得している
  curlコマンドが実行できる環境がある

Field Type Note.
dt date
location varchar(255) Tokyo、Osaka、Nagoya、Fukuoka、Hokkaido に対応
temperature float 気温
precipitation float 降水量

集合関数の例: 合計(SUM), 最大(MAX), 最小(MIN), 平均(AVG), データ数(COUNT)

1. 正常時(callback指定なし)

リクエスト curl -X POST -d apikey=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -d model_id=default --data-urlencode text='今日の東京の天気は' https://api.a3rt.recruit-tech.co.jp/sql_suggest/v1/predict
レスポンス

	{
		"status": 0,
		"message": "ok",
		"sql": "SELECT temperature FROM <schema>.<table> WHERE dt = <date> AND location = 'Tokyo' ;"
	}

							             				

前提条件:
  APIキーを事前に取得している
  curlコマンドが実行できる環境がある

1. ファイル配置のURLとデータセットIDを取得する

リクエスト curl -X POST -d apikey=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA https://api.a3rt.recruit-tech.co.jp/sql_suggest/v1/dataset
レスポンス

	{
		“status”: 0,
		"message": "ok",
		“dataset_id”: “xxxxxxxxxxx”,
		“dataset_url”: “https://・・・”
	  }

							             			

2. ローカルにあるファイルをdataset_urlに配置する

リクエスト curl -D - -X PUT --upload-file <filepath> '<dataset_url>'
レスポンス

	HTTP/1.1 200 OK
	x-amz-id-2: JoZeEY2C95dJJUMo1ebTG2B+BWvmv4EYn4pAzOPXvMILRYmTzOSyKxcZR4+lec7oHOjC2Gv8AP4=
	x-amz-request-id: C11436677B8AEE17
	Date: Mon, 20 Feb 2017 10:22:46 GMT
	ETag: "892d7981b3f8bdf7de55f3d00f7cf0a3"
	Content-Length: 0
	Server: AmazonS3

									             	

前提条件:
  APIキーを事前に取得している
  curlコマンドが実行できる環境がある
  dataset APIを用いてdataset_idを取得済み
  学習用データをアップロード済み

1. 配置したデータセットに対して学習を開始する

リクエスト curl -X POST -d apikey=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -d dataset_id=xxxxxxxxxxx https://api.a3rt.recruit-tech.co.jp/sql_suggest/v1/model
レスポンス

{
	"status": 0,
	"message": "ok",
	“model_id”: “xxxxxxxxxx”
}

						               				

前提条件:
  APIキーを事前に取得している
  curlコマンドが実行できる環境がある
  model APIを使用してmodel_idを取得済み

1. 学習しているモデルのステータスを確認する

リクエスト curl -X GET 'https://api.a3rt.recruit-tech.co.jp/sql_suggest/v1/check_status?apikey=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&model_id=xxxxxxxxxx'
レスポンス

{
	"status": 0,
	"message": "ok",
	“model_status”: “finish”
}