SQL查詢

2 SQL查詢

SQL查詢是通過在文字區中輸入SQL語句,來定義查詢規則和內容的一種資料集。對於熟悉SQL語句的技術人員來說,這是一個較為快捷建立的方式。

純SQL問題的解答:SQL查詢可以是純SQL語句,但是如果在SQL查詢中用到"參數"、"使用者屬性"、"系統函數"等系統資源,必須把資源拖到SQL語句對應的位置,不能手寫。包含這類資源的SQL查詢就不是純SQL。

嵌套問題的解答:SQL查詢需要嵌套運行。如文字語句select distinct Card_Type_Cd as c1 from debit_card,會變成 select T2.c1 as F4 from (select distinct Card_Type_Cd as c1 from debit_card) T2運行。這樣處理是因為在報表中需要對SQL做處理,如果使用SQL查詢不嵌套一層的話,就無法做到去修改原始的SQL查詢,這樣SQL查詢中的預覽資料和報表中的過濾、排序等功能就無法實現。

嵌套效率問題的解答:我們測試過SQL Server和MySQL,通過Explain看查詢優化,發現嵌套一層對效率不會有太大的影響。即上例兩個語句執行效率相差並不多,一個執行代價是0.366,嵌套後代價是0.367,相差只有0.1%。

操作入口

平台管理>平台資源節點及其目錄節點上右鍵選擇新建查詢>SQL查詢,或在資源快捷按鈕區域選擇資料集>SQL查詢,則彈出選擇資料來源視窗,根據需要選擇資料來源,則進入建立“原生SQL查詢”介面。

功能說明

  • 目前SQL查詢的創建只能基於資料來源創建。因此若是只使用SQL查詢創建報表,則不需要創建分析主題、語義層定義等操作。

  • 技術人員可以先在資料庫中寫好SQL並執行通過,然後把這個SQL語句複製到SQL查詢中,並從左側拖拉參數等物件到相應的位置。

  • 撰寫SQL查詢後,一定要進行檢測輸出欄位類型操作。

介面介紹

“SQL查詢”介面主要分為以下幾個區域:

  • 可選資源區:該區列出了所有可被SQL查詢使用的資源。

  • SQL文字區:該區為使用者撰寫SQL查詢運算式的區域。

  • 工具列:列出了所有可用於編輯SQL查詢的工具按鈕。

  • 屬性區:屬性區用於設定查詢相關資源的屬性。

可選資源區

可選資源區列出了所有可被SQL查詢使用的資源。使用者只需將各資源拖到相應的區域,如將參數拖拉到where條件下和欄位進行關聯。

可選資源包含:資料表欄位、計算欄位、篩檢程式、業務視圖欄位、參數、資料來源相關分析主題的業務屬性、函數、使用者屬性、其他查詢的欄位等。但是建議SQL語句先寫好,只對需要的物件如參數、使用者屬性、函數等進行拖拉。

顯示別名/名稱:該區針對“關係資料來源”、“聯合資料來源”和“指標資料來源”下的各資源:表、欄位、視圖、預存程序查詢、表副本和視圖副本,提供了“顯示名稱”和“顯示別名”的功能。預設以“別名”顯示。

模糊搜索資源。我們可以該區最下方的搜尋引擎對相關資源快速搜索定位。可以在搜索區輸入所需欄位的實際名稱或是別名進行模糊搜索。

SQL文字區

SQL文字區用於輸入SQL語句及其物件。

SQL查詢輸入的注意事項

  • SQL查詢可以使用的資源:表/視圖、欄位、參數、函數、使用者屬性(使用時請用括弧括起來)

  • 編寫SQL查詢時,支援拖動"參數"、"使用者屬性"、"系統函數"等物件,其他的建議手寫;

  • 不支援Select * from .....的寫法;

  • 如果有多條語句,用分號和Enter隔開;

  • 所有的Select欄位需要顯式給定一個別名,例如:select T1.fieldA FA from table T1。

  • 對欄位進行重命名時,注意各種資料庫使用方式跟平時使用的不同。如:SQL Server不需給別名加單引號,Oracle不需要加as和雙引號。

  • SQL查詢不能區分輸出欄位類型,預設設定所有輸出欄位都是字串型態,需要檢測輸出欄位類型。

  • 資料表關係視圖的定義對SQL查詢沒有作用;

  • 資料行權限設定對SQL查詢沒有作用。

  • 設定參數預設值,其在SQL查詢中的設定方法為:

工具列

工具列上放置一些常用功能按鈕。

工具列的按鈕說明如下表,對應的功能點擊超連結跳轉到詳細分析:

按鈕名稱

說明

儲存

儲存資料集到預設路徑。

另存為

儲存資料集到使用者指定路徑。

視圖

用於區域的顯示和隱藏。包含顯示/隱藏資源區、顯示/隱藏屬性區。

格式化SQL

對使用者編寫的SQL語句按照一定的格式進行展現,便於閱讀。

檢查輸出欄位規範

對輸出欄位按照規範進行檢查,列出不符合規範的欄位資訊。

定義多重表頭

對SQL查詢的表頭進行修改增加,形成多重表頭。

參數佈局

調整參數在SQL查詢對應的報表中的位置。

Excel模板設定

把當前資料集的資料結果填充到使用者自訂的Excel範本中。

進階設定

用於設定當前資料集的快取策略和分頁策略。

預覽資料

對新建或修改的資料集進行預覽。

查看SQL

查看該資料集的SQL語句。

顯示估計的執行計畫

對資料庫內部的SQL執行過程進行的解釋。

資料抽取

用於將當前資料集的資料抽取到MPP。

屬性區

屬性區用於設定查詢相關資源的屬性。它主要包含兩個部分:查詢輸出區和屬性面板。

  • 查詢輸出區:該區顯示資料集輸出的相關資源,該區通常與“屬性面板”結合起來用於對這些資源的屬性進行管理。包含:輸出欄位屬性、檢測輸出欄位類型、私有參數、輸出參數、警示設定。

  • 屬性面板:該區需要與“工作區”結合使用,按一下工作區中的任一資源,即在屬性面板中列出該資源的相關屬性資訊。使用者可以在屬性面板中重新設定資源的相關屬性。

輸出欄位

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

下面是對欄位屬性的詳細說明:

對象

設定項

說明

輸出欄位

標識

欄位的全域唯一標識,由欄位類型和其ID號共同構成。不允許重新設定。

名稱

欄位的實際名稱。不允許重新設定。

別名

欄位的別名,即顯示的名字。允許重新設定。

描述

對欄位的相關描述,被用於其提示資訊中。允許重新設定。

資料類型

欄位的資料類型,主要包含:整數、浮點數、字串、日期、時間、日期時間、文字、物件、集合。允許重新設定。

資料格式

根據資料類型選擇輸出欄位的資料格式,該格式選項在“資料格式”中進行設定。允許重新設定。

排序

選擇是否對欄位進行排序,欄位的排序方式類型有:昇冪、降冪。

轉換規則

選擇是否對該欄位進行轉換規則,若設定轉換規則,其所選的轉換規則在“轉換規則”中定義。

檢測輸出欄位類型

SQL查詢中的“輸出欄位”須通過右鍵功能表中的檢測輸出欄位類型功能將當前查詢中輸出欄位的資料類型從資料庫中讀取出來。

操作執行原因:

SQL查詢若是不進行檢測輸出欄位類型操作,則預設所有欄位類型都是字串類型。查詢一旦定義後,其所有輸出欄位的類型均預設為“字串”型,當輸出欄位與資料庫中相應欄位的資料類型不匹配時,會導致利用該SQL查詢創建報表後進行的分析失誤,因此需要使用者手動檢測輸出欄位類型。

執行步驟

選中輸出欄位節點,右鍵選擇檢測輸出欄位類型

如SQL查詢包含參數值,則會彈出自動檢測輸出欄位對話方塊。選擇參數值,點擊輸出欄位檢測按鈕。則會進行檢測操作。

執行結果:操作成功後,我們可以看到如下欄位類型發生變化,為欄位本身的類型。

Last updated

Was this helpful?