使用 Amazon Redshift 編寫查詢 - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Amazon Redshift 編寫查詢

您可以在編輯器中輸入查詢,或從查詢清單中選取已儲存的查詢,然後選擇執行

系統預設會設定限制 100 個以將結果限制為 100 個資料列。您可以關閉此選項,以傳回較大的結果集。如果您關閉此選項,則如果您想要避免非常大型的結果集,則可以在SQL陳述式中包含 LIMIT選項。如需詳細資訊,請參閱 Amazon Redshift 資料庫開發人員指南 中的 ORDER BY 子句

若要在結果區域中顯示查詢計劃,請開啟解釋。開啟解釋圖形,讓結果也顯示以圖形表示的解釋計劃。

若要將查詢儲存至查詢資料夾,請選擇儲存

如果查詢成功,則會出現成功訊息。如果查詢傳回資訊,結果會顯示在結果區段中。如果結果數目超過顯示區域,結果區域的頂端會出現數字。您可以選擇數字以顯示連續的結果頁面。

您可以為每個資料欄篩選和排序結果。若要在結果資料欄標頭中輸入篩選條件,請將游標暫留在該資料欄上,以查看可供您輸入資料欄篩選條件的選單 ( Filter menu )。

如果查詢中包含錯誤,查詢編輯器 v2 會在結果區域中顯示錯誤訊息。該訊息會提供有關如何更正查詢的資訊。

您可以在結果區域中使用內容 (右鍵) 選單來匯出或複製查詢結果,如下所示:

  • 選擇匯出結果集JSONCSV,將整組資料列結果下載至檔案。結果集中的資料列數目可能會受到限制選項或查詢中的SQLlimit子句的限制。所下載結果集的大小上限為 5 MB。

  • 如果未選取任何資料列,請選擇匯出目前頁面,然後選擇 JSONCSV將資料列從目前頁面下載至檔案。

  • 如果選取資料列,請選擇匯出選取的資料列,然後選擇 JSONCSV 將選取的資料列下載至檔案。

  • 如果已選取資料列,則請選擇複製資料列,以將選取的資料列複製到剪貼簿。

  • 如果已選取資料列,則請選擇複製具有標頭的資料列,以將具有資料欄標頭的所選資料列複製到剪貼簿。

您也可以使用 Windows 上的快速鍵 Ctrl+C 或 macOS 上的 Cmd+C 將資料從目前的結果頁面複製到剪貼板。如果未選取任何資料列,則會將焦點所在的儲存格複製到剪貼簿。如果已選取資料列,則會將選取的資料列複製到剪貼簿。

若要新增查詢標籤,請選擇 New query tab 圖示,然後選擇編輯器,其會出現在具有查詢標籤的資料列中。查詢標籤不一定會使用 Isolated session。使用隔離工作階段時,SQL命令的結果,例如在一個編輯器索引標籤中建立暫存資料表,在另一個編輯器索引標籤中看不到。當您在查詢編輯器 v2 中開啟編輯器標籤時,預設會使用隔離工作階段。

若要執行查詢
  1. 在查詢區域中,執行以下其中一項操作:

    • 輸入查詢。

    • 貼上您複製的查詢。

    • 選擇查詢資料夾、開啟內容選單 (右鍵) 儲存的查詢,然後選擇開啟查詢

  2. 確認您為SQL計劃執行的 選擇了正確的叢集工作群組 ,以及資料庫值。

    最初,您可以在樹狀檢視中選擇叢集工作群組。也請在樹狀檢視中選擇資料庫

    您可以使用每個編輯器標籤的隔離工作階段標頭附近的下拉式控制項,在每個編輯器標籤內變更叢集工作群組資料庫

    針對每個編輯器索引標籤,您可以選擇是否要在隔離工作階段 SQL中執行 。 隔離工作階段有自己的資料庫連線。使用它執行與其他查詢編輯器工作階段隔離SQL的 。如需連線的相關資訊,請參閱開啟查詢編輯器 v2

  3. 選擇執行

    隨即會開啟結果區域,並顯示查詢結果。

顯示查詢的解釋計劃
  1. 選取查詢。

  2. 開啟解釋

    預設也會開啟解釋圖形

  3. 選擇執行

    查詢便會開始執行,解釋計劃則會顯示在查詢的結果區域中。

查詢編輯器 v2 支援以下功能:

  • 您可以在一個查詢索引標籤中使用多個SQL陳述式撰寫查詢。系統會依序執行查詢,並針對每個查詢開啟多個結果標籤。

  • 您可以使用工作階段變數和暫存資料表編寫查詢。

  • 您可以使用以 ${parameter} 指定的可取代參數來編寫查詢。您可以使用多個可替換參數編寫SQL查詢,並在SQL陳述式的多個位置使用相同的參數。

    在執行查詢時,系統會顯示一個視窗供您輸入參數值。每次執行查詢時,系統都會顯示視窗供您輸入參數值。

    如需範例,請參閱範例:銷售額大於特定參數

  • 系統會自動為查詢建立版本。您可以選擇較早的查詢版本來執行。

  • 不需要等待查詢完成,就能繼續您的工作流程。即使您關閉查詢編輯器,查詢仍會繼續執行。

  • 在編寫查詢時,系統支援自動完成結構描述、資料表和資料欄名稱。

SQL 編輯器支援下列功能:

  • 用於 的開始和結束括號SQL具有相符的顏色。編輯器中會顯示垂直線以幫助您讓括號相符。

  • 您可以摺疊和展開 的區段SQL。

  • 您可以在 中搜尋和取代文字SQL。

  • 您可以使用快速鍵來執行數個常見的編輯任務。

  • SQL 編輯器中會反白顯示錯誤,以方便找出問題區域的位置。

如需編輯器功能的示範,請觀看下列影片。

查詢範例

您可以在下面找到可以執行的各種查詢類型的描述。

其中許多查詢所使用的資料來自 tickit 範例結構描述。如需載入範例 tickit 資料的相關資訊,請參閱將資料載入到資料庫。如需 tickit 範例資料的相關資訊,請參閱《Amazon Redshift 資料庫開發人員指南》中的範例資料庫

當您執行這些範例查詢時,請確認您在編輯器中選擇了正確的資料庫,例如 sample_data_dev

範例:設定工作階段變數

下列命令會針對工作階段將 search_path 伺服器組態參數設定為「public]。如需詳細資訊,請參閱 Amazon Redshift 資料庫開發人員指南 中的 SETsearch_path

set search_path to public;

範例:按總銷售額排序的最佳活動

下列查詢會尋找銷售額最多的活動。

select eventname, count(salesid) totalorders, sum(pricepaid) totalsales from sales, event where sales.eventid=event.eventid group by eventname order by 3;

以下是結果的部分清單。

eventname totalorders totalsales White Christmas 20 9352 Joshua Radin 38 23469 Beach Boys 58 30383 Linda Ronstadt 56 35043 Rascal Flatts 76 38214 Billy Idol 67 40101 Stephenie Meyer 72 41509 Indigo Girls 57 45399 ...

範例:銷售額大於特定參數

下列查詢會尋找銷量大於 ${numberoforders} 所指定參數的銷售額。當參數值為 7 時,結果有 60 列。當您執行查詢時,查詢編輯器 v2 會顯示執行查詢表單視窗,以收集SQL陳述式中參數的值。

select salesid, qtysold from sales where qtysold > ${numberoforders} order by 2;

以下是結果的部分清單。

salesid qtysold 20005 8 21279 8 130232 8 42737 8 74681 8 67103 8 105533 8 91620 8 121552 8 ...

範例:建立暫存資料表

下列陳述式會透過選取「sales」和「event」資料表中的資訊來建立暫存資料表「eventsalestemp」

create temporary table eventsalestemp as select eventname, count(salesid) totalorders, sum(pricepaid) totalsales from sales, event where sales.eventid=event.eventid group by eventname;

範例:從暫存資料表中選取

下列陳述式會從按訂單總量排序的暫存資料表「eventsalestemp」中選取活動、訂單總量和銷售總額。

select eventname, totalorders, totalsales from eventsalestemp order by 2;

以下是結果的部分清單。

eventname totalorders totalsales White Christmas 20 9352 Joshua Radin 38 23469 Martina McBride 50 52932 Linda Ronstadt 56 35043 Indigo Girls 57 45399 Beach Boys 58 30383 ...