Skip to content

Commit

Permalink
Ru/yql/last part (#9277)
Browse files Browse the repository at this point in the history
Co-authored-by: Ivan Blinkov <[email protected]>
  • Loading branch information
Pseudolukian and blinkov authored Sep 23, 2024
1 parent 92caca9 commit b37a3ff
Show file tree
Hide file tree
Showing 13 changed files with 26 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

`ADD CHANGEFEED <name> WITH (<option> = <value>[, ...])`: Adds a [changefeed](../../../../concepts/cdc) with the specified name and options.


## Changefeed options {#changefeed-options}

* `MODE`: Operation mode. Specifies what to write to a changefeed each time table data is altered.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ ALTER TABLE <table_name> ALTER INDEX <index_name> SET (<partitioning_setting_nam

{% note info %}


These settings cannot be reset.

{% endnote %}
Expand All @@ -60,6 +61,7 @@ These settings cannot be reset.

The query in the following example enables automatic partitioning by load for the index named `title_index` of table `series` and sets its minimum partition count to 5:


```yql
ALTER TABLE `series` ALTER INDEX `title_index` SET (
AUTO_PARTITIONING_BY_LOAD = ENABLED,
Expand All @@ -69,6 +71,7 @@ ALTER TABLE `series` ALTER INDEX `title_index` SET (

## Deleting an index {#drop-index}


`DROP INDEX`: Deletes the index with the specified name. The code below deletes the index named `title_index`.

```yql
Expand All @@ -95,6 +98,7 @@ Replacement of atomic indexes under load is supported by the command [{{ ydb-cli

Example of index renaming:


```yql
ALTER TABLE `series` RENAME INDEX `title_index` TO `title_index_new`;
```
2 changes: 1 addition & 1 deletion ydb/docs/ru/core/concepts/federated_query/s3/write_data.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

## Запись данных через внешнее соединение {#connection-write}

Запись данных с помощью соединений удобно использовать для прототипирования и первоначальной настройки работы с записью данных. SQL-выражение иллистрирует запись данных во внешний источник данных напрямую.
Запись данных с помощью соединений удобно использовать для прототипирования и первоначальной настройки работы с записью данных. SQL-выражение иллюстрирует запись данных во внешний источник данных напрямую.

```yql
INSERT INTO `connection`.`test/`
Expand Down
2 changes: 1 addition & 1 deletion ydb/docs/ru/core/concepts/federated_query/ydb.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Работа с базами данных YDB
# Работа с базами данных {{ ydb-short-name }}

{{ ydb-full-name }} может выступать в качестве внешнего источника данных для другой базы {{ ydb-full-name }}. В данном разделе рассматривается организация совместной работы двух независимых баз данных {{ ydb-short-name }} в режиме обработки федеративных запросов.

Expand Down
2 changes: 1 addition & 1 deletion ydb/docs/ru/core/dev/query-plans-optimization.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ SELECT season_id, episode_id

И в визуальном и в текстовом представлении видно, что в корне этого плана возвращение данных на клиент, в листьях работа с таблицами, а на промежуточных узлах — преобразования данных. Важно обратить внимание на узел, показывающий обращение к таблице `episodes`. В данном случае это `TableFullScan`, который означает выполнение полного сканирования таблицы. А полное сканирование таблицы потребляет времени и ресурсов пропорционально её размеру, из-за чего по возможности их стараются избегать в таблицах, которые имеют тенденцию расти с течением времени или просто большие.

Одним из типовых способов избежать полного сканирования таблицы является добавление [вторичного индекса](secondary-indexes.md). В данном случае имеет смысл добавить вторичный индекс для колонки `title`, для этого воспользуемся запросом:
Одним из типовых способов избежать полного сканирования таблицы является добавление [вторичного индекса](secondary-indexes.md) (поддерживается только для строковых таблиц). В данном случае имеет смысл добавить вторичный индекс для колонки `title`, для этого воспользуемся запросом:

```yql
ALTER TABLE episodes
Expand Down
4 changes: 4 additions & 0 deletions ydb/docs/ru/core/yql/query_plans.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@ Parallel | флаг, указывающий на то что чтение стр

#### TablePointLookup

{% include [not_allow_for_olap_note](../_includes/not_allow_for_olap_note.md) %}

Чтение строк таблицы по конкретным значениям первичного ключа. Обратите внимание, что для этой операции необходимо указать все компоненты первичного ключа, чтение по префиксу ключа выполняется как `TableRangeScan`.

Атрибут | Значение
Expand All @@ -53,6 +55,8 @@ ReadColumns | список читаемых колонок

#### Upsert

{% include [not_allow_for_olap_note](../_includes/not_allow_for_olap_note.md) %}

Перезапись строк таблицы по соответствующим значениям первичного ключа, если они существовали, иначе добавление новых строк.

Атрибут | Значение
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@

## AGGREGATE_BY и MULTI_AGGREGATE_BY {#aggregate-by}

{% if backend_name == "YDB" and oss == true %}

{% include [not_allow_for_olap_note](../../../../../_includes/not_allow_for_olap_note.md) %}

{% endif %}

Применение [фабрики агрегационной функции](../../basic.md#aggregationfactory) ко всем значениям колонки или выражения. Функция `MULTI_AGGREGATE_BY` требует, чтобы в значении колонки или выражения была структура, кортеж или список, и применяет фабрику поэлементно, размещая результат в контейнере той же формы. Если в разных значениях колонки или выражения содержатся списки разной длины, результирующий список будет иметь наименьшую из длин этих списков.

1. Колонка, `DISTINCT` колонка или выражение;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,7 @@ MEDIAN(T, [ List<Double> ])->List<T>
Подсчет процентилей по амортизированной версии алгоритма [TDigest](https://github.com/tdunning/t-digest). `MEDIAN(x)` без второго аргумента — алиас для `PERCENTILE(x, 0.5)`.
`MEDIAN` с двумя аргументами полностью эквивалентен `PERCENTILE`.

В качестве первого аргумента `PERCENTILE`/`MEDIAN` принимает выражение типа `T`. В качестве типа `T` на данный момент поддерживаются типы `Interval` и `Double`
(а также типы которые допускают неявное приведение к ним - например целочисленные типы).
В качестве первого аргумента `PERCENTILE`/`MEDIAN` принимает выражение типа `T`. В качестве типа `T` на данный момент поддерживаются типы `Interval` и `Double` (а также типы которые допускают неявное приведение к ним - например целочисленные типы).

В качестве второго аргумента можно использовать либо один `Double` (значение перцентиля), либо сразу несколько значений перцентиля в виде `Tuple`/`Struct`/`List`.

Expand All @@ -31,7 +30,7 @@ SELECT
MEDIAN(numeric_column),
PERCENTILE(numeric_column, 0.99),
PERCENTILE(CAST(string_column as Double), (0.01, 0.5, 0.99)), -- подсчет сразу трех перцентилей
PERCENtILE(numeric_column, AsStruct(0.01 as p01, 0.5 as median, 0.99 as p99)), -- используя структуру, значениям перцентиля можно дать удобные имена
PERCENTILE(numeric_column, AsStruct(0.01 as p01, 0.5 as median, 0.99 as p99)), -- используя структуру, значениям перцентиля можно дать удобные имена
PERCENTILE(numeric_column, ListFromRange(0.00, 1.05, 0.05)), -- подсчет множества перцентилей (от 0.0 до 1.0 включительно с шагом 0.05)
FROM my_table;
```
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ COUNT(T)->Uint64
COUNT(T?)->Uint64
```

Подсчет количества строк в таблице (если в качестве аргумента указана `*` или константа) или непустых значений в столбце таблицы (если в качестве аргумента указано имя столбца).
Подсчет количества строк в строковой или колоночной таблице (если в качестве аргумента указана `*` или константа) или непустых значений в столбце таблицы (если в качестве аргумента указано имя столбца).

Как и другие агрегатные функции, может использоваться в сочетании с [GROUP BY](../../../syntax/group_by.md) для получения статистики по частям таблицы, соответствующим значениям в столбцах, по которым идет группировка. {% if select_statement != "SELECT STREAM" %}А модификатор [DISTINCT](../../../syntax/group_by.md#distinct) позволяет посчитать число уникальных значений.{% endif %}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,5 +79,5 @@ SELECT ListLength(ParseFile("String", "my_file.txt"));

```yql
SELECT * FROM my_table
WHERE int_column IN ParseFile("Int64", "my_file.txt"));
WHERE int_column IN ParseFile("Int64", "my_file.txt");
```
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# DROP TABLE

Удаляет указанную таблицу.{% if feature_mapreduce %} Таблица по имени ищется в базе данных, заданной оператором [USE](../use.md).{% endif %}
Удаляет указанную строковую или колоночную таблицу.{% if feature_mapreduce %} Таблица по имени ищется в базе данных, заданной оператором [USE](../use.md).{% endif %}

Если таблицы с таким именем не существует, возвращается ошибка.

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
## IS \[NOT\] DISTINCT FROM {#is-distinct-from}

Сравнение двух значений. В отличие от обычных [операторов сравнения](../../../syntax/expressions.md#comparison-operators), нуллы считаются равными друг другу.
Точнее говоря, сравнение осуществляется по следующим правилам:

Сравнение осуществляется по следующим правилам:

1. операторы `IS DISTINCT FROM`/`IS NOT DISTINCT FROM` определены для тех и только для тех аргументов, для которых определены операторы `!=` и `=`;
2. результат `IS NOT DISTINCT FROM` равен логическому отрицанию результата `IS DISTINCT FROM` для данных аргументов;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
## COMPACT

Наличие [SQL хинта](../../lexer.md#sql-hints) `COMPACT` непосредственно после ключевого слова `GROUP` позволяет более эффективно выполнять агрегацию в тех случаях, когда автору запроса заранее известно, что ни по одному из ключей агрегации не встречаются большие объемы данных (больше примерно гигабайт или миллионов строк). Если это предположение на практике окажется неверным, то операция оставляет за собой право упасть из-за превышения потребления оперативной памяти или работать значительно медленнее не-COMPACT версии.
Наличие [SQL хинта](../../lexer.md#sql-hints) `COMPACT` непосредственно после ключевого слова `GROUP` позволяет более эффективно выполнять агрегацию в тех случаях, когда автору запроса заранее известно, что ни по одному из ключей агрегации не встречаются большие объемы данных (больше примерно гигабайт или миллионов строк). Если это предположение на практике окажется неверным, то операция может завершиться ошибкой из-за превышения потребления оперативной памяти или работать значительно медленнее не-COMPACT версии.

В отличие от обычного GROUP BY, отключается стадия Map-side combiner и дополнительные Reduce для каждого поля с [DISTINCT](../../group_by.md#distinct) агрегацией.

Expand Down

0 comments on commit b37a3ff

Please sign in to comment.