ワークシートを使用したデータのクエリ

ワークシートを作成するか開く と、 ワークシートを管理 したり、クエリを作成して実行したり、クエリ結果と履歴を調査したり、 Snowsight を使用してフィルターを設定したりできます。

このトピックの内容:

ワークシートでのクエリの記述

ワークシートを開いた後、 SQL クエリとステートメントを記述できます。

ワークシートコンテキストを設定する

ワークシートのコンテキストとして、データベースとオプションでデータベーススキーマを設定すると、クエリ内のオブジェクト名を完全に修飾しなくても、スキーマ内のオブジェクトを参照できます。

オートコンプリートでクエリを記述する

クエリエディターにスクリプトを入力すると、オートコンプリート機能が次を提案します。

  • SQL 関数やエイリアスなどのクエリ構文のキーワード。

  • スキーマ内のテーブル名または列名と一致する値。

関数を選択して、その構文と簡単な説明を表示します。

Snowflakeはテーブルエイリアスを追跡し、オートコンプリートオプションとして提案します。たとえば、 posts as p を使用するか、 posts p をエイリアスとして使用してクエリを実行する場合は、次回 p と入力すると、オートコンプリート機能によりエイリアスがオプションとして提案されます。

既存のワークシートに SQL スクリプトを追加する

ファイルに SQL スクリプトがある場合は、次のようにして既存のワークシートに追加できます。

  1. Snowsight にサインインします。

  2. Projects » Worksheets を選択して、ワークシートのリストを開きます。

  3. ワークシートを開きます。

  4. ワークシートのタブにカーソルを合わせて ワークシートのその他のアクション を選択し、次に Import SQL from File を選択します。

  5. コンピューター上の SQL ファイルを参照します。

    ファイルのコンテンツがワークシートに追加されます。

ワークシートにあるデータベースオブジェクト名を参照する

ワークシートにクエリを記述する間、 Databases エクスプローラーでクエリに関連するデータベースオブジェクトを参照します。特定のデータベースオブジェクトにドリルダウンするか、検索を使用して、アクセスできるデータベース、スキーマ、またはオブジェクトを見つけることができます。

Databases エクスプローラーを使用すると、データベースとデータベースオブジェクトをピン留めして、すばやく参照できます。データベースオブジェクトにカーソルを合わせ、 Pin アイコンを選択してピン留めします。ピン留めされたオブジェクトは、 Pinned セクションの Databases エクスプローラーの最上部に表示されます。ピン留めされたすべてのオブジェクトを表示するには、セクションの展開が必要になる場合があります。

データベースオブジェクトを見つけた後、編集中のワークシートにオブジェクトの名前を配置できます。

  1. Snowsight にサインインします。

  2. Projects » Worksheets を選択して、ワークシートのリストを開きます。

  3. ワークシートを開きます。

  4. Databases エクスプローラーでデータベースオブジェクトを見つけます。

  5. オブジェクト名にカーソルを合わせて、 ... その他のメニュー » Place Name in Editor を選択します。

    ワークシート内のカーソル位置の後に、完全修飾オブジェクト名が表示されます。

データベーステーブルとビューの場合は、編集中のワークシートに列名を追加することもできます。

  1. Snowsight にサインインします。

  2. Projects » Worksheets を選択して、ワークシートのリストを開きます。

  3. ワークシートを開きます。

  4. Databases エクスプローラーでデータベースオブジェクトを見つけます。

  5. オブジェクト名にカーソルを合わせて、 ... その他のメニュー » Add Columns in Editor を選択します。

    ワークシート内のカーソル位置の後に、コンマ区切りの列名が表示されます。

クエリをフォーマットする

ワークシートが開いているときは、ワークシートの名前を選択してワークシートのクエリをフォーマットし、キーボードのショートカットを表示できます。

  1. Snowsight にサインインします。

  2. Projects » Worksheets を選択して、ワークシートのリストを開きます。

  3. ワークシートを開きます。

  4. ワークシートのタブにカーソルを合わせて、 ワークシートのその他のアクション を選択します。

  5. ドロップダウンリストで Format query を選択して、読みやすいようにクエリテキストをフォーマットします。

テーブルにデータをロードする

ワークシートを使用中に作業するデータを追加する場合、ワークシートを離れることなくデータをテーブルにロードできます。

  1. Snowsight にサインインします。

  2. ナビゲーションメニューで Projects » Worksheets を選択します。

  3. ワークシートを開きます。

  4. Objects を選択してオブジェクトエクスプローラーを表示します。

  5. 検索を使用するか閲覧して、特定のテーブルを見つけます。

  6. 特定のテーブル名にカーソルを合わせて、 その他のオプション » Load Data を選択します。

  7. プロンプトに従って、 50MB 以下の1つ以上の構造化ファイルまたは非構造化ファイルをアップロードします。

詳細については、 ウェブインターフェイスを使用したデータのロード をご参照ください。

クエリの実行

同じワークシートで単一のクエリまたは複数のクエリを順番に実行できます。

  • 単一のクエリを実行するには、クエリエディターリンクでカーソルをクエリに置き、 Run ボタンを選択します。

  • ワークシート全体を実行するには、 Run ボタンの横にある More options ドロップダウン メニューから Run All を選択します。

フォルダー内のワークシートの実行

フォルダーにはロールが割り当てられなくなりました。フォルダー内のワークシートの所有者または編集者は、ワークシートを任意のロールで実行するように変更できます。また、フォルダー内のワークシートに USE ROLE を追加すると、ワークシート内の異なるステートメントを異なるロールとして実行することもできます。

フォルダー内部にワークシートを作成すると、現在のセッションのロールでワークシートが作成されます。

注釈

共有されたフォルダー内のワークシートを実行するには、フォルダーに対する View and Run または Edit の権限がある場合でも、ワークシートと同じロールを使用する必要があります。同じロールがない場合は、ワークシートを複製して、自分自身のロールの1つとして実行します。

ワークシートの結果の調査

ワークシートで1つまたはすべてのクエリを実行すると、クエリ結果が表示されます。

クエリ結果は、最大10,000行のテーブルとして表示されます。クエリが10,000行を超える行を返す場合は、 Download results オプションを使用してすべての結果を表示します。

スプレッドシートの場合と同様に、キーボードの矢印キーを使用してクエリ結果をナビゲートできます。結果テーブルで列、セル、行、または結果テーブル内の範囲を選択します。任意の選択をコピーして貼り付けることができます。

結果をチャートとして表示する場合は、 Chart を選択します。チャートの詳細については、 ワークシートデータの視覚化 をご参照ください。

結果には、すべての結果の全体的な統計だけでなく、選択内容のコンテキスト情報を表示する生成された統計も含まれます。クエリが10,000行を超える行を返す場合でも、統計には結果セット全体が反映されます。

ワークシートの結果とバージョン履歴の詳細については、 ワークシートの履歴とバージョンの管理 をご参照ください。

自動コンテキスト統計

結果テーブルの列、セル、行、または範囲を選択して、選択したデータに関する関連情報をインスペクターペイン(結果テーブルの右側)に表示します。コンテキスト統計は、すべての列タイプに対して自動的に生成されます。統計は、データを一目で理解できるようにすることを目的としています。

列の概要には、各列の統計のプレビューが表示されます。詳細な列統計を表示するには、インスペクターまたは列ヘッダーから列を選択します。

統計ペインは、さまざまなタイプの列に対してさまざまなメトリックを生成します。統計ペインの項目を使用して、操作およびフィルターできます。

入力済み/空のメーター

すべての列では、何行が入力され空であるかを示します。電子メールや JSON などの一部のデータ型を表示する列でも、無効な行の数を示します。

ヒストグラム

すべての日付、時刻、および数値列について表示されます。

ヒストグラムは、特定の範囲に該当する行を示します。バーをクリックするか、ヒストグラムをドラッグして範囲を選択します。ヒストグラムの上にある値ラベルをクリックして特定の値を入力することにより、選択を微調整できます。

頻度分布

すべてのカテゴリ列に表示されます。カテゴリ列は、同じ値が複数回使用されるテキスト列です。

メールドメイン分布

メール列に表示されます。メールドメイン分布は、ドメイン名の出現頻度の分布を示します。

キー分布

JSON 列に表示されます。キー分布は、すべての行に JSON オブジェクトが含まれている場合、結果セットに存在する上位キーの頻度を示します。列に JSON 配列が含まれている場合、キー分布は列の JSON 値の相対的な型を示します。

クエリの詳細を表示する

Query Details には、次のようなクエリの実行に関する情報が含まれます。

  • クエリ実行の期間。

  • 結果内の行数。

  • 実行が完了した時。

  • クエリによってスキャンされたデータの量。

  • クエリの実行に使用されるロール。

  • クエリの実行に使用されるウェアハウス。

一部のクエリの詳細は、14日間のみ利用できます。

クエリプロファイルを表示する

クエリの詳細なプロファイルにアクセスするには、 Query Details ペインで ... その他のメニュー » View Query Profile を選択します。

クエリプロファイルが新しいブラウザータブに開きます。

クエリ結果をダウンロードする

クエリ結果を CSV形式または TSV形式のファイルとしてダウンロードするには、 Download results を選択します。

ファイルのサイズは、クエリによって返されるデータの量に基づいています。Snowflakeは、クエリ結果用にエクスポートされるファイルのサイズを制限しません。

クエリ履歴を表示

ワークシートで SQL を実行した後、ワークシートで実行したクエリの履歴を確認(例: 異なるクエリ実行の結果を比較)することができます。ワークシートのクエリ履歴を表示するには、ワークシートと同じロールを使用する必要があります。

Results ペインが表示されたら、 クエリ履歴Query history)を選択して、ワークシートで実行されたクエリとその結果を確認します。履歴には、現在のセッション中にそのワークシートで実行された最大25個のクエリと、過去90日間の以前のセッションが含まれます。

以下の情報を確認できます。

  • 処理中のクエリのステータス。

  • クエリが実行された時刻。

  • クエリの実行にかかった時間。ミリ秒または秒単位。

  • どのクエリが実行されたか。

  • クエリ ID。

行を選択すると、そのクエリの実行結果が Results ペインに表示されます。 Query history で表示するクエリの実行に使用するプライマリロールがない場合は、そのクエリの結果を表示することはできません。ストアドプロシージャまたはPythonワークシートによって生成されたサブクエリは表示されません。

ワークシートのクエリ履歴をステータス、ウェアハウス、その他のアスペクトでフィルターするには、

  • クエリ実行をステータスでフィルターする。たとえば、まだ Running または Queued のステータスで、結果が表示されていないクエリを確認します。

  • ウェアハウス、クエリ内の SQL テキスト、特定のクエリ ID 、または特定の期間よりも長い期間でフィルターするには、 クエリ履歴フィルター を選択します。

クエリ実行行にカーソルを合わせると、実行された SQL ステートメントの包括的なプレビューが表示され、クエリ ID がコピーされ、オプションでクエリ実行のクエリ詳細が開きます。クエリの詳細に関する詳細情報については、 Snowsightを使用してクエリ履歴を確認する をご参照ください。

Snowflake Native App からマスキングされたクエリ履歴データ

Snowflake Native App に関連するクエリでは、以下のコンテキストで クエリ履歴 から query_texterror_message フィールドがマスクキングされます。

  • クエリは、アプリがインストールまたはアップグレードされたときに実行される。

  • アプリが所有するストアドプロシージャの子ジョブから発生するクエリ。

これらの状況では、 Snowsight のクエリ履歴のセルは空白になります。

ワークシートでのフィルターの使用

次のシステムフィルターは、すべてのロールで使用できます。

  • :daterange

    列に日付範囲を適用できるようにします。

  • :datebucket

    集計データを時間の単位(たとえば、日ごと)でグループ化できます。

さらに、管理者はアカウントで使用するカスタムフィルターを作成できます。詳細については、 カスタムフィルター をご参照ください。

次の例を考えてみましょう:

SELECT
    COUNT(O_ORDERDATE) as orders, O_ORDERDATE as date
FROM
    SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.ORDERS
WHERE
    O_ORDERDATE = :daterange
GROUP BY
    :datebucket(O_ORDERDATE), O_ORDERDATE
ORDER BY
    O_ORDERDATE
Copy

この例では、

  • WHERE 句に :daterange システムフィルターを含めます。

  • GROUP BY 句に :datebucket システムフィルターを含めます。

クエリにフィルターを含めると、対応するフィルターボタンがワークシートの最上部に表示されます。

フィルターボタンが表示される場合、タブオーダーのフィルターの表示および非表示ボタンの後に表示されます。

この例では、 Date bucket フィルターを day に設定し、 Date rangeAll time に設定するとします。

クエリを実行すると、結果は日ごとにグループ化されます。新しい日付範囲を選択して、結果をさらにフィルターできます。

この例の結果テーブルには、注文と日付の2つの列が含まれています。注文列には、指定された日付の注文件数が集計されています。

カスタムフィルター

カスタムフィルターを使用すると、クエリを直接編集せずに、クエリまたは視覚化の結果を変更できます。フィルターは、クエリの実行で使用されるサブクエリまたは値のリストとして解決される、特別なキーワードとして実装されます。

ページの左上隅にある Show or Hide Filter ボタンを使用すると、カスタムフィルターを表示したり、非表示にしたり、管理したりできます。

カスタムフィルターを作成するための権限の付与

アカウント管理者(ACCOUNTADMIN のロールを持つユーザー)は、 ACCOUNTADMIN のロール自体を含む各ロールに、カスタムフィルターを作成する権限を付与する必要があります。

カスタムフィルターを作成する権限をロールに付与するには、

  1. Snowsight にサインインします。

  2. Projects » Worksheets を選択して、ワークシートのリストを開きます。

  3. ワークシートを開きます。

  4. Show or Hide Filter ボタンを選択して、 Manage Filters を選択します。

  5. 表示されるダイアログで、 Edit Permission を選択します。

  6. Filter Permissions ダイアログで、フィルターを作成する権限を付与するロールを選択します。

  7. Save を選択します。

カスタムフィルターの作成

カスタムフィルターを作成するには、

  1. Snowsight にサインインします。

  2. Projects » Worksheets を選択して、ワークシートのリストを開きます。

  3. ワークシートを開きます。

  4. Show or Hide Filter ボタンを選択して、 Manage Filters を選択します。

  5. 表示されるダイアログで、 + Filter を選択します。

  6. フィルターを追加するには、次を完了します。

    Display Name

    内部で他のユーザーに表示されるフィルターの名前。

    SQL Keyword

    クエリに挿入する一意のキーワード。スペースを入れずに、フォーマット :<文字列> を使用してください。例: :myfilter

    Description

    フィルターの説明。

    Role

    クエリから派生したフィルター値を更新するときに使用されるロール。

    Warehouse

    クエリから派生したフィルター値を更新するときに使用されるウェアハウス。

    Options via

    フィルター値がクエリまたは項目別リストから派生するかどうかを指定します。

  7. フィルターにオプションを追加します。

  8. Save を選択します。