"SQL" (外部評価システム)

サポートされているデータベースのリスト »

詳細

ExternalEvaluateの使用法

  • ExternalEvaluate["SQL",code] はデータベース接続でSQLの列を実行し,Wolfram言語式として結果を返す.
  • ExternalEvaluate["SQL"returntype,code] はSQLの列を実行し,指定された returntype で結果を返す.returntype に指定できるのは"Dataset""Rows""NamedRows""Columns""NamedColumns"である.
  • ExternalEvaluate[DatabaseReference[ref],code] ExternalEvaluate[{"SQL","Evaluator"DatabaseReference[ref]},code]と同等である.
  • ExternalEvaluate[{"SQL","Evaluator"evaluator},] evaluator として可能な設定:
  • "path"またはFile["path"]SQLiteデータベースへのパス
    URL["url"]"backend://user:password@host:port/name"の形式で指定された接続
    DatabaseReference[]SQLデータベース接続
    SQLConnection[]SQL-JDBCデータベース接続

データ型

  • SQLのデータ型は適切なWolfram言語式にマップされる.
  • 日付と時間は,通常DateObjectTimeObjectに変換される.
  • バイナリデータはByteArrayに変換される.
  • サポートされているデータベースSQLitePostgreSQLMySQLMicrosoftSQLOracleのそれぞれについてサポートされるデータ型の完全リストが利用できる.

使用法

  • 列のテンプレート(<**>)はWolfram言語式を評価したりSQLコード列に挿入したりするのに使うことができる.

例題

すべて開くすべて閉じる

  (3)

デモのデータベースへの参照を指定する:

SQLでクエリを評価して結果を返す:

外部言語のセルでSQLを使うためには,デフォルトのデータベースを登録する必要がある:

>をタイプしてドロップダウンメニューからSQLを選ぶと,SQLコードのセルが得られる:

SELECT * FROM employees LIMIT 10

Fileラッパーを使ってファイルに含まれるコードを実行する:

CloudDeployを使ってコードを配備し,CloudObjectから直接コードを実行する:

URLラッパーを使ってオンラインでホストされたコードを直接実行する:

スコープ  (20)

セッションを開始する:

すべての表を返すクエリを評価する:

制限を使って,一定の表にクエリを行う:

AS文を使って列の名前を変更する:

セッションを終了する:

デフォルトではExternalEvaluateDatasetを使ってデータを返す:

別の形式でデータを返すためには"ReturnType"を使うことができる:

"Columns"を使うと,数値データは可能な場合はパックアレーとして返される:

ローカルのPostgreSQLデータベースのセッションを開始する(この入力を評価するためには,適切なPostgreSQLデータベースインスタンスが実行している必要がある):

サポートされる場合は,ExternalEvaluateは文字列の代りにWolfram言語式を返す:

パラメータは,現在使用中のデータベースバックエンドに従って自動的に正規化される.バックエンドがサポートする場合は,IntegerByteArrayStringDateObjectTimeObject等の式が使える:

列のテンプレートを使うと,Wolfram言語式をSQLコードに挿入することができる:

2つの変数を設定する:

x^2+y^2はWolfram言語内で評価され,結果は変換されてSQLのコード列に挿入される:

Associationを使って,手動でテンプレートに引数を与える:

名前付きの引数を使う:

セッションオプション  (8)

"ReturnType"  (3)

SQLでは,デフォルトの戻り型は"Dataset"である:

"ReturnType"はデータを異なる形式で戻すために使うことができる:

"ReturnType"にかかわらず,整数,実数,文字列等の基本的な型は自動的に変換される:

"ReturnType"を指定する際に,省略形として connectionreturntype を使うことができる:

"Evaluator"  (1)

指定された"Evaluator"を使ってSQLクエリを評価する:

文字列またはFileラッパーを使うとき,SQLite接続が開く:

URLラッパーを使うことによって,"Evaluator"を指定することもできる:

これは以下と同等である:

"SessionProlog"  (1)

"SessionProlog"を使って,セッションの最初に副作用を実行する:

"SessionEpilog"  (1)

"SessionEpilog"を使って,セッションの最後に副作用を実行する:

"Prolog"  (1)

"Prolog"を使って,それぞれの評価の前に副作用を実行する:

"Epilog"  (1)

"Epilog"を使ってそれぞれの評価の後に副作用を実行する:

コマンドオプション  (8)

"Command"  (4)

文字列が与えられたときだけ,クエリは直接実行される:

上記は次の形式を使ったコマンドに等しい:

Fileラッパーを使ってファイルのコードを実行する:

ほとんどの場合,Associationは省略できる:

URLラッパーを使って,オンラインでホストされるコードを直接実行する:

ほとんどの場合,Associationは省略できる:

CloudObjectにコードを置く:

クラウドから直接評価する:

ほとんどの場合,Associationは省略できる:

"ReturnType"  (1)

デフォルトでは,コマンドはセッションの生成中に指定される"ReturnType"を使って実行される:

コマンドで"ReturnType"を指定すると,セッションの"ReturnType"が上書きされる:

"TemplateArguments"  (3)

コマンドを実行するとき,TemplateExpressionを行内に埋め込むことができる:

"TemplateArguments"を使ってTemplateSlotを明示的に埋めることができる:

リスト以外の引数が与えられると,テンプレートには単独のテンプレート引数が渡される:

テンプレートスロットに名前を付け,Associationを使うと,テンプレートに名前付きの引数を渡すことができる:

アプリケーション  (2)

DatabaseReferenceはインメモリのSQLiteデータベースを表すこともできる:

インメモリセッションで行った操作はすべてExternalEvaluate呼出しの最後に失われる:

データベースに二次的作用を及ぼしている操作は通常Nullを返す:

バックエンドによっては,データを挿入し戻り値を指定することができるものもある:

考えられる問題  (1)

通常,データベースはサーバの時刻帯を使って日付を返す:

特定の時刻帯で列を返すよう,クエリを変更する:

"SessionProlog"を使ってデフォルトの時刻帯を設定することもできる: