# groonga - オープンソースのカラムストア機能付き全文検索エンジン

- English

# 7.3.34. `logical_select`

## 7.3.34.1. 概要

バージョン 5.0.5 で追加.

`logical_select` は select のシャーディングバージョンです。 `logical_select` は複数のテーブルからレコードを検索し、マッチしたレコードを出力します。

`logical_select` は `sharding` プラグインに含まれているので、 `sharding` プラグインを plugin_register する必要があります。

## 7.3.34.2. 構文

このコマンドにはたくさんの引数があります。

必須の引数は `logical_table` と `shard_key` です。それ以外の引数は省略可能です:

    logical_select logical_table
                   shard_key
                   [min=null]
                   [min_border="include"]
                   [max=null]
                   [max_border="include"]
                   [filter=null]
                   [sortby=null]
                   [output_columns="_id, _key, *"]
                   [offset=0]
                   [limit=10]
                   [drilldown=null]
                   [drilldown_sortby=null]
                   [drilldown_output_columns="_key, _nsubrecs"]
                   [drilldown_offset=0]
                   [drilldown_limit=10]
                   [drilldown_calc_types=NONE]
                   [drilldown_calc_target=null]
                   [sort_keys=null]
                   [drilldown_sort_keys=null]
                   [match_columns=null]
                   [query=null]
                   [drilldown_filter=null]

This command has the following named parameters for dynamic columns:

> - `columns[${NAME}].stage=null`
> - `columns[${NAME}].flags=COLUMN_SCALAR`
> - `columns[${NAME}].type=null`
> - `columns[${NAME}].value=null`
> - `columns[${NAME}].window.sort_keys=null`
> - `columns[${NAME}].window.group_keys=null`

You can use one or more alphabets, digits, `_` for `${NAME}`. For example, `column1` is a valid `${NAME}`. This is the same rule as normal column. See also name.

Parameters that have the same `${NAME}` are grouped.

For example, the following parameters specify one dynamic column:

> - `--columns[name].stage initial`
> - `--columns[name].type UInt32`
> - `--columns[name].value 29`

The following parameters specify two dynamic columns:

> - `--columns[name1].stage initial`
> - `--columns[name1].type UInt32`
> - `--columns[name1].value 29`
> - `--columns[name2].stage filtered`
> - `--columns[name2].type Float`
> - `--columns[name2].value '_score * 0.1'`

This command has the following named parameters for advanced drilldown:

> - `drilldowns[${LABEL}].keys=null`
> - `drilldowns[${LABEL}].sort_keys=null`
> - `drilldowns[${LABEL}].output_columns="_key, _nsubrecs"`
> - `drilldowns[${LABEL}].offset=0`
> - `drilldowns[${LABEL}].limit=10`
> - `drilldowns[${LABEL}].calc_types=NONE`
> - `drilldowns[${LABEL}].calc_target=null`
> - `drilldowns[${LABEL}].filter=null`
> - `drilldowns[${LABEL}].columns[${NAME}].stage=null`
> - `drilldowns[${LABEL}].columns[${NAME}].flags=COLUMN_SCALAR`
> - `drilldowns[${LABEL}].columns[${NAME}].type=null`
> - `drilldowns[${LABEL}].columns[${NAME}].value=null`
> - `drilldowns[${LABEL}].columns[${NAME}].window.sort_keys=null`
> - `drilldowns[${LABEL}].columns[${NAME}].window.group_keys=null`

バージョン 6.1.4 で撤廃: `drilldown[...]` 構文は非推奨になりました。代わりに `drilldowns[...]` を使用してください。

バージョン 6.1.5 で撤廃: drilldowns[${LABEL}].sortby は非推奨になりました。代わりに drilldowns[${LABEL}].sort_keys を使ってください。

`${LABEL}` には1つ以上のアルファベット、数字、 `_` 、 `.` を使うことができます。たとえば、 `parent.sub1` は有効な `${LABEL}` です。

同じ `${LABEL}` も持つ引数は同じグループになります。

たとえば、以下の引数は1つのドリルダウンを指定しています。

> - `--drilldowns[label].keys column`
> - `--drilldowns[label].sort_keys -_nsubrecs`

以下の引数は2つのドリルダウンを指定しています。

> - `--drilldowns[label1].keys column1`
> - `--drilldowns[label1].sort_keys -_nsubrecs`
> - `--drilldowns[label2].keys column2`
> - `--drilldowns[label2].sort_keys _key`

## 7.3.34.3. `select` との違い

`logical_select` の多くの機能は select の機能と対応しています。たとえば、引数名は同じですし、出力フォーマットも同じです。

しかし、いくつか select と違うところもあります。

> - `table` 引数ではなく、 `logical_table` と `shard_key` 引数が必須です。

> - 複数のシャードを使った場合の `sort_keys` はサポートしていません。（1つのシャードのみを使った場合はサポートしています。）

> - 複数のシャードを使った場合、 `drilldowns[${LABEL}].sort_keys` の中で `_value.${KEY_NAME}` を使えません。1つのシャードのみを使った場合は使えます。

> - `cache` はまだサポートしていません。

> - `match_escalation_threshold` はまだサポートしていません。

> - `query_flags` はまだサポートしていません。

> - `query_expander` はまだサポートしていません。

> - `adjuster` はまだサポートしていません。

## 7.3.34.4. 使い方

例を使いながら `logical_select` の使い方を学びましょう。このセクションではよく使われる使い方を紹介します。

`logical_select` は `sharding` プラグインに含まれているので `sharding` プラグインを登録する必要があります。

実行例:

    plugin_register sharding
    # [[0, 1337566253.89858, 0.000355720520019531], true]

使い方を示すために使うスキーマ定義とサンプルデータは以下の通りです。

実行例:

    table_create Entries_20150708 TABLE_HASH_KEY ShortText
    # [[0, 1337566253.89858, 0.000355720520019531], true]
    column_create Entries_20150708 created_at COLUMN_SCALAR Time
    # [[0, 1337566253.89858, 0.000355720520019531], true]
    column_create Entries_20150708 content COLUMN_SCALAR Text
    # [[0, 1337566253.89858, 0.000355720520019531], true]
    column_create Entries_20150708 n_likes COLUMN_SCALAR UInt32
    # [[0, 1337566253.89858, 0.000355720520019531], true]
    column_create Entries_20150708 tag COLUMN_SCALAR ShortText
    # [[0, 1337566253.89858, 0.000355720520019531], true]
    table_create Entries_20150709 TABLE_HASH_KEY ShortText
    # [[0, 1337566253.89858, 0.000355720520019531], true]
    column_create Entries_20150709 created_at COLUMN_SCALAR Time
    # [[0, 1337566253.89858, 0.000355720520019531], true]
    column_create Entries_20150709 content COLUMN_SCALAR Text
    # [[0, 1337566253.89858, 0.000355720520019531], true]
    column_create Entries_20150709 n_likes COLUMN_SCALAR UInt32
    # [[0, 1337566253.89858, 0.000355720520019531], true]
    column_create Entries_20150709 tag COLUMN_SCALAR ShortText
    # [[0, 1337566253.89858, 0.000355720520019531], true]
    table_create Terms TABLE_PAT_KEY ShortText \
      --default_tokenizer TokenBigram \
      --normalizer NormalizerAuto
    # [[0, 1337566253.89858, 0.000355720520019531], true]
    column_create Terms entries_key_index_20150708 \
      COLUMN_INDEX|WITH_POSITION Entries_20150708 _key
    # [[0, 1337566253.89858, 0.000355720520019531], true]
    column_create Terms entries_content_index_20150708 \
      COLUMN_INDEX|WITH_POSITION Entries_20150708 content
    # [[0, 1337566253.89858, 0.000355720520019531], true]
    column_create Terms entries_key_index_20150709 \
      COLUMN_INDEX|WITH_POSITION Entries_20150709 _key
    # [[0, 1337566253.89858, 0.000355720520019531], true]
    column_create Terms entries_content_index_20150709 \
      COLUMN_INDEX|WITH_POSITION Entries_20150709 content
    # [[0, 1337566253.89858, 0.000355720520019531], true]
    load --table Entries_20150708
    [
    {"_key":       "The first post!",
     "created_at": "2015/07/08 00:00:00",
     "content":    "Welcome! This is my first post!",
     "n_likes":    5,
     "tag":        "Hello"},
    {"_key":       "Groonga",
     "created_at": "2015/07/08 01:00:00",
     "content":    "I started to use Groonga. It's very fast!",
     "n_likes":    10,
     "tag":        "Groonga"},
    {"_key":       "Mroonga",
     "created_at": "2015/07/08 02:00:00",
     "content":    "I also started to use Mroonga. It's also very fast! Really fast!",
     "n_likes":    15,
     "tag":        "Groonga"}
    ]
    # [[0, 1337566253.89858, 0.000355720520019531], 3]
    load --table Entries_20150709
    [
    {"_key":       "Good-bye Senna",
     "created_at": "2015/07/09 00:00:00",
     "content":    "I migrated all Senna system!",
     "n_likes":    3,
     "tag":        "Senna"},
    {"_key":       "Good-bye Tritonn",
     "created_at": "2015/07/09 01:00:00",
     "content":    "I also migrated all Tritonn system!",
     "n_likes":    3,
     "tag":        "Senna"}
    ]
    # [[0, 1337566253.89858, 0.000355720520019531], 2]

ブログエントリー用に `Entries_20150708` と `Entries_20150709` の2つのテーブルがあります。

注釈

テーブル名には `${論理テーブル名}_${YYYYMMDD}` という命名規則を使う必要があります。この例では、 `論理テーブル名` は `Entries` で `YYYYMMDD` は `20150708` または `20150709` です。

各エントリはタイトルと作成日時と内容と「いいね！」数、タグを持っています。タイトルは `Entries_YYYYMMDD` のキーとします。作成日時は `Entries_YYYYMMDD.created_at` カラムの値とします。内容は `Entries_YYYYMMDD.content` カラムの値とします。「いいね！」数は `Entries_YYYYMMDD.n_likes` カラムの値とします。タグは `Entries_YYYYMMDD.tag` カラムの値とします。

`Entries_YYYYMMDD._key` カラムと `Entries_YYYYMMDD.content` カラムには `TokenBigram` トークナイザーを使ったインデックスを作成します。そのため、 `Entries_YYYYMMDD._key` と `Entries_YYYYMMDD.content` は両方とも全文検索できます。

これで例を示すためのスキーマとデータの準備ができました。

### 7.3.34.4.1. 簡単な使い方

TODO

## 7.3.34.5. 引数

このセクションでは `logical_select` の引数について説明します。

### 7.3.34.5.1. 必須引数

必須引数は二つあります。 `logical_table` と `shard_key` です。

#### 7.3.34.5.1.1. `logical_table`

論理テーブル名を指定します。これは `_YYYYMMDD` をテーブル名からのぞいたものです。実際のテーブルが `Entries_20150708` や `Entries_20150709` といったものなら、論理テーブル名は `Entries` です。

`logical_table` と `shard_key` 引数を指定すると10レコード表示できます。これらの引数は必須の引数です。

実行例:

    logical_select --logical_table Entries --shard_key created_at
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   [
    #     [
    #       [
    #         5
    #       ],
    #       [
    #         [
    #           "_id",
    #           "UInt32"
    #         ],
    #         [
    #           "_key",
    #           "ShortText"
    #         ],
    #         [
    #           "content",
    #           "Text"
    #         ],
    #         [
    #           "created_at",
    #           "Time"
    #         ],
    #         [
    #           "n_likes",
    #           "UInt32"
    #         ],
    #         [
    #           "tag",
    #           "ShortText"
    #         ]
    #       ],
    #       [
    #         1,
    #         "The first post!",
    #         "Welcome! This is my first post!",
    #         1436281200.0,
    #         5,
    #         "Hello"
    #       ],
    #       [
    #         2,
    #         "Groonga",
    #         "I started to use Groonga. It's very fast!",
    #         1436284800.0,
    #         10,
    #         "Groonga"
    #       ],
    #       [
    #         3,
    #         "Mroonga",
    #         "I also started to use Mroonga. It's also very fast! Really fast!",
    #         1436288400.0,
    #         15,
    #         "Groonga"
    #       ],
    #       [
    #         1,
    #         "Good-bye Senna",
    #         "I migrated all Senna system!",
    #         1436367600.0,
    #         3,
    #         "Senna"
    #       ],
    #       [
    #         2,
    #         "Good-bye Tritonn",
    #         "I also migrated all Tritonn system!",
    #         1436371200.0,
    #         3,
    #         "Senna"
    #       ]
    #     ]
    #   ]
    # ]

存在しないテーブルを指定するとエラーが返ります。

実行例:

    logical_select --logical_table Nonexistent --shard_key created_at
    # [
    #   [
    #     -22,
    #     1337566253.89858,
    #     0.000355720520019531,
    #     "[logical_select] no shard exists: logical_table: <Nonexistent>: shard_key: <created_at>",
    #     [
    #       [
    #         "Groonga::Sharding::LogicalSelectCommand::Executor.execute_search",
    #         "/home/kou/work/c/groonga.clean/plugins/sharding/logical_select.rb",
    #         722
    #       ]
    #     ]
    #   ]
    # ]

#### 7.3.34.5.1.2. `shard_key`

シャードキーとして使うカラム名を指定します。シャードキーは適切なシャードへレコードを分配するために使う値を保存しているカラムです。

今のところ、シャードキーは `Time` 型でなければいけません。

`shard_key` の指定方法は logical_table を見てください。

### 7.3.34.5.2. 省略可能引数

いくつか省略可能な引数があります。

#### 7.3.34.5.2.1. `min`

`shard_key` カラムの最小値を指定します。シャードにマッチするレコードがない場合は、そのシャードは検索対象外になります。

たとえば、 `min` が `"2015/07/09 00:00:00"` なら、 `Entry_20150708` は検索対象外です。なぜなら、 `Entry_20150708` は `"2015/07/08"` のレコードしかないからです。

以下の例は `Entry_20150709` テーブルだけを使う例です。 `Entry_20150708` は使われません。

実行例:

    logical_select \
      --logical_table Entries \
      --shard_key created_at \
      --min "2015/07/09 00:00:00"
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   [
    #     [
    #       [
    #         2
    #       ],
    #       [
    #         [
    #           "_id",
    #           "UInt32"
    #         ],
    #         [
    #           "_key",
    #           "ShortText"
    #         ],
    #         [
    #           "content",
    #           "Text"
    #         ],
    #         [
    #           "created_at",
    #           "Time"
    #         ],
    #         [
    #           "n_likes",
    #           "UInt32"
    #         ],
    #         [
    #           "tag",
    #           "ShortText"
    #         ]
    #       ],
    #       [
    #         1,
    #         "Good-bye Senna",
    #         "I migrated all Senna system!",
    #         1436367600.0,
    #         3,
    #         "Senna"
    #       ],
    #       [
    #         2,
    #         "Good-bye Tritonn",
    #         "I also migrated all Tritonn system!",
    #         1436371200.0,
    #         3,
    #         "Senna"
    #       ]
    #     ]
    #   ]
    # ]

#### 7.3.34.5.2.2. `min_border`

最小値を含めるかどうかを指定します。指定可能な値は次の通りです。

Value | 説明
--- | ---
`include` | `min` の値を含みます。これがデフォルト値です。
`exclude` | `min` の値を含みません。

次の例は `exclude` の使用例です。結果には `"Good-bye Senna"` レコードは含まれません。このレコードの `created_at` の値が `"2015/07/09 00:00:00"` だからです。

実行例:

    logical_select \
      --logical_table Entries \
      --shard_key created_at \
      --min "2015/07/09 00:00:00" \
      --min_border "exclude"
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   [
    #     [
    #       [
    #         1
    #       ],
    #       [
    #         [
    #           "_id",
    #           "UInt32"
    #         ],
    #         [
    #           "_key",
    #           "ShortText"
    #         ],
    #         [
    #           "content",
    #           "Text"
    #         ],
    #         [
    #           "created_at",
    #           "Time"
    #         ],
    #         [
    #           "n_likes",
    #           "UInt32"
    #         ],
    #         [
    #           "tag",
    #           "ShortText"
    #         ]
    #       ],
    #       [
    #         2,
    #         "Good-bye Tritonn",
    #         "I also migrated all Tritonn system!",
    #         1436371200.0,
    #         3,
    #         "Senna"
    #       ]
    #     ]
    #   ]
    # ]

#### 7.3.34.5.2.3. `max`

`shard_key` カラムの最大値を指定します。シャードにマッチするレコードがない場合、そのシャードは検索対象外になります。

たとえば、 `max` が `"2015/07/08 23:59:59"` なら `Entry_20150709` は検索対象外です。なぜなら `Entry_20150709` には `""2015/07/09"` のレコードしかないからです。

以下の例は `Entry_20150708` テーブルだけを使います。 `Entry_20150709` は使いません。

実行例:

    logical_select \
      --logical_table Entries \
      --shard_key created_at \
      --max "2015/07/08 23:59:59"
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   [
    #     [
    #       [
    #         3
    #       ],
    #       [
    #         [
    #           "_id",
    #           "UInt32"
    #         ],
    #         [
    #           "_key",
    #           "ShortText"
    #         ],
    #         [
    #           "content",
    #           "Text"
    #         ],
    #         [
    #           "created_at",
    #           "Time"
    #         ],
    #         [
    #           "n_likes",
    #           "UInt32"
    #         ],
    #         [
    #           "tag",
    #           "ShortText"
    #         ]
    #       ],
    #       [
    #         1,
    #         "The first post!",
    #         "Welcome! This is my first post!",
    #         1436281200.0,
    #         5,
    #         "Hello"
    #       ],
    #       [
    #         2,
    #         "Groonga",
    #         "I started to use Groonga. It's very fast!",
    #         1436284800.0,
    #         10,
    #         "Groonga"
    #       ],
    #       [
    #         3,
    #         "Mroonga",
    #         "I also started to use Mroonga. It's also very fast! Really fast!",
    #         1436288400.0,
    #         15,
    #         "Groonga"
    #       ]
    #     ]
    #   ]
    # ]

#### 7.3.34.5.2.4. `max_border`

最大値を含めるかどうかを指定します。指定可能な値は次の通りです。

Value | 説明
--- | ---
`include` | `max` の値を含みます。これがデフォルト値です。
`exclude` | `max` の値を含みません。

次の例は `exclude` の使用例です。結果には `"Good-bye Senna"` レコードは含まれません。このレコードの `created_at` の値が `"2015/07/09 00:00:00"` だからです。

実行例:

    logical_select \
      --logical_table Entries \
      --shard_key created_at \
      --max "2015/07/09 00:00:00" \
      --max_border "exclude"
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   [
    #     [
    #       [
    #         3
    #       ],
    #       [
    #         [
    #           "_id",
    #           "UInt32"
    #         ],
    #         [
    #           "_key",
    #           "ShortText"
    #         ],
    #         [
    #           "content",
    #           "Text"
    #         ],
    #         [
    #           "created_at",
    #           "Time"
    #         ],
    #         [
    #           "n_likes",
    #           "UInt32"
    #         ],
    #         [
    #           "tag",
    #           "ShortText"
    #         ]
    #       ],
    #       [
    #         1,
    #         "The first post!",
    #         "Welcome! This is my first post!",
    #         1436281200.0,
    #         5,
    #         "Hello"
    #       ],
    #       [
    #         2,
    #         "Groonga",
    #         "I started to use Groonga. It's very fast!",
    #         1436284800.0,
    #         10,
    #         "Groonga"
    #       ],
    #       [
    #         3,
    #         "Mroonga",
    #         "I also started to use Mroonga. It's also very fast! Really fast!",
    #         1436288400.0,
    #         15,
    #         "Groonga"
    #       ]
    #     ]
    #   ]
    # ]

### 7.3.34.5.3. 検索関係の引数

`logical_select` は select 互換の検索関連パラメーターをサポートしています。

`match_columns` と `query` はまだサポートしていません。今のところ、 `filter` だけサポートしています。

#### 7.3.34.5.3.1. `match_columns`

バージョン 7.0.1 で追加.

Corresponds to match_columns in select. See match_columns for details.

Here is an example to find records that include `"fast"` text in `content` column:

実行例:

    logical_select \
      --logical_table Entries \
      --shard_key created_at \
      --match_columns content \
      --query "fast"
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   [
    #     [
    #       [
    #         2
    #       ],
    #       [
    #         [
    #           "_id",
    #           "UInt32"
    #         ],
    #         [
    #           "_key",
    #           "ShortText"
    #         ],
    #         [
    #           "content",
    #           "Text"
    #         ],
    #         [
    #           "created_at",
    #           "Time"
    #         ],
    #         [
    #           "n_likes",
    #           "UInt32"
    #         ],
    #         [
    #           "tag",
    #           "ShortText"
    #         ]
    #       ],
    #       [
    #         2,
    #         "Groonga",
    #         "I started to use Groonga. It's very fast!",
    #         1436284800.0,
    #         10,
    #         "Groonga"
    #       ],
    #       [
    #         3,
    #         "Mroonga",
    #         "I also started to use Mroonga. It's also very fast! Really fast!",
    #         1436288400.0,
    #         15,
    #         "Groonga"
    #       ]
    #     ]
    #   ]
    # ]

#### 7.3.34.5.3.2. `query`

バージョン 7.0.1 で追加.

Corresponds to query in select. See select-query-columns for details.

Here is an example to find records that include `"fast"` text in `content` column:

実行例:

    logical_select \
      --logical_table Entries \
      --shard_key created_at \
      --query "content:@fast"
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   [
    #     [
    #       [
    #         2
    #       ],
    #       [
    #         [
    #           "_id",
    #           "UInt32"
    #         ],
    #         [
    #           "_key",
    #           "ShortText"
    #         ],
    #         [
    #           "content",
    #           "Text"
    #         ],
    #         [
    #           "created_at",
    #           "Time"
    #         ],
    #         [
    #           "n_likes",
    #           "UInt32"
    #         ],
    #         [
    #           "tag",
    #           "ShortText"
    #         ]
    #       ],
    #       [
    #         2,
    #         "Groonga",
    #         "I started to use Groonga. It's very fast!",
    #         1436284800.0,
    #         10,
    #         "Groonga"
    #       ],
    #       [
    #         3,
    #         "Mroonga",
    #         "I also started to use Mroonga. It's also very fast! Really fast!",
    #         1436288400.0,
    #         15,
    #         "Groonga"
    #       ]
    #     ]
    #   ]
    # ]

See also match_columns.

#### 7.3.34.5.3.3. `filter`

select の filter に対応しています。詳細は filter を見てください。

以下は例です。

実行例:

    logical_select \
      --logical_table Entries \
      --shard_key created_at \
      --filter "n_likes <= 5"
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   [
    #     [
    #       [
    #         3
    #       ],
    #       [
    #         [
    #           "_id",
    #           "UInt32"
    #         ],
    #         [
    #           "_key",
    #           "ShortText"
    #         ],
    #         [
    #           "content",
    #           "Text"
    #         ],
    #         [
    #           "created_at",
    #           "Time"
    #         ],
    #         [
    #           "n_likes",
    #           "UInt32"
    #         ],
    #         [
    #           "tag",
    #           "ShortText"
    #         ]
    #       ],
    #       [
    #         1,
    #         "The first post!",
    #         "Welcome! This is my first post!",
    #         1436281200.0,
    #         5,
    #         "Hello"
    #       ],
    #       [
    #         1,
    #         "Good-bye Senna",
    #         "I migrated all Senna system!",
    #         1436367600.0,
    #         3,
    #         "Senna"
    #       ],
    #       [
    #         2,
    #         "Good-bye Tritonn",
    #         "I also migrated all Tritonn system!",
    #         1436371200.0,
    #         3,
    #         "Senna"
    #       ]
    #     ]
    #   ]
    # ]

### 7.3.34.5.4. 高度な検索のための引数

`logical_select` は高度な検索パラメーターをまだ実装していません。

#### 7.3.34.5.4.1. `match_escalation_threshold`

未実装です。

#### 7.3.34.5.4.2. `query_flags`

未実装です。

#### 7.3.34.5.4.3. `query_expander`

未実装です。

### 7.3.34.5.5. 出力関連の引数

#### 7.3.34.5.5.1. `output_columns`

select の output_columns に対応しています。詳細は output_columns を見てください。

以下は例です。

実行例:

    logical_select \
      --logical_table Entries \
      --shard_key created_at \
      --output_columns '_key, *'
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   [
    #     [
    #       [
    #         5
    #       ],
    #       [
    #         [
    #           "_key",
    #           "ShortText"
    #         ],
    #         [
    #           "content",
    #           "Text"
    #         ],
    #         [
    #           "created_at",
    #           "Time"
    #         ],
    #         [
    #           "n_likes",
    #           "UInt32"
    #         ],
    #         [
    #           "tag",
    #           "ShortText"
    #         ]
    #       ],
    #       [
    #         "The first post!",
    #         "Welcome! This is my first post!",
    #         1436281200.0,
    #         5,
    #         "Hello"
    #       ],
    #       [
    #         "Groonga",
    #         "I started to use Groonga. It's very fast!",
    #         1436284800.0,
    #         10,
    #         "Groonga"
    #       ],
    #       [
    #         "Mroonga",
    #         "I also started to use Mroonga. It's also very fast! Really fast!",
    #         1436288400.0,
    #         15,
    #         "Groonga"
    #       ],
    #       [
    #         "Good-bye Senna",
    #         "I migrated all Senna system!",
    #         1436367600.0,
    #         3,
    #         "Senna"
    #       ],
    #       [
    #         "Good-bye Tritonn",
    #         "I also migrated all Tritonn system!",
    #         1436371200.0,
    #         3,
    #         "Senna"
    #       ]
    #     ]
    #   ]
    # ]

#### 7.3.34.5.5.2. `sortby`

バージョン 6.1.5 で撤廃: 代わりに sort_keys を使ってください。

#### 7.3.34.5.5.3. `sort_keys`

select の sort_keys に対応しています。詳細は sort_keys を見てください。

`sort_keys` には制限があります。検索対象のシャードが1つの場合のみ動作します。もし、検索対象のシャードが複数ある場合、 `sort_keys` は正常な動作をしません。

以下は1つのシャードのみを使っている例です。

実行例:

    logical_select \
      --logical_table Entries \
      --shard_key created_at \
      --min "2015/07/08 00:00:00" \
      --min_border "include" \
      --max "2015/07/09 00:00:00" \
      --max_border "exclude" \
      --sort_keys _key
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   [
    #     [
    #       [
    #         3
    #       ],
    #       [
    #         [
    #           "_id",
    #           "UInt32"
    #         ],
    #         [
    #           "_key",
    #           "ShortText"
    #         ],
    #         [
    #           "content",
    #           "Text"
    #         ],
    #         [
    #           "created_at",
    #           "Time"
    #         ],
    #         [
    #           "n_likes",
    #           "UInt32"
    #         ],
    #         [
    #           "tag",
    #           "ShortText"
    #         ]
    #       ],
    #       [
    #         2,
    #         "Groonga",
    #         "I started to use Groonga. It's very fast!",
    #         1436284800.0,
    #         10,
    #         "Groonga"
    #       ],
    #       [
    #         3,
    #         "Mroonga",
    #         "I also started to use Mroonga. It's also very fast! Really fast!",
    #         1436288400.0,
    #         15,
    #         "Groonga"
    #       ],
    #       [
    #         1,
    #         "The first post!",
    #         "Welcome! This is my first post!",
    #         1436281200.0,
    #         5,
    #         "Hello"
    #       ]
    #     ]
    #   ]
    # ]

#### 7.3.34.5.5.4. `offset`

select の offset に対応しています。詳細は offset を見てください。

以下は例です。

実行例:

    logical_select \
      --logical_table Entries \
      --shard_key created_at \
      --offset 2
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   [
    #     [
    #       [
    #         5
    #       ],
    #       [
    #         [
    #           "_id",
    #           "UInt32"
    #         ],
    #         [
    #           "_key",
    #           "ShortText"
    #         ],
    #         [
    #           "content",
    #           "Text"
    #         ],
    #         [
    #           "created_at",
    #           "Time"
    #         ],
    #         [
    #           "n_likes",
    #           "UInt32"
    #         ],
    #         [
    #           "tag",
    #           "ShortText"
    #         ]
    #       ],
    #       [
    #         3,
    #         "Mroonga",
    #         "I also started to use Mroonga. It's also very fast! Really fast!",
    #         1436288400.0,
    #         15,
    #         "Groonga"
    #       ],
    #       [
    #         1,
    #         "Good-bye Senna",
    #         "I migrated all Senna system!",
    #         1436367600.0,
    #         3,
    #         "Senna"
    #       ],
    #       [
    #         2,
    #         "Good-bye Tritonn",
    #         "I also migrated all Tritonn system!",
    #         1436371200.0,
    #         3,
    #         "Senna"
    #       ]
    #     ]
    #   ]
    # ]

#### 7.3.34.5.5.5. `limit`

select の limit に対応しています。詳細は limit を見てください。

以下は例です。

実行例:

    logical_select \
      --logical_table Entries \
      --shard_key created_at \
      --limit 2
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   [
    #     [
    #       [
    #         5
    #       ],
    #       [
    #         [
    #           "_id",
    #           "UInt32"
    #         ],
    #         [
    #           "_key",
    #           "ShortText"
    #         ],
    #         [
    #           "content",
    #           "Text"
    #         ],
    #         [
    #           "created_at",
    #           "Time"
    #         ],
    #         [
    #           "n_likes",
    #           "UInt32"
    #         ],
    #         [
    #           "tag",
    #           "ShortText"
    #         ]
    #       ],
    #       [
    #         1,
    #         "The first post!",
    #         "Welcome! This is my first post!",
    #         1436281200.0,
    #         5,
    #         "Hello"
    #       ],
    #       [
    #         2,
    #         "Groonga",
    #         "I started to use Groonga. It's very fast!",
    #         1436284800.0,
    #         10,
    #         "Groonga"
    #       ]
    #     ]
    #   ]
    # ]

#### 7.3.34.5.5.6. `scorer`

未実装です。

### 7.3.34.5.6. 動的カラム関連の引数

バージョン 7.0.1 で追加.

All dynamic column related parameters in select are supported. See 動的カラム関連の引数 for details.

#### 7.3.34.5.6.1. `columns[${NAME}].stage`

バージョン 7.0.1 で追加.

Corresponds to columns[${NAME}].stage in select. See columns[${NAME}].stage for details.

This is required parameter.

Here is a `columns[${NAME}].stage` example. It creates `is_popular` column at `initial` stage. You can use `is_popular` in all parameters such as `filter` and `output_columns`:

実行例:

    logical_select \
      --logical_table Entries \
      --shard_key created_at \
      --columns[is_popular].stage initial \
      --columns[is_popular].type Bool \
      --columns[is_popular].value 'n_likes >= 10' \
      --filter is_popular \
      --output_columns _id,is_popular,n_likes
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   [
    #     [
    #       [
    #         2
    #       ],
    #       [
    #         [
    #           "_id",
    #           "UInt32"
    #         ],
    #         [
    #           "is_popular",
    #           "Bool"
    #         ],
    #         [
    #           "n_likes",
    #           "UInt32"
    #         ]
    #       ],
    #       [
    #         2,
    #         true,
    #         10
    #       ],
    #       [
    #         3,
    #         true,
    #         15
    #       ]
    #     ]
    #   ]
    # ]

#### 7.3.34.5.6.2. `columns[${NAME}].flags`

バージョン 7.0.1 で追加.

Corresponds to columns[${NAME}].flags in select. See columns[${NAME}].flags for details.

The default value is `COLUMN_SCALAR`.

Here is a `columns[${NAME}].flags` example. It creates a vector column by `COLUMN_VECTOR` flags. `plugin_register functions/vector` is for using vector_new function:

実行例:

    plugin_register functions/vector
    # [[0, 1337566253.89858, 0.000355720520019531], true]
    logical_select \
      --logical_table Entries \
      --shard_key created_at \
      --columns[vector].stage initial \
      --columns[vector].flags COLUMN_VECTOR \
      --columns[vector].type UInt32 \
      --columns[vector].value 'vector_new(1, 2, 3)' \
      --output_columns _id,vector
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   [
    #     [
    #       [
    #         5
    #       ],
    #       [
    #         [
    #           "_id",
    #           "UInt32"
    #         ],
    #         [
    #           "vector",
    #           "UInt32"
    #         ]
    #       ],
    #       [
    #         1,
    #         [
    #           1,
    #           2,
    #           3
    #         ]
    #       ],
    #       [
    #         2,
    #         [
    #           1,
    #           2,
    #           3
    #         ]
    #       ],
    #       [
    #         3,
    #         [
    #           1,
    #           2,
    #           3
    #         ]
    #       ],
    #       [
    #         1,
    #         [
    #           1,
    #           2,
    #           3
    #         ]
    #       ],
    #       [
    #         2,
    #         [
    #           1,
    #           2,
    #           3
    #         ]
    #       ]
    #     ]
    #   ]
    # ]

#### 7.3.34.5.6.3. `columns[${NAME}].type`

バージョン 7.0.1 で追加.

Corresponds to columns[${NAME}].type in select. See columns[${NAME}].type for details.

This is required parameter.

Here is a `columns[${NAME}].type` example. It creates a `ShortText` value column. Stored value is casted to `ShortText` automatically. In this example, number is casted to `ShortText`:

実行例:

    logical_select \
      --logical_table Entries \
      --shard_key created_at \
      --columns[n_likes_string].stage initial \
      --columns[n_likes_string].type ShortText \
      --columns[n_likes_string].value n_likes \
      --output_columns _id,n_likes,n_likes_string
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   [
    #     [
    #       [
    #         5
    #       ],
    #       [
    #         [
    #           "_id",
    #           "UInt32"
    #         ],
    #         [
    #           "n_likes",
    #           "UInt32"
    #         ],
    #         [
    #           "n_likes_string",
    #           "ShortText"
    #         ]
    #       ],
    #       [
    #         1,
    #         5,
    #         "5"
    #       ],
    #       [
    #         2,
    #         10,
    #         "10"
    #       ],
    #       [
    #         3,
    #         15,
    #         "15"
    #       ],
    #       [
    #         1,
    #         3,
    #         "3"
    #       ],
    #       [
    #         2,
    #         3,
    #         "3"
    #       ]
    #     ]
    #   ]
    # ]

#### 7.3.34.5.6.4. `columns[${NAME}].value`

バージョン 7.0.1 で追加.

Corresponds to columns[${NAME}].value in select. See columns[${NAME}].value for details.

You need to specify ウィンドウ関数 as `value` value and other window function related parameters when you use window function. See Window function related parameters for details.

This is required parameter.

Here is a `columns[${NAME}].value` example. It creates a new dynamic column that stores the number of characters of content. This example uses string_length function in `functions/string` plugin to compute string length. plugin_register is used to register `functions/string` plugin:

実行例:

    plugin_register functions/string
    # [[0, 1337566253.89858, 0.000355720520019531], true]
    logical_select \
      --logical_table Entries \
      --shard_key created_at \
      --columns[content_length].stage initial \
      --columns[content_length].type UInt32 \
      --columns[content_length].value 'string_length(content)' \
      --output_columns _id,content,content_length
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   [
    #     [
    #       [
    #         5
    #       ],
    #       [
    #         [
    #           "_id",
    #           "UInt32"
    #         ],
    #         [
    #           "content",
    #           "Text"
    #         ],
    #         [
    #           "content_length",
    #           "UInt32"
    #         ]
    #       ],
    #       [
    #         1,
    #         "Welcome! This is my first post!",
    #         31
    #       ],
    #       [
    #         2,
    #         "I started to use Groonga. It's very fast!",
    #         41
    #       ],
    #       [
    #         3,
    #         "I also started to use Mroonga. It's also very fast! Really fast!",
    #         64
    #       ],
    #       [
    #         1,
    #         "I migrated all Senna system!",
    #         28
    #       ],
    #       [
    #         2,
    #         "I also migrated all Tritonn system!",
    #         35
    #       ]
    #     ]
    #   ]
    # ]

### 7.3.34.5.7. Window function related parameters

バージョン 7.0.1 で追加.

All window function related parameters in select are supported. See Window function related parameters for details.

#### 7.3.34.5.7.1. `columns[${NAME}].window.sort_keys`

バージョン 7.0.1 で追加.

Corresponds to columns[${NAME}].window.sort_keys in select. See columns[${NAME}].window.sort_keys for details.

You must specify columns[${NAME}].window.sort_keys or columns[${NAME}].window.group_keys to use window function.

Here is an example that computes cumulative sum per `Entries.tag`. Each group is sorted by `Entries._key`:

実行例:

    logical_select \
      --logical_table Entries \
      --shard_key created_at \
      --columns[n_likes_cumulative_sum_per_tag].stage initial \
      --columns[n_likes_cumulative_sum_per_tag].type UInt32 \
      --columns[n_likes_cumulative_sum_per_tag].value 'window_sum(n_likes)' \
      --columns[n_likes_cumulative_sum_per_tag].window.sort_keys _key \
      --columns[n_likes_cumulative_sum_per_tag].window.group_keys tag \
      --sort_keys _key \
      --output_columns tag,_key,n_likes,n_likes_cumulative_sum_per_tag
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   [
    #     [
    #       [
    #         5
    #       ],
    #       [
    #         [
    #           "tag",
    #           "ShortText"
    #         ],
    #         [
    #           "_key",
    #           "ShortText"
    #         ],
    #         [
    #           "n_likes",
    #           "UInt32"
    #         ],
    #         [
    #           "n_likes_cumulative_sum_per_tag",
    #           "UInt32"
    #         ]
    #       ],
    #       [
    #         "Groonga",
    #         "Groonga",
    #         10,
    #         10
    #       ],
    #       [
    #         "Groonga",
    #         "Mroonga",
    #         15,
    #         25
    #       ],
    #       [
    #         "Hello",
    #         "The first post!",
    #         5,
    #         5
    #       ],
    #       [
    #         "Senna",
    #         "Good-bye Senna",
    #         3,
    #         3
    #       ],
    #       [
    #         "Senna",
    #         "Good-bye Tritonn",
    #         3,
    #         6
    #       ]
    #     ]
    #   ]
    # ]

#### 7.3.34.5.7.2. `columns[${NAME}].window.group_keys`

バージョン 7.0.1 で追加.

Corresponds to columns[${NAME}].window.group_keys in select. See columns[${NAME}].window.group_keys for details.

You must specify columns[${NAME}].window.sort_keys or columns[${NAME}].window.group_keys to use window function.

Here is an example that computes sum per `Entries.tag`:

実行例:

    logical_select \
      --logical_table Entries \
      --shard_key created_at \
      --columns[n_likes_sum_per_tag].stage initial \
      --columns[n_likes_sum_per_tag].type UInt32 \
      --columns[n_likes_sum_per_tag].value 'window_sum(n_likes)' \
      --columns[n_likes_sum_per_tag].window.group_keys tag \
      --sort_keys _key \
      --output_columns tag,_key,n_likes,n_likes_sum_per_tag
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   [
    #     [
    #       [
    #         5
    #       ],
    #       [
    #         [
    #           "tag",
    #           "ShortText"
    #         ],
    #         [
    #           "_key",
    #           "ShortText"
    #         ],
    #         [
    #           "n_likes",
    #           "UInt32"
    #         ],
    #         [
    #           "n_likes_sum_per_tag",
    #           "UInt32"
    #         ]
    #       ],
    #       [
    #         "Groonga",
    #         "Groonga",
    #         10,
    #         25
    #       ],
    #       [
    #         "Groonga",
    #         "Mroonga",
    #         15,
    #         25
    #       ],
    #       [
    #         "Hello",
    #         "The first post!",
    #         5,
    #         5
    #       ],
    #       [
    #         "Senna",
    #         "Good-bye Senna",
    #         3,
    #         6
    #       ],
    #       [
    #         "Senna",
    #         "Good-bye Tritonn",
    #         3,
    #         6
    #       ]
    #     ]
    #   ]
    # ]

### 7.3.34.5.8. ドリルダウン関連の引数

select のすべてのドリルダウン関連パラメーターをサポートしています。詳細は ドリルダウン関連の引数 を見てください。

#### 7.3.34.5.8.1. `drilldown`

select の drilldown に対応しています。詳細は drilldown を見てください。

以下は例です。

実行例:

    logical_select \
      --logical_table Entries \
      --shard_key created_at \
      --output_columns _key,tag \
      --drilldown tag
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   [
    #     [
    #       [
    #         5
    #       ],
    #       [
    #         [
    #           "_key",
    #           "ShortText"
    #         ],
    #         [
    #           "tag",
    #           "ShortText"
    #         ]
    #       ],
    #       [
    #         "The first post!",
    #         "Hello"
    #       ],
    #       [
    #         "Groonga",
    #         "Groonga"
    #       ],
    #       [
    #         "Mroonga",
    #         "Groonga"
    #       ],
    #       [
    #         "Good-bye Senna",
    #         "Senna"
    #       ],
    #       [
    #         "Good-bye Tritonn",
    #         "Senna"
    #       ]
    #     ],
    #     [
    #       [
    #         3
    #       ],
    #       [
    #         [
    #           "_key",
    #           "ShortText"
    #         ],
    #         [
    #           "_nsubrecs",
    #           "Int32"
    #         ]
    #       ],
    #       [
    #         "Hello",
    #         1
    #       ],
    #       [
    #         "Groonga",
    #         2
    #       ],
    #       [
    #         "Senna",
    #         2
    #       ]
    #     ]
    #   ]
    # ]

#### 7.3.34.5.8.2. `drilldown_sortby`

バージョン 6.1.5 で撤廃: drilldown_sort_keys を代わりに使ってください

#### 7.3.34.5.8.3. `drilldown_sort_keys`

select の drilldown_sort_keys に対応しています。詳細は drilldown_sort_keys を見てください。

以下は例です。

実行例:

    logical_select \
      --logical_table Entries \
      --shard_key created_at \
      --limit 0 \
      --output_columns _id \
      --drilldown tag \
      --drilldown_sort_keys -_nsubrecs,_key
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   [
    #     [
    #       [
    #         5
    #       ],
    #       [
    #         [
    #           "_id",
    #           "UInt32"
    #         ]
    #       ]
    #     ],
    #     [
    #       [
    #         3
    #       ],
    #       [
    #         [
    #           "_key",
    #           "ShortText"
    #         ],
    #         [
    #           "_nsubrecs",
    #           "Int32"
    #         ]
    #       ],
    #       [
    #         "Groonga",
    #         2
    #       ],
    #       [
    #         "Senna",
    #         2
    #       ],
    #       [
    #         "Hello",
    #         1
    #       ]
    #     ]
    #   ]
    # ]

#### 7.3.34.5.8.4. `drilldown_output_columns`

select の drilldown_output_columns に対応しています。詳細は drilldown_output_columns を見てください。

以下は例です。

実行例:

    logical_select \
      --logical_table Entries \
      --shard_key created_at \
      --limit 0 \
      --output_columns _id \
      --drilldown tag \
      --drilldown_output_columns _key
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   [
    #     [
    #       [
    #         5
    #       ],
    #       [
    #         [
    #           "_id",
    #           "UInt32"
    #         ]
    #       ]
    #     ],
    #     [
    #       [
    #         3
    #       ],
    #       [
    #         [
    #           "_key",
    #           "ShortText"
    #         ]
    #       ],
    #       [
    #         "Hello"
    #       ],
    #       [
    #         "Groonga"
    #       ],
    #       [
    #         "Senna"
    #       ]
    #     ]
    #   ]
    # ]

#### 7.3.34.5.8.5. `drilldown_offset`

select の drilldown_offset に対応しています。詳細は drilldown_offset を見てください。

以下は例です。

実行例:

    logical_select \
      --logical_table Entries \
      --shard_key created_at \
      --limit 0 \
      --output_columns _id \
      --drilldown tag \
      --drilldown_offset 1
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   [
    #     [
    #       [
    #         5
    #       ],
    #       [
    #         [
    #           "_id",
    #           "UInt32"
    #         ]
    #       ]
    #     ],
    #     [
    #       [
    #         3
    #       ],
    #       [
    #         [
    #           "_key",
    #           "ShortText"
    #         ],
    #         [
    #           "_nsubrecs",
    #           "Int32"
    #         ]
    #       ],
    #       [
    #         "Groonga",
    #         2
    #       ],
    #       [
    #         "Senna",
    #         2
    #       ]
    #     ]
    #   ]
    # ]

#### 7.3.34.5.8.6. `drilldown_limit`

select の drilldown_limit に対応しています。詳細は drilldown_limit を見てください。

以下は例です。

実行例:

    logical_select \
      --logical_table Entries \
      --shard_key created_at \
      --limit 0 \
      --output_columns _id \
      --drilldown tag \
      --drilldown_limit 2
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   [
    #     [
    #       [
    #         5
    #       ],
    #       [
    #         [
    #           "_id",
    #           "UInt32"
    #         ]
    #       ]
    #     ],
    #     [
    #       [
    #         3
    #       ],
    #       [
    #         [
    #           "_key",
    #           "ShortText"
    #         ],
    #         [
    #           "_nsubrecs",
    #           "Int32"
    #         ]
    #       ],
    #       [
    #         "Hello",
    #         1
    #       ],
    #       [
    #         "Groonga",
    #         2
    #       ]
    #     ]
    #   ]
    # ]

#### 7.3.34.5.8.7. `drilldown_calc_types`

select の drilldown_calc_types に対応しています。詳細は drilldown_calc_types を見てください。

以下は例です。

実行例:

    logical_select \
      --logical_table Entries \
      --shard_key created_at \
      --limit -1 \
      --output_columns tag,n_likes \
      --drilldown tag \
      --drilldown_calc_types MAX,MIN,SUM,AVG \
      --drilldown_calc_target n_likes \
      --drilldown_output_columns _key,_nsubrecs,_max,_min,_sum,_avg
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   [
    #     [
    #       [
    #         5
    #       ],
    #       [
    #         [
    #           "tag",
    #           "ShortText"
    #         ],
    #         [
    #           "n_likes",
    #           "UInt32"
    #         ]
    #       ],
    #       [
    #         "Hello",
    #         5
    #       ],
    #       [
    #         "Groonga",
    #         10
    #       ],
    #       [
    #         "Groonga",
    #         15
    #       ],
    #       [
    #         "Senna",
    #         3
    #       ],
    #       [
    #         "Senna",
    #         3
    #       ]
    #     ],
    #     [
    #       [
    #         3
    #       ],
    #       [
    #         [
    #           "_key",
    #           "ShortText"
    #         ],
    #         [
    #           "_nsubrecs",
    #           "Int32"
    #         ],
    #         [
    #           "_max",
    #           "Int64"
    #         ],
    #         [
    #           "_min",
    #           "Int64"
    #         ],
    #         [
    #           "_sum",
    #           "Int64"
    #         ],
    #         [
    #           "_avg",
    #           "Float"
    #         ]
    #       ],
    #       [
    #         "Hello",
    #         1,
    #         5,
    #         5,
    #         5,
    #         5.0
    #       ],
    #       [
    #         "Groonga",
    #         2,
    #         15,
    #         10,
    #         25,
    #         12.5
    #       ],
    #       [
    #         "Senna",
    #         2,
    #         3,
    #         3,
    #         6,
    #         3.0
    #       ]
    #     ]
    #   ]
    # ]

#### 7.3.34.5.8.8. `drilldown_calc_target`

select の drilldown_calc_target に対応しています。詳細は drilldown_calc_target を見てください。

具体例は drilldown_calc_types を見てください。

#### 7.3.34.5.8.9. `drilldown_filter`

バージョン 7.0.1 で追加.

Corresponds to drilldown_filter in select. See drilldown_filter for details.

Here is an example to suppress drilled down tags that are occurred only once:

実行例:

    logical_select \
      --logical_table Entries \
      --shard_key created_at \
      --limit 0 \
      --output_columns _id \
      --drilldown tag \
      --drilldown_filter "_nsubrecs > 1" \
      --drilldown_output_columns _key,_nsubrecs
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   [
    #     [
    #       [
    #         5
    #       ],
    #       [
    #         [
    #           "_id",
    #           "UInt32"
    #         ]
    #       ]
    #     ],
    #     [
    #       [
    #         2
    #       ],
    #       [
    #         [
    #           "_key",
    #           "ShortText"
    #         ],
    #         [
    #           "_nsubrecs",
    #           "Int32"
    #         ]
    #       ],
    #       [
    #         "Groonga",
    #         2
    #       ],
    #       [
    #         "Senna",
    #         2
    #       ]
    #     ]
    #   ]
    # ]

### 7.3.34.5.9. 高度なドリルダウン関連のパラメーター

select のすべての高度なドリルダウン関連のパラメーターをサポートしています。詳細は 高度なドリルダウン関連のパラメーター を見てください。

いくつか制限があります。

> - 複数のシャードを使った場合、 `drilldowns[${LABEL}].sort_keys` の中で `_value.${KEY_NAME}` を使えません。1つのシャードのみを使った場合は使えます。

#### 7.3.34.5.9.1. `drilldowns[${LABEL}].keys`

select の drilldowns[${LABEL}].keys に対応しています。詳細は drilldowns[${LABEL}].keys を見てください。

以下は例です。

実行例:

    logical_select \
      --logical_table Entries \
      --shard_key created_at \
      --limit 0 \
      --output_columns _id \
      --drilldowns[tag.n_likes].keys tag,n_likes \
      --drilldowns[tag.n_likes].output_columns _value.tag,_value.n_likes,_nsubrecs
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   [
    #     [
    #       [
    #         5
    #       ],
    #       [
    #         [
    #           "_id",
    #           "UInt32"
    #         ]
    #       ]
    #     ],
    #     {
    #       "tag.n_likes": [
    #         [
    #           4
    #         ],
    #         [
    #           [
    #             "tag",
    #             "ShortText"
    #           ],
    #           [
    #             "n_likes",
    #             "UInt32"
    #           ],
    #           [
    #             "_nsubrecs",
    #             "Int32"
    #           ]
    #         ],
    #         [
    #           "Hello",
    #           5,
    #           1
    #         ],
    #         [
    #           "Groonga",
    #           10,
    #           1
    #         ],
    #         [
    #           "Groonga",
    #           15,
    #           1
    #         ],
    #         [
    #           "Senna",
    #           3,
    #           2
    #         ]
    #       ]
    #     }
    #   ]
    # ]

#### 7.3.34.5.9.2. `drilldowns[${LABEL}].output_columns`

select の drilldowns[${LABEL}].output_columns に対応しています。詳細は drilldowns[${LABEL}].output_columns を見てください。

以下は例です。

実行例:

    logical_select \
      --logical_table Entries \
      --shard_key created_at \
      --limit 0 \
      --output_columns _id \
      --drilldowns[tag].keys tag \
      --drilldowns[tag].output_columns _key,_nsubrecs
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   [
    #     [
    #       [
    #         5
    #       ],
    #       [
    #         [
    #           "_id",
    #           "UInt32"
    #         ]
    #       ]
    #     ],
    #     {
    #       "tag": [
    #         [
    #           3
    #         ],
    #         [
    #           [
    #             "_key",
    #             "ShortText"
    #           ],
    #           [
    #             "_nsubrecs",
    #             "Int32"
    #           ]
    #         ],
    #         [
    #           "Hello",
    #           1
    #         ],
    #         [
    #           "Groonga",
    #           2
    #         ],
    #         [
    #           "Senna",
    #           2
    #         ]
    #       ]
    #     }
    #   ]
    # ]

#### 7.3.34.5.9.3. `drilldowns[${LABEL}].sortby`

バージョン 6.1.5 で撤廃: drilldowns[${LABEL}].sort_keys を代わりに使ってください

#### 7.3.34.5.9.4. `drilldowns[${LABEL}].sort_keys`

ラベルなしドリルダウンの drilldown_sort_keys に対応しています。

`drilldowns[${LABEL}].sort_keys` には制限があります。

複数のシャードを使った場合、 `drilldowns[${LABEL}].sort_keys` の中で `_value.${KEY_NAME}` を使えません。1つのシャードのみを使った場合は使えます。

以下は1つのシャードに対して `_value.${KEY_NAME}` を使う例です。

実行例:

    logical_select \
      --logical_table Entries \
      --shard_key created_at \
      --min "2015/07/08 00:00:00" \
      --min_border "include" \
      --max "2015/07/09 00:00:00" \
      --max_border "exclude" \
      --limit 0 \
      --output_columns _id \
      --drilldowns[tag.n_likes].keys tag,n_likes \
      --drilldowns[tag.n_likes].output_columns _nsubrecs,_value.n_likes,_value.tag \
      --drilldowns[tag.n_likes].sort_keys -_nsubrecs,_value.n_likes,_value.tag
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   [
    #     [
    #       [
    #         3
    #       ],
    #       [
    #         [
    #           "_id",
    #           "UInt32"
    #         ]
    #       ]
    #     ],
    #     {
    #       "tag.n_likes": [
    #         [
    #           3
    #         ],
    #         [
    #           [
    #             "_nsubrecs",
    #             "Int32"
    #           ],
    #           [
    #             "n_likes",
    #             "UInt32"
    #           ],
    #           [
    #             "tag",
    #             "ShortText"
    #           ]
    #         ],
    #         [
    #           1,
    #           5,
    #           "Hello"
    #         ],
    #         [
    #           1,
    #           10,
    #           "Groonga"
    #         ],
    #         [
    #           1,
    #           15,
    #           "Groonga"
    #         ]
    #       ]
    #     }
    #   ]
    # ]

#### 7.3.34.5.9.5. `drilldowns[${LABEL}].offset`

ラベルなしドリルダウンの drilldown_offset に対応しています。

以下は例です。

実行例:

    logical_select \
      --logical_table Entries \
      --shard_key created_at \
      --limit 0 \
      --output_columns _id \
      --drilldowns[tag.n_likes].keys tag \
      --drilldowns[tag.n_likes].offset 1
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   [
    #     [
    #       [
    #         5
    #       ],
    #       [
    #         [
    #           "_id",
    #           "UInt32"
    #         ]
    #       ]
    #     ],
    #     {
    #       "tag.n_likes": [
    #         [
    #           3
    #         ],
    #         [
    #           [
    #             "_key",
    #             "ShortText"
    #           ],
    #           [
    #             "_nsubrecs",
    #             "Int32"
    #           ]
    #         ],
    #         [
    #           "Groonga",
    #           2
    #         ],
    #         [
    #           "Senna",
    #           2
    #         ]
    #       ]
    #     }
    #   ]
    # ]

#### 7.3.34.5.9.6. `drilldowns[${LABEL}].limit`

ラベルなしドリルダウンの drilldown_limit に対応しています。

以下は例です。

実行例:

    logical_select \
      --logical_table Entries \
      --shard_key created_at \
      --limit 0 \
      --output_columns _id \
      --drilldowns[tag.n_likes].keys tag \
      --drilldowns[tag.n_likes].limit 2
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   [
    #     [
    #       [
    #         5
    #       ],
    #       [
    #         [
    #           "_id",
    #           "UInt32"
    #         ]
    #       ]
    #     ],
    #     {
    #       "tag.n_likes": [
    #         [
    #           3
    #         ],
    #         [
    #           [
    #             "_key",
    #             "ShortText"
    #           ],
    #           [
    #             "_nsubrecs",
    #             "Int32"
    #           ]
    #         ],
    #         [
    #           "Hello",
    #           1
    #         ],
    #         [
    #           "Groonga",
    #           2
    #         ]
    #       ]
    #     }
    #   ]
    # ]

#### 7.3.34.5.9.7. `drilldowns[${LABEL}].calc_types`

ラベルなしドリルダウンの drilldown_calc_types に対応しています。

以下は例です。

実行例:

    logical_select \
      --logical_table Entries \
      --shard_key created_at \
      --limit 0 \
      --output_columns _id \
      --drilldowns[tag].keys tag \
      --drilldowns[tag].calc_types MAX,MIN,SUM,AVG \
      --drilldowns[tag].calc_target n_likes \
      --drilldowns[tag].output_columns _key,_nsubrecs,_max,_min,_sum,_avg
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   [
    #     [
    #       [
    #         5
    #       ],
    #       [
    #         [
    #           "_id",
    #           "UInt32"
    #         ]
    #       ]
    #     ],
    #     {
    #       "tag": [
    #         [
    #           3
    #         ],
    #         [
    #           [
    #             "_key",
    #             "ShortText"
    #           ],
    #           [
    #             "_nsubrecs",
    #             "Int32"
    #           ],
    #           [
    #             "_max",
    #             "Int64"
    #           ],
    #           [
    #             "_min",
    #             "Int64"
    #           ],
    #           [
    #             "_sum",
    #             "Int64"
    #           ],
    #           [
    #             "_avg",
    #             "Float"
    #           ]
    #         ],
    #         [
    #           "Hello",
    #           1,
    #           5,
    #           5,
    #           5,
    #           5.0
    #         ],
    #         [
    #           "Groonga",
    #           2,
    #           15,
    #           10,
    #           25,
    #           12.5
    #         ],
    #         [
    #           "Senna",
    #           2,
    #           3,
    #           3,
    #           6,
    #           3.0
    #         ]
    #       ]
    #     }
    #   ]
    # ]

#### 7.3.34.5.9.8. `drilldowns[${LABEL}].calc_target`

ラベルなしドリルダウンの drilldown_calc_target に対応しています。

例は drilldowns[${LABEL}].calc_types を参照してください。

#### 7.3.34.5.9.9. `drilldowns[${LABEL}].filter`

バージョン 7.0.1 で追加.

Corresponds to drilldown_filter in not labeled drilldown.

Here is an example to suppress drilled down tags that are occurred only once:

実行例:

    logical_select \
      --logical_table Entries \
      --shard_key created_at \
      --limit 0 \
      --output_columns _id \
      --drilldowns[tag].keys tag \
      --drilldowns[tag].tiler "_nsubrecs > 1" \
      --drilldowns[tag].output_columns _key,_nsubrecs
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   [
    #     [
    #       [
    #         5
    #       ],
    #       [
    #         [
    #           "_id",
    #           "UInt32"
    #         ]
    #       ]
    #     ],
    #     {
    #       "tag": [
    #         [
    #           3
    #         ],
    #         [
    #           [
    #             "_key",
    #             "ShortText"
    #           ],
    #           [
    #             "_nsubrecs",
    #             "Int32"
    #           ]
    #         ],
    #         [
    #           "Hello",
    #           1
    #         ],
    #         [
    #           "Groonga",
    #           2
    #         ],
    #         [
    #           "Senna",
    #           2
    #         ]
    #       ]
    #     }
    #   ]
    # ]

## 7.3.34.6. 戻り値

`logical_select` の戻り値のフォーマットは select と同じです。詳細は 戻り値 を見てください。