全部產品
Search
文件中心

:文法規範

更新時間:Jul 25, 2025

使用RDS SQLFlow語句可以高效地進行模型訓練、預測和評估。本文將對RDS SQLFlow的文法規範進行詳細介紹。

簡介

使用RDS SQLFlow語句可以高效地進行模型訓練、預測和評估,無需編寫複雜的Python代碼。RDS SQLFlow將自動解析這些語句,並將其轉換為等效的Python程式,顯著簡化了模型訓練流程。RDS SQLFlow的文法覆蓋了多種功能,主要包括:

例如,使用鳶尾花資料集(iris)並訓練TensorFlow的DNNClassifier演算法。資料集中,前四列代表特徵,表示每株鳶尾花的植物學形狀,最後一列為標籤,代表每株鳶尾花的亞種。

sepal_length

sepal_width

petal_length

petal_width

class

6.4

2.8

5.6

2.2

2

5.0

2.3

3.3

1.0

1

...

...

...

...

...

通過以下簡單的RDS SQLFlow語句,您可以輕鬆訓練一個具有兩個隱藏層且每層包含十個隱藏單元的DNNClassifier模型。訓練完成後,模型將被儲存至表sqlflow_models.my_dnn_model,以便後續進行預測。RDS SQLFlow將自動解析這些語句,並將其轉換為等效的Python程式,顯著簡化了模型訓練流程。

SELECT * FROM iris.train
TO TRAIN DNNClassifier
WITH model.hidden_units = [10, 10], model.n_classes = 3, train.epoch= 10
COLUMN sepal_length, sepal_width, petal_length, petal_width
LABEL class
INTO sqlflow_models.my_dnn_model;

訓練文法

RDS SQLFlow訓練語句由SELECTTRAINCOLUMNLABELINTO子句構成。

SELECT select_expr [, select_expr ...]
FROM table_references
  [WHERE where_condition]
  [LIMIT row_count]
TO TRAIN model_identifier
[WITH
  model_attr_expr [, model_attr_expr ...]
  [, train_attr_expr ...]]
COLUMN column_expr [, column_expr ...]
  | COLUMN column_expr [, column_expr ...] FOR column_name
    [COLUMN column_expr [, column_expr ...] FOR column_name ...]
[LABEL label_expr]
INTO table_references;

SELECT子句

SELECT子句用於從指定的表中檢索資料。

文法:

SELECT select_expr [, select_expr ...]
FROM table_references
  [WHERE where_condition]
  [LIMIT row_count]

參數說明:

參數

說明

select_expr

需要檢索的資料列,必須至少包含一個。

table_references

需要檢索的表。

where_condition

用於拆選行的運算式。

row_count

需要檢索的最大行數。

樣本:

例如,在樣本資料集(iris.train)上快速訓練一個二元分類器模型:

SELECT * FROM iris.train
WHERE class = 0 OR class = 1
LIMIT 1000
TO TRAIN ...

TRAIN子句

TRAIN子句用於描述特定的模型類型及其訓練演算法。

文法:

TO TRAIN model_identifier
WITH
  model_attr_expr [, model_attr_expr ...]
  [, train_attr_expr ...]

參數說明:

參數

說明

model_identifier

模型類型,例如DNNClassifier。更多的模型請參見模型及演算法

model_attr_expr

模型屬性,例如model.n_classes = 3

train_attr_expr

訓練屬性,例如train.epoch = 10

樣本:

例如,訓練一個具有兩個隱藏層、每層包含十個隱藏單元、訓練輪次為10的DNNClassifier模型:

SELECT * FROM iris.train
TO TRAIN DNNClassifier
WITH
  model.hidden_units = [10, 10],
  model.n_classes = 3,
  train.epoch = 10
...

COLUMN子句

COLUMN子句用於指定訓練特徵的欄位名稱,以及其可選的預先處理方法。

文法:

COLUMN column_expr [, column_expr ...]
  | COLUMN column_expr [, column_expr ...] FOR column_name
    [COLUMN column_expr [, column_expr ...] FOR column_name ...]

參數說明:

參數

說明

column_expr

欄位名稱及其內容的預先處理方式,例如sepal_length,DENSE(dense, 3)

column_name

模型輸入的特徵列名稱。

樣本:

例如,使用欄位sepal_length、sepal_width、petal_length和petal_width作為特徵:

SELECT * FROM iris.train
TO TRAIN DNNClassifier WITH
  model.hidden_units = [10, 10],
  model.n_classes = 3,
  train.epoch = 10
COLUMN sepal_length, sepal_width, petal_length, petal_width
...

LABEL子句

LABEL子句用於指示訓練標籤的欄位名稱,及其可選的預先處理方法。

文法:

LABEL label_expr

參數說明:

參數

說明

label_expr

欄位名稱以及對欄位內容的預先處理方法,例如class

樣本:

SELECT * FROM iris.train
TO TRAIN DNNClassifier WITH
  model.hidden_units = [10, 10],
  model.n_classes = 3,
  train.epoch = 10
COLUMN sepal_length, sepal_width, petal_length, petal_width
LABEL class
...

INTO子句

INTO子句用於指定儲存訓練好的模型的表名。

文法:

INTO table_references

參數說明:

參數

說明

table_references

儲存訓練好的模型的表名。

樣本:

SELECT * FROM iris.train
TO TRAIN DNNClassifier WITH
  model.hidden_units = [10, 10],
  model.n_classes = 3,
  train.epoch = 10
COLUMN sepal_length, sepal_width, petal_length, petal_width
LABEL class
INTO sqlflow_models.my_dnn_model;

預測文法

RDS SQLFlow預測語句由SELECTPREDICTUSING子句組成。

SELECT select_expr [, select_expr ...]
FROM table_references
  [WHERE where_condition]
  [LIMIT row_count]
TO PREDICT result_table_reference
[WITH
  attr_expr [, attr_expr ...]]
USING model_table_reference;
重要

TO PREDICT之前的SELECT子句的資料結構必須與訓練文法中TO TRAIN操作所使用的資料結構保持一致,以確保在預測和解釋過程中所使用的資料結構與訓練階段所使用的資料結構相符。

PREDICT和USING子句

PREDICT用於描述預測結果寫入的表,USING用於描述載入模型的表,WITH則用於描述進行預測所需的必要配置。

文法:

TO PREDICT result_table_reference
[WITH
  attr_expr [, attr_expr ...]]
USING model_table_reference;

參數說明:

參數

說明

result_table_reference

儲存預測結果的表。

attr_expr

配置屬性,例如predict.batch_size = 1

model_table_reference

預測時從中載入模型的表。

樣本:

例如,使用儲存在表sqlflow.my_dnn_model中的模型將預測結果儲存到表iris.predict的列中:

SELECT * FROM iris.train
TO PREDICT iris.predict.class
USING sqlflow.my_dnn_model;

解釋文法

RDS SQLFlow解釋語句由一系列SELECTEXPLAINUSING語句組成。

SELECT select_expr [, select_expr ...]
FROM table_references
  [WHERE where_condition]
  [LIMIT row_count]
TO EXPLAIN model_table_reference
[WITH
  attr_expr [, attr_expr ...]]
[USING explainer];
重要

TO EXPLAIN之前的SELECT子句的資料結構必須與訓練文法TO TRAIN操作所使用的資料結構保持一致。

EXPLAINUSING子句

EXPLAIN子句用於指定模型載入的表以及必要的配置屬性。USING子句用於指定解譯器。

文法:

TO EXPLAIN model_table_reference
[WITH
  attr_expr [, attr_expr ...]]
USING explainer;

參數說明:

參數

說明

model_table_reference

預測時從中載入模型的表。

attr_expr

配置屬性,例如summary.plot_type="bar"

explainer

解譯器的類型,例如TreeExplainer

樣本:

例如,使用TreeExplainer對儲存在sqlflow_models.my_xgb_regression_model的模型進行解釋,並按排序次序繪製分析結果:

SELECT * FROM boston.train
TO EXPLAIN sqlflow_models.my_xgb_regression_model
WITH
    summary.sort=True
USING TreeExplainer;

評估文法

RDS SQLFlow評估語句由SELECTEVALUATEINTO語句組成。

SELECT select_expr [, select_expr ...]
FROM table_references
  [WHERE where_condition]
  [LIMIT row_count]
TO EVALUATE model_table_reference
[WITH
  attr_expr [, attr_expr ...]]
LABEL class
INTO evaluate_result_table;
重要
  • TO EVALUATE之前的SELECT子句的資料結構必須與訓練文法TO TRAIN操作所使用的資料結構保持一致。

  • 根據機器學習理論,使用訓練資料集進行評估是不恰當的,否則可能會得到一個極為理想化的評估結果。

EVALUATE和INTO子句

TO EVALUATE子句用於指定待評估的模型,以及將使用哪些指標進行評估。INTO子句用於指定儲存評估結果的表。

文法:

TO EVALUATE model_table_reference
[WITH
  attr_expr [, attr_expr ...]]
INTO evaluate_result_table;

參數說明:

參數

說明

model_table_reference

待評估的模型,其評估結果代表了該模型在預測新資料時的效能表現。

attr_expr

評估時的屬性。

您可以通過設定validation.metrics來指定哪些指標將輸出到結果表,例如validation.metrics="Accuracy,AUC"

evaluate_result_table

儲存評估結果的表。

樣本:

SELECT * FROM iris.test 
TO EVALUATE sqlflow_models.my_dnn_model 
WITH validation.metrics = Accuracy 
LABEL class  
INTO sqlflow_models.evaluate_result_table;

最佳化文法

RDS SQLFlow使用TO MAXIMIZETO MINIMIZE子句來描述和解決數學規劃問題。

文法:

SELECT select_expr [, select_expr ...]
FROM table_references
  [WHERE where_condition]
  [LIMIT row_count]
TO MAXIMIZE|MINIMIZE
  objective_expr
CONSTRAINT
  constraint_expr [GROUP BY column_name]
  [, constraint_expr [GROUP BY column_name]...]
WITH
  variables="variable_value(column_name, ...)"
  var_type="Integers|Reals|Binary|NonNegativeIntegers|..."
[USING solver_name]
INTO result_table_name;

樣本:

SELECT c1, c2, c3 FROM my_db.my_table
TO MAXIMIZE SUM(x * c1)
CONSTRAINT
    SUM(x) <= c2 GROUP BY c1
    x <= 3
WITH
    variables="x(c3)",
    var_type="NonNegativeIntegers"
USING glpk
INTO my_db.my_result_table;

參數說明:

參數

說明

TO MAXIMIZE

objective_exprSUM(x * c1),表示要最大化SUM(x * c1)的值。

CONSTRAINT

  • SUM(x) <= c2 GROUP BY c1GROUP BY意味著對於每一個不同的c1,都會有一個約束運算式SUM(x) <= c2

  • x <= 3:對於每一個x都滿足x <= 3

WITH

  • variables=x(c3):表示最佳化目標列為c3x表示需要求解的變數值。

  • var_type="NonNegativeIntegers":表示變數x為非負整數,變數支援的資料類型如下:

    • Binary:變數值為0或者1。

    • Integers:變數值為整數。

    • PositiveIntegersNegativeIntegers:變數值為正整數或負整數。

    • NonPositiveIntegersNonNegativeIntegers:變數值為非正整數或非負整數。

    • Reals:變數值為實數。

    • PositiveRealsNegativeReals:變數值為正實數或負實數。

    • NonPositiveRealsNonNegativeReals:變數值為非正或非負實數。

USING

glpk:示使用glpk去求解這個問題。RDS SQLFlow支援:

  • GLPK:用於解決線性規劃問題。

  • BARON:用於解決非線性規劃問題。

INTO

my_db.my_result_table:儲存求解結果的表。

相關文檔

RDS Custom簡介