SQLウェアハウスセッションとは何ですか?
SQLセッションを使用すると、変数の定義、一時ビューの作成、および複数のクエリ実行にわたる状態の変更の維持が可能になります。 セッションを使用すると、すべてのステートメントを一度に実行する必要なく、SQL ロジックを反復的に構築できます。
SQLウェアハウスに接続されている場合、次のコンテキストでセッションを使用できます。
使用例
セッションを使用すると、共有状態を維持しながらステートメントを個別に実行できます。たとえば、変数を宣言し、その変数を使用する一時ビューを作成してから、そのビューを個別にクエリすることができます。
次の例は、このワークフローを示しています。
-- Statement 1: Declare a variable
DECLARE VARIABLE row_limit = 10;
-- Statement 2: Create a temporary view using the variable
CREATE OR REPLACE TEMPORARY VIEW filtered_data AS
SELECT
*
FROM
main.default.sales_data
LIMIT row_limit;
-- Statement 3: Query the temporary view
SELECT
*
FROM
filtered_data;
セッションを使用すると、各ステートメントを個別に実行できます。変数と一時ビューは引き続き使用可能なため、以前のすべてのステートメントを再実行せずにクエリを反復処理できます。
セッションの仕組み
ユーザーがSQLウェアハウスでクエリを実行すると、セッションが作成されます。 コマンドが 8 時間に 1 回以上実行される限り、セッションはアクティブなままになります。ウェアハウスが停止または再起動した場合でも、セッションは持続します。
8 時間操作が行われないとセッションは終了します。
共有セッション状態
同じセッション内で実行されるすべてのコマンドは、次のものを共有します。
- 宣言された変数
DECLARE VARIABLE - 一時ビューは
CREATE TEMPORARY VIEW - 現在のカタログやスキーマなどの環境設定
セッションの範囲とコラボレーション
セッションは、クエリ オブジェクト (クエリ、ノートブック、またはファイル) と、それが接続されている特定のSQLウェアハウスの両方に関連付けられます。 そのオブジェクトとウェアハウス接続へのアクセスを共有するすべてのユーザーも同じセッションを共有します。
例えば:
- ユーザー A は、ウェアハウス X に接続中にクエリ 1 で一時ビューを定義します。
- ユーザー B は、同じ一時ビューを参照するウェアハウス X のクエリ 1 で SQL コマンドを実行できます。
- クエリ 1 が別のウェアハウスに再接続されると、独自の分離された状態を持つ新しいセッションが作成されます。
この共同作業により、チームは共同でクエリの開発に取り組むことができますが、1 人のユーザーが行った変更が同じセッションを共有する他のすべてのユーザーに影響を及ぼすことも意味します。