<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />エリック・ヒル(エリックヒル)、SAS、JMP プリンシパル システム開発者
注: これは論文の単なるテキストです。スクリーンショットは含まれていません。をご覧ください。付属バージョン紙の全体を取得します。

クエリビルダー
SQL データを JMP に取り込むための新しい JMP 12 ツール
(JMP 12.1用に更新)
JMP ソフトウェア開発者、Eric Hill 著
コンテンツ
- 導入。 2
セクション 1: 接続の確立。 3
セクション 2: クエリのテーブルの選択。 6
セクション 3: クエリの構築。 11
列の追加。 13
クエリの保存。 15
クエリの実行。 15
質問に答える。 16
- フィルタリング。 19
プロンプトフィルター。 23
- サンプリング。 25
独自の SQL を記述する。 26
セクション 4: バックグラウンド クエリの管理。 27
クエリステータスパネル28
「クエリの実行」ウィンドウ.. 28
セクション 5: クエリの共有。 28
セクション 6: JMP スクリプト言語 (JSL) からのクエリの実行。 29
JMP 12.1の新機能は何ですか? 。 31
- 検索。 31
関連テーブルの追加。 32
テンプレートとして開く。 34
計算列の式を編集する。 34
バグの修正。 35
- 結論。 35
導入
JMP では、膨大な分析ツールを簡単に利用できますが、分析に必要なデータを必要な方法で JMP に取り込むことができなければ、それらのツールは役に立ちません。JMP は、かなり長い間、リレーショナル データベースから JMP へのデータのインポートをサポートしてきました。ファイル > データベース > テーブルを開く。 オープンテーブルそれ自体は問題ありませんが、いくつかの注目すべき制限があります。
- リレーショナル データベース内のほとんどのデータは正規化された方法で保存されるため、必要なデータをすべて取得するには結合が必要ですが、オープンテーブル結合には役立ちません。自分で SQL を記述する必要があります。
- その間オープンテーブルを提供します数式エディタWHERE 句を作成する場合、たとえば、カテゴリカル変数のフィルタリングに役立つような、カテゴリカル変数の個別の値は表示されません。
- クエリを他の人と安全に共有するのは難しい場合があります。オープンテーブルは、生成する JSL スクリプトの接続文字列にパスワードを保存します。
- オープンテーブルデータのクリーンアップ、タイプのモデリング、書式設定など、データのインポート後に必要となる後処理手順には役立ちません。
クエリビルダーの制限に対処するためにゼロから設計されました。オープンテーブル、同僚と安全に共有できる、プロンプトによる対話型フィルタリングを備えた複数テーブル クエリの構築に役立ちます。
この文書では、クエリビルダー無料で利用できるものでPostgreSQLというサンプルデータベースデルストア2 。 PostgreSQLは、ここから自由にダウンロードできるオープンソース データベースです。
http://www.postgresql.org/download/
のデルストア2サンプル データベースは次の場所にあります。
http://wiki.postgresql.org/wiki/Sample_Databases
のデルストア2サンプル データベースは、他のデータベース プラットフォーム (MySQL、Oracle、SQL Server) でも利用できます。
セクション 1: 接続の確立
開始するクエリビルダーを使用してファイル > データベース > クエリビルダーメニューから:
の最初のページから起動することもできますJMPスターター:
最後に、Windows では、クエリビルダーのツールホームウィンドウツールバー:
打ち上げ後クエリビルダー、と迎えられます。データベース接続の選択ダイアログボックス:
のデータベース接続の選択ダイアログ ボックスは、オープンテーブル窓。クエリビルダーそしてオープンテーブル同じ ODBC 接続を使用し、実際には接続を共有するため、どちらかの場所で作成した接続は両方の場所に表示されます。
クリック新しい接続…既存の DSN を使用してデータベースに接続するか、新しい DSN を作成します。必要な認証情報を入力するよう求められます。
接続後、JMP は接続からスキーマを取得して、これが目的の接続であることを確認します。
選択したスキーマで使用可能なテーブルを確認することもできます。 クリック次次のステップに進みます。
JMP 12.2の新機能: 2つに注目してください検索のボックススキーマ – テーブルパネル。これらは JMP 12.1 アップデートの新機能であり、入力時にフィルタリングを実行します。スキーマそしてテーブルリスト。多くの方が、特定のスキーマ内に数百のスキーマと数百のテーブルを持っていることを知っています。検索ボックスを使用するとリストを絞り込み、探しているものを見つけることができます。
セクション 2: クエリのテーブルの選択
図 1: クエリのテーブルの選択
クリックすると次、テーブルの選択ダイアログボックスが表示されます。の中にテーブルの選択ダイアログで、クエリに含めるテーブルを選択します (「図1その上)。でテーブルを選択します利用可能なテーブルクエリに含めるリストをリストに追加します。主要なそして二次右上の表リスト。
- の主要なクエリ内の table は通常、他のテーブルに一致する値があるかどうかに関係なく、すべての行を取得するテーブルです。これはあなたのファクトテーブル、データウェアハウス用語で。クエリ内に存在できるプライマリ テーブルは 1 つだけです。
- 二次テーブルは通常、ルックアップ テーブルです。デフォルトでは、セカンダリ テーブルの行は、主要なテーブルは、指定された列の値と一致します。二次的テーブル。これらはあなたのものですディメンションテーブル、データウェアハウス用語で。いくつでも追加できます二次的必要に応じてテーブルをクエリに追加します。
右下のパネルには、選択したテーブルに関する情報が表示されます。のコラムタブには、テーブル内の各列に関する情報が表示されます。これには、それが何らかのキーであるかどうかも含まれます。
JMP 12.2の新機能:注意してください検索ボックスの中に利用可能なテーブルパネル。これは JMP 12.1 の新機能です。 スキーマに多数のテーブルが含まれている場合に、これを使用して、探しているテーブルを検索します。
のテーブルのスナップショットパネルにはデータのスナップショットが表示されるので、テーブルに必要な情報が含まれていることを確認できます。
通常、クエリを作成するときは、答えたい質問が頭の中にあり、それらの質問に基づいて、クエリにどのテーブルを含める必要があるかが決定されます。私たちが調査しているデータは、架空の DVD レンタル会社からのものです。答えたい質問は次のとおりです。
- どの映画ジャンルが最も多くの収益をもたらしていますか?
- 最も多くの収入をもたらしている俳優は誰ですか?
のレンタルテーブルには、この会社の存続期間にわたる各 DVD レンタル イベントのレコードがあるため、それがこのクエリのプライマリ テーブルになります。から見ることができますコラムというパネルレンタルへの外部キー関係を持つ列があります在庫そしてお客様テーブル:
図 2: 外部キー
あ外部キー関係 (外部キーとも呼ばれます)制約) は、1 つのテーブルの列の値が、主キーの列別のテーブル。から図2 、からの値がわかります。在庫IDのコラムレンタルテーブルは主キーのコラム在庫表、からの値顧客IDのコラムレンタルテーブルは主キーのコラムお客様テーブル、およびからの値スタッフIDレンタルテーブルの列は単に主キーのコラムスタッフテーブル。このクエリでは、レンタルに関与したスタッフの顧客ではなく、レンタルした映画に関する詳細な情報を探しているため、次の情報を追加します。在庫テーブルをセカンダリテーブルとしてクエリに追加します。
見てみると、コラムのパネル在庫テーブル、さらに見ることができます外部キーとの関係映画テーブル:
図 3: 在庫テーブルの詳細
それで、映画table もクエリに入ります。その詳細を見てみると、映画テーブル、見えます賃貸料これは収益を計算するために必要なものであるはずですが、映画のカテゴリや映画の俳優については何も表示されません。
図 4: フィルム テーブルの列
しかし、見てみると、利用可能なテーブルリストを見ると、映画俳優テーブルと映画カテゴリーこのテーブルは、映画の ID を俳優とカテゴリにマッピングしているようです。俳優そしてカテゴリーアクターとカテゴリに関する詳細情報を含むテーブル。したがって、これらのテーブルもクエリに含める必要があります。ただし、単にこれら 4 つのテーブルを追加すると、何か問題が発生したように見えます。
図 5: 自動参加の失敗
中央に「X」の付いた「停止記号」アイコンは、JMP がこれら 2 つのテーブルを自動的に結合できなかったことを示しているため、手動で結合を設定する必要があります。JMP の自動参加機能が頻繁に必要な動作をしない場合は、次の赤い三角ボタンから機能をオフにすることができます。クエリのテーブルの選択。
私が選択した場合public.film_actor (t14)そして、結合の編集ボタン( )、条件の編集ダイアログ ボックスが表示され、結合を設定できるようになります。最初は、ダイアログ ボックスは次のように表示されます。
図 6: 結合条件の編集
まだ結合条件が存在しないためです。私は参加したいです映画俳優.映画IDに在庫.フィルムID 。これを実現するには、単に在庫からのテーブル左の列リストして選択するフィルムID両方のリストで:
図 7: 結合条件の編集
同様に、結合条件を設定できます。 public.film_categoryすることが在庫.フィルム_id = フィルム_カテゴリ.フィルム_id 。そうすることで、状況は改善されます。
図 8: テーブル間の結合は有効です
すべてのセカンダリ テーブルには、左外部結合ベン図のアイコン。間で作成した結合を使用して、映画俳優そして在庫たとえば、左外部結合は次のことを意味します。全てからの行在庫テーブル (この場合は左側のテーブル) がクエリに含まれます。映画俳優テーブルかどうかは関係ありませんが、映画俳優の行に一致するテーブル在庫テーブルが付属します。
ちなみに、 t1 、 t2 、 t3 、など、テーブル名の後の括弧内は、クエリにテーブルを追加するときに JMP がテーブルに割り当てるテーブルの別名です。テーブルの別名を使用すると、正しい SQL の生成が容易になり、生成された SQL が読みやすくなります。テーブルのテーブル エイリアスを変更するには、テーブルを右クリックします。主要なまたは二次テーブルリストと選択エイリアスの変更。テーブルの別名にスペースや特殊文字を含めることはできません。
左外部結合以外のものが必要な場合は、チェックボックスを使用して結合タイプを変更できます。結合の編集ダイアログ。結合タイプとベン図アイコンは、チェックボックスの状態を反映して変更されます。
図 9: 結合タイプの変更
結合が正しく設定されているかどうかを確認するには、プレビュー結合ボタン。これによりクエリが実行され、データの最初の数百行のスナップショットが表示されるので、問題がないかどうかを確認できます。
クエリに必要なテーブルがすべて揃ったので、次をクリックします。クエリの構築育てるためクエリビルダーそれ自体で、クエリに含める列、使用するフィルター基準、結果のデータの順序付けなどを指定できます。
セクション 3: クエリの構築
ときクエリビルダーこのクエリに対して最初にウィンドウが表示され、次のようになります。
- のクエリ名ボックスにはクエリの名前が含まれます。デフォルトはプライマリ テーブルの名前です。のクエリ名は、クエリの実行によって生成される JMP データ テーブルに割り当てられる名前であり、クエリをファイルに保存するときのデフォルトのファイル名でもあります。の情報元クエリが使用しているデータ ソースの名前が表示されます。
- のテーブルボックスには、現在クエリ内にあるテーブルが表示されます。テーブルを追加または削除したり、結合を変更するには、変化…ボタン。
- の利用可能な列list には、クエリ内のすべてのテーブルのすべての列が表示されます。このリストから列を選択し、含まれる列、フィルター、 または注文方法パネル。または、必要に応じて、同じことを実行するための右クリック オプションがあります。
JMP 12.1 の新機能:の利用可能な列パネルには、検索長いリストから特定の列を検索する必要がある場合に備えて、ボックスを使用します。他と同様に検索ボックスに入力するとフィルタリングされます。 - の含まれる列パネルには、クエリに含まれるすべての列のグリッドが表示されます。使用含まれる列グリッドを使用して、JMP にインポートされた後に列のデータに必要な形式やモデリング タイプなどを設定します。とともに集計を指定することもできます。グループ化データを JMP に取り込む前に要約したい場合は、列に使用します。
もあります。サンプルこのパネルのタブを使用して、サンプリングをサポートするデータベースのデータのランダム サンプルをサーバー上で生成します。 - のクエリのプレビューこの領域のタブは自動的に更新され、クエリの実行時に返されるデータのスナップショットが表示されます。 のSQLタブには、SQL が表示されます。クエリビルダー現在の選択に基づいて生成されています。のポストクエリスクリプトタブでは、クエリの完了後に実行される JSL スクリプトを指定できます。のクエリステータスタブにはバックグラウンドで実行中のクエリのステータスが表示され、クエリをキャンセルできます。
- のフィルターパネルでは、データをフィルタリングするための条件 (WHERE 句の作成) を指定し、クエリを実行するたびに実行されるプロンプトにフィルタを変換できます。
- の注文方法パネルでは、返された行の順序付けに使用する列を指定できます (ORDER BY 句)。
列の追加
すべてのクエリにはいくつかの列が必要です。次のいずれかの方法を使用して、クエリに列を追加します。
- クリック全て追加するクエリ内のすべてのテーブルから利用可能なすべての列を追加するボタン
- から特定の列を選択します。利用可能な列リストしてクリック追加またはドラッグして上に移動します。
- 内の列をダブルクリックします。利用可能な列リスト。
このクエリには、次のように追加します。フィルムID 、タイトル、 そして賃貸料から映画テーブル、カテゴリIDそして名前からカテゴリーテーブルと俳優ID 、ファーストネーム、 そして苗字から俳優テーブル。
図 10: 最初に列を追加した後
の使用JMP名、モデリングタイプとフォーマットの列含まれる列, データを JMP にインポートした後、各列の名前、モデリング タイプ、形式を制御できます。
図 11: 列の詳細を調整した後
この分析の目的では、俳優名を別々の列に分割するのではなく、単一の列に連結することを希望します。ファーストネームそして苗字列。それを達成するには、計算列選択することで計算列の追加上の赤い三角メニューから利用可能な列パネル。
これにより、という名前の列が追加されます計算1に利用可能な列リストですが、右クリックして使用できます列の名前を変更に名前を変更します俳優名、クエリに追加して削除しますファーストネームそして苗字。これを実行した後のクエリのプレビューは次のようになります。
図 12: 計算列を含むクエリのプレビュー
(これらの Actor Name の値は少し奇妙に見えるかもしれませんが、実際にはデータベースから取得した正しい名前です。俳優の名前は、姓と名をランダムに組み合わせて生成されたようです。)
クエリの保存
現時点では、このクエリに十分な時間を費やしたので、作業内容が失われないようにクエリを保存したいと思います。をクリックするだけです保存右下のボタンクエリビルダークエリを保存するためのウィンドウ。ファイル名を入力するように求められます。クエリ名デフォルトで提供されるボックス。クエリに名前を付けます映画カテゴリー俳優。左下にメッセージが表示されますクエリビルダークエリが保存されたことを確認するウィンドウ:
クエリを保存すると、次のファイルが作成されます。 .jmpquery拡大。戻ってクエリビルダーウィンドウを見ると、クエリ名ファイル名に合わせて変更されているので、映画カテゴリー俳優。
開いているクエリに似た別のクエリを作成する必要があるが、元のクエリは保持したい場合は、名前を付けて保存…ボタンをクリックしてコピーを別の名前で保存します。
クエリの実行
この時点でクエリを実行して、データベースのすべての行を含む JMP データ テーブルを作成することもできます。クリッククエリの実行下部にあるボタンクエリビルダークエリを実行するためのウィンドウ。 デフォルトでは、JMP はバックグラウンドでクエリを実行するため、クエリの実行中も作業を続けることができます。使用クエリステータスウィンドウの中央下セクションにあるタブをクリックして、まだ処理中のクエリのステータスを確認します。クエリビルダーウィンドウ、または使用「表示」>「クエリの実行」現在バックグラウンドで実行されているすべてのクエリのステータスを確認します。この特定のクエリはわずか 1 ~ 2 秒かかり、88,020 行を返します。
図 13: JMP データ テーブルのクエリの結果
結果の JMP データ テーブルには 3 つのスクリプトと、 SQL定義されたテーブル変数:
質問に答える
この時点で、私が答えを求めていた最初の質問に答えることができるところまで近づいていますが、次の決断を下す必要があります。データベースに結果を要約させたいのか、それとも生のデータをデータベースに取り込みたいのか。 JMP と JMP に作業を依頼しますか?生データがメモリに収まるほど大きくなく、インポートに法外に長い時間がかからない場合、生データを JMP にインポートし、そこで分析を行うことには多くの利点があります。JMP はリレーショナル データ分析よりもはるかに優れたデータ分析能力を備えています。データベース。
当面のタスクでは、分布プラットフォーム上の種別名そして俳優名を使用して賃貸料として周波数変数。結果のヒストグラムを次のように並べると、昇順にカウントする、両方の質問に答える結果が得られました。
図 14: クエリ結果に対する分散プラットフォームの使用
ただし、すべての生データを取り込むことがサイズや経過時間の点で法外である場合は、代わりに集計の列含まれる列データベースにデータを要約させるためのパネル。ただし、そのためには 2 つの質問に 1 つずつ答える必要があります。
という質問に答えるには、どの映画ジャンルが最も多くの収益をもたらしていますか? 、 アクター情報に関係する列をクエリから削除し、データベースに合計を求めることができます。賃貸料グループ化種別名そして、結果を合計によって並べ替えることができます賃貸料。手順は次のとおりです。
- クリック集計の列賃貸料そして選択します和。
注目してくださいグループ化指定された集計を持たないすべての変数に対してチェックされます。クエリ内のいずれかの列で集計を指定すると、クエリ内のすべての列が集計を指定します。ない集計を指定する必要がありますグループ化列。 - を右クリックします。変数名の列賃貸料そして選択します注文方法。
- 選択するSUM(t4.rental_rate)の中に注文方法パネルをクリックし、下向き矢印ボタン (降順)。
結果は次のようになります。
同様に、カテゴリ列を取り出してアクター列を元に戻すと、次の質問に答えることができます。最も多くの収入をもたらしている俳優は誰ですか? :
フィルタリング
クエリがすべての生データを取得し、分布収益に関する質問に答えるためのプラットフォームです。JMP で分析を行う場合のオプションの 1 つは、JMP 分析用のスクリプトをリクエストできることです。
そのスクリプトをポストクエリスクリプトのパネルクエリビルダー:
図 15: ポストクエリ JSL スクリプトの追加
このスクリプトは、クエリを実行するたびに実行されるようになります。
それでは、少し質問を整理させていただきたいと思います。データベース内のすべてのレンタル作品のカテゴリと俳優の収益を調べるのではなく、映画がレンタルされた国、レンタルされた店舗、または特定の日付範囲に基づいて調べたい場合があります。
のレンタルテーブルにはレンタル日、 そして顧客IDフィールドも充実しているので、必要なものはほぼ手に入ります。先ほど見ましたが、顧客IDへの外部キー参照です。お客様テーブル。からお客様このテーブルでは、顧客の出身国と DVD をレンタルした店を取得できます。
をクリックすると、変化…のボタンテーブルクエリ ビルダーのパネルに戻ると、クエリにテーブルをさらに追加できます。国の情報を取得するには、次の情報を追加する必要があります。お客様、住所、市、 そして国クエリに対するテーブル。幸いなことに、このデータベースの管理者が設定したキー関係により、すべてのテーブルが正常に自動結合されます。
必要な追加テーブルを追加した後、クエリ ビルダーに戻り、必要な列をクエリに追加できます。レンタル日、ストアID 、 そして国。また、わかりやすい JMP 名を設定し、モデリング タイプを修正しました。ストアID :
図 16: レンタル日、ストア ID、および国の列を追加した後
まず、顧客の国でフィルターをかけましょう。右クリックすると、 t7.国の変数含まれる列パネルで選択しますフィルター条件。これを実行すると、国のフィルターがフィルターパネル:
図 17: 国フィルター
この時点で、国のリストを下にスクロールして、興味のある国にチェックを入れてクエリを実行すると、それらの国の行のみが含まれるようになります。
同様に、次のフィルターを追加できますストアIDそしてレンタル日その後、[フィルター] パネルは次のようになります。
を追加すると、レンタル日フィルターは連続変数なので、簡単な比較デフォルトでフィルターします。代わりに私が欲しいのは、範囲フィルター。の横にある赤い三角ボタンのメニューを使用するt1.レンタル日、フィルターの種類を次のように変更できます。範囲:
今のフィルターはt1.レンタル日次のようになります:
日付範囲を指定できるようになります。したがって、2005 年下半期のすべてのレンタルを検索するには、次のようにします。
図 18: 日付範囲フィルター
すべてのフィルタ タイプクエリビルダーには、それらを効果的に無効にする方法があり、特定のクエリに対してすべてのフィルタがアクティブではない場合でも、クエリに複数のフィルタを追加できます。値のリストを表示するカテゴリフィルターの場合、 (全て)上部の項目はフィルターを無効にします。数値を要求するフィルターの場合、値を次のように設定します。ない(。)フィルター (またはフィルターの一部) を無効にします。したがって、2006 年 1 月 1 日以降のすべてのレンタルが必要な場合は、次のようにすることができます。
今、フィルター私のクエリのパネルは次のようになります図19下に。
| 図 19: Missing を使用してフィルタを非アクティブ化する | 図 20: 2 つの OR グループを含むフィルター |
に示すフィルタ選択を使用すると、図19ここでクエリを実行すると、顧客の国がフランスまたはドイツで、DVD が 2006 年 1 月 1 日以降に店舗 2 でレンタルされた行が返されます。デフォルトでは、複数のフィルタが AND 演算されるため、行はすべてのフィルタに一致する必要があります。結果に表示されるフィルター。OR フィルターが必要な場合は、またはボタンをクリックすると、別のフィルター グループが作成され、2 つのフィルター グループが OR 演算されます。たとえば、次のフィルタは、図20上記は、カテゴリが次のレンタルを返しますドラマまたは映画のタイトルに含まれているのは"バケツ" 。
プロンプトフィルター
フィルター条件を指定できるのは便利ですが、クエリビルダー、実際には全体を提示する必要のない、他の人が使用するクエリを作成することもできます。クエリビルダーユーザー インターフェイスは必要ですが、クエリを実行するたびに異なるフィルター基準を入力できるようにしたいと考えています。これを実現する最も簡単な方法は、実行時にすべてのプロンプトを表示隣の赤い三角メニューからフィルター:
これにより、クエリ内のすべてのフィルターが次のようになります。促すフィルター。一部のフィルターのみにプロンプトを表示させ、他のフィルターにはプロンプトを表示させたくない場合は、赤い三角ボタンのメニューを使用して、個々のフィルターごとにプロンプトのオンとオフを切り替えることができます。
設定後実行時にすべてのプロンプトを表示このクエリを実行すると、フィルター値を希望どおりに設定するためのプロンプトが表示されます。
プロンプトのデフォルト設定は、で選択されたものになります。クエリビルダー(または、クエリがファイルから直接実行される場合は、保存されたクエリ ファイル内で) クエリが実行される前。
プロンプトで使用されるラベルをカスタマイズすることもできます。たとえば、「」の代わりに次のように仮定します。国: 「プロンプトに次のように言ってほしかった」顧客の国: ”。クエリ ビルダーに戻り、赤い三角ボタンのメニューを使用して、 t7.国フィルター、選択プロンプトの構成。これによりダイアログ ボックスが表示され、プロンプトのラベルを変更したり、プロンプトのカテゴリ レベルを提供するテーブルを変更したりすることができます。
サンプリング
データベースがランダム サンプリングをサポートしている場合、サンプル上部中央セクションのタブクエリビルダーデータベースがサポートするサンプリング オプションが表示されます。 このペーパーの例では、指定された行数の単純なランダム サンプリングをサポートする PostgreSQL を使用しています。
SQL Server と Oracle はさまざまなサンプリング オプションをサポートしているため、サンプルタブにはさまざまなオプションが反映されます。
| 図 21: SQL Server のサンプリング オプション | 図 22: Oracle のサンプリング オプション |
サンプリングが行われますデータベースによる, データが JMP にダウンロードされる前に実行されるため、これは、法外な数の行を取得するクエリから取得される行の数を制限するのに適した方法です。
独自の SQL を記述する
私たちは、同じくらい多くの機能があることを認識しています。クエリビルダー現在も、あるいは将来もそうなる可能性がありますが、場合によっては、次のことを行うクエリが必要になることがあります。クエリビルダーは直接サポートしません。また、JMP で実行する必要があるクエリを正確に実行する SQL をすでに作成し、丹念にデバッグしている方も多いでしょう。クエリビルダーには、クエリに独自の SQL を指定するための 2 つのオプションがあります。
- カスタムフィルター式- もしクエリビルダーテーブルの選択と含める列の指定までは必要なことを行っていますが、フィルターの一部としてカスタム SQL 式を含めたいだけの場合は、次のように選択できます。カスタム式の追加からフィルター赤い三角メニュー:
| 図 23: カスタム フィルター式の追加 | 図 24: 結果として得られるフィルター |
必要な SQL をカスタム式クエリに対して有効な SQL である限り、ボックスに入力します。
もしカスタム式フィルターがプロンプト フィルターに設定されている場合、カスタム式はフィルター プロンプト ダイアログに表示され、編集可能になります。
- クエリ全体を次のように変換します。カスタムSQLクエリ– クエリ全体に対して独自の SQL を書きたいだけの場合は、起動後にクエリビルダーデータ接続を指定するには、左上の赤い三角メニューを使用します。クエリビルダーのそばにクエリ名フィールドを選択してカスタム SQL に変換する:
図 25: カスタム SQL への変換
のクエリビルダーウィンドウがカスタム SQL モードに切り替わり、独自の SQL を入力するための広い領域が提供されます。対話的にクエリの作成を開始した場合は、カスタムSQLボックスは、これまでに行った選択に基づいて生成された SQL で初期化されます (「図26下に)。
図 26: カスタム SQL クエリ
必要に応じて SQL を編集するか、別のソースから SQL を貼り付けて、アップデート更新するボタンクエリのプレビュー。いくつかの注意事項:
- カスタム SQL クエリでは、プロンプトによるフィルタリングを実行できません。
- クエリをカスタム SQL に変換して SQL を編集した後、クエリを対話型に戻すと、SQL に対して行ったカスタマイズはすべて失われます。 クエリ ビルダーは SQL を解釈しようとしません。
セクション 4: バックグラウンド クエリの管理
クエリビルダーデフォルトでクエリをバックグラウンドで実行します。また、JMP Scripting Language (JSL) からバックグラウンドでクエリを実行することも可能です (「セクション6 )。JMP には、現在実行中のバックグラウンド クエリのリストを表示する方法と、必要に応じて実行中のクエリを停止するための 2 つの方法が用意されています。
クエリステータスパネル
クエリ ビルダーの中央下部のセクションには、クエリステータスタブ。起動されたバックグラウンド クエリそのクエリビルダーウィンドウからそのタブに表示されます:
実行中のクエリを停止したい場合は、リストからクエリを選択して、停止ボタン。いくつかの行が取得されている場合、JMP はすでに取得されている行を含むデータ テーブルを開きます。データ テーブルの名前は、結果が部分的であることを反映しています。
「クエリの実行」ウィンドウ
からビューホーム ウィンドウまたはメニューを含む他の JMP ウィンドウのメニューで、クエリの実行。これにより、次のウィンドウと同じウィンドウが開きます。クエリステータスのタブクエリビルダー、 しかしクエリの実行ウィンドウには以下が含まれます全て呼び出された方法 (クエリ ビルダー ウィンドウまたは JMP スクリプト言語) に関係なく、現在バックグラウンドで実行されているクエリ:
ここでもクエリを選択して、停止実行を停止し、部分的な結果を開きます。
セクション 5: クエリの共有
はじめにでも触れられていましたが、オープンテーブルデータベースのパスワードが接続文字列に含まれているため、共有が困難なスクリプトを作成しました。クエリビルダー動作が異なります。 を保存すると、 .jmpquery接続にパスワードが必要なクエリのファイルを作成し、そのファイルをテキスト エディタで開くと、次のような内容が表示されます。
ユーザー名 ( UID ) が接続文字列に存在しますが、次のように表示されます。 PWD=%_PWD_% 。「%_PWD_%」はパスワードではありません。これは、クエリ ビルダーによって配置されるプレースホルダーです。クエリ ビルダーがそのプレースホルダを確認すると、最初はパスワードが必要だったことがわかるため、ユーザーが開いたときにこのクエリが開かれたとしても、クエリへの接続はまだ確立されていません。 Postgres DVDレンタルDSN、クエリ ビルダーは、ユーザーにパスワードの入力を求めることを認識します。
DSN 自体はどうなるのでしょうか?この .jmpquery ファイルを、DSN を持たない JMP ユーザーに送信するとどうなるでしょうか。 Postgres DVDレンタル彼らのマシン上で定義されていますか?オープンテーブルこのようなシナリオでは続行できませんが、クエリビルダーは、この状況をユーザーに通知し、別の DSN (おそらく同じデータベースに接続する) に接続するか、新しい DSN を作成する機会を与えます。
異なるユーザーがマシン上で異なる DSN を定義する可能性があるため、一部の組織はDSN を使用しない接続。クエリビルダー現在、DSN ベースの接続文字列を DSN なしの接続文字列に変換することはできませんが、クエリのスクリプト内の接続文字列を変更すると、 DSNを指定します。運転者そしてサーバ、クエリビルダーこの DSN なしの接続は、生成されるスクリプトまたは .jmpquery ファイルに伝播されます。
セクション 6: JMP スクリプト言語 (JSL) からのクエリの実行
クエリ ビルダーによって構築されたクエリは、からも実行できます。 JMP スクリプト言語 (JSL)スクリプト。 最良のオプションは、クエリを.jmpqueryファイルを JSL から開き、実行します。 たとえば、クエリがc:\users\public\tempという名前のフォルダーpg_rentals.jmpquery 。JSL からのクエリ ファイルを使用して実行できることをいくつか示します。
- .jmpquery ファイルをクエリ ビルダーで開きます。
開ける( 「c:\users\public\temp\pg_rentals.jmpquery」 ) ;
クエリ=開ける( 「c:\users\public\temp\pg_rentals.jmpquery」 、プライベート) ;
クエリ<<修正する;
クエリ<<走る() ;
- クエリをフォアグラウンドで実行します。 クエリが終了すると、結果のデータ テーブルが JMP で開きます。 dtResult は結果データ テーブルへの参照になります。
dt結果=クエリ<<フォアグラウンドで実行() ;
- フォアグラウンドでクエリを実行しますが、ない結果のデータテーブルを JMP で開きます。秘密にしておいてください。dtResult は結果データ テーブルへの参照になります。
dt結果=クエリ<<フォアグラウンドで実行(プライベート) ;
- クエリをバックグラウンドで実行します。 クエリが終了すると、結果のデータ テーブルが JMP で開きます。 クエリはバックグラウンドで起動されるだけなので、バックグラウンドで実行は結果データ テーブルへの参照を返すことができません。この後の例では、バックグラウンドでクエリを実行するときに結果データ テーブルへの参照を取得する方法を示します。
クエリ<<実行の背景() ;
- クエリをバックグラウンドで実行します。 クエリが成功した場合は、結果データ テーブルでディストリビューション プラットフォームを呼び出します (クエリ結果内の特殊な JSL 変数です。実行時完了結果データテーブルを参照するスクリプト)。 クエリがユーザーによってキャンセルされた場合、またはエラーが発生した場合は、JMP ログにメッセージを書き込みます。
クエリ<<実行の背景(
実行時完了(
クエリ結果<<分布(名目分布(カラム( :タイトル) ) ) ;
) 、
実行中にキャンセルされました(書く( 「\!Nクエリはキャンセルされました!」) ) 、
エラー時(書く( 「\!Nクエリ実行エラー!」) ; )
) ;
- クエリをバックグラウンドで実行します。クエリが正常に完了したら、MyFunc 関数を呼び出します。 クエリ結果データ テーブルは常に最初のパラメータとして関数に渡されます。
::マイファンク=関数( { dt } 、 {デフォルトのローカル} 、
書く( "\!nレンタル数: " 、 N行( dt ) ) ;
dt <<分布(名目分布(カラム( :タイトル) ) ) ;
) ;
クエリ<<実行の背景(実行時完了( ::マイファンク) ) ;
JSL スクリプト内の別の .jmpquery ファイルからクエリを開くのに満足できない場合は、クエリのスクリプト可能オブジェクトを作成するための生のスクリプトを、スクリプトの左上にある赤い三角メニューから入手できます。クエリビルダー窓:
たとえば、実行スクリプトをスクリプト ウィンドウに保存単純なクエリの場合は次のようになります。
新しいSQLクエリ次のような SQL Query スクリプト可能オブジェクトを返します。開ける.jmpquery ファイルを開くときに実行され、すべて同じ方法で使用できます。
JMP 12.1の新機能は何ですか?
検索
私たちが話を聞いた人の多くは、データベース内の何百ものスキーマ、テーブル、列に山ほどのデータを持っています。JMP 12.1 バージョンのクエリ ビルダーでは、次のものが追加されました。検索スキーマ、テーブル、列のリストのボックスを使用すると、探しているものをすばやく見つけることができます。
これらすべて検索入力するとボックスが更新され、次のオプションを使用できます。正規表現をクリックして検索を絞り込みます。
関連テーブルの追加
の中にクエリのテーブルの選択ダイアログ ボックスで、クエリに追加したテーブルに他のテーブルへの外部キー参照がある場合、関連テーブルの追加ボタン。
テンプレートとして開く
多くの場合、作成して .jmpquery ファイルに保存した別のクエリによく似たクエリを作成する必要があります。以前に保存したクエリをいつでも開いて変更し、使用することができます。名前を付けて保存別の .jmpquery ファイルに保存しますが、誤ってクリックした場合は、保存誤って元のクエリが上書きされてしまいます。のテンプレートとして開くこのシナリオを防ぐために機能が存在します。テンプレートとして開くは、Mac と Windows の両方で、ホーム ウィンドウの .jmpquery ファイルのコンテキスト メニューから利用できます。
.jmpquery をテンプレートとして開くと、実際には .jmpquery を開くことになります。コピーディスク上の .jmpquery ファイルと関連付けられていない元のクエリの。クエリをテンプレートとして開き、変更を加え、誤って保存ボタンをクリックすると、クエリを保存するファイルを指定するよう求められます。
JMP Scripting Language (JSL) から .jmpquery ファイルをテンプレートとして開くこともできます。
開ける( 「C:\Users\Public\Temp\rentals.jmpquery」 、テンプレートとして) ;
計算列の式を編集する
JMP 12.0 では、データベース サーバー上で計算され、結果の値がクエリで返される計算列をクエリに追加できます。ただし、以前に作成した計算列の式を編集する必要がある場合、それを行うことはできませんでした。代わりに、計算列を削除して新しい列を追加する必要があり、場合によっては複雑な数式を再作成する必要がありました。JMP 12.1 では、計算列を編集するオプションが追加されました。列を右クリックするだけです利用可能な列そして選択します数式の編集:
バグの修正
ご想像のとおり、JMP 12.1 のクエリ ビルダーの多数のバグを修正しました。その一部はお客様から報告されました。Query Builderの使用中に問題が発生した場合は、SASテクニカルサポートを通じて問題を報告してください。解決できるようにいたします。
結論
クエリビルダーは、JMP 12 (JMP 12.1 で更新) の新機能で、リレーショナル データベースに対して高度にカスタマイズされた複数テーブル SQL クエリを構築するのに役立ちます。目標は、以前よりも迅速にデータを分析可能な形式で JMP に取り込むことを容易にし、クエリを安全に共有することを容易にすることです。ぜひお試しいただき、フィードバックをお寄せください ( eric.hill@jmp.com )何がうまくいき、何がうまくいかないのかについて。