Query

Query[operator1,operator2,]

Datasetオブジェクトに適用可能なクエリを表す.連続する operatoriが連続的により深いレベルに適用される.

詳細とオプション

  • Queryは,任意の矩形データあるいは階層データの,複雑なフィルタリング,再構成,集約を行い,通常は,さらに矩形化あるいは階層化されたデータを返すことができる.
  • Queryは,Datasetオブジェクトあるいはリストと連想からなる任意のネストした式に使うことができる.
  • Queryは,式あるいはデータ集合の横断的なプロセスでの計算を許容するPartの一般化と見ることができる.
  • operatoriは次の任意の形でよい.
  • All,i,i;;j,"key",Key[]部分演算子
    Select[],MaximalBy[],フィルタリング演算子
    Counts,Total,Mean,Max,集約演算子
    Query[],{op1,op2,},サブクエリ演算子
    Function[],f任意の関数
  • Query[operator1,][expr]では,operatoriexpr の連続的に深いレベルに適用されるが,任意の1つが expr の中を「下降中」あるいはそこから「上昇中」に適用されることがある.一般に,部分指定演算子およびフィルタリング演算子は「下降」演算子である.集約演算子,サブクエリ演算子,任意の関数は「上昇」演算子である.Query[][expr]expr を返す.
  • 「下降」演算子は,続く演算子がより深いレベルに適用される前に,もとのデータ集合の対応する部分に適用される.下降演算子は,あるレベルに適用された場合に,データのより深いレベルの構造は変えないという特徴を持つ.このため,続く演算子はもとのデータ集合の対応するレベルにあるのと同一の構造を持つ部分式に遭遇することになる.最も単純な下降演算子はAllである.この演算子は指定されたレベルのすべての部分を選択し,その部分のデータ構造はそのままに残す.
  • 「上昇」演算子は,より深いレベルに続く演算子がすべて適用された後で適用される.下降演算子がもとのデータのレベルに対応するのに対し, 上昇演算子は結果のレベルに対応する.下降演算子とは異なり,上昇演算子はそれが適用されるデータの構造を必ずしも保存しない.演算子は,特に下降演算子として認識されている場合を除いて,上昇演算子であるとみなされる.
  • 「下降」部分演算子は,続く演算子をより深いレベルに適用する前に,あるレベルでどの要素を取るかを指定する.
  • All続く演算子をリストあるいは連想の各部分に適用する
    i;;j部分 i から部分 j までを取り,次の演算子を各部分に適用する
    i部分 i だけを取り,次の演算子をそれに適用する
    "key",Key[key]連想中の key の値を取り,次の演算子をそれに適用する
    Keys連想のキーを取り,続く演算子を各キーに適用する
    Values連想の値を取り,続く演算子を各値に適用する
    {part1,part2,}指定された部分を取り,次の演算子を各部分に適用する
  • 「下降」フィルタリング演算子は,より深いレベルで続く演算子を適用する前に,あるレベルで要素をどのように並べ直すか,あるいは要素にどのようにフィルタをかけるかを指定する.
  • Select[test]test を満足するリストあるいは連想の部分だけを取る
    SelectFirst[test]test を満足する最初の部分を取る
    KeySelect[test]キーが test を満足する連想の部分を取る
    MaximalBy[crit],MinimalBy[crit]基準 crit が最小あるいは最大の部分を取る
    SortBy[crit]crit の順で部分を並び替える
    KeySortBy[crit]連想の各部分をそのキーに基づいて crit の順にソートする
    DeleteDuplicatesBy[crit]crit による,他と区別できる部分を取る
    DeleteMissing頭部Missingを持つ要素を除去する
  • 「上昇」集約演算子は,続く演算子をより深いレベルに適用した結果を,組み合せたり要約したりする.
  • Total結果のすべての数量を合計する
    Min,Max結果の最大量と最小量を与える
    Mean,Median,Quantile,結果の統計的要約を与える
    Histogram,ListPlot,結果の可視化を計算する
    Merge[f]関数 f を使って,結果の連想中で共通キーを1つにする
    Catenateリストの要素あるいは連想をまとめる
    Counts結果中の値の出現を数える連想を与える
    CountsBy[crit]値の出現を crit に従って数える連想を与える
    CountDistinct結果中の他とは異なる値の数を与える
    CountDistinctBy[crit]結果中の他とは異なる値の数を,crit に従って与える
  • 「上昇」サブクエリ演算子は,より深いレベルに続く演算子を適用した後で,サブクエリを行う.
  • Query[]結果にサブクエリを実行する
    {op1,op2,}複数の演算子を結果に一度に適用し,リストを返す
    op1/* op2/* op1を適用し,次に op2を同じレベルに適用する等
    <|key1op1,key2op2,|>複数の演算子を結果に一度に適用し,指定されたキーを持つ連想を返す
    {key1op1,key2op2,}結果の特定の部分に異なる演算子を適用する
  • 1つあるいは複数の下降演算子が1つあるいは複数の上昇演算子と組み合せられると(例:desc/*asc),最初に下降部分が適用され,次に続く演算子がより深いレベルに適用され,最後に上昇演算子が結果に適用される.
  • 特殊下降演算子GroupBy[spec]は,それが現れたレベルに新たな連想を導入し,他の演算子の動作に影響することなく,既存のクエリに挿入されることも既存のクエリから削除されることもできる.
  • 構文GroupBy["string"]GroupBy[Key["string"]]の同義語として使うことができる.SortByCountsByMaximalByMinimalByDeleteDuplicatesByにも同じ構文を使うことができる.
  • 使用可能なオプション
  • FailureAction "Abort"失敗した演算子をどのように扱うか
    MissingBehavior AutomaticMissingを含む演算をどのように扱うか
    PartBehavior Automatic欠落部分をどのように取り出すか
  • FailureActionの可能な値
  • Noneすべてのメッセージと失敗を無視する
    "Abort"メッセージに遭遇した段階で,クエリ全体を放棄する(デフォルト)
    "Drop"メッセージを出した操作の結果を削除する
    "Encapsulate"Failureオブジェクトでメッセージを発する操作を囲む
    "Replace"メッセージを発した操作の結果をMissing["Failed"]で置換する
  • オプションMissingBehaviorは,数値その他の関数がMissingの頭部を持つ式をどうのよに扱うかについて説明する.以下は可能な値である.
  • NoneMissingの通常の動作を使う
    AutomaticMeanTotal等に対して特殊規則を呼び出す
  • オプションPartBehaviorは,存在しない部分を参照している演算子がどのように評価されるかについて説明している.次は可能な値である.
  • NonePartの通常の動作を使う
    Automatic無効な i;;j,欠落した i 等に対して特殊規則を呼び出す

例題

すべて開くすべて閉じる

  (1)

クエリを実行する表データを作る:

行の集合を取る:

特定の行を取る:

特定の行から特定の要素を取る:

特定の列のコンテンツを取る:

列内の特定の部分を取る:

行と列の部分集合を取る:

特定の列に関数を適用する:

列に基づいてデータを分割し,クエリの残りを各グループに適用する:

各行に関数を適用する:

関数を,各行と結果全体の両方に適用する:

関数fを各行の各要素に適用する:

特定の演算子を各列に別々に適用する:

各列を計算する演算子を指定して新たな表を構築する:

同じテクニックを使って列の名前を変える:

ある基準に基づいて特定の行を選ぶ:

行を選択した後で列のコンテンツを取る:

行を選択した後で,使用可能な列の部分集合を取る:

基準を満たす最初の行からの値を取る:

基準に従って行をソートする:

得点関数の最高値を与える行を取る:

基準が重複する行を削除する:

上昇演算子と下降演算子を構成し,行にフィルタをかけた後で列の値を集計する:

TotalQueryを組み合せて同じことを行う:

オプション  (4)

FailureAction  (2)

サンプルデータを作成する:

FailureActionNoneの設定では,結果に対して特別なアクションは取られない:

FailureAction->"Encapsulate"と設定すると,失敗した結果がFailure オブジェクトに入れられる:

FailureAction->"Replace"と設定すると,失敗した結果がプレースホルダで置換される.関数Queryについては,このプレースホルダはMissingオブジェクトである:

FailureAction->"Drop"と設定すると,失敗した結果が最終的な式から削除される:

FailureAction->"Abort"と設定すると,計算が中止されてFailureオブジェクトが返される:

FailureAction->{"Drop",f}の設定を使って,失敗した結果を削除する前にアクションを取ることができる:

FailureAction->{"Replace",f}と設定すると,失敗した関数を置換するものが指定できる:

MissingBehavior  (1)

デフォルトのオプション値のMissingBehavior->Automaticは,Missingに遭遇した演算子に特殊規則を適用する:

MissingBehavior->Noneを使って,すべての演算子にMissingをの通常動作を指定することができる:

PartBehavior  (1)

デフォルトのオプション値PartBehavior->Automaticは,そうしなければ失敗するであろう演算子の特別な動作を引き起こす:

PartBehavior->Noneを使うとPartの通常動作を使うように指定される:

特性と関係  (1)

Queryは,Datasetがサポートするクエリ言語の演算子形である:

適用される前に,Query式は通常のWolfram言語関数の通常の構成とその演算子形に「コンパイルされる」.Queryのコンパイルされた形が見たければ,Normalを使うとよい:

Wolfram Research (2014), Query, Wolfram言語関数, https://reference.wolfram.com/language/ref/Query.html.

テキスト

Wolfram Research (2014), Query, Wolfram言語関数, https://reference.wolfram.com/language/ref/Query.html.

CMS

Wolfram Language. 2014. "Query." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/Query.html.

APA

Wolfram Language. (2014). Query. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/Query.html

BibTeX

@misc{reference.wolfram_2024_query, author="Wolfram Research", title="{Query}", year="2014", howpublished="\url{https://reference.wolfram.com/language/ref/Query.html}", note=[Accessed: 17-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_query, organization={Wolfram Research}, title={Query}, year={2014}, url={https://reference.wolfram.com/language/ref/Query.html}, note=[Accessed: 17-November-2024 ]}