aboutsummaryrefslogtreecommitdiffstats
path: root/yql
diff options
context:
space:
mode:
authorrobot-piglet <robot-piglet@yandex-team.com>2025-02-26 19:56:03 +0300
committerrobot-piglet <robot-piglet@yandex-team.com>2025-02-26 20:08:35 +0300
commitf9a1896b7299c05b3275949378e221e044872d6f (patch)
tree6953ef34b963d665a2130771efa7e5d9dcb785ec /yql
parent5a3aa70af58a490cada682b229eef368bd42340c (diff)
downloadydb-f9a1896b7299c05b3275949378e221e044872d6f.tar.gz
Intermediate changes
commit_hash:17a903d36007950139a4f3a7676d0c6190090981
Diffstat (limited to 'yql')
-rw-r--r--yql/essentials/docs/en/builtins/aggregation.md40
-rw-r--r--yql/essentials/docs/en/builtins/basic.md112
-rw-r--r--yql/essentials/docs/en/builtins/codegen.md18
-rw-r--r--yql/essentials/docs/en/builtins/dict.md32
-rw-r--r--yql/essentials/docs/en/builtins/json.md8
-rw-r--r--yql/essentials/docs/en/builtins/list.md70
-rw-r--r--yql/essentials/docs/en/builtins/struct.md34
-rw-r--r--yql/essentials/docs/en/builtins/types.md38
-rw-r--r--yql/essentials/docs/en/builtins/window.md30
-rw-r--r--yql/essentials/docs/en/syntax/action.md12
-rw-r--r--yql/essentials/docs/en/syntax/export_import.md2
-rw-r--r--yql/essentials/docs/en/syntax/expressions.md24
-rw-r--r--yql/essentials/docs/en/syntax/flatten.md8
-rw-r--r--yql/essentials/docs/en/syntax/group_by.md16
-rw-r--r--yql/essentials/docs/en/syntax/join.md2
-rw-r--r--yql/essentials/docs/en/syntax/pragma.md4
-rw-r--r--yql/essentials/docs/en/syntax/select/concat.md2
-rw-r--r--yql/essentials/docs/en/syntax/select/from.md2
-rw-r--r--yql/essentials/docs/en/syntax/select/from_as_table.md2
-rw-r--r--yql/essentials/docs/en/syntax/select/from_select.md2
-rw-r--r--yql/essentials/docs/en/syntax/select/union.md4
-rw-r--r--yql/essentials/docs/en/syntax/subquery.md8
-rw-r--r--yql/essentials/docs/en/syntax/values.md2
-rw-r--r--yql/essentials/docs/en/types/optional.md4
-rw-r--r--yql/essentials/docs/en/udf/list/datetime.md44
-rw-r--r--yql/essentials/docs/en/udf/list/digest.md2
-rw-r--r--yql/essentials/docs/en/udf/list/hyperscan.md2
-rw-r--r--yql/essentials/docs/en/udf/list/math.md28
-rw-r--r--yql/essentials/docs/en/udf/list/pire.md4
-rw-r--r--yql/essentials/docs/en/udf/list/url.md24
-rw-r--r--yql/essentials/docs/en/udf/list/yson.md6
-rw-r--r--yql/essentials/docs/ru/builtins/aggregation.md78
-rw-r--r--yql/essentials/docs/ru/builtins/basic.md198
-rw-r--r--yql/essentials/docs/ru/builtins/codegen.md18
-rw-r--r--yql/essentials/docs/ru/builtins/dict.md64
-rw-r--r--yql/essentials/docs/ru/builtins/json.md18
-rw-r--r--yql/essentials/docs/ru/builtins/list.md146
-rw-r--r--yql/essentials/docs/ru/builtins/struct.md68
-rw-r--r--yql/essentials/docs/ru/builtins/types.md80
-rw-r--r--yql/essentials/docs/ru/builtins/window.md30
-rw-r--r--yql/essentials/docs/ru/syntax/action.md12
-rw-r--r--yql/essentials/docs/ru/syntax/expressions.md24
-rw-r--r--yql/essentials/docs/ru/syntax/flatten.md6
-rw-r--r--yql/essentials/docs/ru/syntax/group_by.md16
-rw-r--r--yql/essentials/docs/ru/syntax/join.md2
-rw-r--r--yql/essentials/docs/ru/syntax/select/union.md4
-rw-r--r--yql/essentials/docs/ru/syntax/subquery.md8
-rw-r--r--yql/essentials/docs/ru/syntax/values.md2
-rw-r--r--yql/essentials/docs/ru/syntax/window.md2
-rw-r--r--yql/essentials/docs/ru/types/optional.md4
-rw-r--r--yql/essentials/docs/ru/udf/list/datetime.md44
-rw-r--r--yql/essentials/docs/ru/udf/list/hyperscan.md2
-rw-r--r--yql/essentials/docs/ru/udf/list/math.md32
-rw-r--r--yql/essentials/docs/ru/udf/list/url.md16
-rw-r--r--yql/essentials/docs/ru/udf/list/yson.md6
55 files changed, 733 insertions, 733 deletions
diff --git a/yql/essentials/docs/en/builtins/aggregation.md b/yql/essentials/docs/en/builtins/aggregation.md
index 96a395d61d..0c881f2309 100644
--- a/yql/essentials/docs/en/builtins/aggregation.md
+++ b/yql/essentials/docs/en/builtins/aggregation.md
@@ -6,7 +6,7 @@ Counting the number of rows in the table (if `*` or constant is specified as the
Like other aggregate functions, it can be combined with [GROUP BY](../syntax/group_by.md) to get statistics on the parts of the table that correspond to the values in the columns being grouped. Use the modifier [DISTINCT](../syntax/group_by.md#distinct) to count distinct values.
-### Examples
+#### Examples
```yql
SELECT COUNT(*) FROM my_table;
@@ -26,7 +26,7 @@ Minimum or maximum value.
As an argument, you may use an arbitrary computable expression with a numeric result.
-### Examples
+#### Examples
```yql
SELECT MIN(value), MAX(value) FROM my_table;
@@ -52,7 +52,7 @@ As an argument, you may use an arbitrary computable expression with a numeric re
Integer values and time intervals are automatically converted to Double.
-### Examples
+#### Examples
```yql
SELECT AVG(value) FROM my_table;
@@ -66,7 +66,7 @@ The value `NULL` is equated to `false` (if the argument type is `Bool?`).
The function *does not* do the implicit type casting to Boolean for strings and numbers.
-### Examples
+#### Examples
```yql
SELECT
@@ -85,7 +85,7 @@ Sum or arithmetic average, but only for the rows that satisfy the condition pass
Therefore, `SUM_IF(value, condition)` is a slightly shorter notation for `SUM(IF(condition, value))`, same for `AVG`. The argument's data type expansion is similar to the same-name functions without a suffix.
-### Examples
+#### Examples
```yql
SELECT
@@ -112,7 +112,7 @@ Get the value for an expression specified as an argument, for one of the table r
Because of no guarantee, `SOME` is computationally cheaper than [MIN / MAX](#min-max) often used in similar situations.
-### Examples
+#### Examples
```yql
SELECT
@@ -141,7 +141,7 @@ By selecting accuracy, you can trade added resource and RAM consumption for decr
All the three functions are aliases at the moment, but `CountDistinctEstimate` may start using a different algorithm in the future.
-### Examples
+#### Examples
```yql
SELECT
@@ -169,7 +169,7 @@ To return a list of multiple values from one line, **DO NOT** use the `AGGREGATE
For example, you can combine it with `DISTINCT` and the function [String::JoinFromList](../udf/list/string.md) (it's an equivalent of `','.join(list)` in Python) to output to a string all the values found in the column after [GROUP BY](../syntax/group_by.md).
-### Examples
+#### Examples
```yql
SELECT
@@ -219,7 +219,7 @@ If the second argument is always `NULL`, the aggregation result is `NULL`.
When you use [aggregation factories](basic.md#aggregationfactory), a `Tuple` containing a value and a key is passed as the first [AGGREGATE_BY](#aggregate-by) argument.
-### Examples
+#### Examples
```yql
SELECT
@@ -244,7 +244,7 @@ FROM my_table;
Return a list of the maximum/minimum values of an expression. The first argument is an expression, the second argument limits the number of items.
-### Examples
+#### Examples
```yql
SELECT
@@ -269,7 +269,7 @@ Return a list of values of the first argument for the rows containing the maximu
When you use [aggregation factories](basic.md#aggregationfactory), a `Tuple` containing a value and a key is passed as the first [AGGREGATE_BY](#aggregate-by) argument. In this case, the limit for the number of items is passed by the second argument at factory creation.
-### Examples
+#### Examples
```yql
SELECT
@@ -304,7 +304,7 @@ Optional arguments:
1. For `TOPFREQ`, the desired number of items in the result. `MODE` is an alias to `TOPFREQ` with this argument set to 1. For `TOPFREQ`, this argument is also 1 by default.
2. The number of items in the buffer used: lets you trade memory consumption for accuracy. Default: 100.
-### Examples
+#### Examples
```yql
SELECT
@@ -328,7 +328,7 @@ Several abbreviated aliases are also defined, for example, `VARPOP` or `STDDEVSA
If all the values passed are `NULL`, it returns `NULL`.
-### Examples
+#### Examples
```yql
SELECT
@@ -349,7 +349,7 @@ Unlike most other aggregate functions, they don't skip `NULL`, but accept it as
When you use [aggregation factories](basic.md#aggregationfactory), a `Tuple` containing two values is passed as the first [AGGREGATE_BY](#aggregate-by) argument.
-### Examples
+#### Examples
```yql
SELECT
@@ -458,7 +458,7 @@ While FastGreedyShrink is used most of the time, SlowShrink is mostly used for h
When you use [aggregation factories](basic.md#aggregationfactory), a `Tuple` containing a value and a weight is passed as the first [AGGREGATE_BY](#aggregate-by) argument.
-### Examples
+#### Examples
```yql
SELECT
@@ -498,7 +498,7 @@ The format of the result is totally similar to [adaptive histograms](#histogram)
If the spread of input values is uncontrollably large, we recommend that you specify the minimum and maximum values to prevent potential failures due to high memory consumption.
-### Examples
+#### Examples
```yql
SELECT
@@ -510,7 +510,7 @@ FROM my_table;
## BOOL_AND, BOOL_OR and BOOL_XOR {#bool-and-or-xor}
-### Signature
+#### Signature
```yql
BOOL_AND(Bool?)->Bool?
@@ -543,7 +543,7 @@ Examples of such behavior can be found below.
To skip `NULL` values during aggregation, use the `MIN`/`MAX` or `BIT_AND`/`BIT_OR`/`BIT_XOR` functions.
-### Examples
+#### Examples
```yql
$data = [
@@ -572,7 +572,7 @@ FROM AS_TABLE($data);
Apply the relevant bitwise operation to all values of a numeric column or expression.
-### Examples
+#### Examples
```yql
SELECT
@@ -594,7 +594,7 @@ Applying an [aggregation factory](basic.md#aggregationfactory) to all values of
1. Column, `DISTINCT` column or expression.
2. Factory.
-### Examples
+#### Examples
```yql
$count_factory = AggregationFactory("COUNT");
diff --git a/yql/essentials/docs/en/builtins/basic.md b/yql/essentials/docs/en/builtins/basic.md
index 4e74b6d5de..e14a6de065 100644
--- a/yql/essentials/docs/en/builtins/basic.md
+++ b/yql/essentials/docs/en/builtins/basic.md
@@ -13,7 +13,7 @@ Lets you pass potentially empty values to functions that can't handle them by th
A short format using the low-priority `??` operator is available (lower than the Boolean operations). You can use the `NVL` alias.
-### Examples
+#### Examples
```yql
SELECT COALESCE(
@@ -43,7 +43,7 @@ All three examples above are equivalent.
Returns the length of the string in bytes. This function is also available under the `LEN` name .
-### Examples
+#### Examples
```yql
SELECT LENGTH("foo");
@@ -76,7 +76,7 @@ Optional arguments:
Indexing starts from zero. If the specified position and length are beyond the string, returns an empty string.
If the input string is optional, the result is also optional.
-### Examples
+#### Examples
```yql
SELECT SUBSTRING("abcdefg", 3, 1); -- d
@@ -107,7 +107,7 @@ Optional arguments:
Returns the first substring position found or `NULL` (meaning that the desired substring hasn't been found starting from the specified position).
-### Examples
+#### Examples
```yql
SELECT FIND("abcdefg_abcdefg", "abc"); -- 0
@@ -136,7 +136,7 @@ Optional arguments:
Returns the first substring position found or `NULL` (meaning that the desired substring hasn't been found starting from the specified position).
-### Examples
+#### Examples
```yql
SELECT RFIND("abcdefg_abcdefg", "bcd"); -- 9
@@ -163,7 +163,7 @@ Required arguments:
The arguments can be of the `String` or `Utf8` type and can be optional.
-### Examples
+#### Examples
```yql
SELECT StartsWith("abc_efg", "abc") AND EndsWith("abc_efg", "efg"); -- true
@@ -191,7 +191,7 @@ It's a simplified alternative for [CASE WHEN ... THEN ... ELSE ... END](../synta
You may omit the `else_expression` argument. In this case, if the condition is false (`condition_expression` returned `false`), an empty value is returned with the type corresponding to `then_expression` and allowing for `NULL`. Hence, the result will have an [optional data type](../types/optional.md).
-### Examples
+#### Examples
```yql
SELECT
@@ -213,7 +213,7 @@ Arguments:
If one of the arguments is `Double`, the result is`Double`, otherwise, it's `Float`. If one of the arguments is `Optional`, then the result is `Optional`.
-### Examples
+#### Examples
```yql
SELECT
@@ -231,7 +231,7 @@ Generates a pseudorandom number:
* `RandomNumber()`: An integer from the complete Uint64 range.
* `RandomUuid()`: [Uuid version 4](https://tools.ietf.org/html/rfc4122#section-4.4).
-### Signatures
+#### Signatures
```yql
Random(T1[, T2, ...])->Double
@@ -260,7 +260,7 @@ Use cases:
* `SELECT RANDOM(some_column), RANDOM(some_column) FROM table;`: Different random numbers for each row of the table, but two identical numbers within the same row.
* `SELECT RANDOM(some_column), RANDOM(some_column + 1) FROM table;` or `SELECT RANDOM(some_column), RANDOM(other_column) FROM table;`: Two columns, with different numbers in both.
-### Examples
+#### Examples
```yql
SELECT
@@ -296,7 +296,7 @@ FROM my_table;
The arguments are optional and work same as [RANDOM](#random).
-### Examples
+#### Examples
```yql
SELECT CurrentUtcDate();
@@ -314,7 +314,7 @@ SELECT CurrentUtcTimestamp(TableRow()) FROM my_table;
The arguments that follow are optional and work same as [RANDOM](#random).
-### Examples
+#### Examples
```yql
SELECT CurrentTzDate("Europe/Moscow");
@@ -335,7 +335,7 @@ Arguments:
Result type: `TzDate`/`TzDatetime`/`TzTimestamp`, depending on the input data type.
-### Examples
+#### Examples
```yql
SELECT AddTimezone(Datetime("2018-02-01T12:00:00Z"), "Europe/Moscow");
@@ -351,7 +351,7 @@ Arguments:
Result type: `Date`/`Datetime`/`Timestamp`, depending on the input data type.
-### Examples
+#### Examples
```yql
SELECT RemoveTimezone(TzDatetime("2018-02-01T12:00:00,Europe/Moscow"));
@@ -363,7 +363,7 @@ SELECT RemoveTimezone(TzDatetime("2018-02-01T12:00:00,Europe/Moscow"));
`Version()` returns a string describing the current version of the node processing the request. In some cases, such as during rolling upgrades, it might return different strings depending on which node processes the request. It does not accept any arguments.
-### Examples
+#### Examples
```yql
SELECT Version();
@@ -379,7 +379,7 @@ The argument types must be mutually castable and accept `NULL`.
`GREATEST` is a synonym for `MAX_OF` and `LEAST` is a synonym for `MIN_OF`.
-### Examples
+#### Examples
```yql
SELECT MIN_OF(1, 2, 3);
@@ -406,7 +406,7 @@ Specifics:
* `AsDict` and `AsDictStrict` expect `Tuple` of two elements as arguments (key and value, respectively). If the keys repeat, only the value for the first key remains in the dictionary.
* `AsSet` and `AsSetStrict` expect keys as arguments.
-### Examples
+#### Examples
```yql
SELECT
@@ -442,7 +442,7 @@ For field names in the structure literal, you can use an expression that can be
For nested lists, use [AsList](#as-container), for nested dictionaries, use [AsDict](#as-container), for nested sets, use [AsSet](#as-container), for nested tuples, use [AsTuple](#as-container), for nested structures, use [AsStruct](#as-container).
-### Examples
+#### Examples
```yql
$name = "computed " || "member name";
@@ -475,7 +475,7 @@ Arguments:
* String with a field name or tuple index
* Variant type
-### Example
+#### Example
```yql
$var_type = Variant<foo: Int32, bar: Bool>;
@@ -494,7 +494,7 @@ Arguments:
* Value
* A string with the field name
-### Example
+#### Example
```yql
SELECT
@@ -505,7 +505,7 @@ SELECT
Processes the possible values of a variant over a structure or tuple using the provided handler functions for each field/element of the variant.
-### Signature
+#### Signature
```yql
Visit(Variant<key1: K1, key2: K2, ...>, K1->R AS key1, K2->R AS key2, ...)->R
@@ -521,7 +521,7 @@ VisitOrDefault(Variant<key1: K1, key2: K2, ...>{Flags:AutoMap}, R, [K1->R AS key
* For a variant over tuple: accepts the variant and handlers for each element of the variant as positional arguments.
* `VisitOrDefault` includes an additional positional argument (on the second place) for the default value, enabling the omission of certain handlers.
-### Example
+#### Example
```yql
$vartype = Variant<num: Int32, flag: Bool, str: String>;
@@ -543,14 +543,14 @@ SELECT
Returns the value of a homogeneous variant (i.e., a variant containing fields/elements of the same type).
-### Signature
+#### Signature
```yql
VariantItem(Variant<key1: K, key2: K, ...>{Flags:AutoMap})->K
VariantItem(Variant<K, K, ...>{Flags:AutoMap})->K
```
-### Example
+#### Example
```yql
$vartype1 = Variant<num1: Int32, num2: Int32, num3: Int32>;
@@ -566,14 +566,14 @@ SELECT
Returns an active field (active index) of a variant over a struct (tuple).
-### Signature
+#### Signature
```yql
Way(Variant<key1: K1, key2: K2, ...>{Flags:AutoMap})->Utf8
Way(Variant<K1, K2, ...>{Flags:AutoMap})->Uint32
```
-### Example
+#### Example
```yql
$vr = Variant(1, "0", Variant<Int32, String>);
@@ -587,14 +587,14 @@ SELECT Way($vrs); -- "a"
Creates a homogeneous variant instance (i.e. containing fields/elements of the same type), where the variant index or field can be set dynamically. If the index or field name does not exist, `NULL` will be returned.
The inverse function is [VariantItem](#variantitem).
-### Signature
+#### Signature
```yql
DynamicVariant(item:T,index:Uint32?,Variant<T, T, ...>)->Optional<Variant<T, T, ...>>
DynamicVariant(item:T,index:Utf8?,Variant<key1: T, key2: T, ...>)->Optional<Variant<key1: T, key2: T, ...>>
```
-### Example
+#### Example
```yql
$dt = Int32;
@@ -616,7 +616,7 @@ Arguments:
* A string with the field name
* Enumeration type
-### Example
+#### Example
```yql
$enum_type = Enum<Foo, Bar>;
@@ -633,7 +633,7 @@ Arguments:
* A string with the name of an enumeration item
-### Example
+#### Example
```yql
SELECT
@@ -673,7 +673,7 @@ To avoid such a situation, create a subquery for calculating these functions, as
{% endnote %}
-### Examples
+#### Examples
```yql
SELECT TablePath() FROM CONCAT(table_a, table_b);
@@ -693,7 +693,7 @@ Optional arguments:
* Path to the table, `TablePath()` is used by default (see also its limitations).
* Specifying the system ("yt") whose rules are used to determine the table name. You need to specify the system only if [USE](../syntax/use.md) doesn't specify the current cluster.
-### Examples
+#### Examples
```yql
USE cluster;
@@ -707,7 +707,7 @@ Access to the current sequence number of a row in the physical source table, **s
No arguments. When used in combination with [CONCAT](../syntax/select/concat.md#concat), and other similar mechanisms, numbering restarts for each input table. If used in an incorrect context, it returns 0.
-### Example
+#### Example
```yql
SELECT TableRecordIndex() FROM my_table;
@@ -717,7 +717,7 @@ SELECT TableRecordIndex() FROM my_table;
Getting the entire table row as a structure. No arguments. `JoinTableRow` in case of `JOIN` always returns a structure with table prefixes.
-### Example
+#### Example
```yql
SELECT TableRow() FROM my_table;
@@ -727,7 +727,7 @@ SELECT TableRow() FROM my_table;
The `FileContent` and `FilePath` argument is a string with an alias.
-### Examples
+#### Examples
```yql
SELECT "Content of "
@@ -744,7 +744,7 @@ The argument is a string with a prefix among aliases.
See also [PRAGMA File](../syntax/pragma.md#file) and [PRAGMA Folder](../syntax/pragma.md#folder).
-### Examples
+#### Examples
```yql
PRAGMA File("foo/1.txt", "http://url/to/somewhere");
@@ -772,7 +772,7 @@ The return value is a lazy list. For repeat use, wrap it in the function [ListCo
{% endnote %}
-### Examples
+#### Examples
```yql
SELECT ListLength(ParseFile("String", "my_file.txt"));
@@ -801,7 +801,7 @@ Arguments:
To check the conditions based on the final calculation result, it's convenient to combine Ensure with [DISCARD SELECT](../syntax/discard.md).
-### Examples
+#### Examples
```yql
SELECT Ensure(
@@ -845,7 +845,7 @@ Restrictions:
* The expression must not trigger MapReduce operations.
* This functionality is fully locked in YQL over YDB.
-### Examples
+#### Examples
```yql
$now = CurrentUtcDate();
@@ -860,7 +860,7 @@ SELECT EvaluateExpr(
For primitive types, you can create literals based on string literals.
-### Syntax
+#### Syntax
`<Primitive type>( <string>[, <additional attributes>] )`
@@ -880,7 +880,7 @@ For the data types `TzDate`, `TzDatetime`, `TzTimestamp`, literals are also set
{% include [decimal args](../_includes/decimal_args.md) %}
-### Examples
+#### Examples
```yql
SELECT
@@ -911,7 +911,7 @@ SELECT
Conversion of [primitive data types](../types/primitive.md) to a string with their binary representation and back. Numbers are represented in the [little endian](https://en.wikipedia.org/wiki/Endianness#Little-endian) format.
-### Examples
+#### Examples
```yql
SELECT
@@ -933,7 +933,7 @@ Arguments:
1. String: `String` or `Utf8`.
2. Index: `Uint32`.
-### Examples
+#### Examples
```yql
SELECT
@@ -955,7 +955,7 @@ Arguments:
TestBit returns `true/false`. The other functions return a copy of their first argument with the corresponding conversion.
-### Examples
+#### Examples
```yql
SELECT
@@ -969,7 +969,7 @@ SELECT
The absolute value of the number.
-### Examples
+#### Examples
```yql
SELECT Abs(-123); -- 123
@@ -983,7 +983,7 @@ SELECT Abs(-123); -- 123
The reverse operation is [Unwrap](#optional-ops).
-### Examples
+#### Examples
```yql
SELECT
@@ -1003,7 +1003,7 @@ Arguments:
Reverse operation is [Just](#optional-ops).
-### Examples
+#### Examples
```yql
$value = Just("value");
@@ -1015,7 +1015,7 @@ SELECT Unwrap($value, "Unexpected NULL for $value");
`Nothing()`: Create an empty value for the specified [Optional](../types/optional.md) data type.
-### Examples
+#### Examples
```yql
SELECT
@@ -1035,7 +1035,7 @@ Arguments:
1. Type.
2. Lambda function.
-### Examples
+#### Examples
```yql
$lambda = ($x) -> {
@@ -1058,7 +1058,7 @@ SELECT $callables.0(10), $callables.1(true);
`Unpickle()` is the inverse operation (deserialization), where with the first argument being the data type of the result and the second argument is the string with the result of `Pickle()` or `StablePickle()`.
-### Examples
+#### Examples
```yql
SELECT *
@@ -1084,7 +1084,7 @@ Arguments:
Result: a structure or tuple with the same number and naming of items as in the first argument, and with item data types determined by lambda results.
-### Examples
+#### Examples
```yql
SELECT *
@@ -1105,7 +1105,7 @@ Merges structures or tuples element-by-element. All arguments (one or more) must
The result will be a structure or tuple, respectively.
Each item of the result is a tuple comprised of items taken from arguments.
-### Examples
+#### Examples
```yql
$one = <|k1:1, k2:2.0|>;
@@ -1162,7 +1162,7 @@ Arguments:
The resulting factory can be used as the second parameter of the function [AGGREGATE_BY](aggregation.md#aggregate-by).
If the aggregate function is applied to two columns instead of one, as, for example, [MIN_BY](aggregation.md#minby), then in [AGGREGATE_BY](aggregation.md#aggregate-by), the first argument passes a `Tuple` of two values. See more details in the description of the applicable aggregate function.
-### Examples
+#### Examples
```yql
$factory = AggregationFactory("MIN");
@@ -1180,7 +1180,7 @@ Arguments:
1. Aggregation factory.
2. A lambda function with one argument that converts an input item.
-### Examples
+#### Examples
```yql
$f = AggregationFactory("sum");
@@ -1200,7 +1200,7 @@ Arguments:
1. Aggregation factory.
2. A lambda function with one argument that converts the result.
-### Examples
+#### Examples
```yql
$f = AggregationFactory("sum");
@@ -1217,7 +1217,7 @@ Arguments:
1. Aggregation factory.
-### Examples
+#### Examples
```yql
$i = AggregationFactory("AGGREGATE_LIST_DISTINCT");
diff --git a/yql/essentials/docs/en/builtins/codegen.md b/yql/essentials/docs/en/builtins/codegen.md
index 2728742947..59e787d512 100644
--- a/yql/essentials/docs/en/builtins/codegen.md
+++ b/yql/essentials/docs/en/builtins/codegen.md
@@ -26,7 +26,7 @@ In the text representation, S-expressions have the following format:
Serializing the code as [S-expressions](/docs/s_expressions). The code must not contain free arguments of functions, hence, to serialize the lambda function code, you must pass it completely, avoiding passing individual expressions that might contain lambda function arguments.
-### Examples
+#### Examples
```yql
SELECT FormatCode(AtomCode("foo"));
@@ -39,7 +39,7 @@ SELECT FormatCode(AtomCode("foo"));
Build a code node with the `world` type.
-### Examples
+#### Examples
```yql
SELECT FormatCode(WorldCode());
@@ -52,7 +52,7 @@ SELECT FormatCode(WorldCode());
Build a code node with the `atom` type from a string passed to the argument.
-### Examples
+#### Examples
```yql
SELECT FormatCode(AtomCode("foo"));
@@ -65,7 +65,7 @@ SELECT FormatCode(AtomCode("foo"));
Build a code node with the `list` type from a set of nodes or lists of code nodes passed to arguments. In this case, lists of arguments are built in as separately listed code nodes.
-### Examples
+#### Examples
```yql
SELECT FormatCode(ListCode(
@@ -87,7 +87,7 @@ SELECT FormatCode(ListCode(AsList(
Build a code node with the `built-in function call` from a string with the function name and a set of nodes or lists of code nodes passed to arguments. In this case, lists of arguments are built in as separately listed code nodes.
-### Examples
+#### Examples
```yql
SELECT FormatCode(FuncCode(
@@ -115,7 +115,7 @@ You can build a code node with the `lambda function declaration` type from:
* [a Lambda function](../syntax/expressions.md#lambda), if you know the number of arguments in advance. In this case, the nodes of the `argument` type will be passed as arguments to this lambda function.
* The number of arguments and a [lambda function](../syntax/expressions.md#lambda) with one argument. In this case, a list of nodes of the `argument`type will be passed as an argument to this lambda function.
-### Examples
+#### Examples
```yql
SELECT FormatCode(LambdaCode(($x, $y) -> {
@@ -137,7 +137,7 @@ SELECT FormatCode(LambdaCode(2, ($args) -> {
Substituting the code node passed in the argument, into the main program code.
-### Examples
+#### Examples
```yql
SELECT EvaluateCode(FuncCode("Int32", AtomCode("1"))); -- 1
@@ -152,7 +152,7 @@ SELECT $lambda(1, 2); -- 3
Substituting the code node representing the result of evaluating an expression passed in the argument, into the main program.
-### Examples
+#### Examples
```yql
$add3 = EvaluateCode(LambdaCode(($x) -> {
@@ -165,7 +165,7 @@ SELECT $add3(1); -- 4
Substituting into the main program the code node that represents an expression or a [lambda function](../syntax/expressions.md#lambda) passed in the argument. If free arguments of lambda functions were found during the substitution, they are calculated and substituted into the code as in the [ReprCode](#reprcode) function.
-### Examples
+#### Examples
```yql
$lambda = ($x, $y) -> { RETURN $x + $y };
diff --git a/yql/essentials/docs/en/builtins/dict.md b/yql/essentials/docs/en/builtins/dict.md
index 5659d9ff50..57b01e54ac 100644
--- a/yql/essentials/docs/en/builtins/dict.md
+++ b/yql/essentials/docs/en/builtins/dict.md
@@ -6,7 +6,7 @@ Construct an empty dictionary. Two arguments are passed: for a key and a value.
[Documentation for the type definition format](../types/type_string.md).
-### Examples
+#### Examples
```yql
SELECT DictCreate(String, Tuple<String,Double?>);
@@ -22,7 +22,7 @@ Construct an empty set. An argument is passed: the key type that can be built by
[Documentation for the type definition format](../types/type_string.md).
-### Examples
+#### Examples
```yql
SELECT SetCreate(String);
@@ -36,7 +36,7 @@ SELECT SetCreate(Tuple<Int32?,String>);
The count of items in the dictionary.
-### Examples
+#### Examples
```yql
SELECT DictLength(AsDict(AsTuple(1, AsList("foo", "bar"))));
@@ -50,7 +50,7 @@ SELECT DictLength(dict_column) FROM my_table;
Check that the dictionary contains at least one item.
-### Examples
+#### Examples
```yql
SELECT DictHasItems(AsDict(AsTuple(1, AsList("foo", "bar")))) FROM my_table;
@@ -65,7 +65,7 @@ SELECT DictHasItems(dict_column) FROM my_table;
Get dictionary contents as a list of tuples including key-value pairs (`List<Tuplekey_type,value_type>`).
-### Examples
+#### Examples
```yql
SELECT DictItems(AsDict(AsTuple(1, AsList("foo", "bar"))));
@@ -83,7 +83,7 @@ FROM my_table;
Get a list of dictionary keys.
-### Examples
+#### Examples
```yql
SELECT DictKeys(AsDict(AsTuple(1, AsList("foo", "bar"))));
@@ -101,7 +101,7 @@ FROM my_table;
Get a list of dictionary values.
-### Examples
+#### Examples
```yql
SELECT DictPayloads(AsDict(AsTuple(1, AsList("foo", "bar"))));
@@ -117,7 +117,7 @@ FROM my_table;
Get a dictionary element by its key.
-### Examples
+#### Examples
```yql
SELECT DictLookup(AsDict(
@@ -136,7 +136,7 @@ FROM my_table;
Checking if an element in the dictionary using its key. Returns true or false.
-### Examples
+#### Examples
```yql
SELECT DictContains(AsDict(
@@ -164,7 +164,7 @@ Arguments:
1. Dictionary.
2. [Aggregation factory](basic.md#aggregationfactory).
-### Examples
+#### Examples
```yql
SELECT DictAggregate(AsDict(
@@ -183,7 +183,7 @@ So there are two options to make a call:
* With the `Dict<K,V1>` and `List<K>` arguments.
* With the `Dict<K,V1>` and `Dict<K,V2>` arguments.
-### Examples
+#### Examples
```yql
SELECT SetIsDisjoint(ToSet(AsList(1, 2, 3)), AsList(7, 4)); -- true
@@ -199,7 +199,7 @@ Arguments:
* Two dictionaries: `Dict<K,V1>` and `Dict<K,V2>`.
* An optional function that combines the values from the source dictionaries to construct the values of the output dictionary. If such a function has the `(K,V1,V2) -> U` type, the result type is `Dict<K,U>`. If the function is not specified, the result type is `Dict<K,Void>`, and the values from the source dictionaries are ignored.
-### Examples
+#### Examples
```yql
SELECT SetIntersection(ToSet(AsList(1, 2, 3)), ToSet(AsList(3, 4))); -- { 3 }
@@ -219,7 +219,7 @@ So there are two options to make a call:
* With the `Dict<K,V1>` and `List<K>` arguments.
* With the `Dict<K,V1>` and `Dict<K,V2>` arguments.
-### Examples
+#### Examples
```yql
SELECT SetIncludes(ToSet(AsList(1, 2, 3)), AsList(3, 4)); -- false
@@ -235,7 +235,7 @@ Arguments:
* Two dictionaries: `Dict<K,V1>` and `Dict<K,V2>`.
* An optional function that combines the values from the source dictionaries to construct the values of the output dictionary. If such a function has the `(K,V1?,V2?) -> U` type, the result type is `Dict<K,U>`. If the function is not specified, the result type is `Dict<K,Void>`, and the values from the source dictionaries are ignored.
-### Examples
+#### Examples
```yql
SELECT SetUnion(ToSet(AsList(1, 2, 3)), ToSet(AsList(3, 4))); -- { 1, 2, 3, 4 }
@@ -250,7 +250,7 @@ SELECT SetUnion(
Construct a dictionary containing all the keys with their values in the first dictionary with no matching key in the second dictionary.
-### Examples
+#### Examples
```yql
SELECT SetDifference(ToSet(AsList(1, 2, 3)), ToSet(AsList(3, 4))); -- { 1, 2 }
@@ -269,7 +269,7 @@ Arguments:
* Two dictionaries: `Dict<K,V1>` and `Dict<K,V2>`.
* An optional function that combines the values from the source dictionaries to construct the values of the output dictionary. If such a function has the `(K,V1?,V2?) -> U` type, the result type is `Dict<K,U>`. If the function is not specified, the result type is `Dict<K,Void>`, and the values from the source dictionaries are ignored.
-### Examples
+#### Examples
```yql
SELECT SetSymmetricDifference(ToSet(AsList(1, 2, 3)), ToSet(AsList(3, 4))); -- { 1, 2, 4 }
diff --git a/yql/essentials/docs/en/builtins/json.md b/yql/essentials/docs/en/builtins/json.md
index d9168fa6d1..975d3e9382 100644
--- a/yql/essentials/docs/en/builtins/json.md
+++ b/yql/essentials/docs/en/builtins/json.md
@@ -916,7 +916,7 @@ JSON_VALUE(
The `JSON_EXISTS` function checks if a JSON value meets the specified JsonPath.
-### Syntax
+#### Syntax
```yql
JSON_EXISTS(
@@ -975,7 +975,7 @@ SELECT
The `JSON_VALUE` function retrieves a scalar value from JSON (anything that isn't an array or object).
-### Syntax
+#### Syntax
```yql
JSON_VALUE(
@@ -1032,7 +1032,7 @@ Errors executing `JSON_VALUE` are as follows:
`The RETURNING` section supports such types as numbers, `Date`, `DateTime`, `Timestamp`, `Utf8`, `String`, and `Bool`.
-### Examples
+#### Examples
```yql
$json = CAST(@@{
@@ -1079,7 +1079,7 @@ SELECT
The `JSON_QUERY` function lets you retrieve arrays and objects from JSON.
-### Syntax
+#### Syntax
```yql
JSON_QUERY(
diff --git a/yql/essentials/docs/en/builtins/list.md b/yql/essentials/docs/en/builtins/list.md
index af8e48283a..50b8182ee7 100644
--- a/yql/essentials/docs/en/builtins/list.md
+++ b/yql/essentials/docs/en/builtins/list.md
@@ -6,7 +6,7 @@ Construct an empty list. The only argument specifies a string describing the dat
[Documentation for the type definition format](../types/type_string.md).
-### Examples
+#### Examples
```yql
SELECT ListCreate(Tuple<String,Double?>);
@@ -20,7 +20,7 @@ SELECT ListCreate(OptionalType(DataType("String")));
Construct a list based on one or more arguments. The argument types must be compatible in the case of `AsList` and strictly match in the case of `AsListStrict`.
-### Examples
+#### Examples
```yql
SELECT AsList(1, 2, 3, 4, 5);
@@ -30,7 +30,7 @@ SELECT AsList(1, 2, 3, 4, 5);
The count of items in the list.
-### Examples
+#### Examples
```yql
SELECT ListLength(list_column) FROM my_table;
@@ -40,7 +40,7 @@ SELECT ListLength(list_column) FROM my_table;
Check that the list contains at least one item.
-### Examples
+#### Examples
```yql
SELECT ListHasItems(list_column) FROM my_table;
@@ -50,7 +50,7 @@ SELECT ListHasItems(list_column) FROM my_table;
Convert a lazy list (it can be built by such functions as [ListFilter](#listmap), [ListMap](#listmap), [ListFlatMap](#listmap)) to an eager list. In contrast to a lazy list, where each new pass re-calculates the list contents, in an eager list the content is built at once by consuming more memory.
-### Examples
+#### Examples
```yql
SELECT ListCollect(list_column) FROM my_table;
@@ -65,7 +65,7 @@ Arguments:
1. List.
2. An optional expression to get the sort key from a list element (it's the element itself by default).
-### Examples
+#### Examples
```yql
SELECT ListSortDesc(list_column) FROM my_table;
@@ -97,7 +97,7 @@ If at least one of the lists is optional, then the result is also optional.
If at least one argument is `NULL`, then the result type is `NULL`.
-### Examples
+#### Examples
```yql
SELECT ListExtend(
@@ -113,7 +113,7 @@ Sequentially join lists of structures (concatenation of lists). A field is added
If at least one of the lists is optional, then the result is also optional.
-### Examples
+#### Examples
```yql
SELECT ListUnionAll(
@@ -130,7 +130,7 @@ Based on the input lists, build a list of pairs containing the list items with m
The length of the returned list is determined by the shortest list for ListZip and the longest list for ListZipAll.
When the shorter list is exhausted, a `NULL` value of a relevant [optional type](../types/optional.md) is paired with the elements of the longer list.
-### Examples
+#### Examples
```yql
SELECT
@@ -143,7 +143,7 @@ FROM my_table;
Build a list of pairs (Tuple) containing the element number and the element itself (`List<TupleUint64,list_element_type>`).
-### Examples
+#### Examples
```yql
SELECT ListEnumerate(list_column) FROM my_table;
@@ -153,7 +153,7 @@ SELECT ListEnumerate(list_column) FROM my_table;
Reverse the list.
-### Examples
+#### Examples
```yql
SELECT ListReverse(list_column) FROM my_table;
@@ -164,7 +164,7 @@ Returns a copy of the list, skipping the specified number of its first elements.
The first argument specifies the source list and the second argument specifies how many elements to skip.
-### Examples
+#### Examples
```yql
SELECT
@@ -178,7 +178,7 @@ Returns a copy of the list containing a limited number of elements from the seco
The first argument specifies the source list and the second argument specifies the maximum number of elements to be taken from the beginning of the list.
-### Examples
+#### Examples
```yql
SELECT ListTake(list_column, 3) FROM my_table;
@@ -196,7 +196,7 @@ If the probability/sample size is NULL, returns the original list.
An optional argument is used to control randomness, see [documentation for `Random`](basic.md#random).
-### Examples
+#### Examples
```yql
ListSample(List<T>, Double?[, U])->List<T>
@@ -217,7 +217,7 @@ SELECT ListSampleN($list, 2); -- [4, 2]
Returns a shuffled copy of the list. An optional argument is used to control randomness, see [documentation for `Random`](basic.md#random).
-### Examples
+#### Examples
```yql
ListShuffle(List<T>[, U])->List<T>
@@ -234,7 +234,7 @@ SELECT ListShuffle($list); -- [1, 3, 5, 2, 4]
Searches the list for an element with the specified value and returns its index at the first occurrence. Indexes count from 0. If such element is missing, it returns `NULL`.
-### Examples
+#### Examples
```yql
SELECT
@@ -266,7 +266,7 @@ Arguments:
If the source list is optional, then the output list is also optional.
-### Examples
+#### Examples
```yql
$callable = Python::test(Callable<(Int64)->Bool>, "defMyFavouriteCrutchtest(i): return i % 2");
@@ -283,7 +283,7 @@ Applies transformation to the source list, skipping empty optional items and str
If the source list is optional, then the output list is also optional.
-### Examples
+#### Examples
```yql
SELECT ListNotNull([1,2]), -- [1,2]
@@ -296,7 +296,7 @@ Expands the list of lists into a flat list, preserving the order of items. As th
If the source list is optional, then the output list is also optional.
-### Examples
+#### Examples
```yql
SELECT ListFlatten([[1,2],[3,4]]), -- [1,2,3,4]
@@ -307,7 +307,7 @@ SELECT ListFlatten([[1,2],[3,4]]), -- [1,2,3,4]
Returns a copy of the list containing only distinct elements.
-### Examples
+#### Examples
```yql
SELECT
@@ -324,7 +324,7 @@ Returns `true` for a list of Boolean values, if:
Otherwise, it returns false.
-### Examples
+#### Examples
```yql
SELECT
@@ -337,7 +337,7 @@ FROM my_table;
Show whether the list contains the specified element. In this case, `NULL` values are considered equal to each other, and with a `NULL` input list, the result is always `false`.
-### Examples
+#### Examples
```yql
SELECT
@@ -349,7 +349,7 @@ FROM my_table;
Returns the first and last item of the list.
-### Examples
+#### Examples
```yql
SELECT
@@ -362,7 +362,7 @@ FROM my_table;
Apply the appropriate aggregate function to all elements of the numeric list.
-### Examples
+#### Examples
```yql
SELECT
@@ -410,7 +410,7 @@ Arguments:
Type returned: `List` of `U` items.
-### Examples
+#### Examples
```yql
$l = [1, 4, 7, 2];
@@ -446,7 +446,7 @@ Specifics:
* If any of the parameters is optional, the result list is optional.
* If any of the parameters is `NULL`, the result is `NULL`.
-### Examples
+#### Examples
```yql
SELECT
@@ -454,7 +454,7 @@ SELECT
ListFromRange(2, 1, -0.5); -- [2.0, 1.5]
```
-### Signature
+#### Signature
```yql
ListFromRange(T{Flags:AutoMap}, T{Flags:AutoMap}, T?)->LazyList<T> -- T — numeric type
@@ -470,7 +470,7 @@ Required arguments:
1. Value.
2. Number of copies.
-### Examples
+#### Examples
```yql
SELECT ListReplicate(true, 3); -- [true, true, true]
@@ -481,7 +481,7 @@ SELECT ListReplicate(true, 3); -- [true, true, true]
Concatenates a list of strings into a single string.
You can set a separator as the second parameter.
-### Examples
+#### Examples
```yql
SELECT
@@ -494,7 +494,7 @@ FROM my_table;
For a list of structures, it returns a list of contained fields having the specified name.
-### Examples
+#### Examples
```yql
SELECT
@@ -517,7 +517,7 @@ Required arguments:
If the input list is optional, then the result is also optional.
-### Examples
+#### Examples
```yql
$data = AsList(1, 2, 5, 1, 2, 7);
@@ -540,7 +540,7 @@ Arguments:
1. List.
2. [Aggregation factory](basic.md#aggregationfactory).
-### Examples
+#### Examples
```yql
SELECT ListAggregate(AsList(1, 2, 3), AggregationFactory("Sum")); -- 6
@@ -557,7 +557,7 @@ It means that:
Optional lists are also supported, resulting in an optional dictionary.
-### Examples
+#### Examples
```yql
SELECT
@@ -572,7 +572,7 @@ An optional list is also supported, resulting in an optional dictionary.
Inverse function: get a list of keys for the [DictKeys](dict.md#dictkeys) dictionary.
-### Examples
+#### Examples
```yql
SELECT
@@ -592,7 +592,7 @@ Arguments:
2. Size of selection.
3. An optional expression to get the sort key from a list element (it's the element itself by default).
-### Examples
+#### Examples
```yql
ListTop(List<T>{Flags:AutoMap}, N)->List<T>
diff --git a/yql/essentials/docs/en/builtins/struct.md b/yql/essentials/docs/en/builtins/struct.md
index 9ab3442d72..5376e96a6a 100644
--- a/yql/essentials/docs/en/builtins/struct.md
+++ b/yql/essentials/docs/en/builtins/struct.md
@@ -36,7 +36,7 @@ Arguments:
* The first argument passes the source structure to be expanded.
* All the other arguments must be named, each argument adds a new field and the argument's name is used as the field's name (as in [AsStruct](basic.md#asstruct)).
-### Examples
+#### Examples
```yql
$struct = <|a:1|>;
@@ -60,7 +60,7 @@ Arguments:
2. Name of the new field.
3. Value of the new field.
-### Examples
+#### Examples
```yql
$struct = <|a:1|>;
@@ -83,7 +83,7 @@ Arguments:
1. Source structure.
2. Field name.
-### Examples
+#### Examples
```yql
$struct = <|a:1, b:2|>;
@@ -105,7 +105,7 @@ Arguments:
1. Source structure.
2. Field name.
-### Examples
+#### Examples
```yql
$struct = <|a:1, b:2|>;
@@ -127,7 +127,7 @@ Arguments:
1. Source structure.
2. List of field names.
-### Examples
+#### Examples
```yql
$struct = <|a:1, b:2, c:3|>;
@@ -149,7 +149,7 @@ Arguments:
1. Source structure.
2. List of field names.
-### Examples
+#### Examples
```yql
$struct = <|a:1, b:2, c:3|>;
@@ -171,7 +171,7 @@ Arguments:
1. Source structure.
2. List of field names.
-### Examples
+#### Examples
```yql
$struct = <|a:1, b:2, c:3|>;
@@ -190,7 +190,7 @@ If the resulting field set contains duplicate values, an error is returned.
Arguments: two or more structures.
-### Examples
+#### Examples
```yql
$struct1 = <|a:1, b:2|>;
@@ -210,7 +210,7 @@ If the resulting field set contains duplicate values, an error is returned.
Arguments: two or more tuples of two items: prefix and structure.
-### Examples
+#### Examples
```yql
$struct1 = <|a:1, b:2|>;
@@ -228,7 +228,7 @@ Returns an unordered list of field names (possibly removing one Optional level)
Argument: structure
-### Examples
+#### Examples
```yql
$struct = <|a:1, b:2|>;
@@ -245,7 +245,7 @@ Arguments:
1. Source structure.
2. A tuple of field names: the original name, the new name.
-### Examples
+#### Examples
```yql
$struct = <|a:1, b:2|>;
@@ -262,7 +262,7 @@ Arguments:
1. Source structure.
2. A tuple of field names: the original name, the new name.
-### Examples
+#### Examples
```yql
$struct = <|a:1, b:2|>;
@@ -276,7 +276,7 @@ Returns an unordered list of tuples including the field name and value. For the
Argument: structure
-### Examples
+#### Examples
```yql
$struct = <|a:1, b:2|>;
@@ -293,7 +293,7 @@ Arguments:
1. List of tuples: field name, field value.
2. A list of all possible field names in the structure.
-### Examples
+#### Examples
```yql
SELECT
@@ -309,7 +309,7 @@ Arguments:
1. List of tuples: field name, field value.
2. A list of all possible field names in the structure.
-### Examples
+#### Examples
```yql
SELECT
@@ -325,7 +325,7 @@ Combine two structures using one of the four methods (using the provided lambda
* `StructDifference` adds only the fields of `left`, which are absent in `right`.
* `StructSymmetricDifference` adds all fields that are present in exactly one of the structures.
-### Signatures
+#### Signatures
```yql
StructUnion(left:Struct<...>, right:Struct<...>[, mergeLambda:(name:String, l:T1?, r:T2?)->T])->Struct<...>
@@ -340,7 +340,7 @@ Arguments:
2. `right` - second structure.
3. `mergeLambda` - _(optional)_ function to merge fields with the same name (arguments: field name, `Optional` field value of the first struct, `Optional` field value of the second struct - arguments are `Nothing<T?>` in case of absence of the corresponding struct field). By default, if present, the first structure's field value is used; otherwise, the second one's value is used.
-### Examples
+#### Examples
```yql
$merge = ($name, $l, $r) -> {
diff --git a/yql/essentials/docs/en/builtins/types.md b/yql/essentials/docs/en/builtins/types.md
index 2b66d5528e..b1e75055d8 100644
--- a/yql/essentials/docs/en/builtins/types.md
+++ b/yql/essentials/docs/en/builtins/types.md
@@ -8,7 +8,7 @@ Serializing a type or a handle type to a human-readable string. This helps at de
Building a type from a string with description. [Documentation for its format](../types/type_string.md).
-### Examples
+#### Examples
```yql
SELECT FormatType(ParseType("List<Int32>")); -- List<int32>
@@ -18,7 +18,7 @@ SELECT FormatType(ParseType("List<Int32>")); -- List<int32>
Getting the type of value passed to the argument.
-### Examples
+#### Examples
```yql
SELECT FormatType(TypeOf("foo")); -- String
@@ -34,7 +34,7 @@ Returns an instance of the specified type that can only be used to get the type
If this instance remains in the computation graph by the end of optimization, the operation fails.
-### Examples
+#### Examples
```yql
SELECT FormatType(TypeOf(
@@ -47,7 +47,7 @@ SELECT FormatType(TypeOf(
Returns a type for [primitive data types](../types/primitive.md) based on type name.
-### Examples
+#### Examples
```yql
SELECT FormatType(DataType("Bool")); -- Bool
@@ -58,7 +58,7 @@ SELECT FormatType(DataType("Decimal","5","1")); -- Decimal(5,1)
Adds the option to assign `NULL` to the passed type.
-### Examples
+#### Examples
```yql
SELECT FormatType(OptionalType(DataType("Bool"))); -- Bool?
@@ -68,7 +68,7 @@ SELECT FormatType(OptionalType(DataType("Bool"))); -- Bool?
Builds a list type or stream type based on the passed element type.
-### Examples
+#### Examples
```yql
SELECT FormatType(ListType(DataType("Bool"))); -- List<Bool>
@@ -78,7 +78,7 @@ SELECT FormatType(ListType(DataType("Bool"))); -- List<Bool>
Builds a dictionary type based on the passed key types (first argument) and value types (second argument).
-### Examples
+#### Examples
```yql
SELECT FormatType(DictType(
@@ -91,7 +91,7 @@ SELECT FormatType(DictType(
Builds the tuple type from the passed element types.
-### Examples
+#### Examples
```yql
SELECT FormatType(TupleType(
@@ -105,7 +105,7 @@ SELECT FormatType(TupleType(
Builds the structure type based on the passed element types. The standard syntax of named arguments is used to specify the element names.
-### Examples
+#### Examples
```yql
SELECT FormatType(StructType(
@@ -118,7 +118,7 @@ SELECT FormatType(StructType(
Returns the type of a variant based on the underlying type (structure or tuple).
-### Examples
+#### Examples
```yql
SELECT FormatType(VariantType(
@@ -130,7 +130,7 @@ SELECT FormatType(VariantType(
Returns the type of the [resource](../types/special.md) based on the passed string label.
-### Examples
+#### Examples
```yql
SELECT FormatType(ResourceType("Foo")); -- Resource<'Foo'>
@@ -144,7 +144,7 @@ Constructs the type of the called value using the following arguments:
2. Result type.
3. All the next arguments of CallableType are treated as types of arguments of the callable value, but with a shift for two required arguments (for example, the third argument of the CallableType describes the type of the first argument in the callable value).
-### Examples
+#### Examples
```yql
SELECT FormatType(CallableType(
@@ -159,7 +159,7 @@ SELECT FormatType(CallableType(
Return the same-name [special data types](../types/special.md). They have no arguments because they are not parameterized.
-### Examples
+#### Examples
```yql
SELECT FormatType(VoidType()); -- Void
@@ -171,7 +171,7 @@ If a type is passed to these functions, then they perform the action reverse to
If a type handle is passed to these functions, then they perform the action reverse to [OptionalTypeHandle](#optionaltypehandle), [ListTypeHandle](#list-stream-typehandle), and [StreamTypeHandle](#list-stream-typehandle): they return the handle of the element type based on the type handle of its container.
-### Examples
+#### Examples
```yql
SELECT FormatType(ListItemType(
@@ -189,7 +189,7 @@ SELECT FormatType(ListItemType(
Returns the type of the key or value based on the dictionary type.
-### Examples
+#### Examples
```yql
SELECT FormatType(DictKeyType(
@@ -201,7 +201,7 @@ SELECT FormatType(DictKeyType(
Returns the tuple's element type based on the tuple type and the element index (index starts from zero).
-### Examples
+#### Examples
```yql
SELECT FormatType(TupleElementType(
@@ -213,7 +213,7 @@ SELECT FormatType(TupleElementType(
Returns the type of the structure element based on the structure type and element name.
-### Examples
+#### Examples
```yql
SELECT FormatType(StructMemberType(
@@ -225,7 +225,7 @@ SELECT FormatType(StructMemberType(
`CallableResultType` returns the result type based on the type of the called value. `CallableArgumentType` returns the argument type based on the called value type and its index (index starts from zero).
-### Examples
+#### Examples
```yql
$callable_type = ParseType("(String,Bool)->Double");
@@ -244,7 +244,7 @@ If a type is passed to this function, then it performs an action reverse to [Var
If a type handle is passed to this function, it performs the action reverse to [VariantTypeHandle](#varianttypehandle): returns the handle of the underlying type based on the handle of the variant type.
-### Examples
+#### Examples
```yql
SELECT FormatType(VariantUnderlyingType(
diff --git a/yql/essentials/docs/en/builtins/window.md b/yql/essentials/docs/en/builtins/window.md
index f9a670167b..c764a30504 100644
--- a/yql/essentials/docs/en/builtins/window.md
+++ b/yql/essentials/docs/en/builtins/window.md
@@ -10,7 +10,7 @@ The syntax for calling window functions is detailed in a [separate article](../s
All [aggregate functions](aggregation.md) can also be used as window functions.
In this case, each row includes an aggregation result obtained on a set of rows from the [window frame](../syntax/window.md#frame).
-### Examples
+#### Examples
```yql
SELECT
@@ -28,13 +28,13 @@ WINDOW
Row number within a [partition](../syntax/window.md#partition). No arguments.
-### Signature
+#### Signature
```yql
ROW_NUMBER()->Uint64
```
-### Examples
+#### Examples
```yql
SELECT
@@ -49,14 +49,14 @@ WINDOW w AS (ORDER BY key);
Accessing a value from a row in the [section](../syntax/window.md#partition) that lags behind (`LAG`) or leads (`LEAD`) the current row by a fixed number. The first argument specifies the expression to be accessed, and the second argument specifies the offset in rows. You may omit the offset. By default, the neighbor row is used: the previous or next, respectively (hence, 1 is assumed by default). For the rows having no neighbors at a given distance (for example, `LAG(expr, 3)` `NULL` is returned in the first and second rows of the section).
-### Signature
+#### Signature
```yql
LEAD(T[,Int32])->T?
LAG(T[,Int32])->T?
```
-### Examples
+#### Examples
```yql
SELECT
@@ -97,14 +97,14 @@ Access values from the first and last rows (using the `ORDER BY` clause for the
Optionally, `OVER` can be preceded by the additional modifier `IGNORE NULLS`. It changes the behavior of functions to the first or last **non-empty** (i.e., non-`NULL`) value among the window frame rows. The antonym of this modifier is `RESPECT NULLS`: it's the default behavior that can be omitted.
-### Signature
+#### Signature
```yql
FIRST_VALUE(T)->T?
LAST_VALUE(T)->T?
```
-### Examples
+#### Examples
```yql
SELECT
@@ -128,13 +128,13 @@ Access a value from a row specified by position in the window's `ORDER BY` order
Optionally, the `IGNORE NULLS` modifier can be specified before `OVER`, which causes rows with `NULL` in the first argument's value to be skipped. The antonym of this modifier is `RESPECT NULLS`, which is the default behavior and may be skipped.
-### Signature
+#### Signature
```yql
NTH_VALUE(T,N)->T?
```
-### Examples
+#### Examples
```yql
SELECT
@@ -166,7 +166,7 @@ Passing an argument to `RANK`/`DENSE_RANK`/`PERCENT_RANK` is a non-standard exte
{% endnote %}
-### Signature
+#### Signature
```text
RANK([T])->Uint64
@@ -174,7 +174,7 @@ DENSE_RANK([T])->Uint64
PERCENT_RANK([T])->Double
```
-### Examples
+#### Examples
```yql
SELECT
@@ -203,13 +203,13 @@ WINDOW w AS (ORDER BY my_column);
Distributes the rows of an ordered [partition](../syntax/window.md#partition) into a specified number of groups. The groups are numbered starting with one. For each row, the `NTILE` function returns the number of the group to which the row belongs.
-### Signature
+#### Signature
```yql
NTILE(Uint64)->Uint64
```
-### Examples
+#### Examples
```yql
SELECT
@@ -224,13 +224,13 @@ WINDOW w AS (ORDER BY key);
Returns the relative position (> 0 and <= 1) of a row within a [partition](../syntax/window.md#partition). No arguments.
-### Signature
+#### Signature
```yql
CUME_DIST()->Double
```
-### Examples
+#### Examples
```yql
SELECT
diff --git a/yql/essentials/docs/en/syntax/action.md b/yql/essentials/docs/en/syntax/action.md
index 6ec0f0f71f..ec6b785279 100644
--- a/yql/essentials/docs/en/syntax/action.md
+++ b/yql/essentials/docs/en/syntax/action.md
@@ -4,7 +4,7 @@
Specifies a named action that is a parameterizable block of multiple top-level expressions.
-### Syntax
+#### Syntax
1. `DEFINE ACTION`: action definition.
1. [Action name](expressions.md#named-nodes) that will be used to access the defined action further in the query.
@@ -19,7 +19,7 @@ One or more of the last parameters can be marked with a question mark `?` as opt
Executes an `ACTION` with the specified parameters.
-### Syntax
+#### Syntax
1. `DO`: Executing an action.
1. The named expression for which the action is defined.
@@ -33,7 +33,7 @@ In large queries, you can use separate files for action definition and include t
{% endnote %}
-### Example
+#### Example
```yql
DEFINE ACTION $hello_world($name, $suffix?) AS
@@ -51,7 +51,7 @@ DO $hello_world(NULL, "Earth");
Performing an action without declaring it (anonymous action).
-### Syntax
+#### Syntax
1. `BEGIN`.
1. List of top-level expressions.
@@ -59,7 +59,7 @@ Performing an action without declaring it (anonymous action).
An anonymous action can't include any parameters.
-### Example
+#### Example
```yql
DO BEGIN
@@ -86,7 +86,7 @@ END DO
4. [DO](#do) with the name and parameters of an action or an anonymous action. In the parameters, you can use both the current element from the first paragraph and any named expressions declared above, including the list itself.
5. An optional `ELSE` followed by the second `DO` for the situation when the list is empty.
-### Examples
+#### Examples
```yql
DEFINE ACTION $hello() AS
diff --git a/yql/essentials/docs/en/syntax/export_import.md b/yql/essentials/docs/en/syntax/export_import.md
index ddebe256be..15fd0714a4 100644
--- a/yql/essentials/docs/en/syntax/export_import.md
+++ b/yql/essentials/docs/en/syntax/export_import.md
@@ -24,7 +24,7 @@ The file linked by the [PRAGMA Library](pragma.md#library) must be attached to t
{% endnote %}
-### Examples
+#### Examples
my_lib.sql:
diff --git a/yql/essentials/docs/en/syntax/expressions.md b/yql/essentials/docs/en/syntax/expressions.md
index 02ba8372dd..7d6ceceb9f 100644
--- a/yql/essentials/docs/en/syntax/expressions.md
+++ b/yql/essentials/docs/en/syntax/expressions.md
@@ -10,7 +10,7 @@ As with other binary operators, if the data on either side is `NULL`, the result
Don't confuse this operator with a logical "or": in SQL, it's denoted by the `OR` keyword. It's also not worth doing concatenation using `+`.
-### Examples
+#### Examples
```yql
SELECT "fo" || "o";
@@ -38,7 +38,7 @@ All other characters are literals that represent themselves.
The most popular way to use the `LIKE` and `REGEXP` keywords is to filter a table using the statements with the `WHERE` clause. However, there are no restrictions on using templates in this context: you can use them in most of contexts involving strings, for example, with concatenation by using `||`.
-### Examples
+#### Examples
```yql
SELECT * FROM my_table
@@ -161,7 +161,7 @@ The operators in the table are listed in descending order of precedence.
Matching an empty value (`NULL`). Since `NULL` is a special value [equal to nothing](../types/optional.md#null_expr), the ordinary [comparison operators](#comparison-operators) can't be used to match it.
-### Examples
+#### Examples
```yql
SELECT key FROM my_table
@@ -188,7 +188,7 @@ For values of composite types, these rules are used recursively.
Checking whether a value is in a range. It's equivalent to two conditions with `>=` and `<=` (range boundaries are included). Can be used with the `NOT` prefix to support inversion.
-### Examples
+#### Examples
```yql
SELECT * FROM my_table
@@ -215,7 +215,7 @@ The `COMPACT` modifier must be used with care. Since the hash table is built in-
It is prefirable to add large lists of values to your query by URLs and use the [ParseFile](../builtins/basic.md#parsefile) function.
-### Examples
+#### Examples
```yql
SELECT column IN (1, 2, 3)
@@ -251,7 +251,7 @@ Can be used in the following scenarios:
* Using named arguments in function calls.
* To specify the target type in the case of explicit type casting, see [CAST](#cast).
-### Examples
+#### Examples
```yql
SELECT key AS k FROM my_table;
@@ -278,7 +278,7 @@ For more information about casting rules, see [here](../types/cast.md).
{% include [decimal_args](../_includes/decimal_args.md) %}
-### Examples
+#### Examples
{% include [cast_examples](../_includes/cast_examples.md) %}
@@ -287,7 +287,7 @@ For more information about casting rules, see [here](../types/cast.md).
Performs a bitwise conversion of an integer value to the specified integer type. The conversion is always successful, but may lose precision or high-order bits.
-### Examples
+#### Examples
```yql
SELECT
@@ -306,7 +306,7 @@ The `ELSE` branch is mandatory in the `CASE` expression. Expressions in `WHEN` a
Since its syntax is quite sophisticated, it's often more convenient to use the built-in function [IF](../builtins/basic.md#if).
-### Examples
+#### Examples
```yql
SELECT
@@ -384,7 +384,7 @@ If named expression substitution results in completely identical subgraphs in th
{% endnote %}
-### Examples
+#### Examples
```yql
$multiplier = 712;
@@ -496,7 +496,7 @@ Only use pure expressions inside the lambda body (those might also be other lamb
One or more of the last lambda parameters can be marked with a question mark as optional: if they haven't been specified when calling lambda, they are assigned the `NULL` value.
-### Examples
+#### Examples
```yql
$f = ($y) -> {
@@ -530,7 +530,7 @@ For accessing the values inside containers:
When using this syntax to access containers within table columns, be sure to specify the full column name, including the table name or table alias separated by a dot (see the first example below).
-### Examples
+#### Examples
```yql
SELECT
diff --git a/yql/essentials/docs/en/syntax/flatten.md b/yql/essentials/docs/en/syntax/flatten.md
index b99f59ef49..f6978fa41d 100644
--- a/yql/essentials/docs/en/syntax/flatten.md
+++ b/yql/essentials/docs/en/syntax/flatten.md
@@ -22,7 +22,7 @@ For example:
|d|2|
-### Example
+#### Example
```yql
$sample = AsList(
@@ -40,7 +40,7 @@ This conversion can be convenient in the following cases:
* When the cells in a container column store IDs from another table that you want to join with [`JOIN`](join.md).
-### Syntax
+#### Syntax
* `FLATTEN BY` is specified after `FROM`, but before `GROUP BY`, if `GROUP BY` is present in the query.
* The type of the result column depends on the type of the source column:
@@ -83,7 +83,7 @@ To specify the type of container to convert to, you can use:
To filter the `NULL` values without serialization, specify the operation by using `FLATTEN OPTIONAL BY`.
-### Examples
+#### Examples
```yql
SELECT
@@ -129,7 +129,7 @@ Converts a table where all columns must be structures to a table with columns co
The names of the source column structures are not used and not returned in the result. Be sure that the structure element names aren't repeated in the source columns.
-### Example
+#### Example
```yql
SELECT x, y, z
diff --git a/yql/essentials/docs/en/syntax/group_by.md b/yql/essentials/docs/en/syntax/group_by.md
index 5740cc6380..794c866a2f 100644
--- a/yql/essentials/docs/en/syntax/group_by.md
+++ b/yql/essentials/docs/en/syntax/group_by.md
@@ -2,7 +2,7 @@
Group the `SELECT` results by the values of the specified columns or expressions. `GROUP BY` is often combined with [aggregate functions](../builtins/aggregation.md) (`COUNT`, `MAX`, `MIN`, `SUM`, `AVG`) to perform calculations in each group.
-### Syntax
+#### Syntax
```yql
SELECT -- In SELECT, you can use:
@@ -31,7 +31,7 @@ Aggregate functions ignore `NULL` in their arguments, except for `COUNT`.
YQL also provides aggregation factories implemented by the functions [`AGGREGATION_FACTORY`](../builtins/basic.md#aggregationfactory) and [`AGGREGATE_BY`](../builtins/aggregation.md#aggregateby).
-### Examples
+#### Examples
```yql
SELECT key, COUNT(*) FROM my_table
@@ -111,7 +111,7 @@ Where:
Using the extended version of SessionWindow, you can, for example, do the following: divide a partition into sessions, as in the SessionWindow use case with two arguments, but with the maximum session length limited by a certain constant:
-### Example
+#### Example
```yql
$max_len = 1000; -- is the maximum session length.
@@ -140,7 +140,7 @@ You can use `SessionWindow` in `GROUP BY` only once.
The results of calculating the aggregate function as subtotals for the groups and overall totals over individual columns or whole table.
-### Syntax
+#### Syntax
```yql
SELECT
@@ -169,7 +169,7 @@ The values of columns not used in calculations are replaced with `NULL` in the s
* `0`: If `NULL` is used for the original empty value.
* `1`: If `NULL` is added for a subtotal or overall total.
-### Example
+#### Example
```yql
SELECT
@@ -220,7 +220,7 @@ Applying `DISTINCT` to calculated values is not currently implemented. For this
{% endnote %}
-### Example
+#### Example
```yql
SELECT
@@ -240,7 +240,7 @@ Improves aggregation efficiency if the query author knows in advance that none o
Unlike the usual GROUP BY, the Map-side combiner stage and additional Reduce are disabled for each field with [DISTINCT](../syntax/group_by.md#distinct) aggregation.
-### Example
+#### Example
```yql
SELECT
@@ -256,7 +256,7 @@ LIMIT 3;
Filtering a `SELECT` based on the calculation results of [aggregate functions](../builtins/aggregation.md). The syntax is similar to [WHERE](select/where.md).
-### Example
+#### Example
```yql
SELECT
diff --git a/yql/essentials/docs/en/syntax/join.md b/yql/essentials/docs/en/syntax/join.md
index 14ec1ce566..08367ff61b 100644
--- a/yql/essentials/docs/en/syntax/join.md
+++ b/yql/essentials/docs/en/syntax/join.md
@@ -55,7 +55,7 @@ For any other JOIN types, specify the condition using one of the two methods:
1. `USING (column_name)`. Used if both the left and right subqueries share a column whose equality of values is a join condition.
2. `ON (equality_conditions)`. Lets you set a condition of equality for column values or expressions over columns in the left and right subqueries or use several such conditions combined by `and`.
-### Examples
+#### Examples
```yql
SELECT a.value as a_value, b.value as b_value
diff --git a/yql/essentials/docs/en/syntax/pragma.md b/yql/essentials/docs/en/syntax/pragma.md
index afbfe50227..5bb89c276e 100644
--- a/yql/essentials/docs/en/syntax/pragma.md
+++ b/yql/essentials/docs/en/syntax/pragma.md
@@ -4,7 +4,7 @@
Redefinition of settings.
-### Syntax
+#### Syntax
`PRAGMA x.y = "z";` or `PRAGMA x.y("z", "z2", "z3");`:
@@ -15,7 +15,7 @@ Redefinition of settings.
* `Kb`, `Mb`, `Gb`: For the data amounts.
* `sec`, `min`, `h`, `d`: For the time values.
-### Examples
+#### Examples
```yql
PRAGMA AutoCommit;
diff --git a/yql/essentials/docs/en/syntax/select/concat.md b/yql/essentials/docs/en/syntax/select/concat.md
index e1170e7287..3a6733d620 100644
--- a/yql/essentials/docs/en/syntax/select/concat.md
+++ b/yql/essentials/docs/en/syntax/select/concat.md
@@ -24,7 +24,7 @@ All arguments of the functions described above can be declared separately using
To get the name of the source table from which you originally obtained each row, use [TablePath()](../../builtins/basic.md#tablepath).
-### Examples
+#### Examples
```yql
USE some_cluster;
diff --git a/yql/essentials/docs/en/syntax/select/from.md b/yql/essentials/docs/en/syntax/select/from.md
index 924790d9de..67d5ef887a 100644
--- a/yql/essentials/docs/en/syntax/select/from.md
+++ b/yql/essentials/docs/en/syntax/select/from.md
@@ -4,7 +4,7 @@ Data source for `SELECT`. The argument can accept the table name, the result of
The table is searched by name in the database specified by the operator [USE](../use.md).
-### Examples
+#### Examples
```yql
SELECT key FROM my_table;
diff --git a/yql/essentials/docs/en/syntax/select/from_as_table.md b/yql/essentials/docs/en/syntax/select/from_as_table.md
index 459cd51b04..bec8ae1509 100644
--- a/yql/essentials/docs/en/syntax/select/from_as_table.md
+++ b/yql/essentials/docs/en/syntax/select/from_as_table.md
@@ -4,7 +4,7 @@ Accessing named expressions as tables using the `AS_TABLE` function.
`AS_TABLE($variable)` lets you use the value of `$variable` as the data source for the query. In this case, the variable `$variable` must have the type `List<Struct<...>>`.
-### Example
+#### Example
```yql
$data = AsList(
diff --git a/yql/essentials/docs/en/syntax/select/from_select.md b/yql/essentials/docs/en/syntax/select/from_select.md
index 76373ca251..b9ec8d8ced 100644
--- a/yql/essentials/docs/en/syntax/select/from_select.md
+++ b/yql/essentials/docs/en/syntax/select/from_select.md
@@ -2,7 +2,7 @@
An inverted format, first specifying the data source and then the operation.
-### Examples
+#### Examples
```yql
FROM my_table SELECT key, value;
diff --git a/yql/essentials/docs/en/syntax/select/union.md b/yql/essentials/docs/en/syntax/select/union.md
index 32b5ee1875..4b6097dc30 100644
--- a/yql/essentials/docs/en/syntax/select/union.md
+++ b/yql/essentials/docs/en/syntax/select/union.md
@@ -6,7 +6,7 @@ Union of the results of the underlying queries, with duplicates removed.
Behavior is identical to using `UNION ALL` followed by `SELECT DISTINCT *`.
Refer to [UNION ALL](#union-all) for more details.
-### Examples
+#### Examples
```yql
SELECT key FROM T1
@@ -41,7 +41,7 @@ In the "by position" mode, the output of the resulting data schema uses the foll
The order of the output columns in this mode is the same as the order of columns in the first input.
-### Examples
+#### Examples
```yql
SELECT 1 AS x
diff --git a/yql/essentials/docs/en/syntax/subquery.md b/yql/essentials/docs/en/syntax/subquery.md
index 10767ed07d..c1d1c5ebec 100644
--- a/yql/essentials/docs/en/syntax/subquery.md
+++ b/yql/essentials/docs/en/syntax/subquery.md
@@ -32,7 +32,7 @@ $out1, $out2 = PROCESS $mySubquery($myParam1, $myParam2);
-- next we use $out1 and $out2 as separate tables.
```
-### Examples
+#### Examples
```yql
DEFINE SUBQUERY $hello_world($name, $suffix?) AS
@@ -128,7 +128,7 @@ These functions combine the results of one or more subquery templates passed by
* `SubqueryMerge` uses the same constraints as `SubqueryExtend` and also outputs a sorted result if all subqueries have the same sort order.
* `SubqueryUnionMerge` uses the same constraints as `SubqueryUnionAll` and also outputs a sorted result if all subqueries have the same sort order.
-### Examples
+#### Examples
```yql
DEFINE SUBQUERY $sub1() as
@@ -157,7 +157,7 @@ They substitute each item from the list into the subquery template as a paramete
* `SubqueryMergeFor` uses the same constraints as `SubqueryExtendFor` and also outputs a sorted result if all subqueries have the same sort order.
* `SubqueryUnionMergeFor` uses the same constraints as `SubqueryUnionAllFor` and also outputs a sorted result if all subqueries have the same sort order.
-### Examples
+#### Examples
```yql
DEFINE SUBQUERY $sub($i) as
@@ -177,7 +177,7 @@ The functions take the following arguments:
And they build a new query template without parameters where sorting is performed or a comment on the use of sorting is added to the result. To use the resulting query template, call the `PROCESS` function, since, when using a `SELECT`, sorting is ignored.
-### Examples
+#### Examples
```yql
DEFINE SUBQUERY $sub() as
diff --git a/yql/essentials/docs/en/syntax/values.md b/yql/essentials/docs/en/syntax/values.md
index c39805312c..1482c843c9 100644
--- a/yql/essentials/docs/en/syntax/values.md
+++ b/yql/essentials/docs/en/syntax/values.md
@@ -20,7 +20,7 @@ SELECT expr_21, expr_22, ..., expr_2k UNION ALL
SELECT expr_n1, expr_n2, ..., expr_nk;
```
-### Example
+#### Example
```yql
VALUES (1,2), (3,4);
diff --git a/yql/essentials/docs/en/types/optional.md b/yql/essentials/docs/en/types/optional.md
index d1e1f69cef..f530320ccc 100644
--- a/yql/essentials/docs/en/types/optional.md
+++ b/yql/essentials/docs/en/types/optional.md
@@ -13,7 +13,7 @@ The following operations are most often performed on optional data types:
`Optional` (nullable) isn't a property of a data type or column, but a container type where [containers](containers.md) can be arbitrarily nested into each other. For example, a column with the type `Optional<Optional<Boolean>>` can accept 4 values: `NULL` of the whole container, `NULL` of the inner container, `TRUE`, and `FALSE`. The above-declared type differs from `List<List<Boolean>>`, because it uses `NULL` as an empty list, and you can't put more than one non-null element in it. In addition, `Optional<Optional<T>>` type values are returned as results when searching by the key in the `Dict(k,v)` dictionary with `Optional<T>` type values. Using this type of result data, you can distinguish between a `NULL` value in the dictionary and a situation when the key is missing.
-### Example
+#### Example
```yql
$dict = {"a":1, "b":null};
@@ -32,7 +32,7 @@ null
The `NULL` literal has a separate singular `Null` type and can be implicitly converted to any optional type (for example, the nested type `Optional<Optional<...Optional<T>...>>`). In ANSI SQL, `NULL` means "an unknown value", that's why logical and arithmetic operations involving `NULL` or empty `Optional` have certain specifics.
-### Examples
+#### Examples
```yql
SELECT
diff --git a/yql/essentials/docs/en/udf/list/datetime.md b/yql/essentials/docs/en/udf/list/datetime.md
index c18380d408..dbd6f13735 100644
--- a/yql/essentials/docs/en/udf/list/datetime.md
+++ b/yql/essentials/docs/en/udf/list/datetime.md
@@ -21,7 +21,7 @@ If the timezone is not GMT, the components store the local time for the relevant
Conversion from a primitive type to an internal representation. It's always successful on a non-empty input.
-### List of functions
+#### List of functions
* `DateTime::Split(Date{Flags:AutoMap}) -> Resource<TM>`
* `DateTime::Split(Datetime{Flags:AutoMap}) -> Resource<TM>`
@@ -36,7 +36,7 @@ Functions that accept `Resource<TM>` as input, can be called directly from the p
Making a primitive type from an internal representation. It's always successful on a non-empty input.
-### List of functions
+#### List of functions
* `DateTime::MakeDate(Resource<TM>{Flags:AutoMap}) -> Date`
* `DateTime::MakeDatetime(Resource<TM>{Flags:AutoMap}) -> Datetime`
@@ -45,7 +45,7 @@ Making a primitive type from an internal representation. It's always successful
* `DateTime::MakeTzDatetime(Resource<TM>{Flags:AutoMap}) -> TzDatetime`
* `DateTime::MakeTzTimestamp(Resource<TM>{Flags:AutoMap}) -> TzTimestamp`
-### Examples
+#### Examples
```yql
SELECT
@@ -63,7 +63,7 @@ SELECT
Extracting a component from an internal representation.
-### List of functions
+#### List of functions
* `DateTime::GetYear(Resource<TM>{Flags:AutoMap}) -> Uint16`
* `DateTime::GetDayOfYear(Resource<TM>{Flags:AutoMap}) -> Uint16`
@@ -82,7 +82,7 @@ Extracting a component from an internal representation.
* `DateTime::GetTimezoneId(Resource<TM>{Flags:AutoMap}) -> Uint16`
* `DateTime::GetTimezoneName(Resource<TM>{Flags:AutoMap}) -> String`
-### Examples
+#### Examples
```yql
$tm = DateTime::Split(TzDatetime("2019-01-09T00:00:00,Europe/Moscow"));
@@ -99,13 +99,13 @@ SELECT
Updating one or more components in the internal representation. Returns either an updated copy or NULL, if an update produces an invalid date or other inconsistencies.
-### List of functions
+#### List of functions
```yql
DateTime::Update( Resource<TM>{Flags:AutoMap}, [ Year:Uint16?, Month:Uint8?, Day:Uint8?, Hour:Uint8?, Minute:Uint8?, Second:Uint8?, Microsecond:Uint32?, Timezone:String? ]) -> Resource<TM>?
```
-### Examples
+#### Examples
```yql
$tm = DateTime::Split(Timestamp("2019-01-01T01:02:03.456789Z"));
@@ -125,7 +125,7 @@ SELECT
Getting a Timestamp from the number of seconds/milliseconds/microseconds since the UTC epoch. When the Timestamp limits are exceeded, NULL is returned.
-### List of functions
+#### List of functions
* `DateTime::FromSeconds(Uint32{Flags:AutoMap}) -> Timestamp`
* `DateTime::FromMilliseconds(Uint64{Flags:AutoMap}) -> Timestamp`
@@ -135,13 +135,13 @@ Getting a Timestamp from the number of seconds/milliseconds/microseconds since t
Getting a number of seconds/milliseconds/microseconds since the UTC Epoch from a primitive type.
-### List of functions
+#### List of functions
* `DateTime::ToSeconds(Date/DateTime/Timestamp/TzDate/TzDatetime/TzTimestamp{Flags:AutoMap}) -> Uint32`
* `DateTime::ToMilliseconds(Date/DateTime/Timestamp/TzDate/TzDatetime/TzTimestamp{Flags:AutoMap}) -> Uint64`
* `DateTime::ToMicroseconds(Date/DateTime/Timestamp/TzDate/TzDatetime/TzTimestamp{Flags:AutoMap}) -> Uint64`
-### Examples
+#### Examples
```yql
SELECT
@@ -153,7 +153,7 @@ SELECT
Conversions between `Interval` and various time units.
-### List of functions
+#### List of functions
* `DateTime::ToDays(Interval{Flags:AutoMap}) -> Int16`
* `DateTime::ToHours(Interval{Flags:AutoMap}) -> Int32`
@@ -172,7 +172,7 @@ AddTimezone doesn't affect the output of ToSeconds() in any way, because ToSecon
You can also create an Interval from a string literal in the format [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601%23Durations).
-### Examples
+#### Examples
```yql
SELECT
@@ -185,7 +185,7 @@ SELECT
Get the start (end) of the period including the date/time. If the result is invalid, NULL is returned. If the timezone is different from GMT, then the period start (end) is in the specified time zone.
-### List of functions
+#### List of functions
* `DateTime::StartOfYear(Resource<TM>{Flags:AutoMap}) -> Resource<TM>?`
* `DateTime::EndOfYear(Resource<TM>{Flags:AutoMap}) -> Resource<TM>?`
@@ -208,7 +208,7 @@ The functions treat periods longer than one day in a different manner than the s
* `DateTime::TimeOfDay(Resource<TM>{Flags:AutoMap}) -> Interval`
-### Examples
+#### Examples
```yql
SELECT
@@ -241,7 +241,7 @@ SELECT
Add/subtract the specified number of units to/from the component in the internal representation and update the other fields.
Returns either an updated copy or NULL, if an update produces an invalid date or other inconsistencies.
-### List of functions
+#### List of functions
* `DateTime::ShiftYears(Resource<TM>{Flags:AutoMap}, Int32) -> Resource<TM>?`
* `DateTime::ShiftQuarters(Resource<TM>{Flags:AutoMap}, Int32) -> Resource<TM>?`
@@ -249,7 +249,7 @@ Returns either an updated copy or NULL, if an update produces an invalid date or
If the resulting number of the day in the month exceeds the maximum allowed, then the `Day` field will accept the last day of the month without changing the time (see examples).
-### Examples
+#### Examples
```yql
$tm1 = DateTime::Split(DateTime("2019-01-31T01:01:01Z"));
@@ -268,7 +268,7 @@ SELECT
Get a string representation of a time using an arbitrary formatting string.
-### List of functions
+#### List of functions
* `DateTime::Format(String, alwaysWriteFractionalSeconds:Bool?) -> (Resource<TM>{Flags:AutoMap}) -> String`
@@ -288,7 +288,7 @@ A set of specifiers is implemented for the formatting string:
All other characters in the format string are passed on without changes.
-### Examples
+#### Examples
```yql
$format = DateTime::Format("%Y-%m-%d %H:%M:%S %Z");
@@ -302,7 +302,7 @@ SELECT
Parse a string into an internal representation using an arbitrary formatting string. Default values are used for empty fields. If errors are raised, NULL is returned.
-### List of functions
+#### List of functions
* `DateTime::Parse(String) -> (String{Flags:AutoMap}) -> Resource<TM>?`
@@ -319,7 +319,7 @@ Implemented specifiers:
* `%b`: A short three-letter case-insensitive English name of the month (Jan).
* `%B`: A full case-insensitive English name of the month (January).
-### Examples
+#### Examples
```yql
$parse1 = DateTime::Parse("%H:%M:%S");
@@ -338,14 +338,14 @@ For the common formats, wrappers around the corresponding util methods are suppo
## Parse specific formats
-### List of functions
+#### List of functions
* `DateTime::ParseRfc822(String{Flags:AutoMap}) -> Resource<TM>?`
* `DateTime::ParseIso8601(String{Flags:AutoMap}) -> Resource<TM>?`
* `DateTime::ParseHttp(String{Flags:AutoMap}) -> Resource<TM>?`
* `DateTime::ParseX509(String{Flags:AutoMap}) -> Resource<TM>?`
-### Examples
+#### Examples
```yql
SELECT
diff --git a/yql/essentials/docs/en/udf/list/digest.md b/yql/essentials/docs/en/udf/list/digest.md
index 2acd4de863..3d4dbaf0e8 100644
--- a/yql/essentials/docs/en/udf/list/digest.md
+++ b/yql/essentials/docs/en/udf/list/digest.md
@@ -34,7 +34,7 @@ A set of commonly used hash functions.
* `Digest::XXH3(String{Flags:AutoMap}) -> Uint64`
* `Digest::XXH3_128(String{Flags:AutoMap}) -> Tuple<Uint64,Uint64>`
-### Examples
+#### Examples
```yql
SELECT Digest::Md5Hex("YQL"); -- "1a0c1b56e9d617688ee345da4030da3c"
diff --git a/yql/essentials/docs/en/udf/list/hyperscan.md b/yql/essentials/docs/en/udf/list/hyperscan.md
index 9bb32a078d..ac3b98f4e0 100644
--- a/yql/essentials/docs/en/udf/list/hyperscan.md
+++ b/yql/essentials/docs/en/udf/list/hyperscan.md
@@ -56,7 +56,7 @@ However, if you want to match a string against any of the listed expressions (th
When you call `MultiGrep`/`MultiMatch`, regular expressions are passed one per line using [multiline string literals](../../syntax/expressions.md#named-nodes):
-### Example
+#### Example
```yql
$multi_match = Hyperscan::MultiMatch(@@a.*
diff --git a/yql/essentials/docs/en/udf/list/math.md b/yql/essentials/docs/en/udf/list/math.md
index dd129399d8..2b0b8ac75c 100644
--- a/yql/essentials/docs/en/udf/list/math.md
+++ b/yql/essentials/docs/en/udf/list/math.md
@@ -4,13 +4,13 @@ A set of wrappers around the functions from the libm library and the Yandex util
## Constants {#constants}
-### List of functions
+#### List of functions
* `Math::Pi() -> Double`
* `Math::E() -> Double`
* `Math::Eps() -> Double`
-### Examples
+#### Examples
```yql
SELECT Math::Pi(); -- 3.141592654
@@ -20,13 +20,13 @@ SELECT Math::Eps(); -- 2.220446049250313e-16
## (Double) -> Bool {#double-bool}
-### List of functions
+#### List of functions
* `Math::IsInf(Double{Flags:AutoMap}) -> Bool`
* `Math::IsNaN(Double{Flags:AutoMap}) -> Bool`
* `Math::IsFinite(Double{Flags:AutoMap}) -> Bool`
-### Examples
+#### Examples
```yql
SELECT Math::IsNaN(0.0/0.0); -- true
@@ -35,7 +35,7 @@ SELECT Math::IsFinite(1.0/0.0); -- false
## (Double) -> Double {#double-double}
-### List of functions
+#### List of functions
* `Math::Abs(Double{Flags:AutoMap}) -> Double`
* `Math::Acos(Double{Flags:AutoMap}) -> Double`
@@ -67,7 +67,7 @@ SELECT Math::IsFinite(1.0/0.0); -- false
* `Math::Log2(Double{Flags:AutoMap}) -> Double`
* `Math::Log10(Double{Flags:AutoMap}) -> Double`
-### Examples
+#### Examples
```yql
SELECT Math::Sqrt(256); -- 16
@@ -76,7 +76,7 @@ SELECT Math::Trunc(1.2345); -- 1
## (Double, Double) -> Double {#doubledouble-double}
-### List of functions
+#### List of functions
* `Math::Atan2(Double{Flags:AutoMap}, Double{Flags:AutoMap}) -> Double`
* `Math::Fmod(Double{Flags:AutoMap}, Double{Flags:AutoMap}) -> Double`
@@ -84,7 +84,7 @@ SELECT Math::Trunc(1.2345); -- 1
* `Math::Pow(Double{Flags:AutoMap}, Double{Flags:AutoMap}) -> Double`
* `Math::Remainder(Double{Flags:AutoMap}, Double{Flags:AutoMap}) -> Double`
-### Examples
+#### Examples
```yql
SELECT Math::Atan2(1, 0); -- 1.570796327
@@ -93,12 +93,12 @@ SELECT Math::Remainder(2.1, 2); -- 0.1
## (Double, Int32) -> Double {#doubleint32-double}
-### List of functions
+#### List of functions
* `Math::Ldexp(Double{Flags:AutoMap}, Int32{Flags:AutoMap}) -> Double`
* `Math::Round(Double{Flags:AutoMap}, [Int32?]) -> Double`: The second argument indicates the power of 10 to which we round (it's negative for decimal digits and positive for rounding to tens, thousands, or millions); the default value is 0
-### Examples
+#### Examples
```yql
SELECT Math::Pow(2, 10); -- 1024
@@ -107,11 +107,11 @@ SELECT Math::Round(1.2345, -2); -- 1.23
## (Double, Double, \[Double?\]) -> Bool {#doubledouble-bool}
-### List of functions
+#### List of functions
* `Math::FuzzyEquals(Double{Flags:AutoMap}, Double{Flags:AutoMap}, [Double?]) -> Bool`: Compares two Doubles for being inside the neighborhood specified by the third argument; the default value is 1.0e-13
-### Examples
+#### Examples
```yql
SELECT Math::FuzzyEquals(1.01, 1.0, 0.05); -- true
@@ -119,7 +119,7 @@ SELECT Math::FuzzyEquals(1.01, 1.0, 0.05); -- true
## Functions for computing remainders
-### List of functions
+#### List of functions
* `Math::Mod(Int64{Flags:AutoMap}, Int64) -> Int64?`
* `Math::Rem(Int64{Flags:AutoMap}, Int64) -> Int64?`
@@ -131,7 +131,7 @@ These functions behave similarly to the built-in % operator in the case of non-n
Functions return null if the divisor is zero.
-### Examples
+#### Examples
```yql
SELECT Math::Mod(-1, 7); -- 6
diff --git a/yql/essentials/docs/en/udf/list/pire.md b/yql/essentials/docs/en/udf/list/pire.md
index 3776e74c04..ebdfd4c06f 100644
--- a/yql/essentials/docs/en/udf/list/pire.md
+++ b/yql/essentials/docs/en/udf/list/pire.md
@@ -37,7 +37,7 @@ When escaping special characters in a regular expression, be sure to use the sec
You can enable the case-insensitive mode by specifying, at the beginning of the regular expression, the flag `(?i)`.
-### Examples
+#### Examples
```yql
$value = "xaaxaaxaa";
@@ -82,7 +82,7 @@ Use the MultiGrep/MultiMatch functions to optimize the query execution speed. Be
When you call MultiGrep/MultiMatch, regular expressions are passed one per line using [multiline string literals](../../syntax/expressions.md#multiline-string-literals):
-### Examples
+#### Examples
```yql
$multi_match = Pire::MultiMatch(@@a.*
diff --git a/yql/essentials/docs/en/udf/list/url.md b/yql/essentials/docs/en/udf/list/url.md
index 0dbe3d5b48..680a5a2742 100644
--- a/yql/essentials/docs/en/udf/list/url.md
+++ b/yql/essentials/docs/en/udf/list/url.md
@@ -12,7 +12,7 @@ Returned value:
* Normalized URL.
* `NULL`, if the passed string argument can't be parsed as a URL.
-### Examples
+#### Examples
```yql
SELECT Url::Normalize("hTTp://wWw.yDb.TECH/"); -- "http://www.ydb.tech/"
@@ -30,7 +30,7 @@ Returned value:
* Normalized URL.
* Source URL, if the normalization has failed.
-### Examples
+#### Examples
```yql
SELECT Url::NormalizeWithDefaultHttpScheme("wWw.yDb.TECH"); -- "http://www.ydb.tech/"
@@ -41,12 +41,12 @@ SELECT Url::NormalizeWithDefaultHttpScheme("http://ydb.tech#foo"); -- "http://yd
Encode a UTF-8 string to the urlencoded format (`Url::Encode`) and back (`Url::Decode`).
-### List of functions
+#### List of functions
* `Url::Encode(String?) -> String?`
* `Url::Decode(String?) -> String?`
-### Examples
+#### Examples
```yql
SELECT Url::Decode("http://ydb.tech/%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0");
@@ -63,7 +63,7 @@ Parses the URL into parts.
Url::Parse(Parse{Flags:AutoMap}) -> Struct< Frag: String?, Host: String?, ParseError: String?, Pass: String?, Path: String?, Port: String?, Query: String?, Scheme: String?, User: String? >
```
-### Examples
+#### Examples
```yql
SELECT Url::Parse(
@@ -87,7 +87,7 @@ SELECT Url::Parse(
Get a component of the URL.
-### List of functions
+#### List of functions
* `Url::GetScheme(String{Flags:AutoMap}) -> String`
* `Url::GetHost(String?) -> String?`
@@ -112,7 +112,7 @@ Get a component of the URL.
Returns the domain that's most likely owned by an individual or organization. Unlike `Url::GetSignificantDomain`, it uses a special whitelist. Besides the `***.co.uk` domains, it can return a third-level domain used by free hosting sites and blogs (for example: something.livejournal.com)
-### Examples
+#### Examples
```yql
SELECT Url::GetScheme("https://ydb.tech"); -- "https://"
@@ -137,7 +137,7 @@ SELECT Url::GetDomain("http://www.ydb.tech", 2); -- "ydb.tech"
Returns a copy of the passed URL, stripping out all the CGI parameters and fragments ("?foo=bar" and/or "#baz").
-### Examples
+#### Examples
```yql
SELECT Url::CutScheme("http://www.ydb.tech"); -- "www.ydb.tech"
@@ -148,7 +148,7 @@ SELECT Url::CutWWW("www.ydb.tech"); -- "ydb.tech"
[Punycode](https://en.wikipedia.org/wiki/Punycode) transformations.
-### List of functions
+#### List of functions
* `Url::HostNameToPunycode(String{Flag:AutoMap}) -> String?`
* `Url::ForceHostNameToPunycode(String{Flag:AutoMap}) -> String`
@@ -156,7 +156,7 @@ SELECT Url::CutWWW("www.ydb.tech"); -- "ydb.tech"
* `Url::ForcePunycodeToHostName(String{Flag:AutoMap}) -> String`
* `Url::CanBePunycodeHostName(String{Flag:AutoMap}) -> Bool`
-### Examples
+#### Examples
```yql
SELECT Url::PunycodeToHostName("xn--80aniges7g.xn--j1aef"); -- "example.com"
@@ -166,7 +166,7 @@ SELECT Url::PunycodeToHostName("xn--80aniges7g.xn--j1aef"); -- "example.com"
[Query](https://docs.python.org/3/library/urllib.parse.html) transformations.
-### List of functions
+#### List of functions
```yql
Url::QueryStringToList(String{Flag:AutoMap}, [
@@ -192,7 +192,7 @@ Url::BuildQueryString(List<Tuple<String, String?>>{Flag:AutoMap}, [
]) -> String
```
-### Examples
+#### Examples
```yql
SELECT Url::QueryStringToList("a=1&b=2&a=3"); -- [("a", "1"), ("b", "2"), ("a", "3")]
diff --git a/yql/essentials/docs/en/udf/list/yson.md b/yql/essentials/docs/en/udf/list/yson.md
index 5a398dda9f..3d4dd2d7cb 100644
--- a/yql/essentials/docs/en/udf/list/yson.md
+++ b/yql/essentials/docs/en/udf/list/yson.md
@@ -98,7 +98,7 @@ Yson::From(T) -> Resource<'Yson2.Node'>
`Yson::From` is a polymorphic function that converts most primitive data types and containers (lists, dictionaries, tuples, structures, and so on) into a Yson resource. The source object type must be Yson-compatible. For example, in dictionary keys, you can only use the `String` or `Utf8` data types, but not `String?` or `Utf8?` .
-### Example
+#### Example
```yql
SELECT Yson::Serialize(Yson::From(TableRow())) FROM table1;
@@ -182,7 +182,7 @@ These functions do not do implicit type casting by default, that is, the value i
`Yson::ConvertTo` is a polymorphic function that converts the data type that is specified in the second argument and supports containers (lists, dictionaries, tuples, structures, and so on) into a Yson resource.
-### Example
+#### Example
```yql
$data = Yson(@@{
@@ -284,7 +284,7 @@ It's passed in the last optional argument (omitted for brevity) to the methods `
* **AutoConvert**: If the value passed to Yson doesn't match the result data type exactly, the value is converted where possible. For example, `Yson::ConvertToInt64` in this mode will convert even Double numbers to Int64.
* **Strict**: By default, all functions from the Yson library return an error in case of issues during query execution (for example, an attempt to parse a string that is not Yson/Json, or an attempt to search by a key in a scalar type, or when a conversion to an incompatible data type has been requested, and so on). If you disable the strict mode, `NULL` is returned instead of an error in most cases. When converting to a dictionary or list (`ConvertTo<Type>Dict` or `ConvertTo<Type>List`), improper items are excluded from the resulting collection.
-### Example
+#### Example
```yql
$yson = @@{y = true; x = 5.5}@@y;
diff --git a/yql/essentials/docs/ru/builtins/aggregation.md b/yql/essentials/docs/ru/builtins/aggregation.md
index 0a7a333bc3..01c7a8a5a4 100644
--- a/yql/essentials/docs/ru/builtins/aggregation.md
+++ b/yql/essentials/docs/ru/builtins/aggregation.md
@@ -2,7 +2,7 @@
## COUNT {#count}
-### Сигнатура
+#### Сигнатура
```yql
COUNT(*)->Uint64
@@ -14,7 +14,7 @@ COUNT(T?)->Uint64
Как и другие агрегатные функции, может использоваться в сочетании с [GROUP BY](../syntax/group_by.md) для получения статистики по частям таблицы, соответствующим значениям в столбцах, по которым идет группировка. А модификатор [DISTINCT](../syntax/group_by.md#distinct) позволяет посчитать число уникальных значений.
-### Примеры
+#### Примеры
```yql
SELECT COUNT(*) FROM my_table;
@@ -30,7 +30,7 @@ SELECT COUNT(DISTINCT value) FROM my_table;
## MIN и MAX {#min-max}
-### Сигнатура
+#### Сигнатура
```yql
MIN(T?)->T?
@@ -43,7 +43,7 @@ MAX(T)->T?
В качестве аргумента допустимо произвольное вычислимое выражение с результатом, допускающим сравнение значений.
-### Примеры
+#### Примеры
```yql
SELECT MIN(value), MAX(value) FROM my_table;
@@ -51,7 +51,7 @@ SELECT MIN(value), MAX(value) FROM my_table;
## SUM {#sum}
-### Сигнатура
+#### Сигнатура
```yql
SUM(Unsigned?)->Uint64?
@@ -72,7 +72,7 @@ SELECT SUM(value) FROM my_table;
## AVG {#avg}
-### Сигнатура
+#### Сигнатура
```yql
AVG(Double?)->Double?
@@ -86,7 +86,7 @@ AVG(Decimal(N, M)?)->Decimal(N, M)?
Целочисленные значения и интервалы времени автоматически приводятся к Double.
-### Примеры
+#### Примеры
```yql
SELECT AVG(value) FROM my_table;
@@ -94,7 +94,7 @@ SELECT AVG(value) FROM my_table;
## COUNT_IF {#count-if}
-### Сигнатура
+#### Сигнатура
```yql
COUNT_IF(Bool?)->Uint64?
@@ -106,7 +106,7 @@ COUNT_IF(Bool?)->Uint64?
Функция *не* выполняет неявного приведения типов к булевым для строк и чисел.
-### Примеры
+#### Примеры
```yql
SELECT
@@ -121,7 +121,7 @@ SELECT
## SUM_IF и AVG_IF {#sum-if}
-### Сигнатура
+#### Сигнатура
```yql
SUM_IF(Unsigned?, Bool?)->Uint64?
@@ -135,7 +135,7 @@ AVG_IF(Double?, Bool?)->Double?
Таким образом, `SUM_IF(value, condition)` является чуть более короткой записью для `SUM(IF(condition, value))`, аналогично для `AVG`. Расширение типа данных аргумента работает так же аналогично одноименным функциям без суффикса.
-### Примеры
+#### Примеры
```yql
SELECT
@@ -158,7 +158,7 @@ FROM my_table;
## SOME {#some}
-### Сигнатура
+#### Сигнатура
```yql
SOME(T?)->T?
@@ -169,7 +169,7 @@ SOME(T)->T?
Из-за отсутствия гарантий `SOME` вычислительно дешевле, чем часто использующиеся в подобных ситуациях [MIN и MAX](#min-max).
-### Примеры
+#### Примеры
```yql
SELECT
@@ -185,7 +185,7 @@ FROM my_table;
## CountDistinctEstimate, HyperLogLog и HLL {#countdistinctestimate}
-### Сигнатура
+#### Сигнатура
```yql
CountDistinctEstimate(T)->Uint64?
@@ -204,7 +204,7 @@ HLL(T)->Uint64?
На данный момент все три функции являются алиасами, но в будущем `CountDistinctEstimate` может начать использовать другой алгоритм.
-### Примеры
+#### Примеры
```yql
SELECT
@@ -222,7 +222,7 @@ FROM my_table;
## AGGREGATE_LIST {#agg-list}
-### Сигнатура
+#### Сигнатура
```yql
AGGREGATE_LIST(T? [, limit:Uint64])->List<T>
@@ -241,7 +241,7 @@ AGGREGATE_LIST_DISTINCT(T [, limit:Uint64])->List<T>
Например, можно использовать в сочетании с `DISTINCT` и функцией [String::JoinFromList](../udf/list/string.md) (аналог `','.join(list)` из Python) для распечатки в строку всех значений, которые встретились в столбце после применения [GROUP BY](../syntax/group_by.md).
-### Примеры
+#### Примеры
```yql
SELECT
@@ -271,7 +271,7 @@ FROM users
## MAX_BY и MIN_BY {#max-min-by}
-### Сигнатура
+#### Сигнатура
```yql
MAX_BY(T1?, T2)->T1?
@@ -302,7 +302,7 @@ MIN_BY(T1, T2, limit:Uint64)->List<T1>?
При использовании [фабрики агрегационной функции](basic.md#aggregationfactory) в качестве первого аргумента [AGGREGATE_BY](#aggregate-by) передается `Tuple` из значения и ключа.
-### Примеры
+#### Примеры
```yql
SELECT
@@ -324,7 +324,7 @@ FROM my_table;
## TOP и BOTTOM {#top-bottom}
-### Сигнатура
+#### Сигнатура
```yql
TOP(T?, limit:Uint32)->List<T>
@@ -335,7 +335,7 @@ BOTTOM(T, limit:Uint32)->List<T>
Вернуть список максимальных/минимальных значений выражения. Первый аргумент - выражение, второй - ограничение на количество элементов.
-### Примеры
+#### Примеры
```yql
SELECT
@@ -356,7 +356,7 @@ FROM my_table;
## TOP_BY и BOTTOM_BY {#top-bottom-by}
-### Сигнатура
+#### Сигнатура
```yql
TOP_BY(T1, T2, limit:Uint32)->List<T1>
@@ -367,7 +367,7 @@ BOTTOM_BY(T1, T2, limit:Uint32)->List<T1>
При использовании [фабрики агрегационной функции](basic.md#aggregationfactory) в качестве первого аргумента [AGGREGATE_BY](#aggregate-by) передается `Tuple` из значения и ключа. Ограничение на количество элементов в этом случае передаётся вторым аргументом при создании фабрики.
-### Примеры
+#### Примеры
```yql
SELECT
@@ -389,7 +389,7 @@ FROM my_table;
## TOPFREQ и MODE {#topfreq-mode}
-### Сигнатура
+#### Сигнатура
```yql
TOPFREQ(T [, num:Uint32 [, bufSize:Uint32]])->List<Struct<Frequency:Uint64, Value:T>>
@@ -408,7 +408,7 @@ MODE(T [, num:Uint32 [, bufSize:Uint32]])->List<Struct<Frequency:Uint64, Value:T
1. Для `TOPFREQ` — желаемое число элементов в результате. `MODE` является алиасом к `TOPFREQ` с 1 в этом аргументе. У `TOPFREQ` по умолчанию тоже 1.
2. Число элементов в используемом буфере, что позволяет разменивать потребление памяти на точность. По умолчанию 100.
-### Примеры
+#### Примеры
```yql
SELECT
@@ -420,7 +420,7 @@ FROM my_table;
## STDDEV и VARIANCE {#stddev-variance}
-### Сигнатура
+#### Сигнатура
```yql
STDDEV(Double?)->Double?
@@ -447,7 +447,7 @@ VARIANCE_SAMPLE(Double?)->Double?
Если все переданные значения — `NULL`, возвращает `NULL`.
-### Примеры
+#### Примеры
```yql
SELECT
@@ -459,7 +459,7 @@ FROM my_table;
## CORRELATION и COVARIANCE {#correlation-covariance}
-### Сигнатура
+#### Сигнатура
```yql
CORRELATION(Double?, Double?)->Double?
@@ -476,7 +476,7 @@ COVARIANCE_POPULATION(Double?, Double?)->Double?
При использовании [фабрики агрегационной функции](basic.md#aggregationfactory) в качестве первого аргумента [AGGREGATE_BY](#aggregate-by) передается `Tuple` из двух значений.
-### Примеры
+#### Примеры
```yql
SELECT
@@ -495,7 +495,7 @@ FROM my_table;
## PERCENTILE и MEDIAN {#percentile-median}
-### Сигнатура
+#### Сигнатура
```yql
PERCENTILE(T, Double)->T
@@ -518,7 +518,7 @@ MEDIAN(T, [ List<Double> ])->List<T>
Значения прецентиля должны лежать в диапазоне от 0.0 до 1.0 включительно.
-### Примеры
+#### Примеры
```yql
SELECT
@@ -534,7 +534,7 @@ FROM my_table;
## HISTOGRAM {#histogram}
-### Сигнатура
+#### Сигнатура
```yql
HISTOGRAM(Double?)->HistogramStruct?
@@ -615,7 +615,7 @@ While FastGreedyShrink is used most of the time, SlowShrink is mostly used for h
При использовании [фабрики агрегационной функции](basic.md#aggregationfactory) в качестве первого аргумента [AGGREGATE_BY](#aggregate-by) передается `Tuple` из значения и веса.
-### Примеры
+#### Примеры
```yql
SELECT
@@ -644,7 +644,7 @@ FROM my_table;
Построение гистограммы по явно указанной фиксированной шкале корзин.
-### Сигнатура
+#### Сигнатура
```yql
LinearHistogram(Double?)->HistogramStruct?
@@ -667,7 +667,7 @@ LogHistogram(Double? [, logBase:Double [, min:Double [, max:Double]]])->Histogra
Если разброс входных значений неконтролируемо велик, рекомендуется указывать минимальное и максимальное значение для предотвращения потенциальных падений из-за высокого потребления памяти.
-### Примеры
+#### Примеры
```yql
SELECT
@@ -697,7 +697,7 @@ FROM my_table;
## BOOL_AND, BOOL_OR и BOOL_XOR {#bool-and-or-xor}
-### Сигнатура
+#### Сигнатура
```yql
BOOL_AND(Bool?)->Bool?
@@ -730,7 +730,7 @@ BOOL_XOR(Bool?)->Bool?
Для агрегации с пропуском `NULL`-ов можно использовать функции `MIN`/`MAX` или `BIT_AND`/`BIT_OR`/`BIT_XOR`.
-### Примеры
+#### Примеры
```yql
$data = [
@@ -759,7 +759,7 @@ FROM AS_TABLE($data);
Применение соответствующей битовой операции ко всем значениям числовой колонки или выражения.
-### Примеры
+#### Примеры
```yql
SELECT
@@ -782,7 +782,7 @@ FROM my_table;
1. Колонка, `DISTINCT` колонка или выражение;
2. Фабрика.
-### Примеры
+#### Примеры
```yql
$count_factory = AggregationFactory("COUNT");
diff --git a/yql/essentials/docs/ru/builtins/basic.md b/yql/essentials/docs/ru/builtins/basic.md
index b291f788aa..d7487be818 100644
--- a/yql/essentials/docs/ru/builtins/basic.md
+++ b/yql/essentials/docs/ru/builtins/basic.md
@@ -8,7 +8,7 @@
Перебирает аргументы слева направо и возвращает первый найденный непустой аргумент. Чтобы результат получился гарантированно непустым (не [optional типа](../types/optional.md)), самый правый аргумент должен быть такого типа (зачастую используют литерал). При одном аргументе возвращает его без изменений.
-### Сигнатура
+#### Сигнатура
```yql
COALESCE(T?, ..., T)->T
@@ -19,7 +19,7 @@ COALESCE(T?, ..., T?)->T?
Доступен краткий формат записи в виде оператора `??`. Можно использовать алиас `NVL`.
-### Примеры
+#### Примеры
```yql
SELECT COALESCE(
@@ -48,14 +48,14 @@ SELECT NVL(
Возвращает длину строки в байтах. Также эта функция доступна под именем `LEN`.
-### Сигнатура
+#### Сигнатура
```yql
LENGTH(T)->Uint32
LENGTH(T?)->Uint32?
```
-### Примеры
+#### Примеры
```yql
SELECT LENGTH("foo");
@@ -76,7 +76,7 @@ SELECT LEN("bar");
Возвращает подстроку.
-### Сигнатура
+#### Сигнатура
```yql
Substring(String[, Uint32? [, Uint32?]])->String
@@ -95,7 +95,7 @@ Substring(String?[, Uint32? [, Uint32?]])->String?
Индексация с нуля. Если указанные позиция и длина выходят за пределы строки, возвращает пустую строку.
Если входная строка является опциональной, то таким же является и результат.
-### Примеры
+#### Примеры
```yql
SELECT SUBSTRING("abcdefg", 3, 1); -- d
@@ -114,7 +114,7 @@ SELECT SUBSTRING("abcdefg", NULL, 3); -- abc
Поиск позиции подстроки в строке.
-### Сигнатура
+#### Сигнатура
```yql
Find(String, String[, Uint32?])->Uint32?
@@ -134,7 +134,7 @@ Find(Utf8?, Utf8[, Uint32?])->Uint32?
Возвращает первую найденную позицию подстроки или `NULL`, означающий что искомая подстрока с указанной позиции не найдена.
-### Примеры
+#### Примеры
```yql
SELECT FIND("abcdefg_abcdefg", "abc"); -- 0
@@ -152,7 +152,7 @@ SELECT FIND("abcdefg_abcdefg", "abc", 9); -- null
Обратный поиск позиции подстроки в строке, от конца к началу.
-### Сигнатура
+#### Сигнатура
```yql
RFind(String, String[, Uint32?])->Uint32?
@@ -172,7 +172,7 @@ RFind(Utf8?, Utf8[, Uint32?])->Uint32?
Возвращает первую найденную позицию подстроки или `NULL`, означающий, что искомая подстрока с указанной позиции не найдена.
-### Примеры
+#### Примеры
```yql
SELECT RFIND("abcdefg_abcdefg", "bcd"); -- 9
@@ -191,7 +191,7 @@ SELECT RFIND("abcdefg_abcdefg", "bcd", 0); -- null
Проверка наличия префикса или суффикса в строке.
-### Сигнатуры
+#### Сигнатуры
```yql
StartsWith(T str, U prefix)->Bool[?]
@@ -207,7 +207,7 @@ EndsWith(T str, U suffix)->Bool[?]
Аргументы должны иметь тип `String`/`Utf8` (или опциональный `String`/`Utf8`) либо строковый PostgreSQL тип (`PgText`/`PgBytea`/`PgVarchar`).
Результатом функции является опциональный Bool, за исключением случая, когда оба аргумента неопциональные – в этом случае возвращается Bool.
-### Примеры
+#### Примеры
```yql
SELECT StartsWith("abc_efg", "abc") AND EndsWith("abc_efg", "efg"); -- true
@@ -236,7 +236,7 @@ SELECT StartsWith("abc_efg"u, "abc"p) AND EndsWith("abc_efg", "efg"pv); -- true
Является упрощенной альтернативой для [CASE WHEN ... THEN ... ELSE ... END](../syntax/expressions.md#case).
-### Сигнатура
+#### Сигнатура
```yql
IF(Bool, T, T)->T
@@ -245,7 +245,7 @@ IF(Bool, T)->T?
Аргумент `else_expression` можно не указывать. В этом случае, если условие ложно (`condition_expression` вернул `false`), будет возвращено пустое значение с типом, соответствующим `then_expression` и допускающим значение `NULL`. Таким образом, у результата получится [optional тип данных](../types/optional.md).
-### Примеры
+#### Примеры
```yql
SELECT
@@ -259,7 +259,7 @@ FROM my_table;
Заменяет значения `NaN` (not a number) в выражениях типа `Float`, `Double` или [Optional](../types/optional.md).
-### Сигнатура
+#### Сигнатура
```yql
NANVL(Float, Float)->Float
@@ -273,7 +273,7 @@ NANVL(Double, Double)->Double
Если один из агрументов `Double`, то в выдаче `Double`, иначе `Float`. Если один из агрументов `Optional`, то и в выдаче `Optional`.
-### Примеры
+#### Примеры
```yql
SELECT
@@ -290,7 +290,7 @@ FROM my_table;
* `RandomNumber()` — целое число из всего диапазона Uint64;
* `RandomUuid()` — [Uuid version 4](https://tools.ietf.org/html/rfc4122#section-4.4).
-### Сигнатуры
+#### Сигнатуры
```yql
Random(T1[, T2, ...])->Double
@@ -319,7 +319,7 @@ RandomUuid(T1[, T2, ...])->Uuid
* `SELECT RANDOM(some_column), RANDOM(some_column) FROM table;` — разные случайные числа на каждую строку таблицы, но в рамках одной строки — два одинаковых числа;
* `SELECT RANDOM(some_column), RANDOM(some_column + 1) FROM table;` или `SELECT RANDOM(some_column), RANDOM(other_column) FROM table;` — две колонки, и все с разными числами.
-### Примеры
+#### Примеры
```yql
SELECT
@@ -358,7 +358,7 @@ FROM my_table;
* `Udf(Foo::Bar, Int32, @@{"device":"AHCI"}@@ as TypeConfig")(1, 2, 'abc')` — Вызов udf `Foo::Bar` с дополнительным типом `Int32` и указанным `TypeConfig`.
* `Udf(Foo::Bar, "1e9+7" as RunConfig")(1, 'extended' As Precision)` — Вызов udf `Foo::Bar` с указанным `RunConfig` и именоваными параметрами.
-### Сигнатуры
+#### Сигнатуры
```yql
Udf(Callable[, T1, T2, ..., T_N][, V1 as TypeConfig][,V2 as RunConfig]])->Callable
@@ -366,7 +366,7 @@ Udf(Callable[, T1, T2, ..., T_N][, V1 as TypeConfig][,V2 as RunConfig]])->Callab
Где `T1`, `T2`, и т. д. -- дополнительные (`external`) пользовательские типы.
-### Примеры
+#### Примеры
```yql
$IsoParser = Udf(DateTime2::ParseIso8601);
@@ -390,7 +390,7 @@ SELECT Udf(Protobuf::TryParse, $config As TypeConfig)("")
`CurrentUtcDate()`, `CurrentUtcDatetime()` и `CurrentUtcTimestamp()` - получение текущей даты и/или времени в UTC. Тип данных результата указан в конце названия функции.
-### Сигнатуры
+#### Сигнатуры
```yql
CurrentUtcDate(...)->Date
@@ -400,7 +400,7 @@ CurrentUtcTimestamp(...)->Timestamp
Аргументы опциональны и работают по тому же принципу, что и у [RANDOM](#random).
-### Примеры
+#### Примеры
```yql
SELECT CurrentUtcDate();
@@ -415,7 +415,7 @@ SELECT CurrentUtcTimestamp(TableRow()) FROM my_table;
`CurrentTzDate()`, `CurrentTzDatetime()` и `CurrentTzTimestamp()` - получение текущей даты и/или времени в указанной в первом аргументе [IANA временной зоне](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). Тип данных результата указан в конце названия функции.
-### Сигнатуры
+#### Сигнатуры
```yql
CurrentTzDate(String, ...)->TzDate
@@ -425,7 +425,7 @@ CurrentTzTimestamp(String, ...)->TzTimestamp
Последующие аргументы опциональны и работают по тому же принципу, что и у [RANDOM](#random).
-### Примеры
+#### Примеры
```yql
SELECT CurrentTzDate("Europe/Moscow");
@@ -439,7 +439,7 @@ SELECT CurrentTzTimestamp("Europe/Moscow", TableRow()) FROM my_table;
Добавление информации о временной зоне к дате/времени, заданных в UTC. При выводе в результате `SELECT` или после `CAST` в `String` будут применены правила временной зоны по вычислению смещения времени.
-### Сигнатура
+#### Сигнатура
```yql
AddTimezone(Date, String)->TzDate
@@ -457,7 +457,7 @@ AddTimezone(Timestamp?, String)->TzTimestamp?
Тип результата - `TzDate`/`TzDatetime`/`TzTimestamp`, в зависимости от типа данных входа.
-### Примеры
+#### Примеры
```yql
SELECT AddTimezone(Datetime("2018-02-01T12:00:00Z"), "Europe/Moscow");
@@ -467,7 +467,7 @@ SELECT AddTimezone(Datetime("2018-02-01T12:00:00Z"), "Europe/Moscow");
Удаление информации о временной зоне и перевод в дату/время, заданные в UTC.
-### Сигнатура
+#### Сигнатура
```yql
RemoveTimezone(TzDate)->Date
@@ -484,7 +484,7 @@ RemoveTimezone(TzTimestamp?)->Timestamp?
Тип результата - `Date`/`Datetime`/`Timestamp`, в зависимости от типа данных входа.
-### Примеры
+#### Примеры
```yql
SELECT RemoveTimezone(TzDatetime("2018-02-01T12:00:00,Europe/Moscow"));
@@ -495,7 +495,7 @@ SELECT RemoveTimezone(TzDatetime("2018-02-01T12:00:00,Europe/Moscow"));
`Version()` возвращает строку, описывающую текущую версию узла, обрабатывающего запрос. В некоторых случаях, например, во время постепенного обновлений кластера, она может возвращать разные строки в зависимости от того, какой узел обрабатывает запрос. Функция не принимает никаких аргументов.
-### Примеры
+#### Примеры
```yql
SELECT Version();
@@ -506,7 +506,7 @@ SELECT Version();
Возвращает минимальный или максимальный среди N аргументов. Эти функции позволяют не использовать стандартную для SQL конструкцию `CASE WHEN a < b THEN a ELSE b END`, которая была бы особенно громоздкой для N больше двух.
-### Сигнатуры
+#### Сигнатуры
```yql
MIN_OF(T[,T,...})->T
@@ -517,7 +517,7 @@ MAX_OF(T[,T,...})->T
`GREATEST` является синонимом к `MAX_OF`, а `LEAST` — к `MIN_OF`.
-### Примеры
+#### Примеры
```yql
SELECT MIN_OF(1, 2, 3);
@@ -543,7 +543,7 @@ SELECT MIN_OF(1, 2, 3);
* В `AsDict` и `AsDictStrict` в качестве аргументов ожидаются `Tuple` из двух элементов: ключ и значение, соответственно. Если ключи повторяются, в словаре останется только значение для первого ключа.
* В `AsSet` и `AsSetStrict` в качестве аргументов ожидаются ключи.
-### Примеры
+#### Примеры
```yql
SELECT
@@ -578,7 +578,7 @@ SELECT
Для списка внутри используется функция [AsList](#as-container), словаря - [AsDict](#as-container), множества - [AsSet](#as-container), кортежа - [AsTuple](#as-container), структуры - [AsStruct](#as-container).
-### Примеры
+#### Примеры
```yql
$name = "computed " || "member name";
@@ -604,7 +604,7 @@ SELECT
`Variant()` создает значение варианта над кортежем или структурой.
-### Сигнатура
+#### Сигнатура
```yql
Variant(T, String, Type<Variant<...>>)->Variant<...>
@@ -616,7 +616,7 @@ Variant(T, String, Type<Variant<...>>)->Variant<...>
* Строка с именем поля или индексом кортежа
* Тип варианта
-### Пример
+#### Пример
```yql
$var_type = Variant<foo: Int32, bar: Bool>;
@@ -630,7 +630,7 @@ SELECT
`AsVariant()` создает значение [варианта над структурой](../types/containers.md) с одним полем. Это значение может быть неявно преобразовано к любому варианту над структурой, в которой совпадает для этого имени поля тип данных и могут быть дополнительные поля с другими именами.
-### Сигнатура
+#### Сигнатура
```yql
AsVariant(T, String)->Variant
@@ -641,7 +641,7 @@ AsVariant(T, String)->Variant
* Значение
* Строка с именем поля
-### Пример
+#### Пример
```yql
SELECT
@@ -652,7 +652,7 @@ SELECT
Обрабатывает возможные значения варианта, представленного структурой или кортежем, с использованием предоставленных функций-обработчиков для каждого из его полей/элементов.
-### Сигнатура
+#### Сигнатура
```yql
Visit(Variant<key1: K1, key2: K2, ...>, K1->R AS key1, K2->R AS key2, ...)->R
@@ -668,7 +668,7 @@ VisitOrDefault(Variant<key1: K1, key2: K2, ...>{Flags:AutoMap}, R, [K1->R AS key
* Для варианта над кортежем функция принимает сам вариант и по одному обработчику на каждый элемент кортежа в качестве позиционных аргументов.
* Модификация `VisitOrDefault` принимает дополнительный позиционный аргумент (на втором месте), представляющий значение по умолчанию, и позволяет не указывать некоторые обработчики.
-### Пример
+#### Пример
```yql
$vartype = Variant<num: Int32, flag: Bool, str: String>;
@@ -690,14 +690,14 @@ SELECT
Возвращает значение гомогенного варианта (т.е. содержащего поля/элементы одного типа).
-### Сигнатура
+#### Сигнатура
```yql
VariantItem(Variant<key1: K, key2: K, ...>{Flags:AutoMap})->K
VariantItem(Variant<K, K, ...>{Flags:AutoMap})->K
```
-### Пример
+#### Пример
```yql
$vartype1 = Variant<num1: Int32, num2: Int32, num3: Int32>;
@@ -713,14 +713,14 @@ SELECT
Возвращает активное поле (активный индекс) варианта поверх структуры (кортежа).
-### Сигнатура
+#### Сигнатура
```yql
Way(Variant<key1: K1, key2: K2, ...>{Flags:AutoMap})->Utf8
Way(Variant<K1, K2, ...>{Flags:AutoMap})->Uint32
```
-### Пример
+#### Пример
```yql
$vr = Variant(1, "0", Variant<Int32, String>);
@@ -737,14 +737,14 @@ SELECT Way($vrs); -- "a"
Создает экзмепляр гомогенного варианта (т.е. содержащего поля/элементы одного типа), причем индекс или поле варианта можно задавать динамически. При несуществующем индексе или имени поля будет возвращен `NULL`.
Обратная функция - [VariantItem](#variantitem).
-### Сигнатура
+#### Сигнатура
```yql
DynamicVariant(item:T,index:Uint32?,Variant<T, T, ...>)->Optional<Variant<T, T, ...>>
DynamicVariant(item:T,index:Utf8?,Variant<key1: T, key2: T, ...>)->Optional<Variant<key1: T, key2: T, ...>>
```
-### Пример
+#### Пример
```yql
$dt = Int32;
@@ -761,7 +761,7 @@ SELECT ListMap([(10,'x'u),(20,'z'u),(30,NULL)],($x)->(DynamicVariant($x.0,$x.1,$
`Enum()` создает значение перечисления.
-### Сигнатура
+#### Сигнатура
```yql
Enum(String, Type<Enum<...>>)->Enum<...>
@@ -772,7 +772,7 @@ Enum(String, Type<Enum<...>>)->Enum<...>
* Строка с именем поля
* Тип перечисления
-### Пример
+#### Пример
```yql
$enum_type = Enum<Foo, Bar>;
@@ -785,7 +785,7 @@ SELECT
`AsEnum()` создает значение [перечисления](../types/containers.md) с одним элементом. Это значение может быть неявно преобразовано к любому перечислению, содержащему такое имя.
-### Сигнатура
+#### Сигнатура
```yql
AsEnum(String)->Enum<'tag'>
@@ -795,7 +795,7 @@ AsEnum(String)->Enum<'tag'>
* Строка с именем элемента перечисления
-### Пример
+#### Пример
```yql
SELECT
@@ -807,7 +807,7 @@ SELECT
Оборачивает значение в [Tagged тип данных](../types/special.md) с указанной меткой с сохранением физического типа данных. `Untag` — обратная операция.
-### Сигнатура
+#### Сигнатура
```yql
AsTagged(T, tagName:String)->Tagged<T,tagName>
@@ -834,7 +834,7 @@ Untag(Tagged<T, tagName>?)->T?
Доступ к текущему имени таблицы, что бывает востребовано при использовании [CONCAT](../syntax/select/concat.md#concat) и других подобных механизмов.
-### Сигнатура
+#### Сигнатура
```yql
TablePath()->String
@@ -850,7 +850,7 @@ TablePath()->String
{% endnote %}
-### Примеры
+#### Примеры
```yql
SELECT TablePath() FROM CONCAT(table_a, table_b);
@@ -865,7 +865,7 @@ WHERE key IN $subquery;
Получить имя таблицы из пути к таблице. Путь можно получить через функцию [TablePath](#tablepath).
-### Сигнатура
+#### Сигнатура
```yql
TableName()->String
@@ -878,7 +878,7 @@ TableName(String, String)->String
* путь к таблице, по умолчанию используется `TablePath()` (также см. его ограничения);
* указание системы ("yt"), по правилам которой выделяется имя таблицы. Указание системы нужно только в том случае, если с помощью [USE](../syntax/use.md) не указан текущий кластер.
-### Примеры
+#### Примеры
```yql
USE hahn;
@@ -889,7 +889,7 @@ SELECT TableName() FROM CONCAT(table_a, table_b);
Доступ к текущему порядковому номеру строки в исходной физической таблице, **начиная с 1** (зависит от реализации хранения).
-### Сигнатура
+#### Сигнатура
```yql
TableRecordIndex()->Uint64
@@ -897,7 +897,7 @@ TableRecordIndex()->Uint64
Аргументов нет. При использовании в сочетании с [CONCAT](../syntax/select/concat.md#concat) и другими подобными механизмами нумерация начинается заново для каждой таблицы на входе. В случае использования в некорректном контексте возвращает 0.
-### Пример
+#### Пример
```yql
SELECT TableRecordIndex() FROM my_table;
@@ -908,13 +908,13 @@ SELECT TableRecordIndex() FROM my_table;
Получение всей строки таблицы целиком в виде структуры. Аргументов нет. `JoinTableRow` в случае `JOIN`-ов всегда возвращает структуру с префиксами таблиц.
-### Сигнатура
+#### Сигнатура
```yql
TableRow()->Struct
```
-### Пример
+#### Пример
```yql
SELECT TableRow() FROM my_table;
@@ -922,7 +922,7 @@ SELECT TableRow() FROM my_table;
## FileContent и FilePath {#file-content-path}
-### Сигнатуры
+#### Сигнатуры
```yql
FilePath(String)->String
@@ -931,7 +931,7 @@ FileContent(String)->String
Аргумент `FileContent` и `FilePath` — строка с алиасом.
-### Примеры
+#### Примеры
```yql
SELECT "Content of "
@@ -943,7 +943,7 @@ SELECT "Content of "
Получение пути до корня директории с несколькими «приложенными» файлами с указанным общим префиксом.
-### Сигнатура
+#### Сигнатура
```yql
FolderPath(String)->String
@@ -953,7 +953,7 @@ FolderPath(String)->String
Также см. [PRAGMA File](../syntax/pragma.md#file) и [PRAGMA Folder](../syntax/pragma.md#folder).
-### Примеры
+#### Примеры
```yql
PRAGMA File("foo/1.txt", "http://url/to/somewhere");
@@ -970,7 +970,7 @@ SELECT FolderPath("foo"); -- в директории по возвращённо
Поддерживается только один формат файла — по одному значению на строку.
-### Сигнатура
+#### Сигнатура
```yql
ParseFile(String, String)->List<T>
@@ -987,7 +987,7 @@ ParseFile(String, String)->List<T>
{% endnote %}
-### Примеры
+#### Примеры
```yql
SELECT ListLength(ParseFile("String", "my_file.txt"));
@@ -1008,7 +1008,7 @@ WHERE int_column IN ParseFile("Int64", "my_file.txt");
Если проверка не прошла успешно, то весь запрос завершается с ошибкой.
-### Сигнатуры
+#### Сигнатуры
```yql
Ensure(T, Bool, String)->T
@@ -1025,7 +1025,7 @@ EnsureConvertibleTo(T, Type<T>, String)->T
Для проверки условий по финальному результату вычисления Ensure удобно использовать в сочетании с [DISCARD SELECT](../syntax/discard.md).
-### Примеры
+#### Примеры
```yql
SELECT Ensure(
@@ -1054,7 +1054,7 @@ SELECT EnsureConvertibleTo(
## AssumeStrict {#assumestrict}
-### Сигнатура
+#### Сигнатура
```yql
AssumeStrict(T)->T
@@ -1066,7 +1066,7 @@ AssumeStrict(T)->T
Если есть уверенность, что при вычислении выражения ошибок времени выполнения на самом деле не возникает, то имеет смысл использовать `AssumeStrict`.
-### Пример
+#### Пример
```yql
SELECT * FROM T1 AS a JOIN T2 AS b USING(key)
@@ -1080,7 +1080,7 @@ WHERE AssumeStrict(Unwrap(CAST(a.key AS Int32))) == 1;
## Likely {#likely}
-### Сигнатура
+#### Сигнатура
```yql
Likely(Bool)->Bool
@@ -1090,7 +1090,7 @@ Likely(Bool?)->Bool?
Функция `Likely` возвращает свой аргумент. Функция является подсказкой оптимизатору и говорит о том, что в большинстве случаев ее аргумент будет иметь значение `True`.
Например, наличие такой функции в `WHERE` означает что фильтр является слабоселективным.
-### Пример
+#### Пример
```yql
SELECT * FROM T1 AS a JOIN T2 AS b USING(key)
@@ -1117,7 +1117,7 @@ EvaluateAtom позволяет динамически создать [атом]
* выражение не должно приводить к запуску MapReduce операций;
* данный функционал полностью заблокирован в YQL over YDB.
-### Примеры
+#### Примеры
```yql
$now = CurrentUtcDate();
@@ -1131,7 +1131,7 @@ SELECT EvaluateExpr(
Для простых типов могут быть созданы литералы на основании строковых литералов.
-### Синтаксис
+#### Синтаксис
`<Простой тип>( <строка>[, <дополнительные атрибуты>] )`
@@ -1151,7 +1151,7 @@ SELECT EvaluateExpr(
{% include [decimal args](../_includes/decimal_args.md) %}
-### Примеры
+#### Примеры
```yql
SELECT
@@ -1182,7 +1182,7 @@ SELECT
Конвертация [простых типов данных](../types/primitive.md) в строку со своим бинарным представлением и обратно. Числа представляются в [little endian](https://en.wikipedia.org/wiki/Endianness#Little-endian).
-### Сигнатуры
+#### Сигнатуры
```yql
ToBytes(T)->String
@@ -1192,7 +1192,7 @@ FromBytes(String, Type<T>)->T?
FromBytes(String?, Type<T>)->T?
```
-### Примеры
+#### Примеры
```yql
SELECT
@@ -1208,7 +1208,7 @@ SELECT
Получение значение байта в строке по индексу от её начала. В случае некорректного индекса возвращается `NULL`.
-### Сигнатура
+#### Сигнатура
```yql
ByteAt(String, Uint32)->Uint8
@@ -1223,7 +1223,7 @@ ByteAt(Utf8?, Uint32)->Uint8?
1. Строка: `String` или `Utf8`;
2. Индекс: `Uint32`.
-### Примеры
+#### Примеры
```yql
SELECT
@@ -1237,7 +1237,7 @@ SELECT
`TestBit()`, `ClearBit()`, `SetBit()` и `FlipBit()` - проверить, сбросить, установить или инвертировать бит в беззнаковом числе по указанному порядковому номеру бита.
-### Сигнатуры
+#### Сигнатуры
```yql
TestBit(T, Uint8)->Bool
@@ -1260,7 +1260,7 @@ FlipBit(T?, Uint8)->T?
TestBit возвращает `true/false`. Остальные функции возвращают копию своего первого аргумента с проведенным соответствующим преобразованием.
-### Примеры
+#### Примеры
```yql
SELECT
@@ -1273,14 +1273,14 @@ SELECT
Абсолютное значение числа.
-### Сигнатура
+#### Сигнатура
```yql
Abs(T)->T
Abs(T?)->T?
```
-### Примеры
+#### Примеры
```yql
SELECT Abs(-123); -- 123
@@ -1291,13 +1291,13 @@ SELECT Abs(-123); -- 123
`Just()` - Изменить тип данных значения на [optional](../types/optional.md) от текущего типа данных (то есть `T` превращается в `T?`).
-### Сигнатура
+#### Сигнатура
```yql
Just(T)->T?
```
-### Примеры
+#### Примеры
```yql
SELECT
@@ -1310,7 +1310,7 @@ SELECT
Если значение не является [optional](../types/optional.md), то функция возвращает свой первый аргумент без изменений.
-### Сигнатура
+#### Сигнатура
```yql
Unwrap(T?)->T
@@ -1325,7 +1325,7 @@ Unwrap(T?, String)->T
Обратная операция — [Just](#optional-ops).
-### Примеры
+#### Примеры
```yql
$value = Just("value");
@@ -1337,13 +1337,13 @@ SELECT Unwrap($value, "Unexpected NULL for $value");
`Nothing()` - Создать пустое значение указанного [Optional](../types/optional.md) типа данных.
-### Сигнатура
+#### Сигнатура
```yql
Nothing(Type<T?>)->T?
```
-### Примеры
+#### Примеры
```yql
SELECT
@@ -1357,7 +1357,7 @@ SELECT
Создать вызываемое значение с заданной сигнатурой из лямбда-функции. Обычно используется для того, чтобы размещать вызываемые значения в контейнерах.
-### Сигнатура
+#### Сигнатура
```yql
Callable(Type<Callable<(...)->T>>, lambda)->Callable<(...)->T>
@@ -1368,7 +1368,7 @@ Callable(Type<Callable<(...)->T>>, lambda)->Callable<(...)->T>
1. Тип;
2. Лямбда-функция.
-### Примеры
+#### Примеры
```yql
$lambda = ($x) -> {
@@ -1390,7 +1390,7 @@ SELECT $callables.0(10), $callables.1(true);
`Unpickle()` — обратная операция (десериализация), где первым аргументом передается тип данных результата, а вторым — строка с результатом `Pickle()` или `StablePickle()`.
-### Сигнатуры
+#### Сигнатуры
```yql
Pickle(T)->String
@@ -1398,7 +1398,7 @@ StablePickle(T)->String
Unpickle(Type<T>, String)->T
```
-### Примеры
+#### Примеры
```yql
SELECT *
@@ -1416,7 +1416,7 @@ SELECT Unpickle(Int32, $buf);
Преобразует структуру или кортеж, применяя лямбду к каждому элементу.
-### Сигнатура
+#### Сигнатура
```yql
StaticMap(Struct<...>, lambda)->Struct<...>
@@ -1430,7 +1430,7 @@ StaticMap(Tuple<...>, lambda)->Tuple<...>
Результат: структура или кортеж с аналогичным первому аргументу количеством и именованием элементов, а типы данных элементов определяются результатами лямбды.
-### Примеры
+#### Примеры
```yql
SELECT *
@@ -1451,14 +1451,14 @@ FROM (
Результататом будет соответственно структура или кортеж.
Каждый элемент результата – кортеж с соответствующими элементами из аргументов.
-### Сигнатура
+#### Сигнатура
```yql
StaticZip(Struct, Struct)->Struct
StaticZip(Tuple, Tuple)->Tuple
```
-### Примеры
+#### Примеры
```yql
$one = <|k1:1, k2:2.0|>;
@@ -1513,7 +1513,7 @@ $f($el_n, ...$f($el_2, $f($f0($init), el_1))...)
Полученную фабрику можно использовать как второй параметр функции [AGGREGATE_BY](aggregation.md#aggregateby).
Если агрегационная функция работает на двух колонках вместо одной, как например, [MIN_BY](aggregation.md#minby), то в [AGGREGATE_BY](aggregation.md#aggregateby) первым аргументом передается `Tuple` из двух значений. Подробнее это указано при описании такой агрегационной функции.
-### Примеры
+#### Примеры
```yql
$factory = AggregationFactory("MIN");
@@ -1531,7 +1531,7 @@ FROM my_table;
1. Фабрика для агрегационных функций;
2. Лямбда функция с одним аргументом, преобразующая входной элемент.
-### Примеры
+#### Примеры
```yql
$f = AggregationFactory("sum");
@@ -1551,7 +1551,7 @@ SELECT ListAggregate([1,2,3], $h); -- 12
1. Фабрика для агрегационных функций;
2. Лямбда функция с одним аргументом, преобразующая результат.
-### Примеры
+#### Примеры
```yql
$f = AggregationFactory("sum");
@@ -1568,7 +1568,7 @@ SELECT ListAggregate([1,2,3], $g); -- 12
1. Фабрика для агрегационных функций.
-### Примеры
+#### Примеры
```yql
$i = AggregationFactory("AGGREGATE_LIST_DISTINCT");
diff --git a/yql/essentials/docs/ru/builtins/codegen.md b/yql/essentials/docs/ru/builtins/codegen.md
index 1d6cd2373e..d4f929dc4a 100644
--- a/yql/essentials/docs/ru/builtins/codegen.md
+++ b/yql/essentials/docs/ru/builtins/codegen.md
@@ -27,7 +27,7 @@
Сериализация кода в виде [S-expressions](/docs/s_expressions). Код не должен содержать свободных аргументов функций, т.е. для сериализации кода лямбда функции нужно передавать ее целиком, а не выражения, потенциально содержащие аргументы лямбда функции.
-### Примеры
+#### Примеры
```yql
SELECT FormatCode(AtomCode("foo"));
@@ -40,7 +40,7 @@ SELECT FormatCode(AtomCode("foo"));
Построить узел кода с типом `мир`.
-### Примеры
+#### Примеры
```yql
SELECT FormatCode(WorldCode());
@@ -53,7 +53,7 @@ SELECT FormatCode(WorldCode());
Построить узел кода с типом `атом` из строки, переданной в аргумент.
-### Примеры
+#### Примеры
```yql
SELECT FormatCode(AtomCode("foo"));
@@ -66,7 +66,7 @@ SELECT FormatCode(AtomCode("foo"));
Построить узел кода с типом `список` из набора узлов или списков узлов кода, переданных в аргументы. При этом списки из аргументов встраиваются как отдельно перечисленные узлы кода.
-### Примеры
+#### Примеры
```yql
SELECT FormatCode(ListCode(
@@ -88,7 +88,7 @@ SELECT FormatCode(ListCode(AsList(
Построить узел кода с типом `вызов встроенной функции` из строки с именем функции и набора узлов или списков узлов кода, переданных в аргументы. При этом списки из аргументов встраиваются как отдельно перечисленные узлы кода.
-### Примеры
+#### Примеры
```yql
SELECT FormatCode(FuncCode(
@@ -116,7 +116,7 @@ SELECT FormatCode(FuncCode(
* [Лямбда функции](../syntax/expressions.md#lambda), если заранее известно количество аргументов. В этом случае в качестве аргументов этой лямбда функции будут переданы узлы типа `аргумент`.
* Количества аргументов и [лямбда функции](../syntax/expressions.md#lambda) с одним аргументом. В этом случае в качестве аргумента этой лямбды функции будет передан список узлов типа `аргумент`.
-### Примеры
+#### Примеры
```yql
SELECT FormatCode(LambdaCode(($x, $y) -> {
@@ -138,7 +138,7 @@ SELECT FormatCode(LambdaCode(2, ($args) -> {
Подстановка в основную программу узла кода, переданного в аргумент.
-### Примеры
+#### Примеры
```yql
SELECT EvaluateCode(FuncCode("Int32", AtomCode("1"))); -- 1
@@ -153,7 +153,7 @@ SELECT $lambda(1, 2); -- 3
Подстановка в основную программу узла кода, который является представлением результата вычисления выражения, переданного в аргумент.
-### Примеры
+#### Примеры
```yql
$add3 = EvaluateCode(LambdaCode(($x) -> {
@@ -166,7 +166,7 @@ SELECT $add3(1); -- 4
Подстановка в основную программу узла кода, который является представлением выражения или [лямбда функции](../syntax/expressions.md#lambda), переданной в аргумент. Если во время подстановки были найдены свободные аргументы лямбда функций, то они вычисляются и подставляются в код как в функции [ReprCode](#reprcode).
-### Примеры
+#### Примеры
```yql
$lambda = ($x, $y) -> { RETURN $x + $y };
diff --git a/yql/essentials/docs/ru/builtins/dict.md b/yql/essentials/docs/ru/builtins/dict.md
index e79b9a83bd..693e703be1 100644
--- a/yql/essentials/docs/ru/builtins/dict.md
+++ b/yql/essentials/docs/ru/builtins/dict.md
@@ -3,7 +3,7 @@
## DictCreate {#dictcreate}
-### Сигнатура
+#### Сигнатура
```yql
DictCreate(K,V)->Dict<K,V>
@@ -19,7 +19,7 @@ DictCreate(K,V)->Dict<K,V>
[Документация по формату описания типа](../types/type_string.md).
-### Примеры
+#### Примеры
```yql
SELECT DictCreate(String, Tuple<String,Double?>);
@@ -35,7 +35,7 @@ SELECT DictCreate(ParseType("Tuple<Int32?,String>"), ParseType("Tuple<String,Dou
## SetCreate {#setcreate}
-### Сигнатура
+#### Сигнатура
```yql
SetCreate(T)->Set<T>
@@ -45,7 +45,7 @@ SetCreate(T)->Set<T>
[Документация по формату описания типа](../types/type_string.md).
-### Примеры
+#### Примеры
```yql
SELECT SetCreate(String);
@@ -57,7 +57,7 @@ SELECT SetCreate(Tuple<Int32?,String>);
## DictLength {#dictlength}
-### Сигнатура
+#### Сигнатура
```yql
DictLength(Dict<K,V>)->Uint64
@@ -66,7 +66,7 @@ DictLength(Dict<K,V>?)->Uint64?
Количество элементов в словаре.
-### Примеры
+#### Примеры
```yql
SELECT DictLength(AsDict(AsTuple(1, AsList("foo", "bar"))));
@@ -78,7 +78,7 @@ SELECT DictLength(dict_column) FROM my_table;
## DictHasItems {#dicthasitems}
-### Сигнатура
+#### Сигнатура
```yql
DictHasItems(Dict<K,V>)->Bool
@@ -87,7 +87,7 @@ DictHasItems(Dict<K,V>?)->Bool?
Проверка того, что словарь содержит хотя бы один элемент.
-### Примеры
+#### Примеры
```yql
SELECT DictHasItems(AsDict(AsTuple(1, AsList("foo", "bar")))) FROM my_table;
@@ -99,7 +99,7 @@ SELECT DictHasItems(dict_column) FROM my_table;
## DictItems {#dictitems}
-### Сигнатура
+#### Сигнатура
```yql
DictItems(Dict<K,V>)->List<Tuple<K,V>>
@@ -108,7 +108,7 @@ DictItems(Dict<K,V>?)->List<Tuple<K,V>>?
Получение содержимого словаря в виде списка кортежей с парами ключ-значение (`List<Tuple<key_type,value_type>>`).
-### Примеры
+#### Примеры
```yql
SELECT DictItems(AsDict(AsTuple(1, AsList("foo", "bar"))));
@@ -122,7 +122,7 @@ FROM my_table;
## DictKeys {#dictkeys}
-### Сигнатура
+#### Сигнатура
```yql
DictKeys(Dict<K,V>)->List<K>
@@ -131,7 +131,7 @@ DictKeys(Dict<K,V>?)->List<K>?
Получение списка ключей словаря.
-### Примеры
+#### Примеры
```yql
SELECT DictKeys(AsDict(AsTuple(1, AsList("foo", "bar"))));
@@ -145,7 +145,7 @@ FROM my_table;
## DictPayloads {#dictpayloads}
-### Сигнатура
+#### Сигнатура
```yql
DictPayloads(Dict<K,V>)->List<V>
@@ -154,7 +154,7 @@ DictPayloads(Dict<K,V>?)->List<V>?
Получение списка значений словаря.
-### Примеры
+#### Примеры
```yql
SELECT DictPayloads(AsDict(AsTuple(1, AsList("foo", "bar"))));
@@ -168,7 +168,7 @@ FROM my_table;
## DictLookup {#dictlookup}
-### Сигнатура
+#### Сигнатура
```yql
DictLookup(Dict<K,V>, K)->V?
@@ -179,7 +179,7 @@ DictLookup(Dict<K,V>?, K?)->V?
Получение элемента словаря по ключу.
-### Примеры
+#### Примеры
```yql
SELECT DictLookup(AsDict(
@@ -196,7 +196,7 @@ FROM my_table;
## DictContains {#dictcontains}
-### Сигнатура
+#### Сигнатура
```yql
DictContains(Dict<K,V>, K)->Bool
@@ -207,7 +207,7 @@ DictContains(Dict<K,V>?, K?)->Bool
Проверка наличия элемента в словаре по ключу. Возвращает true или false.
-### Примеры
+#### Примеры
```yql
SELECT DictContains(AsDict(
@@ -224,7 +224,7 @@ FROM my_table;
## DictAggregate {#dictaggregate}
-### Сигнатура
+#### Сигнатура
```yql
DictAggregate(Dict<K,List<V>>, List<V>->T)->Dict<K,T>
@@ -242,7 +242,7 @@ DictAggregate(Dict<K,List<V>>?, List<V>->T)->Dict<K,T>?
2. [Фабрика агрегационных функций](basic.md#aggregationfactory).
-### Примеры
+#### Примеры
```yql
SELECT DictAggregate(AsDict(
@@ -254,7 +254,7 @@ SELECT DictAggregate(AsDict(
## SetIsDisjoint {#setisjoint}
-### Сигнатура
+#### Сигнатура
```yql
SetIsDisjoint(Dict<K,V1>, Dict<K,V2>)->Bool
@@ -275,7 +275,7 @@ SetIsDisjoint(Dict<K,V1>?, List<K>?)->Bool?
* С аргументами `Dict<K,V1>` и `List<K>`;
* С аргументами `Dict<K,V1>` и `Dict<K,V2>`.
-### Примеры
+#### Примеры
```yql
SELECT SetIsDisjoint(ToSet(AsList(1, 2, 3)), AsList(7, 4)); -- true
@@ -284,7 +284,7 @@ SELECT SetIsDisjoint(ToSet(AsList(1, 2, 3)), ToSet(AsList(3, 4))); -- false
## SetIntersection {#setintersection}
-### Сигнатура
+#### Сигнатура
```yql
SetIntersection(Dict<K,V1>, Dict<K,V2>)->Set<K>
@@ -305,7 +305,7 @@ SetIntersection(Dict<K,V1>?, Dict<K,V2>?, (K,V1,V2)->U)->Dict<K,U>?
* Два словаря: `Dict<K,V1>` и `Dict<K,V2>`.
* Необязательная функция, которая объединяет значения из исходных словарей для построения значений выходного словаря. Если тип такой функции `(K,V1,V2) -> U`, то типом результата будет `Dict<K,U>`. Если функция не задана, типом результата будет `Dict<K,Void>`, а значения из исходных словарей игнорируются.
-### Примеры
+#### Примеры
```yql
SELECT SetIntersection(ToSet(AsList(1, 2, 3)), ToSet(AsList(3, 4))); -- { 3 }
@@ -324,7 +324,7 @@ SELECT SetIntersection(
## SetIncludes {#setincludes}
-### Сигнатура
+#### Сигнатура
```yql
SetIncludes(Dict<K,V1>, List<K>)->Bool
@@ -345,7 +345,7 @@ SetIncludes(Dict<K,V1>?, Dict<K,V2>?)->Bool?
* С аргументами `Dict<K,V1>` и `List<K>`;
* С аргументами `Dict<K,V1>` и `Dict<K,V2>`.
-### Примеры
+#### Примеры
```yql
SELECT SetIncludes(ToSet(AsList(1, 2, 3)), AsList(3, 4)); -- false
@@ -354,7 +354,7 @@ SELECT SetIncludes(ToSet(AsList(1, 2, 3)), ToSet(AsList(2, 3))); -- true
## SetUnion {#setunion}
-### Сигнатура
+#### Сигнатура
```yql
SetUnion(Dict<K,V1>, Dict<K,V2>)->Set<K>
@@ -375,7 +375,7 @@ SetUnion(Dict<K,V1>?, Dict<K,V2>?,(K,V1?,V2?)->U)->Dict<K,U>?
* Два словаря: `Dict<K,V1>` и `Dict<K,V2>`.
* Необязательная функция, которая объединяет значения из исходных словарей для построения значений выходного словаря. Если тип такой функции `(K,V1?,V2?) -> U`, то типом результата будет `Dict<K,U>`. Если функция не задана, типом результата будет `Dict<K,Void>`, а значения из исходных словарей игнорируются.
-### Примеры
+#### Примеры
```yql
SELECT SetUnion(ToSet(AsList(1, 2, 3)), ToSet(AsList(3, 4))); -- { 1, 2, 3, 4 }
@@ -388,7 +388,7 @@ SELECT SetUnion(
## SetDifference {#setdifference}
-### Сигнатура
+#### Сигнатура
```yql
SetDifference(Dict<K,V1>, Dict<K,V2>)->Dict<K,V1>
@@ -399,7 +399,7 @@ SetDifference(Dict<K,V1>?, Dict<K,V2>?)->Dict<K,V1>?
Строит словарь, в котором есть все ключи с соответствующими значениями первого словаря, для которых нет ключа во втором словаре.
-### Примеры
+#### Примеры
```yql
SELECT SetDifference(ToSet(AsList(1, 2, 3)), ToSet(AsList(3, 4))); -- { 1, 2 }
@@ -411,7 +411,7 @@ SELECT SetDifference(
## SetSymmetricDifference {#setsymmetricdifference}
-### Сигнатура
+#### Сигнатура
```yql
SetSymmetricDifference(Dict<K,V1>, Dict<K,V2>)->Set<K>
@@ -432,7 +432,7 @@ SetSymmetricDifference(Dict<K,V1>?, Dict<K,V2>?,(K,V1?,V2?)->U)->Dict<K,U>?
* Два словаря: `Dict<K,V1>` и `Dict<K,V2>`.
* Необязательная функция, которая объединяет значения из исходных словарей для построения значений выходного словаря. Если тип такой функции `(K,V1?,V2?) -> U`, то типом результата будет `Dict<K,U>`. Если функция не задана, типом результата будет `Dict<K,Void>`, а значения из исходных словарей игнорируются.
-### Примеры
+#### Примеры
```yql
SELECT SetSymmetricDifference(ToSet(AsList(1, 2, 3)), ToSet(AsList(3, 4))); -- { 1, 2, 4 }
diff --git a/yql/essentials/docs/ru/builtins/json.md b/yql/essentials/docs/ru/builtins/json.md
index 0415a46849..8de3f4d1c1 100644
--- a/yql/essentials/docs/ru/builtins/json.md
+++ b/yql/essentials/docs/ru/builtins/json.md
@@ -504,7 +504,7 @@ JsonPath поддерживает предикаты - выражения, во
Предикат `like_regex` позволяет проверить строку на соответствие регулярному выражению. Синтаксис регулярных выражений такой же как в [Hyperscan UDF](../udf/list/hyperscan.md) и [REGEXP](../syntax/expressions.md#regexp).
-##### Синтаксис
+###### Синтаксис
```yql
<expression> like_regex <regexp string> [flag <flag string>]
@@ -548,7 +548,7 @@ JsonPath поддерживает предикаты - выражения, во
Предикат `starts with` позволяет проверить является ли одна строка префиксом другой.
-##### Синтаксис
+###### Синтаксис
```yql
<string expression> starts with <prefix expression>
@@ -589,7 +589,7 @@ JsonPath поддерживает предикаты - выражения, во
Предикат `exists` позволяет проверить, возвращает ли JsonPath выражение хотя бы один элемент.
-##### Синтаксис
+###### Синтаксис
```yql
exists (<expression>)
@@ -625,7 +625,7 @@ exists (<expression>)
Предикат `is unknown` позволяет проверить, является ли булевское значение `null`.
-##### Синтаксис
+###### Синтаксис
```yql
(<expression>) is unknown
@@ -909,7 +909,7 @@ $.numbers.double().floor()
Позволяет передавать значения в JsonPath запрос в качестве переменных.
-#### Синтаксис
+##### Синтаксис
```yql
PASSING
@@ -944,7 +944,7 @@ JSON_VALUE(
Функция `JSON_EXISTS` позволяет проверить, удовлетворяет ли JSON значение указанному JsonPath.
-### Синтаксис
+#### Синтаксис
```yql
JSON_EXISTS(
@@ -1003,7 +1003,7 @@ SELECT
Функция `JSON_VALUE` позволяет извлечь из JSON скалярное значение (все что не массив и не объект).
-### Синтаксис
+#### Синтаксис
```yql
JSON_VALUE(
@@ -1108,7 +1108,7 @@ SELECT
Функция `JSON_QUERY` позволяет извлекать из JSON массивы и объекты.
-### Синтаксис
+#### Синтаксис
```yql
JSON_QUERY(
@@ -1166,7 +1166,7 @@ JSON_QUERY(
- Ошибки во время вычисления JsonPath
- Результат выполнения JsonPath - это несколько значений (даже после применения секции `WRAPPER`) или скалярное значение
-### Примеры
+#### Примеры
```yql
$json = CAST(@@{
diff --git a/yql/essentials/docs/ru/builtins/list.md b/yql/essentials/docs/ru/builtins/list.md
index 3c6ec6d41e..4e153ef7bf 100644
--- a/yql/essentials/docs/ru/builtins/list.md
+++ b/yql/essentials/docs/ru/builtins/list.md
@@ -6,7 +6,7 @@
[Документация по формату описания типа](../types/type_string.md).
-### Примеры
+#### Примеры
```yql
SELECT ListCreate(Tuple<String,Double?>);
@@ -16,7 +16,7 @@ SELECT ListCreate(Tuple<String,Double?>);
SELECT ListCreate(OptionalType(DataType("String")));
```
-### Сигнатура
+#### Сигнатура
```yql
ListCreate(T)->List<T>
@@ -26,13 +26,13 @@ ListCreate(T)->List<T>
Сконструировать список из одного или более аргументов. Типы аргументов должны быть совместимы в случае `AsList` и строго совпадать в случае `AsListStrict`.
-### Примеры
+#### Примеры
```yql
SELECT AsList(1, 2, 3, 4, 5);
```
-### Сигнатура
+#### Сигнатура
```yql
AsList(T..)->List<T>
@@ -42,13 +42,13 @@ AsList(T..)->List<T>
Количество элементов в списке.
-### Примеры
+#### Примеры
```yql
SELECT ListLength(list_column) FROM my_table;
```
-### Сигнатура
+#### Сигнатура
```yql
ListLength(List<T>)->Uint64
@@ -59,13 +59,13 @@ ListLength(List<T>?)->Uint64?
Проверка того, что список содержит хотя бы один элемент.
-### Примеры
+#### Примеры
```yql
SELECT ListHasItems(list_column) FROM my_table;
```
-### Сигнатура
+#### Сигнатура
```yql
ListHasItems(List<T>)->Bool
@@ -76,13 +76,13 @@ ListHasItems(List<T>?)->Bool?
Преобразовать ленивый список (строится, например, функциями [ListFilter](#listmap), [ListMap](#listmap), [ListFlatMap](#listmap)) в энергичный. В отличие от ленивого списка, в котором каждый повторный проход заново вычисляет его содержимое, в энергичном списке содержимое списка строится сразу ценой большего потребления памяти.
-### Примеры
+#### Примеры
```yql
SELECT ListCollect(list_column) FROM my_table;
```
-### Сигнатура
+#### Сигнатура
```yql
ListCollect(LazyList<T>)->List<T>
@@ -98,7 +98,7 @@ ListCollect(LazyList<T>?)->List<T>?
1. Список;
2. Опциональное выражение для получения ключа сортировки из элемента списка (по умолчанию сам элемент).
-### Примеры
+#### Примеры
```yql
SELECT ListSortDesc(list_column) FROM my_table;
@@ -122,7 +122,7 @@ SELECT ListSort($list, ($x) -> {
{% endnote %}
-### Сигнатура
+#### Сигнатура
```yql
ListSort(List<T>)->List<T>
@@ -139,7 +139,7 @@ ListSort(List<T>?, (T)->U)->List<T>?
Если хотя бы один из списков является опциональным, то таким же является и результат.
Если хотя бы один аргумент является `NULL`, то тип результата - `NULL`.
-### Примеры
+#### Примеры
```yql
SELECT ListExtend(
@@ -157,7 +157,7 @@ $l3 = AsList("d", "e");
SELECT ListExtend($l1, $l2, $l3); -- ["a","b","b","c","d","e"]
```
-### Сигнатура
+#### Сигнатура
```yql
ListExtend(List<T>..)->List<T>
@@ -170,7 +170,7 @@ ListExtend(List<T>?..)->List<T>?
Если хотя бы один из списков является опциональным, то таким же является и результат.
-### Примеры
+#### Примеры
```yql
SELECT ListUnionAll(
@@ -193,7 +193,7 @@ SELECT ListUnionAll($l1, $l2); -- result: [("value":1),("value":2),("key":"a"),
-- schema: List<Struct<key : String?, value : Int32?>>
```
-### Сигнатура
+#### Сигнатура
```yql
ListUnionAll(List<Struct<..>>, List<Struct<..>>..)->List<Struct<..>>
@@ -207,7 +207,7 @@ ListUnionAll(List<Struct<..>>?, List<Struct<..>>?..)->List<Struct<..>>?
Длина возвращаемого списка определяется самым коротким списком для ListZip и самым длинным — для ListZipAll.
Когда более короткий список исчерпан, в качестве пары к элементам более длинного списка подставляется пустое значение (`NULL`) соответствующего [optional типа](../types/optional.md).
-### Примеры
+#### Примеры
```yql
SELECT
@@ -224,7 +224,7 @@ SELECT ListZip($l1, $l2); -- [("a",1),("b",2)]
SELECT ListZipAll($l1, $l2); -- [("a",1),("b",2),(null,3)]
```
-### Сигнатура
+#### Сигнатура
```yql
ListZip(List<T1>, List<T2>)->List<Tuple<T1, T2>>
@@ -238,13 +238,13 @@ ListZipAll(List<T1>?, List<T2>?)->List<Tuple<T1?, T2?>>?
Построить список пар (Tuple), содержащих номер элемента и сам элемент (`List<Tuple<Uint64,list_element_type>>`).
-### Примеры
+#### Примеры
```yql
SELECT ListEnumerate(list_column) FROM my_table;
```
-### Сигнатура
+#### Сигнатура
```yql
ListEnumerate(List<T>)->List<Tuple<Uint64, T>>
@@ -255,13 +255,13 @@ ListEnumerate(List<T>?)->List<Tuple<Uint64, T>>?
Развернуть список.
-### Примеры
+#### Примеры
```yql
SELECT ListReverse(list_column) FROM my_table;
```
-### Сигнатура
+#### Сигнатура
```yql
ListReverse(List<T>)->List<T>
@@ -274,7 +274,7 @@ ListReverse(List<T>?)->List<T>?
Первый аргумент — исходный список, второй — сколько элементов пропустить.
-### Примеры
+#### Примеры
```yql
SELECT
@@ -288,7 +288,7 @@ $l1 = AsList(1, 2, 3, 4, 5);
SELECT ListSkip($l1, 2); -- [3,4,5]
```
-### Сигнатура
+#### Сигнатура
```yql
ListSkip(List<T>, Uint64)->List<T>
@@ -301,7 +301,7 @@ ListSkip(List<T>?, Uint64)->List<T>?
Первый аргумент — исходный список, второй — не больше скольких элементов с начала оставить.
-### Примеры
+#### Примеры
```yql
SELECT ListTake(list_column, 3) FROM my_table;
@@ -313,7 +313,7 @@ $l1 = AsList(1, 2, 3, 4, 5);
SELECT ListTake($l1, 2); -- [1,2]
```
-### Сигнатура
+#### Сигнатура
```yql
ListTake(List<T>, Uint64)->List<T>
@@ -332,7 +332,7 @@ ListTake(List<T>?, Uint64)->List<T>?
Дополнительный аргумент используется для управления случайностью, подробнее см. [документацию к `Random`](basic.md#random).
-### Примеры
+#### Примеры
```yql
$list = AsList(1, 2, 3, 4, 5);
@@ -341,7 +341,7 @@ SELECT ListSample($list, 0.5); -- [1, 2, 5]
SELECT ListSampleN($list, 2); -- [4, 2]
```
-### Сигнатура
+#### Сигнатура
```yql
ListSample(List<T>, Double?[, U])->List<T>
@@ -355,7 +355,7 @@ ListSampleN(List<T>?, Uint64?[, U])->List<T>?
Возвращает копию списка с элементами, перестановленными в случайном порядке. Дополнительный аргумент используется для управления случайностью, подробнее см. [документацию к `Random`](basic.md#random).
-### Примеры
+#### Примеры
```yql
$list = AsList(1, 2, 3, 4, 5);
@@ -363,7 +363,7 @@ $list = AsList(1, 2, 3, 4, 5);
SELECT ListShuffle($list); -- [1, 3, 5, 2, 4]
```
-### Сигнатура
+#### Сигнатура
```yql
ListShuffle(List<T>[, U])->List<T>
@@ -374,7 +374,7 @@ ListShuffle(List<T>?[, U])->List<T>?
Ищет элемент с указанным значением в списке и при первом обнаружении возвращает его индекс. Отсчет индексов начинается с 0, а в случае отсутствия элемента возвращается `NULL`.
-### Примеры
+#### Примеры
```yql
SELECT
@@ -388,7 +388,7 @@ $l1 = AsList(1, 2, 3, 4, 5);
SELECT ListIndexOf($l1, 2); -- 1
```
-### Сигнатура
+#### Сигнатура
```yql
ListIndexOf(List<T>, T)->Uint64?
@@ -419,7 +419,7 @@ ListIndexOf(List<T>?, T)->Uint64?
Если исходный список является опциональным, то таким же является и выходной список.
-### Примеры
+#### Примеры
```yql
SELECT
@@ -444,7 +444,7 @@ $callable = Python::test(Callable<(Int64)->Bool>, "def test(i): return i % 2");
SELECT ListFilter($list, $callable); -- [1,3]
```
-### Сигнатура
+#### Сигнатура
```yql
ListMap(List<T>, (T)->U)->List<U>
@@ -465,14 +465,14 @@ ListFilter(List<T>?, (T)->Bool)->List<T>?
Если исходный список является опциональным, то таким же является и выходной список.
-### Примеры
+#### Примеры
```yql
SELECT ListNotNull([1,2]), -- [1,2]
ListNotNull([3,null,4]); -- [3,4]
```
-### Сигнатура
+#### Сигнатура
```yql
ListNotNull(List<T?>)->List<T>
@@ -485,14 +485,14 @@ ListNotNull(List<T?>?)->List<T>?
Если исходный список является опциональным, то таким же является и выходной список.
-### Примеры
+#### Примеры
```yql
SELECT ListFlatten([[1,2],[3,4]]), -- [1,2,3,4]
ListFlatten([null,[3,4],[5,6]]); -- [3,4,5,6]
```
-### Сигнатура
+#### Сигнатура
```yql
ListFlatten(List<List<T>?>)->List<T>
@@ -503,7 +503,7 @@ ListFlatten(List<List<T>?>?)->List<T>?
Возвращает копию списка, в котором оставлен только уникальный набор элементов. В случае ListUniq порядок элементов результирующего набора не определен, в случае ListUniqStable элементы находятся в порядке вхождения в исходный список.
-### Примеры
+#### Примеры
```yql
SELECT ListUniq([1, 2, 3, 2, 4, 5, 1]) -- [5, 4, 2, 1, 3]
@@ -511,7 +511,7 @@ SELECT ListUniqStable([1, 2, 3, 2, 4, 5, 1]) -- [1, 2, 3, 4, 5]
SELECT ListUniqStable([1, 2, null, 7, 2, 8, null]) -- [1, 2, null, 7, 8]
```
-### Сигнатура
+#### Сигнатура
```yql
ListUniq(List<T>)->List<T>
@@ -530,7 +530,7 @@ ListUniqStable(List<T>?)->List<T>?
В противном случае возвращает false.
-### Примеры
+#### Примеры
```yql
SELECT
@@ -539,7 +539,7 @@ SELECT
FROM my_table;
```
-### Сигнатура
+#### Сигнатура
```yql
ListAny(List<Bool>)->Bool
@@ -552,7 +552,7 @@ ListAll(List<Bool>?)->Bool?
Содержит ли список указанный элемент. При этом `NULL` значения считаются равными друг другу, а при `NULL` входном списке результат всегда `false`.
-### Примеры
+#### Примеры
```yql
SELECT
@@ -567,7 +567,7 @@ SELECT ListHas($l1, 2); -- true
SELECT ListHas($l1, 6); -- false
```
-### Сигнатура
+#### Сигнатура
```yql
ListHas(List<T>, U)->Bool
@@ -578,7 +578,7 @@ ListHas(List<T>?, U)->Bool
Возвращают первый и последний элемент списка.
-### Примеры
+#### Примеры
```yql
SELECT
@@ -587,7 +587,7 @@ SELECT
FROM my_table;
```
-### Сигнатура
+#### Сигнатура
```yql
ListHead(List<T>)->T?
@@ -600,7 +600,7 @@ ListLast(List<T>?)->T?
Применяет соответствующую агрегатную функцию ко всем элементам списка числовых значений.
-### Примеры
+#### Примеры
```yql
SELECT
@@ -611,7 +611,7 @@ SELECT
FROM my_table;
```
-### Сигнатура
+#### Сигнатура
```yql
ListMin(List<T>)->T?
@@ -631,7 +631,7 @@ ListMin(List<T>?)->T?
Возвращаемый тип:
U для ListFold, опциональный U для ListFold1.
-### Примеры
+#### Примеры
```yql
$l = [1, 4, 7, 2];
@@ -645,7 +645,7 @@ SELECT
ListFold1([], $z, $y) AS fold1_empty; -- Null
```
-### Сигнатура
+#### Сигнатура
```yql
ListFold(List<T>, U, (T, U)->U)->U
@@ -668,7 +668,7 @@ ListFold1(List<T>?, (T)->U, (T, U)->U)->U?
Возвращаемый тип:
Список элементов U.
-### Примеры
+#### Примеры
```yql
$l = [1, 4, 7, 2];
@@ -682,7 +682,7 @@ SELECT
ListFold1Map($l, $t, $x); -- [2, 12, 49, 28]
```
-### Сигнатура
+#### Сигнатура
```yql
ListFoldMap(List<T>, S, (T, S)->Tuple<U,S>)->List<U>
@@ -714,7 +714,7 @@ ListFold1Map(List<T>?, (T)->Tuple<U,S>, (T, S)->Tuple<U,S>)->List<U>?
* Если один из параметров опциональный, то результат будет опциональный список.
* Если один из параметров равен `NULL`, то результат будет `NULL`.
-### Примеры
+#### Примеры
```yql
SELECT
@@ -726,7 +726,7 @@ SELECT
SELECT ListFromRange(Datetime("2022-05-23T15:30:00Z"), Datetime("2022-05-30T15:30:00Z"), DateTime::IntervalFromDays(1));
```
-### Сигнатура
+#### Сигнатура
```yql
ListFromRange(T{Flags:AutoMap}, T{Flags:AutoMap}, T?)->LazyList<T> -- T — числовой тип
@@ -742,13 +742,13 @@ ListFromRange(T{Flags:AutoMap}, T{Flags:AutoMap}, I?)->LazyList<T> -- T — ти
1. Значение;
2. Число копий.
-### Примеры
+#### Примеры
```yql
SELECT ListReplicate(true, 3); -- [true, true, true]
```
-### Сигнатура
+#### Сигнатура
```yql
ListReplicate(T, Uint64)->List<T>
@@ -759,7 +759,7 @@ ListReplicate(T, Uint64)->List<T>
Объединяет список строк в одну строку.
Вторым параметром можно задать разделитель.
-### Примеры
+#### Примеры
```yql
SELECT
@@ -775,7 +775,7 @@ SELECT ListConcat($l1); -- "hello"
SELECT ListConcat($l1, " "); -- "h e l l o"
```
-### Сигнатура
+#### Сигнатура
```yql
ListConcat(List<String>)->String?
@@ -789,7 +789,7 @@ ListConcat(List<String>?, String)->String?
По списку структур возвращает список содержащихся в них полей с указанным именем.
-### Примеры
+#### Примеры
```yql
SELECT
@@ -805,7 +805,7 @@ $l = AsList(
SELECT ListExtract($l, "key"); -- ["a", "b"]
```
-### Сигнатура
+#### Сигнатура
```yql
ListExtract(List<Struct<..>>, String)->List<T>
@@ -827,7 +827,7 @@ ListExtract(List<Struct<..>>?, String)->List<T>?
Если входной список является опциональным, то таким же является и результат.
-### Примеры
+#### Примеры
```yql
$data = AsList(1, 2, 5, 1, 2, 7);
@@ -839,7 +839,7 @@ SELECT
ListSkipWhileInclusive($data, ($x) -> {return $x <= 3}); -- [1, 2, 7]
```
-### Сигнатура
+#### Сигнатура
```yql
ListTakeWhile(List<T>, (T)->Bool)->List<T>
@@ -857,13 +857,13 @@ ListTakeWhile(List<T>?, (T)->Bool)->List<T>?
1. Список;
2. [Фабрика агрегационных функций](basic.md#aggregationfactory).
-### Примеры
+#### Примеры
```yql
SELECT ListAggregate(AsList(1, 2, 3), AggregationFactory("Sum")); -- 6
```
-### Сигнатура
+#### Сигнатура
```yql
ListAggregate(List<T>, AggregationFactory)->T
@@ -881,7 +881,7 @@ ListAggregate(List<T>?, AggregationFactory)->T?
Также поддерживаются опциональные списки, что приводит к опциональному словарю в результате.
-### Примеры
+#### Примеры
```yql
SELECT
@@ -894,7 +894,7 @@ $l = AsList(("a",1), ("b", 2), ("a", 3));
SELECT ToDict($l); -- {"a": 1,"b": 2}
```
-### Сигнатура
+#### Сигнатура
```yql
ToDict(List<Tuple<K,V>>)->Dict<K,V>
@@ -908,7 +908,7 @@ ToDict(List<Tuple<K,V>>?)->Dict<K,V>?
Обратная функция - получить список ключей словаря [DictKeys](dict.md#dictkeys).
-### Примеры
+#### Примеры
```yql
SELECT
@@ -921,7 +921,7 @@ $l = AsList(1,1,2,2,3);
SELECT ToSet($l); -- {1,2,3}
```
-### Сигнатура
+#### Сигнатура
```yql
ToSet(List<T>)->Set<T>
@@ -932,14 +932,14 @@ ToSet(List<T>?)->Set<T>?
Строит список из кортежа, в котором типы элементов совместимы друг с другом. Для опционального кортежа на выходе получается опциональный список. Для NULL аргумента - NULL. Для пустого кортежа - EmptyList.
-### Примеры
+#### Примеры
```yql
$t = (1,2,3);
SELECT ListFromTuple($t); -- [1,2,3]
```
-### Сигнатура
+#### Сигнатура
```yql
ListFromTuple(Null)->Null
@@ -952,14 +952,14 @@ ListFromTuple(Tuple<T1,T2,...>?)->List<T>?
Строит кортеж из списка и явно указанной ширины кортежа. Все элементы кортежа будут иметь тот же тип, что и тип элемента списка. Если длина списка не соотвествует указанной ширине кортежа, будет возвращена ошибка. Для опционального списка на выходе получается опциональный кортеж. Для NULL аргумента - NULL.
-### Примеры
+#### Примеры
```yql
$l = [1,2,3];
SELECT ListToTuple($l, 3); -- (1,2,3)
```
-### Сигнатура
+#### Сигнатура
```yql
ListToTuple(Null,N)->Null
@@ -980,7 +980,7 @@ ListToTuple(List<T>?, N)->Tuple<T,T,...T>? -- ширина кортежа N
2. Размер выборки;
3. Опциональное выражение для получения ключа сортировки из элемента списка (по умолчанию сам элемент).
-### Сигнатура
+#### Сигнатура
```yql
ListTop(List<T>{Flags:AutoMap}, N)->List<T>
diff --git a/yql/essentials/docs/ru/builtins/struct.md b/yql/essentials/docs/ru/builtins/struct.md
index 6fdfd3475b..fb897bd19e 100644
--- a/yql/essentials/docs/ru/builtins/struct.md
+++ b/yql/essentials/docs/ru/builtins/struct.md
@@ -6,7 +6,7 @@
Попытка получить значение поля из структуры, а в случае его отсутствия среди полей или null в значении структуры использовать значение по умолчанию.
Тип `default_value` должен совпадать с типом поля `key` из структуры.
-### Сигнатура
+#### Сигнатура
```yql
TryMember(struct:Struct<...>, key:String, default_value:T) -> T
@@ -25,7 +25,7 @@ TryMember(struct:Struct<...>?, key:String, default_value:T) -> T?
{% endnote %}
-### Примеры
+#### Примеры
```yql
$struct = <|a:1|>;
@@ -46,7 +46,7 @@ SELECT
Добавление одного или нескольких новых полей в структуру. Возвращается новая раширенная структура. В случае возникновения дублей в наборе полей будет возвращена ошибка.
-### Сигнатура
+#### Сигнатура
```yql
ExpandStruct(struct:Struct<...>, value_1:T1 AS key_1:K, value_2:T2 AS key_2:K, ....) -> Struct<...>
@@ -57,7 +57,7 @@ ExpandStruct(struct:Struct<...>, value_1:T1 AS key_1:K, value_2:T2 AS key_2:K, .
* В первый аргумент передается исходная структура для расширения.
* Все остальные аргументы должны быть именованными, каждый аргумент добавляет новое поле и имя аргумента используется в роли имени поля (по аналогии с [AsStruct](basic.md#asstruct)).
-### Примеры
+#### Примеры
```yql
$struct = <|a:1|>;
@@ -75,7 +75,7 @@ SELECT
В случае возникновения дублей в наборе полей будет возвращена ошибка.
-### Сигнатура
+#### Сигнатура
```yql
AddMember(struct:Struct<...>, new_key:String, new_value:T) -> Struct<...>
@@ -87,7 +87,7 @@ AddMember(struct:Struct<...>, new_key:String, new_value:T) -> Struct<...>
2. new_key - имя нового поля;
3. new_value - значение нового поля.
-### Примеры
+#### Примеры
```yql
$struct = <|a:1|>;
@@ -103,7 +103,7 @@ SELECT
Удаление поля из структуры. Если указанного поля не существовало, будет возвращена ошибка.
-### Сигнатура
+#### Сигнатура
```yql
RemoveMember(struct:Struct<...>, key_to_delete:String) -> Struct<...>
@@ -114,7 +114,7 @@ RemoveMember(struct:Struct<...>, key_to_delete:String) -> Struct<...>
1. Исходная структура;
2. Имя поля для удаления
-### Примеры
+#### Примеры
```yql
$struct = <|a:1, b:2|>;
@@ -131,7 +131,7 @@ SELECT
Если указанного поля не существовало, в отличии от [RemoveMember](#removemember) ошибка возвращена не будет.
-### Сигнатура
+#### Сигнатура
```yql
ForceRemoveMember(struct:Struct<...>, key_to_delete:String) -> Struct<...>
@@ -142,7 +142,7 @@ ForceRemoveMember(struct:Struct<...>, key_to_delete:String) -> Struct<...>
1. Исходная структура;
2. Имя поля для удаления.
-### Примеры
+#### Примеры
```yql
$struct = <|a:1, b:2|>;
@@ -159,7 +159,7 @@ SELECT
Если какого-либо из полей не существовало, будет возвращена ошибка.
-### Сигнатура
+#### Сигнатура
```yql
ChooseMembers(struct:Struct<...>, list_of_keys:List<String>) -> Struct<...>
@@ -170,7 +170,7 @@ ChooseMembers(struct:Struct<...>, list_of_keys:List<String>) -> Struct<...>
1. Исходная структура;
2. Список имен полей.
-### Примеры
+#### Примеры
```yql
$struct = <|a:1, b:2, c:3|>;
@@ -187,7 +187,7 @@ SELECT
Если какого-либо из полей не существовало, будет возвращена ошибка.
-### Сигнатура
+#### Сигнатура
```yql
RemoveMembers(struct:Struct<...>, list_of_delete_keys:List<String>) -> Struct<...>
@@ -198,7 +198,7 @@ RemoveMembers(struct:Struct<...>, list_of_delete_keys:List<String>) -> Struct<..
1. Исходная структура;
2. Список имен полей.
-### Примеры
+#### Примеры
```yql
$struct = <|a:1, b:2, c:3|>;
@@ -215,7 +215,7 @@ SELECT
Если какого-либо из полей не существовало, то оно игнорируется.
-### Сигнатура
+#### Сигнатура
```yql
ForceRemoveMembers(struct:Struct<...>, list_of_delete_keys:List<String>) -> Struct<...>
@@ -226,7 +226,7 @@ ForceRemoveMembers(struct:Struct<...>, list_of_delete_keys:List<String>) -> Stru
1. Исходная структура;
2. Список имен полей.
-### Примеры
+#### Примеры
```yql
$struct = <|a:1, b:2, c:3|>;
@@ -243,7 +243,7 @@ SELECT
В случае возникновения дублей в результирующем наборе полей будет возвращена ошибка.
-### Сигнатура
+#### Сигнатура
```yql
CombineMembers(struct1:Struct<...>, struct2:Struct<...>, .....) -> Struct<...>
@@ -252,7 +252,7 @@ CombineMembers(struct1:Struct<...>?, struct2:Struct<...>?, .....) -> Struct<...>
Аргументы: две и более структуры.
-### Примеры
+#### Примеры
```yql
$struct1 = <|a:1, b:2|>;
@@ -270,7 +270,7 @@ SELECT
В случае возникновения дублей в результирующем наборе полей будет возвращена ошибка.
-### Сигнатура
+#### Сигнатура
```yql
FlattenMembers(prefix_struct1:Tuple<String, Struct<...>>, prefix_struct2:Tuple<String, Struct<...>>, ...) -> Struct<...>
@@ -278,7 +278,7 @@ FlattenMembers(prefix_struct1:Tuple<String, Struct<...>>, prefix_struct2:Tuple<S
Аргументы: два и более кортежа из двух элементов: префикс и структура.
-### Примеры
+#### Примеры
```yql
$struct1 = <|a:1, b:2|>;
@@ -294,7 +294,7 @@ SELECT
Возвращает неупорядоченный список имен полей (возможно, сняв один уровень опциональности) для единственного аргумента - структуры. Для `NULL` аргумента возвращается пустой список строк.
-### Сигнатура
+#### Сигнатура
```yql
StructMembers(struct:Struct<...>) -> List<String>
@@ -304,7 +304,7 @@ StructMembers(NULL) -> []
Аргумент: структура
-### Примеры
+#### Примеры
```yql
$struct = <|a:1, b:2|>;
@@ -317,7 +317,7 @@ SELECT
Переименовывает поля в переданной структуре. При этом исходное поле можно переименовать в несколько новых. Все поля, не упомянутые в переименовании как исходные, переносятся в результирующую структуру. Если нет какого-то исходного поля в списке для переименования, выдается ошибка. Для опциональной структуры либо `NULL` таким же является и результат.
-### Сигнатура
+#### Сигнатура
```yql
RenameMembers(struct:Struct<...>, rename_rules:List<Tuple<String, String>>) -> Struct<...>
@@ -328,7 +328,7 @@ RenameMembers(struct:Struct<...>, rename_rules:List<Tuple<String, String>>) -> S
1. Исходная структура;
2. Список имен полей в форме списка таплов: исходное имя, новое имя.
-### Примеры
+#### Примеры
```yql
$struct = <|a:1, b:2|>;
@@ -340,7 +340,7 @@ SELECT
Переименовывает поля в переданной структуре. При этом исходное поле можно переименовать в несколько новых. Все поля, не упомянутые в переименовании как исходные, переносятся в результирующую структуру. Если нет какого-то исходного поля в списке для переименования, оно игнорируется. Для опциональной структуры либо `NULL` таким же является и результат.
-### Сигнатура
+#### Сигнатура
```yql
ForceRenameMembers(struct:Struct<...>, rename_rules:List<Tuple<String, String>>) -> Struct<...>
@@ -351,7 +351,7 @@ ForceRenameMembers(struct:Struct<...>, rename_rules:List<Tuple<String, String>>)
1. Исходная структура;
2. Список имен полей в форме списка таплов: исходное имя, новое имя.
-### Примеры
+#### Примеры
```yql
$struct = <|a:1, b:2|>;
@@ -363,7 +363,7 @@ SELECT
Возвращает неупорядоченный список таплов из имени поля и значения. Для `NULL` аргумента возвращается `EmptyList`. Можно использовать только в тех случаях, когда типы элементов в структуре одинаковы или совместимы. Для опциональной структуры возвращает опциональный список.
-### Сигнатура
+#### Сигнатура
```yql
GatherMembers(struct:Struct<...>) -> List<Tuple<String,V>>
@@ -373,7 +373,7 @@ GatherMembers(NULL) -> []
Аргумент: структура
-### Примеры
+#### Примеры
```yql
$struct = <|a:1, b:2|>;
@@ -386,7 +386,7 @@ SELECT
Создает структуру с заданным списком полей и применяет к ней заданный список исправлений в формате (имя поля, значение). Все типы полей результирующей структуры совпадают, и равны типу значений в списке исправлений с добавленной опциональностью (если еще не были таковыми). Если поле не было упомянуто среди списка редактируемых полей, оно возвращается как `NULL`. Среди всех исправлений по одному полю сохраняется последнее. Если в списке исправлений встречается поле, которого нет в списке ожидаемых полей, выдается ошибка.
-### Сигнатура
+#### Сигнатура
```yql
SpreadMembers(list_of_tuples:List<Tuple<String, T>>, result_keys:List<String>) -> Struct<...>
@@ -397,7 +397,7 @@ SpreadMembers(list_of_tuples:List<Tuple<String, T>>, result_keys:List<String>) -
1. Список таплов: имя поля, значение поля;
2. Список всех возможных имен полей в структуре.
-### Примеры
+#### Примеры
```yql
SELECT
@@ -408,7 +408,7 @@ SELECT
Создает структуру с заданным списком полей и применяет к ней заданный список исправлений в формате (имя поля, значение). Все типы полей результирующей структуры совпадают, и равны типу значений в списке исправлений с добавленной опциональностью (если еще не были таковыми). Если поле не было упомянуто среди списка редактируемых полей, оно возвращается как `NULL`. Среди всех исправлений по одному полю сохраняется последнее. Если в списке исправлений встречается поле, которого нет в списке ожидаемых полей, то это исправление игнорируется.
-### Сигнатура
+#### Сигнатура
```yql
ForceSpreadMembers(list_of_tuples:List<Tuple<String, T>>, result_keys:List<String>) -> Struct<...>
@@ -419,7 +419,7 @@ ForceSpreadMembers(list_of_tuples:List<Tuple<String, T>>, result_keys:List<Strin
1. Список таплов: имя поля, значение поля;
2. Список всех возможных имен полей в структуре.
-### Примеры
+#### Примеры
```yql
SELECT
@@ -435,7 +435,7 @@ SELECT
* `StructDifference` — поля которые есть в left, но которых нет в right;
* `StructSymmetricDifference` — все поля, которые есть только в одной из структур.
-### Сигнатуры
+#### Сигнатуры
```yql
StructUnion(left:Struct<...>, right:Struct<...>[, mergeLambda:(name:String, l:T1?, r:T2?)->T])->Struct<...>
@@ -450,7 +450,7 @@ StructSymmetricDifference(left:Struct<...>, right:Struct<...>)->Struct<...>
2. `right` - вторая структура;
3. `mergeLambda` - _(опционально)_ позволяет задать функцию для объединения полей (аргументы: имя поля, `Optional` значение поля в первой структуре, `Optional` значение поля во второй структуре - аргументы принимают значение `Nothing<T?>` в случае отсутствия соответствующего поля); по умолчанию выбирается значение поля из первой структуры, а если в первой отсутствует — из второй.
-### Примеры
+#### Примеры
```yql
$merge = ($name, $l, $r) -> {
diff --git a/yql/essentials/docs/ru/builtins/types.md b/yql/essentials/docs/ru/builtins/types.md
index ec05c53b53..2d6eb6548d 100644
--- a/yql/essentials/docs/ru/builtins/types.md
+++ b/yql/essentials/docs/ru/builtins/types.md
@@ -13,7 +13,7 @@ SELECT CAST($foo AS ListType($itemType)); -- каст $foo к типу List<$it
## FormatType {#formattype}
-### Сигнатура
+#### Сигнатура
```yql
FormatType(Type)->String
@@ -24,7 +24,7 @@ FormatType(TypeHandle)->String
## FormatTypeDiff и FormatTypeDiffPretty {#formattypediff}
-### Сигнатура
+#### Сигнатура
```yql
FormatTypeDiff(Type, Type)->String
@@ -38,7 +38,7 @@ FormatTypeDiffPretty(TypeHandle, TypeHandle)->String
## ParseType {#parsetype}
-### Сигнатура
+#### Сигнатура
```yql
ParseType(String)->Type
@@ -46,7 +46,7 @@ ParseType(String)->Type
Построение типа по строке с его описанием. [Документация по её формату](../types/type_string.md).
-### Примеры
+#### Примеры
```yql
SELECT FormatType(ParseType("List<Int32>")); -- List<int32>
@@ -54,7 +54,7 @@ SELECT FormatType(ParseType("List<Int32>")); -- List<int32>
## TypeOf {#typeof}
-### Сигнатура
+#### Сигнатура
```yql
TypeOf(<any expression>)->Type
@@ -62,7 +62,7 @@ TypeOf(<any expression>)->Type
Получение типа значения, переданного в аргумент.
-### Примеры
+#### Примеры
```yql
SELECT FormatType(TypeOf("foo")); -- String
@@ -74,7 +74,7 @@ SELECT FormatType(TypeOf(AsTuple(1, 1u))); -- Tuple<Int32,Uint32>
## InstanceOf {#instanceof}
-### Сигнатура
+#### Сигнатура
```yql
InstanceOf(Type)->объект типа Type
@@ -84,7 +84,7 @@ InstanceOf(Type)->объект типа Type
InstanceOf можно использовать только в том случае, если результат выражения в котором InstanceOf используется зависит от типа InstanceOf, но не от значения.
В противном случае операция будет завершена с ошибкой.
-### Примеры
+#### Примеры
```yql
SELECT InstanceOf(ParseType("Int32")) + 1.0; -- ошибка (Can't execute InstanceOf): результат зависит от (неопределенного) значения InstanceOf
@@ -96,7 +96,7 @@ SELECT FormatType(TypeOf(
## DataType {#datatype}
-### Сигнатура
+#### Сигнатура
```yql
DataType(String, [String, ...])->Type
@@ -105,7 +105,7 @@ DataType(String, [String, ...])->Type
Возвращает тип для [примитивных типов данных](../types/primitive.md) по его имени.
Для некоторых типов (например Decimal) необходимо передавать параметры типа в качестве дополнительных аргументов.
-### Примеры
+#### Примеры
```yql
SELECT FormatType(DataType("Bool")); -- Bool
@@ -114,7 +114,7 @@ SELECT FormatType(DataType("Decimal","5","1")); -- Decimal(5,1)
## OptionalType {#optionaltype}
-### Сигнатура
+#### Сигнатура
```yql
OptionalType(Type)->опциональный Type
@@ -122,7 +122,7 @@ OptionalType(Type)->опциональный Type
Добавляет в переданный тип возможность содержать `NULL`.
-### Примеры
+#### Примеры
```yql
SELECT FormatType(OptionalType(DataType("Bool"))); -- Bool?
@@ -131,7 +131,7 @@ SELECT FormatType(OptionalType(ParseType("List<String?>"))); -- List<String?>?
## ListType и StreamType {#listtype}
-### Сигнатура
+#### Сигнатура
```yql
ListType(Type)->тип списка с элементами типа Type
@@ -140,7 +140,7 @@ StreamType(Type)->тип потока с элементами типа Type
Строит тип списка или потока по переданному типу элемента.
-### Примеры
+#### Примеры
```yql
SELECT FormatType(ListType(DataType("Bool"))); -- List<Bool>
@@ -148,7 +148,7 @@ SELECT FormatType(ListType(DataType("Bool"))); -- List<Bool>
## DictType {#dicttype}
-### Сигнатура
+#### Сигнатура
```yql
DictType(Type, Type)->тип словаря
@@ -156,7 +156,7 @@ DictType(Type, Type)->тип словаря
Строит тип словаря по переданным типам ключа (первый аргумент) и значения (второй аргумент).
-### Примеры
+#### Примеры
```yql
SELECT FormatType(DictType(
@@ -167,7 +167,7 @@ SELECT FormatType(DictType(
## TupleType {#tupletype}
-### Сигнатура
+#### Сигнатура
```yql
TupleType(Type, ...)->тип кортежа
@@ -175,7 +175,7 @@ TupleType(Type, ...)->тип кортежа
Строит тип кортежа по переданным типам элементов.
-### Примеры
+#### Примеры
```yql
SELECT FormatType(TupleType(
@@ -187,7 +187,7 @@ SELECT FormatType(TupleType(
## StructType {#structtype}
-### Сигнатура
+#### Сигнатура
```yql
StructType(Type AS ElementName1, Type AS ElementName2, ...)->тип структуры
@@ -195,7 +195,7 @@ StructType(Type AS ElementName1, Type AS ElementName2, ...)->тип структ
Строит тип структуры по переданным типам элементов. Для указания имен элементов используется стандартный синтаксис именованных аргументов.
-### Примеры
+#### Примеры
```yql
SELECT FormatType(StructType(
@@ -206,7 +206,7 @@ SELECT FormatType(StructType(
## VariantType {#varianttype}
-### Сигнатура
+#### Сигнатура
```yql
VariantType(StructType)->тип варианта над структурой
@@ -215,7 +215,7 @@ VariantType(TupleType)->тип варианта над кортежем
Возвращает тип варианта по низлежащему типу (структуры или кортежа).
-### Примеры
+#### Примеры
```yql
SELECT FormatType(VariantType(
@@ -225,7 +225,7 @@ SELECT FormatType(VariantType(
## ResourceType {#resourcetype}
-### Сигнатура
+#### Сигнатура
```yql
ResourceType(String)->тип ресурса
@@ -233,7 +233,7 @@ ResourceType(String)->тип ресурса
Возвращает тип [ресурса](../types/special.md) по переданной строковой метке.
-### Примеры
+#### Примеры
```yql
SELECT FormatType(ResourceType("Foo")); -- Resource<'Foo'>
@@ -241,7 +241,7 @@ SELECT FormatType(ResourceType("Foo")); -- Resource<'Foo'>
## CallableType {#callabletype}
-### Сигнатура
+#### Сигнатура
```yql
CallableType(Uint32, Type, [Type, ...])->тип вызываемого значения
@@ -253,7 +253,7 @@ CallableType(Uint32, Type, [Type, ...])->тип вызываемого знач
2. Тип результата.
3. Все последующие аргументы CallableType трактуются как типы аргументов вызываемого значения со сдвигом на два обязательных (например, третий аргумент CallableType описывает тип первого аргумента вызываемого значения).
-### Примеры
+#### Примеры
```yql
SELECT FormatType(CallableType(
@@ -266,7 +266,7 @@ SELECT FormatType(CallableType(
## GenericType, UnitType и VoidType {#generictype}
-### Сигнатура
+#### Сигнатура
```yql
GenericType()->тип
@@ -276,7 +276,7 @@ VoidType()->тип
Возвращают одноименные [специальные типы данных](../types/special.md). Аргументов нет, так как они не параметризуются.
-### Примеры
+#### Примеры
```yql
SELECT FormatType(VoidType()); -- Void
@@ -284,7 +284,7 @@ SELECT FormatType(VoidType()); -- Void
## OptionalItemType, ListItemType и StreamItemType {#optionalitemtype}
-### Сигнатура
+#### Сигнатура
```yql
OptionalItemType(OptionalType)->тип элемента опционального типа
@@ -296,7 +296,7 @@ StreamItemType(StreamType)->тип элемента потокового тип
Если этим функциям передается хендл типа, то выполняют действие, обратное [OptionalTypeHandle](#optionaltypehandle), [ListTypeHandle](#list-stream-typehandle) и [StreamTypeHandle](#list-stream-typehandle) - возвращают хендл типа элемента по хендлу типа соответствующего контейнера.
-### Примеры
+#### Примеры
```yql
SELECT FormatType(ListItemType(
@@ -312,7 +312,7 @@ SELECT FormatType(ListItemType(
## DictKeyType и DictPayloadType {#dictkeytype}
-### Сигнатура
+#### Сигнатура
```yql
DictKetType(DictType)->тип ключа словаря
@@ -321,7 +321,7 @@ DictPayloadType(DictType)->тип значения словаря
Возвращают тип ключа или значения по типу словаря.
-### Примеры
+#### Примеры
```yql
SELECT FormatType(DictKeyType(
@@ -331,7 +331,7 @@ SELECT FormatType(DictKeyType(
## TupleElementType {#tupleelementtype}
-### Сигнатура
+#### Сигнатура
```yql
TupleElementType(TupleType, String)->тип элемента кортежа
@@ -339,7 +339,7 @@ TupleElementType(TupleType, String)->тип элемента кортежа
Возвращает тип элемента кортежа по типу кортежа и индексу элемента (индекс с нуля).
-### Примеры
+#### Примеры
```yql
SELECT FormatType(TupleElementType(
@@ -349,7 +349,7 @@ SELECT FormatType(TupleElementType(
## StructMemberType {#structmembertype}
-### Сигнатура
+#### Сигнатура
```yql
StructMemberType(StructType, String)->тип элемента структуры
@@ -357,7 +357,7 @@ StructMemberType(StructType, String)->тип элемента структуры
Возвращает тип элемента структуры по типу структуры и имени элемента.
-### Примеры
+#### Примеры
```yql
SELECT FormatType(StructMemberType(
@@ -367,7 +367,7 @@ SELECT FormatType(StructMemberType(
## CallableResultType и CallableArgumentType {#callableresulttype}
-### Сигнатура
+#### Сигнатура
```yql
CallableResultType(CallableType)->тип результата вызываемого значения
@@ -376,7 +376,7 @@ CallableArgumentType(CallableType, Uint32)->тип аругмента вызыв
`CallableResultType` возвращает тип результата по типу вызываемого значения, а `CallableArgumentType` — тип аргумента по типу вызываемого значения и его индексу (индекс с нуля).
-### Примеры
+#### Примеры
```yql
$callable_type = ParseType("(String,Bool)->Double");
@@ -391,7 +391,7 @@ FormatType(CallableArgumentType(
## VariantUnderlyingType {#variantunderlyingtype}
-### Сигнатура
+#### Сигнатура
```yql
VariantUnderlyingType(VariantType)->низлежащий тип варианта
@@ -401,7 +401,7 @@ VariantUnderlyingType(VariantType)->низлежащий тип варианта
Если этой функции передается хендл типа, то она выполняет действие, обратное [VariantTypeHandle](#varianttypehandle) — возвращает хендл низлежащего типа по хендлу типа варианта.
-### Примеры
+#### Примеры
```yql
SELECT FormatType(VariantUnderlyingType(
diff --git a/yql/essentials/docs/ru/builtins/window.md b/yql/essentials/docs/ru/builtins/window.md
index 357400d381..fbaaa95487 100644
--- a/yql/essentials/docs/ru/builtins/window.md
+++ b/yql/essentials/docs/ru/builtins/window.md
@@ -9,7 +9,7 @@
Все [агрегатные функции](aggregation.md) также могут использоваться в роли оконных.
В этом случае на каждой строке оказывается результат агрегации, полученный на множестве строк из [рамки окна](../syntax/window.md#frame).
-### Примеры
+#### Примеры
```yql
SELECT
@@ -26,13 +26,13 @@ WINDOW
Номер строки в рамках [раздела](../syntax/window.md#partition). Без аргументов.
-### Сигнатура
+#### Сигнатура
```yql
ROW_NUMBER()->Uint64
```
-### Примеры
+#### Примеры
```yql
SELECT
@@ -46,14 +46,14 @@ WINDOW w AS (ORDER BY key);
Доступ к значению из строки [раздела](../syntax/window.md#partition), отстающей (`LAG`) или опережающей (`LEAD`) текущую на фиксированное число. В первом аргументе указывается выражение, к которому необходим доступ, а во втором — отступ в строках. Отступ можно не указывать, по умолчанию используется соседняя строка — предыдущая или следующая, соответственно, то есть подразумевается 1. В строках, для которых нет соседей с заданным расстоянием (например `LAG(expr, 3)` в первой и второй строках раздела), возвращается `NULL`.
-### Сигнатура
+#### Сигнатура
```yql
LEAD(T[,Int32])->T?
LAG(T[,Int32])->T?
```
-### Примеры
+#### Примеры
```yql
SELECT
@@ -94,14 +94,14 @@ item odd lag1
Опционально перед `OVER` может указываться дополнительный модификатор `IGNORE NULLS`, который меняет поведение функций на первое или последнее **не пустое** (то есть не `NULL`) значение среди строк рамки окна. Антоним этого модификатора — `RESPECT NULLS` является поведением по умолчанию и может не указываться.
-### Сигнатура
+#### Сигнатура
```yql
FIRST_VALUE(T)->T?
LAST_VALUE(T)->T?
```
-### Примеры
+#### Примеры
```yql
SELECT
@@ -123,13 +123,13 @@ WINDOW w AS (ORDER BY key);
Опционально перед `OVER` может указываться дополнительный модификатор `IGNORE NULLS`, который приводит к пропуску строк с NULL в значении первого аргумента. Антоним этого модификатора — `RESPECT NULLS` является поведением по умолчанию и может не указываться.
-### Сигнатура
+#### Сигнатура
```yql
NTH_VALUE(T,N)->T?
```
-### Примеры
+#### Примеры
```yql
SELECT
@@ -159,7 +159,7 @@ WINDOW w AS (ORDER BY key);
{% endnote %}
-### Сигнатура
+#### Сигнатура
```yql
RANK([T])->Uint64
@@ -167,7 +167,7 @@ DENSE_RANK([T])->Uint64
PERCENT_RANK([T])->Double
```
-### Примеры
+#### Примеры
```yql
SELECT
@@ -195,13 +195,13 @@ WINDOW w AS (ORDER BY my_column);
Распределяет строки упорядоченного [раздела](../syntax/window.md#partition) в заданное количество групп. Группы нумеруются, начиная с единицы. Для каждой строки функция NTILE возвращает номер группы,которой принадлежит строка.
-### Сигнатура
+#### Сигнатура
```yql
NTILE(Uint64)->Uint64
```
-### Примеры
+#### Примеры
```yql
SELECT
@@ -215,13 +215,13 @@ WINDOW w AS (ORDER BY key);
Возвращает относительную позицию (> 0 и <= 1) строки в рамках [раздела](../syntax/window.md#partition). Без аргументов.
-### Сигнатура
+#### Сигнатура
```yql
CUME_DIST()->Double
```
-### Примеры
+#### Примеры
```yql
SELECT
diff --git a/yql/essentials/docs/ru/syntax/action.md b/yql/essentials/docs/ru/syntax/action.md
index eab50e7bca..1a30913279 100644
--- a/yql/essentials/docs/ru/syntax/action.md
+++ b/yql/essentials/docs/ru/syntax/action.md
@@ -4,7 +4,7 @@
Задает именованное действие, которое представляют собой параметризуемый блок из нескольких выражений верхнего уровня.
-### Синтаксис
+#### Синтаксис
1. `DEFINE ACTION` — объявление действия.
1. [Имя действия](expressions.md#named-nodes), по которому объявляемое действие доступно далее для вызова.
@@ -19,7 +19,7 @@
Выполняет `ACTION` с указанными параметрами.
-### Синтаксис
+#### Синтаксис
1. `DO` — выполнение действия.
1. Именованное выражение, по которому объявлено действие.
@@ -33,7 +33,7 @@
{% endnote %}
-### Пример
+#### Пример
```yql
DEFINE ACTION $hello_world($name, $suffix?) AS
@@ -51,7 +51,7 @@ DO $hello_world(NULL, "Earth");
Выполнение действия без его объявления (анонимное действие).
-### Синтаксис
+#### Синтаксис
1. `BEGIN`;
1. Список выражений верхнего уровня;
@@ -59,7 +59,7 @@ DO $hello_world(NULL, "Earth");
Анонимное действие не может содержать параметров.
-### Пример
+#### Пример
```yql
DO BEGIN
@@ -86,7 +86,7 @@ END DO
4. [DO](#do) с именем и параметрами действия или анонимным действием, в параметрах можно использовать как текущий элемент из первого пункта, так и любые объявленные выше именованные выражения, в том числе сам список.
5. Опционально `ELSE` и следом второе `DO` для ситуации, когда список пуст.
-### Примеры
+#### Примеры
```yql
DEFINE ACTION $hello() AS
diff --git a/yql/essentials/docs/ru/syntax/expressions.md b/yql/essentials/docs/ru/syntax/expressions.md
index 4c0d3f2248..e0e424a38e 100644
--- a/yql/essentials/docs/ru/syntax/expressions.md
+++ b/yql/essentials/docs/ru/syntax/expressions.md
@@ -10,7 +10,7 @@
Не следует путать этот оператор с логическим «или», в SQL оно обозначается ключевым словом `OR`. Также не стоит пытаться делать конкатенацию через `+`.
-### Примеры
+#### Примеры
```yql
SELECT "fo" || "o";
@@ -37,7 +37,7 @@ SELECT "fo" || "o";
Наиболее популярный способ использования ключевых слов `LIKE` и `REGEXP` — фильтрация таблицы в выражениях с `WHERE`. Однако ограничения на использование шаблонов именно в этом контексте нет, и их можно использовать в большинстве контекстов при работе со строками, наравне, например, с конкатенацией с помощью `||`.
-### Примеры
+#### Примеры
```yql
SELECT * FROM my_table
@@ -159,7 +159,7 @@ FROM my_table;
Проверка на пустое значение (`NULL`). Так как `NULL` является особым значением, которое [ничему не равно](../types/optional.md#null_expr), то обычные [операторы сравнения](#comparison-operators) для этой задачи не подходят.
-### Примеры
+#### Примеры
```yql
SELECT key FROM my_table
@@ -189,7 +189,7 @@ WHERE value IS NOT NULL;
`x BETWEEN SYMMETRIC a AND b` эквивалентно `(x BETWEEN a AND b) OR (x BETWEEN b AND a)`.
* `NOT` инвертирует результат проверки.
-### Примеры
+#### Примеры
```yql
SELECT * FROM my_table
@@ -220,7 +220,7 @@ WHERE key NOT BETWEEN SYMMETRIC 20 AND 10;
Большие списки значений стоит прикладывать к запросу через URL и использовать функцию [ParseFile](../builtins/basic.md#parsefile).
-### Примеры
+#### Примеры
```yql
SELECT column IN (1, 2, 3)
@@ -255,7 +255,7 @@ SELECT * FROM my_table WHERE
* Указание именованных аргументов при вызове функций.
* При явном приведении типов данных для указания целевого типа, см. [CAST](#cast).
-### Примеры
+#### Примеры
```yql
SELECT key AS k FROM my_table;
@@ -281,7 +281,7 @@ FROM my_table;
{% include [decimal_args](../_includes/decimal_args.md) %}
-### Примеры
+#### Примеры
{% include [cast_examples](../_includes/cast_examples.md) %}
@@ -290,7 +290,7 @@ FROM my_table;
Выполняет побитное преобразование целочисленного значения к указанному целочисленному типу. Преобразование всегда успешно, но может потерять точность или старшие биты.
-### Примеры
+#### Примеры
```yql
SELECT
@@ -313,7 +313,7 @@ SELECT
Так как синтаксис достаточно громоздкий, зачастую удобнее пользоваться встроенной функцией [IF](../builtins/basic.md#if).
-### Примеры
+#### Примеры
```yql
SELECT
@@ -390,7 +390,7 @@ import utils symbols $sqrt as $_; --- ошибка: Can not import anonymous nam
{% endnote %}
-### Примеры
+#### Примеры
```yql
$multiplier = 712;
@@ -509,7 +509,7 @@ SELECT * FROM $merge_dict("Input", $dict); -- $dict - шаблон позапр
Один или более последних параметров lambda могут быть помечены вопросиком как необязательные — если они не были указаны при вызове lambda, то им будет присвоено значение `NULL`.
-### Примеры
+#### Примеры
```yql
$f = ($y) -> {
@@ -542,7 +542,7 @@ SELECT $f("prefix_", "whatever");
При использовании этого синтаксиса для обращения к контейнерам в столбцах таблиц обязательно нужно указывать полное имя столбца, включая имя или алиас таблицы через точку (см. первый пример ниже).
-### Примеры
+#### Примеры
```yql
SELECT
diff --git a/yql/essentials/docs/ru/syntax/flatten.md b/yql/essentials/docs/ru/syntax/flatten.md
index 7f5c2a800e..0c9be54980 100644
--- a/yql/essentials/docs/ru/syntax/flatten.md
+++ b/yql/essentials/docs/ru/syntax/flatten.md
@@ -22,7 +22,7 @@
|d|2|
-### Пример
+#### Пример
```yql
$sample = AsList(
@@ -39,7 +39,7 @@ SELECT value, id FROM as_table($sample) FLATTEN BY (value);
* Когда по ячейкам из столбца-контейнера необходимо вывести статистику (например, через [`GROUP BY`](group_by.md)).
* Когда в ячейках столбца-контейнера хранятся идентификаторы из другой таблицы, которую нужно присоединить с помощью [`JOIN`](join.md).
-### Синтаксис
+#### Синтаксис
* `FLATTEN BY` указывается после `FROM`, но перед `GROUP BY`, если `GROUP BY` присутствует в запросе.
* Тип столбца-результата зависит от типа исходного столбца:
@@ -123,7 +123,7 @@ SELECT * FROM (
Имена исходных столбцов-структур не используются и не возвращаются в результате. Имена элементов структур не должны повторяться в исходных столбцах.
-### Пример
+#### Пример
```yql
SELECT x, y, z
diff --git a/yql/essentials/docs/ru/syntax/group_by.md b/yql/essentials/docs/ru/syntax/group_by.md
index 6d0732e7e0..4e1acc5896 100644
--- a/yql/essentials/docs/ru/syntax/group_by.md
+++ b/yql/essentials/docs/ru/syntax/group_by.md
@@ -2,7 +2,7 @@
Группирует результаты `SELECT` по значениям указанных столбцов или выражений. Вместе с `GROUP BY` часто применяются [агрегатные функции](../builtins/aggregation.md) (`COUNT`, `MAX`, `MIN`, `SUM`, `AVG`) для выполнения вычислений в каждой группе.
-### Синтаксис
+#### Синтаксис
```yql
SELECT -- В SELECT можно использовать:
@@ -32,7 +32,7 @@ GROUP BY
Также в YQL доступен механизм фабрик агрегатных функций, реализованный с помощью функций [`AGGREGATION_FACTORY`](../builtins/basic.md#aggregationfactory) и [`AGGREGATE_BY`](../builtins/aggregation.md#aggregateby).
-### Примеры
+#### Примеры
```yql
SELECT key, COUNT(*) FROM my_table
@@ -106,7 +106,7 @@ GROUP BY user, SessionWindow(<time_expr>, <timeout_expr>) AS session_start
С помощью расширенного варианта SessionWindow можно решить, например, такую задачу: разделить партицию на сессии как в варианте SessionWindow с двумя аргументами, но с ограничением максимальной длины сессии некоторой константой:
-### Пример
+#### Пример
```yql
$max_len = 1000; -- максимальная длина сессии
@@ -135,7 +135,7 @@ GROUP BY user, SessionWindow(ts, $init, $update, $calculate) AS session_start
Результаты вычисления агрегатной функции в виде промежуточных итогов для групп и общих итогов для отдельных столбцов или всей таблицы.
-### Синтаксис
+#### Синтаксис
```yql
SELECT
@@ -164,7 +164,7 @@ GROUP BY
* `0` — `NULL` для исходного пустого значения.
* `1` — `NULL`, добавленный для промежуточного или общего итога.
-### Пример
+#### Пример
```yql
SELECT
@@ -215,7 +215,7 @@ GROUP BY
{% endnote %}
-### Пример
+#### Пример
```yql
SELECT
@@ -236,7 +236,7 @@ LIMIT 3;
В отличие от обычного GROUP BY, отключается стадия Map-side combiner и дополнительные Reduce для каждого поля с [DISTINCT](#distinct) агрегацией.
-### Пример
+#### Пример
```yql
SELECT
@@ -253,7 +253,7 @@ LIMIT 3;
Фильтрация выборки `SELECT` по результатам вычисления [агрегатных функций](../builtins/aggregation.md). Синтаксис аналогичен конструкции [`WHERE`](select/where.md).
-### Пример
+#### Пример
```yql
SELECT
diff --git a/yql/essentials/docs/ru/syntax/join.md b/yql/essentials/docs/ru/syntax/join.md
index eada7b163b..bcbdd9a465 100644
--- a/yql/essentials/docs/ru/syntax/join.md
+++ b/yql/essentials/docs/ru/syntax/join.md
@@ -56,7 +56,7 @@ WHERE ...
1. `USING (column_name)`. Используется при наличии в исходной и присоединяемой выборках одноименной колонки, равенство значений в которой является условием объединения.
2. `ON (equality_conditions)`. Позволяет задать условие равенства значений колонок или выражений над колонками исходной и присоединяемой выборок, или несколько таких условий, объединенных по `and`.
-### Примеры
+#### Примеры
```yql
SELECT a.value as a_value, b.value as b_value
diff --git a/yql/essentials/docs/ru/syntax/select/union.md b/yql/essentials/docs/ru/syntax/select/union.md
index ff5c0da5a9..037a71ed74 100644
--- a/yql/essentials/docs/ru/syntax/select/union.md
+++ b/yql/essentials/docs/ru/syntax/select/union.md
@@ -6,7 +6,7 @@
Поведение идентично последовательному исполнению `UNION ALL` и `SELECT DISTINCT *`.
См. [UNION ALL](#union-all) для информации о деталях поведения.
-### Примеры
+#### Примеры
```yql
SELECT key FROM T1
@@ -40,7 +40,7 @@ SELECT key FROM T2 -- возвращает таблицу различных к
Порядок выходных колонок в этом режиме совпадает с порядком колонок первого входа.
-### Примеры
+#### Примеры
```yql
SELECT 1 AS x
diff --git a/yql/essentials/docs/ru/syntax/subquery.md b/yql/essentials/docs/ru/syntax/subquery.md
index 6c068f05d2..735bf35219 100644
--- a/yql/essentials/docs/ru/syntax/subquery.md
+++ b/yql/essentials/docs/ru/syntax/subquery.md
@@ -33,7 +33,7 @@ $out1, $out2 = PROCESS $mySubquery($myParam1, $myParam2);
-- используем далее $out1 и $out2 как отдельные таблицы.
```
-### Примеры
+#### Примеры
```yql
DEFINE SUBQUERY $hello_world($name, $suffix?) AS
@@ -129,7 +129,7 @@ SELECT * FROM $j;
* `SubqueryMerge` использует те же ограничения, что и `SubqueryExtend`, а также выдает сортированный результат в случае если все подзапросы одинаково отсортированны;
* `SubqueryUnionMerge` использует те же ограничения, что и `SubqueryUnionAll`, а также выдает сортированный результат в случае если все подзапросы одинаково отсортированны.
-### Примеры
+#### Примеры
```yql
DEFINE SUBQUERY $sub1() as
@@ -158,7 +158,7 @@ PROCESS $s();
* `SubqueryMergeFor` использует те же ограничения, что и `SubqueryExtendFor`, а также выдает сортированный результат в случае если все подзапросы одинаково отсортированны;
* `SubqueryUnionMergeFor` использует те же ограничения, что и `SubqueryUnionAllFor`, а также выдает сортированный результат в случае если все подзапросы одинаково отсортированны.
-### Примеры
+#### Примеры
```yql
DEFINE SUBQUERY $sub($i) as
@@ -178,7 +178,7 @@ PROCESS $s();
И выполняют построение нового шаблона запроса без параметров, в котором выполняется сортировка или добавляется указание о наличии сортировки к результату. Для использования полученного шаблона запроса необходимо использовать функцию `PROCESS`, так как при использовании `SELECT` сортировка будет проигнорирована.
-### Примеры
+#### Примеры
```yql
DEFINE SUBQUERY $sub() as
diff --git a/yql/essentials/docs/ru/syntax/values.md b/yql/essentials/docs/ru/syntax/values.md
index 8314c273b6..13a027d7be 100644
--- a/yql/essentials/docs/ru/syntax/values.md
+++ b/yql/essentials/docs/ru/syntax/values.md
@@ -21,7 +21,7 @@ SELECT expr_21, expr_22, ..., expr_2k UNION ALL
SELECT expr_n1, expr_n2, ..., expr_nk;
```
-### Пример
+#### Пример
```yql
VALUES (1,2), (3,4);
diff --git a/yql/essentials/docs/ru/syntax/window.md b/yql/essentials/docs/ru/syntax/window.md
index b3d80305b1..1c081d1d10 100644
--- a/yql/essentials/docs/ru/syntax/window.md
+++ b/yql/essentials/docs/ru/syntax/window.md
@@ -90,7 +90,7 @@ WINDOW
[Список доступных оконных функций](../builtins/window.md)
-### Примеры
+#### Примеры
```yql
SELECT
diff --git a/yql/essentials/docs/ru/types/optional.md b/yql/essentials/docs/ru/types/optional.md
index cfbf13ee37..cf14ff1385 100644
--- a/yql/essentials/docs/ru/types/optional.md
+++ b/yql/essentials/docs/ru/types/optional.md
@@ -14,7 +14,7 @@
`Optional` (nullable) является не свойством типа данных или колонки, а одним из видов [контейнеров](containers.md), которые могут быть произвольным образом вложены друг в друга. Так, например, столбец с типом `Optional<Optional<Boolean>>` может принимать 4 значения - `NULL` всего контейнера, `NULL` внутреннего контейнера, `TRUE` и `FALSE`. Описанный тип отличается от `List<List<Boolean>>` тем, что роль пустого списка в нем играет `NULL` и отсутствует возможность положить больше одного содержательного элемента. Также значения типа `Optional<Optional<T>>` возвращаются в качестве результата поиска по ключу в словаре `Dict(k,v)` со значениями типа `Optional<T>`. Такой тип данных результата позволяет отличать лежащий в словаре `NULL` от ситуации отсутствия ключа.
-### Пример
+#### Пример
```yql
$dict = {"a":1, "b":null};
@@ -33,7 +33,7 @@ null
Литерал `NULL` имеет отдельный сингулярный тип `Null` и может быть неявно сконвертирован к любому опциональному типу (в том числе и вложенному `Optional<Optional<...Optional<T>...>>`). В ANSI SQL `NULL` имеет семантику "неизвестное значение" – поэтому логические и арифметические операции с `NULL` или с незаполненными `Optional` имеют некоторые особенности.
-### Примеры
+#### Примеры
```yql
SELECT
diff --git a/yql/essentials/docs/ru/udf/list/datetime.md b/yql/essentials/docs/ru/udf/list/datetime.md
index 56b4b056c1..aee9628c40 100644
--- a/yql/essentials/docs/ru/udf/list/datetime.md
+++ b/yql/essentials/docs/ru/udf/list/datetime.md
@@ -21,7 +21,7 @@
Преобразование из простого типа во внутреннее представление. Всегда успешно при непустом входе.
-### Список функций
+#### Список функций
* `DateTime::Split(Date{Flags:AutoMap}) -> Resource<TM>`
* `DateTime::Split(Datetime{Flags:AutoMap}) -> Resource<TM>`
@@ -36,7 +36,7 @@
Сборка простого типа из внутреннего представления. Всегда успешна при непустом входе.
-### Список функций
+#### Список функций
* `DateTime::MakeDate(Resource<TM>{Flags:AutoMap}) -> Date`
* `DateTime::MakeDatetime(Resource<TM>{Flags:AutoMap}) -> Datetime`
@@ -45,7 +45,7 @@
* `DateTime::MakeTzDatetime(Resource<TM>{Flags:AutoMap}) -> TzDatetime`
* `DateTime::MakeTzTimestamp(Resource<TM>{Flags:AutoMap}) -> TzTimestamp`
-### Примеры
+#### Примеры
```yql
SELECT
@@ -63,7 +63,7 @@ SELECT
Взятие компоненты внутреннего представления.
-### Список функций
+#### Список функций
* `DateTime::GetYear(Resource<TM>{Flags:AutoMap}) -> Uint16`
* `DateTime::GetDayOfYear(Resource<TM>{Flags:AutoMap}) -> Uint16`
@@ -82,7 +82,7 @@ SELECT
* `DateTime::GetTimezoneId(Resource<TM>{Flags:AutoMap}) -> Uint16`
* `DateTime::GetTimezoneName(Resource<TM>{Flags:AutoMap}) -> String`
-### Примеры
+#### Примеры
```yql
$tm = DateTime::Split(TzDatetime("2019-01-09T00:00:00,Europe/Moscow"));
@@ -99,13 +99,13 @@ SELECT
Обновление одной или нескольких компонент во внутреннем представлении. Возвращает либо обновлённую копию, либо NULL, если после обновления получается некорректная дата или возникают другие противоречия.
-### Список функций
+#### Список функций
```yql
DateTime::Update( Resource<TM>{Flags:AutoMap}, [ Year:Uint16?, Month:Uint8?, Day:Uint8?, Hour:Uint8?, Minute:Uint8?, Second:Uint8?, Microsecond:Uint32?, Timezone:String? ]) -> Resource<TM>?
```
-### Примеры
+#### Примеры
```yql
$tm = DateTime::Split(Timestamp("2019-01-01T01:02:03.456789Z"));
@@ -125,7 +125,7 @@ SELECT
Получение Timestamp из количества секунд/миллисекунд/микросекунд от начала эпохи в UTC. При выходе за границы Timestamp возвращается NULL.
-### Список функций
+#### Список функций
* `DateTime::FromSeconds(Uint32{Flags:AutoMap}) -> Timestamp`
* `DateTime::FromMilliseconds(Uint64{Flags:AutoMap}) -> Timestamp`
@@ -135,13 +135,13 @@ SELECT
Получение количества секунд/миллисекунд/микросекунд от начала эпохи в UTC из простого типа.
-### Список функций
+#### Список функций
* `DateTime::ToSeconds(Date/DateTime/Timestamp/TzDate/TzDatetime/TzTimestamp{Flags:AutoMap}) -> Uint32`
* `DateTime::ToMilliseconds(Date/DateTime/Timestamp/TzDate/TzDatetime/TzTimestamp{Flags:AutoMap}) -> Uint64`
* `DateTime::ToMicroseconds(Date/DateTime/Timestamp/TzDate/TzDatetime/TzTimestamp{Flags:AutoMap}) -> Uint64`
-### Примеры
+#### Примеры
```yql
SELECT
@@ -153,7 +153,7 @@ SELECT
Преобразования между `Interval` и различными единицами измерения времени.
-### Список функций
+#### Список функций
* `DateTime::ToDays(Interval{Flags:AutoMap}) -> Int16`
* `DateTime::ToHours(Interval{Flags:AutoMap}) -> Int32`
@@ -178,7 +178,7 @@ AddTimezone никак не влияет на вывод ToSeconds(), поско
Interval также можно создавать из строкового литерала в формате [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601%23Durations).
-### Примеры
+#### Примеры
```yql
SELECT
@@ -191,7 +191,7 @@ SELECT
Получить начало (конец) периода, содержащего дату/время. При некорректном результате возвращается NULL. Если таймзона не GMT, то начало (конец) периода будет в указанной временной зоне.
-### Список функций
+#### Список функций
* `DateTime::StartOfYear(Resource<TM>{Flags:AutoMap}) -> Resource<TM>?`
* `DateTime::EndOfYear(Resource<TM>{Flags:AutoMap}) -> Resource<TM>?`
@@ -214,7 +214,7 @@ SELECT
* `DateTime::TimeOfDay(Resource<TM>{Flags:AutoMap}) -> Interval`
-### Примеры
+#### Примеры
```yql
SELECT
@@ -247,7 +247,7 @@ SELECT
Прибавить/вычесть заданное количество единиц к компоненте во внутреннем представлении и обновить остальные поля.
Возвращает либо обновлённую копию, либо NULL, если после обновления получается некорректная дата или возникают другие противоречия.
-### Список функций
+#### Список функций
* `DateTime::ShiftYears(Resource<TM>{Flags:AutoMap}, Int32) -> Resource<TM>?`
* `DateTime::ShiftQuarters(Resource<TM>{Flags:AutoMap}, Int32) -> Resource<TM>?`
@@ -256,7 +256,7 @@ SELECT
Если в результате номер дня в месяце превышает максимально возможный, то в поле `Day` будет записан последний день месяца,
время при этом не изменится (см. примеры).
-### Примеры
+#### Примеры
```yql
$tm1 = DateTime::Split(DateTime("2019-01-31T01:01:01Z"));
@@ -275,7 +275,7 @@ SELECT
Получить строковое представление момента времени, используя произвольную строку форматирования.
-### Список функций
+#### Список функций
* `DateTime::Format(String, alwaysWriteFractionalSeconds:Bool?) -> (Resource<TM>{Flags:AutoMap}) -> String`
@@ -295,7 +295,7 @@ SELECT
Все остальные символы строки форматирования переносятся без изменений.
-### Примеры
+#### Примеры
```yql
$format = DateTime::Format("%Y-%m-%d %H:%M:%S %Z");
@@ -309,7 +309,7 @@ SELECT
Распарсить строку во внутреннее представление, используя произвольную строку форматирования. Для незаполненных полей используются значения по умолчанию. При возникновении ошибок возвращается NULL.
-### Список функций
+#### Список функций
* `DateTime::Parse(String) -> (String{Flags:AutoMap}) -> Resource<TM>?`
@@ -326,7 +326,7 @@ SELECT
* `%b` - короткое трехбуквенное регистронезависимое английское название месяца (Jan);
* `%B` - полное регистронезависимое английское название месяца (January).
-### Примеры
+#### Примеры
```yql
$parse1 = DateTime::Parse("%H:%M:%S");
@@ -345,14 +345,14 @@ SELECT
Для распространённых форматов есть врапперы вокруг соответствующих методов util. Можно получить только TM с компонентами в UTC таймзоне.
-### Список функций
+#### Список функций
* `DateTime::ParseRfc822(String{Flags:AutoMap}) -> Resource<TM>?`
* `DateTime::ParseIso8601(String{Flags:AutoMap}) -> Resource<TM>?`
* `DateTime::ParseHttp(String{Flags:AutoMap}) -> Resource<TM>?`
* `DateTime::ParseX509(String{Flags:AutoMap}) -> Resource<TM>?`
-### Примеры
+#### Примеры
```yql
SELECT
diff --git a/yql/essentials/docs/ru/udf/list/hyperscan.md b/yql/essentials/docs/ru/udf/list/hyperscan.md
index 54266827a7..1c7688d19d 100644
--- a/yql/essentials/docs/ru/udf/list/hyperscan.md
+++ b/yql/essentials/docs/ru/udf/list/hyperscan.md
@@ -52,7 +52,7 @@ SELECT * FROM table WHERE $re(key); -- используем его для фил
При вызове функций `MultiGrep`/`MultiMatch` регулярные выражения передаются по одному на строку с использованием [многострочных строковых литералов](../../syntax/expressions.md#named-nodes):
-### Пример
+#### Пример
```yql
$multi_match = Hyperscan::MultiMatch(@@a.*
diff --git a/yql/essentials/docs/ru/udf/list/math.md b/yql/essentials/docs/ru/udf/list/math.md
index 72b60e363b..467a8d1704 100644
--- a/yql/essentials/docs/ru/udf/list/math.md
+++ b/yql/essentials/docs/ru/udf/list/math.md
@@ -4,13 +4,13 @@
## Константы {#constants}
-### Список функций
+#### Список функций
* `Math::Pi() -> Double`
* `Math::E() -> Double`
* `Math::Eps() -> Double`
-### Примеры
+#### Примеры
```yql
SELECT Math::Pi(); -- 3.141592654
@@ -20,13 +20,13 @@ SELECT Math::Eps(); -- 2.220446049250313e-16
## (Double) -> Bool {#double-bool}
-### Список функций
+#### Список функций
* `Math::IsInf(Double{Flags:AutoMap}) -> Bool`
* `Math::IsNaN(Double{Flags:AutoMap}) -> Bool`
* `Math::IsFinite(Double{Flags:AutoMap}) -> Bool`
-### Примеры
+#### Примеры
```yql
SELECT Math::IsNaN(0.0/0.0); -- true
@@ -35,7 +35,7 @@ SELECT Math::IsFinite(1.0/0.0); -- false
## (Double) -> Double {#double-double}
-### Список функций
+#### Список функций
* `Math::Abs(Double{Flags:AutoMap}) -> Double`
* `Math::Acos(Double{Flags:AutoMap}) -> Double`
@@ -67,7 +67,7 @@ SELECT Math::IsFinite(1.0/0.0); -- false
* `Math::Log2(Double{Flags:AutoMap}) -> Double`
* `Math::Log10(Double{Flags:AutoMap}) -> Double`
-### Примеры
+#### Примеры
```yql
SELECT Math::Sqrt(256); -- 16
@@ -76,7 +76,7 @@ SELECT Math::Trunc(1.2345); -- 1
## (Double, Double) -> Double {#doubledouble-double}
-### Список функций
+#### Список функций
* `Math::Atan2(Double{Flags:AutoMap}, Double{Flags:AutoMap}) -> Double`
* `Math::Fmod(Double{Flags:AutoMap}, Double{Flags:AutoMap}) -> Double`
@@ -84,7 +84,7 @@ SELECT Math::Trunc(1.2345); -- 1
* `Math::Pow(Double{Flags:AutoMap}, Double{Flags:AutoMap}) -> Double`
* `Math::Remainder(Double{Flags:AutoMap}, Double{Flags:AutoMap}) -> Double`
-### Примеры
+#### Примеры
```yql
SELECT Math::Atan2(1, 0); -- 1.570796327
@@ -93,12 +93,12 @@ SELECT Math::Remainder(2.1, 2); -- 0.1
## (Double, Int32) -> Double {#doubleint32-double}
-### Список функций
+#### Список функций
* `Math::Ldexp(Double{Flags:AutoMap}, Int32{Flags:AutoMap}) -> Double`
* `Math::Round(Double{Flags:AutoMap}, [Int32?]) -> Double` - во втором аргументе указывается степень 10, до которой округляем (отрицательная для знаков после запятой и положительная для округления до десятков—тысяч—миллионов); по умолчанию 0
-### Примеры
+#### Примеры
```yql
SELECT Math::Pow(2, 10); -- 1024
@@ -107,7 +107,7 @@ SELECT Math::Round(1.2345, -2); -- 1.23
## (Double, Double, \[Double?\]) -> Bool {#doubledouble-bool}
-### Список функций
+#### Список функций
* `Math::FuzzyEquals(Double{Flags:AutoMap}, Double{Flags:AutoMap}, [Double?]) -> Bool` - сравнивает два Double на нахождение внутри окрестности, задаваемой третьим аргументом; по умолчанию 1.0e-13. Окрестность указывается в относительных единицах от минимального по модулю аргумента.
@@ -117,7 +117,7 @@ SELECT Math::Round(1.2345, -2); -- 1.23
{% endnote %}
-### Примеры
+#### Примеры
```yql
SELECT Math::FuzzyEquals(1.01, 1.0, 0.05); -- true
@@ -125,7 +125,7 @@ SELECT Math::FuzzyEquals(1.01, 1.0, 0.05); -- true
## Функции взятия остатка
-### Список функций
+#### Список функций
* `Math::Mod(Int64{Flags:AutoMap}, Int64) -> Int64?`
* `Math::Rem(Int64{Flags:AutoMap}, Int64) -> Int64?`
@@ -137,7 +137,7 @@ SELECT Math::FuzzyEquals(1.01, 1.0, 0.05); -- true
Функции возвращают null, если делитель равен нулю.
-### Примеры
+#### Примеры
```yql
SELECT Math::Mod(-1, 7); -- 6
@@ -146,7 +146,7 @@ SELECT Math::Rem(-1, 7); -- -1
## Функции округления до целого числа в заданном режиме
-### Список функций
+#### Список функций
* `Math::RoundDownward() -> Tagged<Uint32, MathRoundingMode>` -- rounding towards negative infinity
* `Math::RoundToNearest() -> Tagged<Uint32, MathRoundingMode>` -- rounding towards nearest representable value
@@ -158,7 +158,7 @@ SELECT Math::Rem(-1, 7); -- -1
Если результат выходит за пределы 64-битного целого числа, возращается NULL.
-### Примеры
+#### Примеры
```yql
SELECT Math::NearbyInt(1.5, Math::RoundDownward()); -- 1
diff --git a/yql/essentials/docs/ru/udf/list/url.md b/yql/essentials/docs/ru/udf/list/url.md
index 37e15be5c8..d04c7b7478 100644
--- a/yql/essentials/docs/ru/udf/list/url.md
+++ b/yql/essentials/docs/ru/udf/list/url.md
@@ -12,7 +12,7 @@
* нормализованный URL;
* `NULL`, если переданный строковый аргумент не удалось распарсить как URL.
-### Примеры
+#### Примеры
```yql
SELECT Url::Normalize("hTTp://wWw.yDb.TECH/"); -- "http://www.ydb.tech/"
@@ -30,7 +30,7 @@ SELECT Url::Normalize("http://ydb.tech#foo"); -- "http://ydb.tech/"
* нормализованный URL;
* исходный URL, если нормализация не удалась.
-### Примеры
+#### Примеры
```yql
SELECT Url::NormalizeWithDefaultHttpScheme("wWw.yDb.TECH"); -- "http://www.ydb.tech/"
@@ -46,7 +46,7 @@ SELECT Url::NormalizeWithDefaultHttpScheme("http://ydb.tech#foo"); -- "http://yd
* `Url::Encode(String?) -> String?`
* `Url::Decode(String?) -> String?`
-### Примеры
+#### Примеры
```yql
SELECT Url::Decode("http://ydb.tech/%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0");
@@ -63,7 +63,7 @@ SELECT Url::Encode("http://ydb.tech/страница");
Url::Parse(Parse{Flags:AutoMap}) -> Struct< Frag: String?, Host: String?, ParseError: String?, Pass: String?, Path: String?, Port: String?, Query: String?, Scheme: String?, User: String? >
```
-### Примеры
+#### Примеры
```yql
SELECT Url::Parse(
@@ -109,7 +109,7 @@ SELECT Url::Parse(
* `Url::GetOwner(String{Flags:AutoMap}) -> String`
Возвращает домен, которым с наибольшей вероятностью владеет отдельный человек или организация. В отличие от Url::GetSignificantDomain работает по специальному разрешительному списку, и помимо доменов из серии ***.co.uk возвращает домен третьего уровня для, например, бесплатных хостингов и блогов, например something.livejournal.com
-### Примеры
+#### Примеры
```yql
SELECT Url::GetScheme("https://ydb.tech"); -- "https://"
@@ -130,7 +130,7 @@ SELECT Url::GetDomain("http://www.ydb.tech", 2); -- "ydb.tech"
* `Url::CutQueryStringA­ndFragment(String{Flags:AutoMap}) -> String`
Возращает копию переданного URL с удаленными всеми CGI параметрами и фрагментами ("?foo=bar" и/или "#baz").
-### Примеры
+#### Примеры
```yql
SELECT Url::CutScheme("http://www.ydb.tech"); -- "www.ydb.tech"
@@ -149,7 +149,7 @@ SELECT Url::CutWWW("www.ydb.tech"); -- "ydb.tech"
* `Url::ForcePunycodeToHostName(String{Flag:AutoMap}) -> String`
* `Url::CanBePunycodeHostName(String{Flag:AutoMap}) -> Bool`
-### Примеры
+#### Примеры
```yql
SELECT Url::PunycodeToHostName("xn--80aniges7g.xn--j1aef"); -- "экзампл.ком"
@@ -185,7 +185,7 @@ Url::BuildQueryString(List<Tuple<String, String?>>{Flag:AutoMap}, [
]) -> String
```
-### Примеры
+#### Примеры
```yql
SELECT Url::QueryStringToList("a=1&b=2&a=3"); -- [("a", "1"), ("b", "2"), ("a", "3")]
diff --git a/yql/essentials/docs/ru/udf/list/yson.md b/yql/essentials/docs/ru/udf/list/yson.md
index 634a78d2dd..0f5d6094e8 100644
--- a/yql/essentials/docs/ru/udf/list/yson.md
+++ b/yql/essentials/docs/ru/udf/list/yson.md
@@ -98,7 +98,7 @@ Yson::From(T) -> Resource<'Yson2.Node'>
`Yson::From` является полиморфной функцией, преобразующей в Yson ресурс большинство примитивных типов данных и контейнеров (списки, словари, кортежи, структуры и т.п.). Тип исходного объекта должен быть совместим с Yson. Например, в ключах словарей допустимы только типы `String` или `Utf8`, а вот `String?` или `Utf8?` уже нет.
-### Пример
+#### Пример
```yql
SELECT Yson::Serialize(Yson::From(TableRow())) FROM table1;
@@ -182,7 +182,7 @@ Yson::ConvertToStringDict(Resource<'Yson2.Node'>{Flags:AutoMap}) -> Dict<String,
`Yson::ConvertTo` является полиморфной функцией, преобразующей Yson ресурс в указанный во втором аргументе тип данных с поддержкой вложенных контейнеров (списки, словари, кортежи, структуры и т.п.).
-### Пример
+#### Пример
```yql
$data = Yson(@@{
@@ -285,7 +285,7 @@ Yson::Options([AutoConvert:Bool?, Strict:Bool?]) -> Resource<'Yson2.Options'>
* **AutoConvert** — если переданное в Yson значение не в точности соответствует типу данных результата, то значение будет по возможности сконвертировано. Например, `Yson::ConvertToInt64` в этом режиме будет делать Int64 даже из чисел типа Double.
* **Strict** — по умолчанию все функции из библиотеки Yson возвращают ошибку в случае проблем в ходе выполнения запроса (например, попытка парсинга строки не являющейся Yson/Json, или попытка поиска по ключу в скалярном типе, или запрошено преобразование в несовместимый тип данных, и т.п.), а если отключить строгий режим, то вместо ошибки в большинстве случаев будет возвращаться `NULL`. При преобразовании в словарь или список (`ConvertTo<Type>Dict` или `ConvertTo<Type>List`) плохие элементы будут выброшены из полученной коллекции.
-### Пример
+#### Пример
```yql
$yson = @@{y = true; x = 5.5}@@y;