予めJMPで準備されている基本設定を、SQL Server、MySQL、Excelなどの多数のODBC互換データベースに対して利用できます。また、それらの基本設定を変更したものを、他の人と共有できます。JMPデータコネクタを用いれば、組織内の複数のユーザに対し、JMPにデータを読み込むための共通の設定を提供できます。
JMPは、WindowsレジストリまたはODBC.ini(macOSの場合)にあるODBCが設定された既存のDSN(データソース名)を検索し、それらをJMPデータコネクタに変換します。これにより、JMPデータコネクタを使えば、マシンごとの既存のDSNをもとに、環境ごとに手動で設定を変更しなくても、データソースにJMPから簡単にアクセスできるようになります。
JMPでデータコネクタを用いてデータベースに接続するには、選択したデータソースのODBCドライバをインストールした後、以下の手順に従います。
1. [ファイル]>[データベース]>[データコネクタ]を選択します。「コネクタ」ボックスに、接続が確立されているデータソースが一覧表示されます。
2. [新規接続]をクリックします。
「データコネクタの選択」ウィンドウに新規接続ダイアログが表示されます。
図3.51 新規接続ダイアログ
3. ここで、3種類のコネクタ(ビルトインコネクタ、アドインコネクタ、ユーザ作成コネクタ)からのいずれかのコネクタを選択します。ビルトインコネクタは、JMPが予め提供しているデータコネクタの集合です。アドインコネクタは、他の人が作成したアドインからインストールされたデータコネクタの集合です。ビルトインコネクタは、com.jmpという接頭辞になっています。アドインコネクタは、アドインIDが接頭辞になっています。ユーザ作成コネクタには、接頭辞がありません。新しく選択したコネクタに対しては、データコネクタの設定に一覧されているオプションを設定する必要があります。
4. 設定を済ませたコネクタを選択し、[接続]をクリックします。
新規接続のダイアログが閉じ、「データコネクタの選択」ウィンドウに戻ります。
データベースからデータを読み込むには
1. [ファイル]>[データベース]>[データコネクタ]を選択します。
「データコネクタの選択」ウィンドウが表示されます(Figure 3.52)。
2. データベースにすでに接続している場合は、「接続」ボックスでその接続を選択します。
「コネクタ」ボックスに、JMPが接続しているデータソースが表示されます。「スキーマ - テーブル」ボックスに、スキーマをサポートするデータベースのスキーマが表示されます。
図3.52 接続を確立する前の「データコネクタの選択」ウィンドウ
3. 目的のデータソースが「コネクタ」ボックスに一覧表示されていない場合は、[新規接続]をクリックしてデータソースを選びます。データコネクタの設定の手順に従ってください。
4. 「コネクタ」ボックスで、目的のデータソースを選びます。すると、「テーブル」ボックスのテーブルリストが更新されます。更新には、テーブル数やデータベースへの接続速度に応じて、数秒かかることがあります。データベースがスキーマをサポートする場合、リスト内の最初のスキーマのテーブルが表示されます。他のスキーマについては、それらをクリックすると表示されます。
5. 表示されるテーブルを指定するには、[テーブルリストに含める]のオプションを選びます。
メモ: これらのオプションの解釈方法は、ドライバによって異なります。
ユーザテーブル これをクリックすると、使用できるすべてのユーザテーブルが「テーブル」ボックスに表示されます。表示されるユーザテーブルは、コンピュータにログインしたユーザによって異なります。
ビュー これをクリックすると、開くことができる全種類のファイルと「ビュー」が「テーブル」ボックスに表示されます。「ビュー」とは仮想的なテーブルで、開くたびに実行されるクエリーの結果セットです。「ビュー」を使って、1つまたは複数のテーブルから情報を抽出したり、結合したりできます。
システムテーブル これをクリックすると、使用できるすべてのシステムテーブルが「テーブル」ボックスに表示されます。システムテーブルとは、すべてのユーザが使用できるか、またはシステムレベルのサービスで使用されるテーブルです。
シノニム これをクリックすると、使用できるすべてのORACLEシノニムが「テーブル」ボックスに表示されます。
6. 「テーブル」リストから目的のテーブルを選びます。
7. [テーブルを開く]をクリックして、選択したテーブルのすべてのデータを読み込むか、[クエリービルダー]をクリックして、読み込むテーブルのサブセットを指定します。クエリービルダーでのSQLクエリーの作成を参照してください。
大きいテーブルを開く場合は、表示に時間がかかる場合があります。アクティブなODBCクエリーのステータスを確認するには、[表示]>[実行中のクエリー]を選択します。
メモ: データが以前JMPでデータベースに書き出されたものであり、式タイプの列を含んでいる場合は、その列が文字タイプとして読み込まれます。[列]>[列情報]を選択し、データタイプを[式]に変更してください。
「データコネクタの選択」ウィンドウで[新規作成]を選択すると、「データコネクタエディタ」ウィンドウが表示されます。このウィンドウで、ログイン情報やSQL形式など、データベースに接続するためのオプションを設定します。
「接続」グループのフィールドについては、そこで[値なし]に設定すると、そのODBC接続文字列に何も指定しないことになります。ブール値を受け入れるオプションは、[オン]と[オフ]のいずれかを設定できます。
図3.53 「データコネクタエディタ」ウィンドウ
基準
基本設定として用いる設定の種類を指定します。
なし
すべてのフィールドを、デフォルト値である空白の設定とします。
ID
提供されたIDの設定を各フィールドに用います。
ファイル
提供されたファイルパスの設定を各フィールドに用います。
指定
テキストで指定された設定を各フィールドに用います。ここでのテキスト指定では、
KEY1 = VALUE1; KEY2 = VALUE2;という構文で指定します。ここで、KEYは「ID」や「Server」などのキーワードを指し、VALUEには、データ接続する際のIDの値やServerの値を指定します。[指定]は、特定の設定をもつデータコネクタを、そのIDを指定しながらテストするのに役立ちます。
接続
データベースに接続するためのオプションです。
接続
ODBC接続における接続文字列を指定します。
データベース
接続先のデータベースの名前を指定します。
ドライバ
ドライバの名前を指定します。
パスワード
データベースにアクセスするためのパスワードを指定します。
パスワードキー
「パスワード」フィールドの値にマッピングする接続文字列キーを指定します。
ポート
ポートの値を指定します。
サーバー
サーバーインスタンスの名前を指定します。
サーバーキー
「サーバー」フィールドの値にマッピングする接続文字列キーを指定します。
テーブル
開くテーブルの名前を指定します。
ユーザ
サーバーへのログイン名を指定します。
ユーザキー
「ユーザキー」フィールドの値にマッピングする接続文字列キーを指定します。
ODBC
非同期実行の対応
(ブール値|自動)ドライバが非同期実行をサポートするかどうかを指定します。[自動]オプションが選択されている場合、JMPはこれを自動的に決定しようとします。
ブロックフェッチ
(ブール値)ドライバがブロックフェッチをサポートするかどうかを指定します。
ブロックフェッチに8バイトアライメントが必要
(ブール値)ブロックフェッチメモリにおいて8バイトアライメントを用いていることをドライバが想定するかどうかを指定します。
シノニムテーブルのリスト
「データコネクタの選択」ウィンドウの「テーブルリストに含める」パネルでの指定に応じて、テーブルリストにシノニムテーブルを含めるかどうかを示します。
常に
ユーザの好みに関係なく、シノニムテーブルを含めます。
しない
ユーザの好みに関係なく、シノニムテーブルを除外します。
ユーザ設定による
ユーザの好みに応じてシノニムテーブルを含めます。
システムテーブルのリスト
「データコネクタの選択」ウィンドウの「テーブルリストに含める」パネルでの指定に応じて、テーブルリストにシステムテーブルを含めるかどうかを示します。
Excelドライバなどの一部のドライバは、すべてのテーブルをシステムテーブルとみなします。[常に]を使用すると、それらのテーブルが確実にリストに表示されます。
常に
ユーザの好みに関係なく、システムテーブルを含めます。
しない
ユーザの好みに関係なく、システムテーブルを除外します。
ユーザ設定による
ユーザの好みに応じてシステムテーブルを含めます。
スクロール可能なカーソル
(ブール値|自動)ドライバがスクロール可能なカーソルの使用をサポートするかどうかを指定します。[自動]オプションが選択されている場合、JMPはこれを自動的に決定しようとします。
JMPは、SQLFetchの代わりにSQLFetchScroll ODBC関数を使用します(サポートされている場合)。
SQLDescribeColがテーブル名を含む可能性あり
(ブール値)SQLDescribeCol ODBC関数によって返される列名にテーブル名を含めることができるかどうかを指定します。クラウドデータソース用の一部のドライバはこれを行います。[オン]オプションが選択されている場合、JMP はSQLDescribeCol ODBC関数によって返された値を解析します。
スキーマのサポート
(ブール値|自動)ドライバがスキーマをサポートするかどうかを指定します。[自動]オプションが選択されている場合、JMPはこれを自動的に決定しようとします。
値の末尾の空白に意味あり
(ブール値)末尾の空白を除くと値は同じだが、末尾の空白の有無や文字数が異なっている場合、それらの値を異なるものとみなすかどうかを指定します。多くのデータベースでは、末尾の空白だけが異なる値は等しい値だと見なされます。一意な値を求める際に、このオプションの設定をJMPは用います。
Success with Infoをフェッチエラーとして扱う
(ブール値)「Success with Info」という結果をエラーとして扱うかどうかを指定します。データをフェッチするときに、一部のドライバはデータを切り詰めて、エラーではなく「Success with Info」という結果を返します。
SQL
SQLコマンドをフォーマットするためのオプション。
デフォルトのケース(大文字/小文字)
(なし|大文字|小文字)引用符で囲まれていないSQL識別子を、引用符で囲んだコードにする際に、そららのSQL識別子を大文字にするか、小文字にするかを指定します。たとえば、SQL Serverは、select colname from ...とselect COLNAME from ...を引用符で囲まれたselect [COLNAME] from ...と同じように扱うため、このオプションを[大文字]に設定する必要があります。このオプションは、SQL識別子を引用符で囲む際に、それらのSQL識別子を大文字に変換するか、小文字に変換するかを決めるために用います。
日付リテラル形式
(関数)ここで指定された関数に基づいて、日付と時刻のデータを分かりやすい形式に変換します。「Default」という文字列を指定した場合、JMPは独自の変換を使用します。
ここで指定する関数には、日付または時刻のデータに加えて、「DATE」、「TIME」、または「TIMESTAMP」のいずれかの文字列での条件分岐が必要です。
計算式エディタのモード
算出された列の計算式をクエリービルダーで編集する際に、計算式エディタに表示する一連の関数を決定します。
Generic
一般的に適用できる一連の関数を指定します。
Access
Access SQLに関連する一連の関数を指定します。
DB2
IBM Db2に関連する一連の関数を指定します。
JMP
JMPに関連する一連の関数を指定します。
MySQL
MySQLに関連する一連の関数を指定します。
Oracle
Oracle Database SQLに関連する一連の関数を指定します。
SAS
SASに関連する一連の関数を指定します。
SQL Server
SQL Serverに関連する一連の関数を指定します。
すべて
上記のオプションで使用可能なすべての機能を含めます。
行数をカウントするSQL
(関数)ここで指定した関数に基づき、テーブル内の行数が数えられます。関数の内部で、行数を数えるためのSQLクエリーを定義します。なお、[値なし]オプションを選択すると、行数は計算されません。クエリービルダーは、ここで指定された関数に基づきテーブル内の行数を表示します。
この関数では、スキーマとテーブル名という2つの引数を指定し、SQLクエリーで行数を数えた後、また、その文字列を戻り値で返す必要があります。スキーマが使用されていない場合、スキーマ名は空白にしてもかまいません。行数が不明な場合には、戻り値は空であるか、値-1である必要があります。
以下の関数の例を見てください。
//以下のようなクmエリーで行数を数えます:// SELECT NUM_ROWS FROM all_tables WHERE// table_name = 'my_table' AND owner = 'my_schema';Function({schema, table}, {quote string},quote string = Function({str}, "'" || Substitute(str, "'", "''") || "'");
Concat( "SELECT NUM_ROWS FROM all_tables WHERE table_name = ",quote string(table),
If(schema == "", "", " AND owner = " || quote string(schema)),
";")
);
キーワード
(関数)SQLコード内で、SQL識別子ではなくキーワードとみなされる文字列を指定します。このオプションは、SQL識別子がキーワードとして解釈されるのを避けるために、キーワードと同じ名前のSQL識別子に引用符で囲むために使用されます。
引用符の種類
(Double (“id”)|Single ('id')|SAS ('id'n)|Brackets ([id])|Backticks (‘id‘))SQL識別子に使用されるエスケープ文字と引用符の種類を指定します。
NullとInの併用のサポート
(ブール値)INに指定する値にNULLを使用できるかどうかを指定します。
次の例は、[オン]オプションを指定したときに生成されるコードの一例を示しています。
col IN ("val1", "val2", NULL)
次の例は、[オフ]オプションを指定したときに生成されるコードの一例を示しています。
col IS NULL OR col IN ("val1", "val2")
末尾のセミコロン
(ブール値)セミコロンで終わるSQLクエリーをドライバが処理するかどうかを指定します。このオプションは、クエリービルダーによって生成されるSQLコードには直接影響しません。
引用符なしの名前のRegex
(正規表現)ここには、引用符で囲みたいSQL識別子を正規表現で指定します。キーワードと一致するSQL識別子も含み、SQLコードにおいて引用符で囲まれていないSQL識別子に対して、ここで指定した正規表現と一致する名前が引用符で囲まれます。デフォルトの正規表現は^[A-Za-z_][A-Za-z_0-9]*$で、これはアルファベット文字またはアンダースコアの後に0個以上の文字、アンダースコア、または数字が続くものと正確に一致します。
SQL集計関数
SQL集計関数を指定するためのオプション。各オプションは、それぞれの関数に意味する文字列とともに[値あり]に設定されるか、サポートされないことを示す[値なし]に設定されます。
たとえば、「Average Distinct関数」にはデフォルトの文字列「AVG(DISTINCT」があります。これは、SELECT AVG(DISTINCT colname) FROM ...のような一意の値の平均を計算するSQLコードを生成するために使用されます。
SQL結合
SQLの結合のオプションを指定します。これらは、行いたい結合方法を決定するためにクエリービルダーによって使用されます。
ペアワイズJoinが必須
(ブール値)結合をペアワイズでのみ実行できるようにするかどうかを指定します。その場合は、括弧で囲む必要があります。
次の例は、このオプションが[オン]に設定されている場合のペアワイズ結合の一例を示しています。
SELECT *FROM (( table1 t1 LEFT OUTER JOIN table2 t2 ON ( t1.col2 = t2.col2 ) ) LEFT OUTER JOIN table3 t3 ON ( t1.col3 = t3.col3 ) ) ;次の例は、このオプションが[オフ]に設定されている場合の結合の一例を示しています。
SELECT *FROM table1 t1 LEFT OUTER JOIN table2 t2 ON ( t1.col2 = t2.col2 ) LEFT OUTER JOIN table3 t3 ON ( t1.col3 = t3.col3 ) ;Cross Joinのサポート
(ブール値)Cross Joinがサポートされるかどうかを指定します。
Full Outer Joinのサポート
(ブール値)Full Outer Joinがサポートされるかどうかを指定します。
Inner Joinのサポート
(ブール値)Inner Joinがサポートされるかどうかを指定します。
Left Outer Joinのサポート
(ブール値)Left Outer Joinがサポートされるかどうかを指定します。
Right Outer Joinのサポート
(ブール値)Right Outer Joinがサポートされるかどうかを指定します。
SQLサンプリング
テーブルから抽出された行を返すSQLサンプリングを実装するためのオプション。
サンプルを生成する周囲のSQL
(関数)この関数では、サンプリングを行うための元のSQLクエリーに追加する処理を指定します。この関数は、サンプリングの設定を引数とする。また、関数の戻り値としては、空の文字列(追加の処理がないことを示す)、または、プレースホルダーテキスト^QUERYSQLを含む文字列を返すようにします。
次の例では、“First N”(最初のN行)をサンプリングする処理を実装しています。サンプリングの設定が"First N"の場合はクエリーのテンプレートを返し、それ以外の場合は空の文字列を返しています。
Function({qss}, {},If(qss << Get Sample Type != "First N", "",
"SELECT * FROM (^QUERYSQL) WHERE ROWNUM <= "|| Char(qss << Get Sample Amount)
)
);
サンプル設定オブジェクトは、次のJSLメッセージをサポートしています。
<< Get Sample Amount
抽出する量を返します。これは、サンプルタイプに応じて、行数またはパーセント値(0~100)となります。
<< Get Sample Is Repeatable
無作為抽出で乱数シード値が明示的に指定されているかどうかを返します。
<< Get Sample Seed
無作為抽出で使われている乱数シード値を返します。
<< Get Sample Type
実行するサンプリングの種類、つまり“Percent”「パーセント」、“N Rows”「行数」、または“First N”「最初のN行」という文字列のいずれかを返します。
<< Get Use Block Sampling
ブロックサンプリング(1)と行サンプリング(0)のどちらを使用しているかを返します。
サンプルを生成するSQL
ここで提供される関数は、SQLクエリーでサンプリングを実装するために使用されるコードと、SQLクエリーにおけるそのコードの場所を決定します。
この関数は、サンプリング設定(上記のサンプルを生成する周囲のSQLで説明している)サンプリング設定とコンテキスト(文字列)の2つの引数を受け取ります。コンテキスト引数は、SQLクエリーのどこでJMPがコードを生成するかを示します。
次のコンテキストが利用できます。
“Before Columns”
SELECTと最初の列名との間に、戻り値のコードを埋め込みます。
“Before Alias”
最初のテーブル名とその別名との間に、戻り値のコードを埋め込みます。
“After From”
FROM節の最後と次の何かしらの節の前との間に、戻り値のコードを埋め込みます。
“After Joins”
JOIN節の最後とWHEREなどの追加の節の前との間に、戻り値のコードを埋め込みます。
“As Order By”
ORDER BY節を、戻り値のコードに置き換えます。これは、次の“At End”と似ていますが、戻り値のコードにORDER BY節が含まれている場合に使用します。
“At End”
SQLクエリーの一番最後に、戻り値のコードを埋め込みます。
ブロックサンプリングのサポート
(ブール値)OracleのSAMPLE BLOCKのように、サンプリングをブロック単位で、つまり個々の行よりも粗いレベルで実行できるかどうか(またはブロック単位でのみ実行できるかどうか)を指定します。
再現可能なサンプリングのサポート
(ブール値)OracleのSEED (123456)のように、シードを使用してサンプリングを再現できるかどうかを指定します。
行によるサンプリングのサポート
(ブール値)サンプリングを行単位で実行できるかどうか(または行単位でのみ実行できるかどうか)を指定します。
「先頭のN行」のサンプリングのサポート
(ブール値)PostgreSQLのLIMIT 1000のように、ユーザ指定のNに対して結果の最初のN行の取得がサポートされるかどうかを指定します。
「N行」のサンプリングのサポート
(ブール値)SQL ServerのTABLESAMPLE (1000 ROWS)のように、ユーザ指定のNに対して結果からランダムなN行を取得することがサポートされるかどうかを指定します。
N RowsとOrder By併用のサンプリングのサポート
(ブール値)ランダムな行数の取得と(ORDER BYを使った)出力の順序付けを同時に使用できるかどうかを指定します。これは、PostgreSQLのようなデータベースでは[オフ]であり、ランダムな行数の取得がORDER BY RANDOM() LIMIT 1000のような操作で実装されているため、ORDER BY節は通常の目的では使用できなくなります。
「パーセント」のサンプリングのサポート
(ブール値)SQL ServerのTABLESAMPLE (10 PERCENT)のように、ユーザ指定のNに対してパーセントによるサンプリングの結果の取得がサポートされるかどうかを指定します。
テスト
指定された値を使用して接続を試行し、テストが成功したかどうかを確認するメッセージボックスを表示します。
コピーを保存
IDを指定した後、エディタの現在の状態を保存し、そのIDを使用して「データコネクタの選択」ウィンドウの使用可能なコネクタのリストに登録します。接続の確立を参照してください。
ログに書き出し
エディタの現在の状態をログに書き込みます。ログに書き込まれたテキストは、設定ファイルの作成に使用できます。
設定したデータコネクタをJMPアドインとして保存すれば、複数のユーザがそのコネクタを共有して使用できます。異なるオペレーティングシステム上でも、この共有は行えます。
1. [ファイル]>[データベース]>[データコネクタ]を選択します。
2. 「コネクタ」フィールドの赤い三角ボタンをクリックします。
3. [コネクタの共有]を選択します。
4. 共有する各コネクタをコネクタレジストリから「選択されたコネクタ」フィールドに追加するには、そのコネクタをダブルクリックするか、またはそのコネクタを選択して>ボタンをクリックします。
5. 「アドインファイルに名前を付けて保存」ウィンドウで[保存]を選択します。
6. データコネクタがJMPアドインファイルとして保存されます。
共有データコネクタは、JMPのアドイン機能を使用して簡単にインストールおよび管理できます。『JMP スクリプトガイド』のJMPアドインの管理を参照してください。
データコネクタを用いて読み込んだJMPデータテーブルをJMP Liveに発行すると、JMP Live上において、決められたスケジュールに従ってデータベースに接続し、グラフを描いたり分析したりするデータを自動更新させることができます。データコネクタの機能を用いることにより、さまざまなデバイス上の複数のユーザが、JMPやJMP Liveの機能を使用して1つのデータソースにアクセスし、分析できるようになります。
データコネクタを使用して作成されたデータテーブルは、JMP Liveに発行することができます。また、JMP Live上で、特定のスケジュールに従って更新させることもできます。[テーブルを開く]に比べ、これらのデータテーブルは、適切なODBCドライバを指定することにあまり依存しないため、更新スクリプトの設定が簡単になります。
JMP Liveへのレポートの発行の詳細については、JMP Liveを使ったレポートの共有を参照してください。