原生SQL查詢
3 原生SQL查詢
原生SQL查詢類似SQL查詢,是通過在文字輸入區中直接輸入各類資料庫語法運算式定義查詢規則和內容的一種資料集。
一般在SQL查詢嵌套執行性能低或是SQL查詢不支援的查詢語句(如Sybase資料庫子查詢不支援Order by),我們可以使用原生SQL查詢來實現。
原生SQL查詢與SQL查詢的主要區別如下:
SQL查詢是一類封裝結構的原生SQL查詢語句,在解析SQL語句過程中對最外層進行了包裝:如“select area from area”解析後的執行語句為“select T84.area as F85 from (select area from area) T84”;而原生SQL查詢沒有對最外層進行包裝,是按照“所見即所得”的方式進行解析並執行。
SQL查詢不支援“select * from”的語句;而原生SQL查詢支援該語句。
操作入口
在平台管理>平台資源節點及其目錄節點上右鍵選擇新建查詢>原生SQL查詢,或在資源快捷按鈕區域選擇資料集>原生SQL查詢,則彈出選擇資料來源視窗,根據需要選擇資料來源,則進入建立“原生SQL查詢”介面。

功能說明
當原生SQL查詢中通過“select * from”語句返回結果集時,建議先通過“原生SQL查詢視窗>工作區>輸出欄位”的右鍵功能表選擇檢測輸出欄位命令檢測出輸出欄位,再儲存當前原生SQL查詢,確保在資料集定義的目錄資源樹上可以看到該查詢的輸出結果。
原生SQL查詢中,在執行檢測輸出欄位時,會從連接的資料庫中讀取輸出欄位的資料類型。
原生SQL查詢支援在同資料來源下跨Schema進行查詢,但是必須確保連接該資料來源的使用者對進行查詢的Schema擁有相應的權限。
介面介紹

“原生SQL查詢”介面主要分為以下幾個區域:
可選資源區:該區列出了所有可被原生SQL查詢使用的資源。
SQL文字區:輸入原生SQL查詢運算式的區域。
屬性區:屬性區用於設定查詢相關資源的屬性。
工具列:列出了所有可用於編輯原生SQL查詢的工具按鈕。在“原生SQL查詢”介面中可以進行局部參數設定、參數預設值設定。
可選資源區
可選資源區列出了所有可被SQL查詢使用的資源。使用者只需將各資源拖到相應的區域,如將參數拖拉到where條件下和欄位進行關聯。
可選資源包含:參數、函數、使用者屬性。
顯示別名/名稱:該區針對“關係資料來源”、“聯合資料來源”和“指標資料來源”下的各資源:表、欄位、視圖、預存程序查詢、表副本和視圖副本,提供了“顯示名稱”和“顯示別名”的功能。預設以“別名”顯示。
模糊搜索:我們可以該區最下方的搜尋引擎對相關資源快速搜索定位。可以在搜索區輸入所需欄位的實際名稱或是別名進行模糊搜索。
SQL文字區
SQL文字區用於輸入SQL語句及其物件。
SQL查詢輸入的注意事項:
SQL查詢可以使用的資源:參數、函數、使用者屬性(使用時請用括弧括起來)
如果有多條語句,用分號和Enter隔開;
資料表關係視圖的定義對SQL查詢沒有作用;
資料行權限設定對SQL查詢沒有作用。
設定參數預設值,其在SQL查詢中的設定方法為:

工具列
工具列上放置一些常用功能按鈕。
工具列的按鈕說明如下表,對應的功能點擊超連結跳轉到詳細分析:
按鈕名稱
說明
儲存
儲存資料集到預設路徑。
另存為
儲存資料集到使用者指定路徑。
視圖
用於區域的顯示和隱藏。包含顯示/隱藏資源區、顯示/隱藏屬性區。
格式化SQL
對使用者編寫的SQL語句按照一定的格式進行展現,便於閱讀。
定義多重表頭
對SQL查詢的表頭進行修改增加,形成多重表頭。
參數佈局
調整參數在SQL查詢對應的報表中的位置。
Excel模板設定
把當前資料集的資料結果填充到使用者自訂的Excel範本中。
進階設定
用於設定當前資料集的快取策略和分頁策略。
預覽資料
對新建或修改的資料集進行預覽。
查看SQL
查看該資料集的SQL語句。
顯示估計的執行計畫
對資料庫內部的SQL執行過程進行的解釋。
資料抽取
用於將當前資料集的資料抽取到MPP。
屬性區
屬性區用於設定查詢相關資源的屬性。它主要包含兩個部分:查詢輸出區和屬性面板。
查詢輸出區:該區顯示所有資料集輸出的相關資源,該區通常與“屬性面板”結合起來用於對這些資源的屬性進行管理,包含:輸出欄位屬性、檢測輸出欄位、私有參數、輸出參數。
屬性面板:該區需要與“工作區”結合使用,按一下工作區中的任一資源,即在屬性面板中列出該資源的相關屬性資訊。使用者可以在屬性面板中重新設定資源的相關屬性。

輸出欄位
在查詢輸出區會列出所有的輸出欄位。如下圖,選中欄位,在下面屬性區可以對部分屬性進行設定。

下面是對欄位屬性的詳細說明:
對象
設定項
說明
輸出欄位
標識
欄位的全域唯一標識,由欄位類型和其ID號共同構成。不允許重新設定。
名稱
欄位的實際名稱。不允許重新設定。
別名
欄位的別名,即顯示的名字。允許重新設定。
描述
對欄位的相關描述,被用於其提示資訊中。允許重新設定。
資料類型
欄位的資料類型,主要包含:整數、浮點數、字串、日期、時間、日期時間、文字、物件、集合。允許重新設定。
資料格式
根據資料類型選擇輸出欄位的資料格式,該格式選項在“資料格式”中進行設定。允許重新設定。
排序
選擇是否對欄位進行排序,欄位的排序方式類型有:昇冪、降冪。
轉換規則
選擇是否對該欄位進行轉換規則,若設定轉換規則,其所選的轉換規則在“轉換規則”中定義。
檢測輸出欄位
新建的原生SQL查詢,必須要設定檢測輸出欄位,否則在右側"查詢輸出"面板上"輸出欄位"下的欄位顯示成了問號。
範例說明:
1、如下圖所示,新建一個"原生SQL查詢",我們可以看到右側的"查詢輸出"面板上"輸出欄位"下並沒有把所有的欄位列出來,而是顯示成了一個問號。同時在"預覽資料"時,看到的表格上也只有一列,列名也是問號。


2、我們在SQL編輯器中可能會輸入複雜的SQL語句,Synapse自身是無法解析SQL語句並自動判斷有哪些輸出欄位的。它只能利用資料庫的功能,先去執行該SQL語句,根據資料庫返回的結果集來判斷有哪些輸出欄位。因此,我們需要在"輸出欄位"節點上點擊滑鼠右鍵,然後點擊"檢測輸出欄位"功能表項目。

待輸入的SQL語句執行成功後,在"輸出欄位"節點下,就會列出所有的欄位。選擇某欄位,可以設定別名、資料格式,以及其他各種屬性。

Last updated
Was this helpful?