EVOLUTION-MANAGER
Edit File: kusto.ts
/* tslint:disable:max-line-length */ export const operatorTokens = [ { text: '!between', hint: 'Matches the input that is outside the inclusive range.' }, { text: 'as', hint: "Binds a name to the operator's input tabular expression." }, { text: 'between', hint: 'Matches the input that is inside the inclusive range.' }, { text: 'consume', hint: 'The `consume` operator consumes the tabular data stream handed to it. It is\r\nmostly used for triggering the query side-effect without actually returning\r\nthe results back to the caller.', }, { text: 'count', hint: 'Returns the number of records in the input record set.' }, { text: 'datatable', hint: 'Returns a table whose schema and values are defined in the query itself.' }, { text: 'distinct', hint: 'Produces a table with the distinct combination of the provided columns of the input table.', }, { text: 'evaluate', hint: 'Invokes a service-side query extension (plugin).' }, { text: 'extend', hint: 'Create calculated columns and append them to the result set.' }, { text: 'externaldata', hint: 'Returns a table whose schema is defined in the query itself, and whose data is read from an external raw file.', }, { text: 'facet', hint: 'Returns a set of tables, one for each specified column.\r\nEach table specifies the list of values taken by its column.\r\nAn additional table can be created by using the `with` clause.', }, { text: 'find', hint: 'Finds rows that match a predicate across a set of tables.' }, { text: 'fork', hint: 'Runs multiple consumer operators in parallel.' }, { text: 'getschema', hint: 'Produce a table that represents a tabular schema of the input.' }, { text: 'in', hint: 'Filters a recordset based on the provided set of values.' }, { text: 'invoke', hint: 'Invokes lambda that receives the source of `invoke` as tabular parameter argument.' }, { text: 'join', hint: 'Merge the rows of two tables to form a new table by matching values of the specified column(s) from each table.', }, { text: 'limit', hint: 'Return up to the specified number of rows.' }, { text: 'make-series', hint: 'Create series of specified aggregated values along specified axis.' }, { text: 'mvexpand', hint: 'Expands multi-value array or property bag.' }, { text: 'order', hint: 'Sort the rows of the input table into order by one or more columns.' }, { text: 'parse', hint: 'Evaluates a string expression and parses its value into one or more calculated columns.' }, { text: 'print', hint: 'Evaluates one or more scalar expressions and inserts the results (as a single-row table with as many columns as there are expressions) into the output.', }, { text: 'project', hint: 'Select the columns to include, rename or drop, and insert new computed columns.' }, { text: 'project-away', hint: 'Select what columns to exclude from the input.' }, { text: 'project-rename', hint: 'Renames columns in the result output.' }, { text: 'range', hint: 'Generates a single-column table of values.' }, { text: 'reduce', hint: 'Groups a set of strings together based on values similarity.' }, { text: 'render', hint: 'Instructs the user agent to render the results of the query in a particular way.' }, { text: 'sample', hint: 'Returns up to the specified number of random rows from the input table.' }, { text: 'sample-distinct', hint: 'Returns a single column that contains up to the specified number of distinct values of the requested column.', }, { text: 'search', hint: 'The search operator provides a multi-table/multi-column search experience.' }, { text: 'serialize', hint: 'Marks that order of the input row set is safe for window functions usage.' }, { text: 'sort', hint: 'Sort the rows of the input table into order by one or more columns.' }, { text: 'summarize', hint: 'Produces a table that aggregates the content of the input table.' }, { text: 'take', hint: 'Return up to the specified number of rows.' }, { text: 'top', hint: 'Returns the first *N* records sorted by the specified columns.' }, { text: 'top-hitters', hint: 'Returns an approximation of the first *N* results (assuming skewed distribution of the input).', }, { text: 'top-nested', hint: 'Produces hierarchical top results, where each level is a drill-down based on previous level values.', }, { text: 'union', hint: 'Takes two or more tables and returns the rows of all of them.' }, { text: 'where', hint: 'Filters a table to the subset of rows that satisfy a predicate.' }, ]; export const functionTokens = [ { text: 'abs', hint: 'Calculates the absolute value of the input.' }, { text: 'acos', hint: 'Returns the angle whose cosine is the specified number (the inverse operation of [`cos()`](cosfunction.md)) .', }, { text: 'ago', hint: 'Subtracts the given timespan from the current UTC clock time.' }, { text: 'any', hint: 'Returns random non-empty value from the specified expression values.' }, { text: 'arg_max', hint: 'Finds a row in the group that maximizes *ExprToMaximize*, and returns the value of *ExprToReturn* (or `*` to return the entire row).', }, { text: 'arg_min', hint: 'Finds a row in the group that minimizes *ExprToMinimize*, and returns the value of *ExprToReturn* (or `*` to return the entire row).', }, { text: 'argmax', hint: 'Finds a row in the group that maximizes *ExprToMaximize*, and returns the value of *ExprToReturn* (or `*` to return the entire row).', }, { text: 'argmin', hint: 'Finds a row in the group that minimizes *ExprToMinimize*, and returns the value of *ExprToReturn* (or `*` to return the entire row).', }, { text: 'array_concat', hint: 'Concatenates a number of dynamic arrays to a single array.' }, { text: 'array_length', hint: 'Calculates the number of elements in a dynamic array.' }, { text: 'array_slice', hint: 'Extracts a slice of a dynamic array.' }, { text: 'array_split', hint: 'Splits an array to multiple arrays according to the split indices and packs the generated array in a dynamic array.', }, { text: 'asin', hint: 'Returns the angle whose sine is the specified number (the inverse operation of [`sin()`](sinfunction.md)) .', }, { text: 'assert', hint: 'Checks for a condition; if the condition is false, outputs error messages and fails the query.', }, { text: 'atan', hint: 'Returns the angle whose tangent is the specified number (the inverse operation of [`tan()`](tanfunction.md)) .', }, { text: 'atan2', hint: 'Calculates the angle, in radians, between the positive x-axis and the ray from the origin to the point (y, x).', }, { text: 'avg', hint: 'Calculates the average of *Expr* across the group.' }, { text: 'avgif', hint: 'Calculates the [average](avg-aggfunction.md) of *Expr* across the group for which *Predicate* evaluates to `true`.', }, { text: 'bag_keys', hint: 'Enumerates all the root keys in a dynamic property-bag object.' }, { text: 'base64_decodestring', hint: 'Decodes a base64 string to a UTF-8 string' }, { text: 'base64_encodestring', hint: 'Encodes a string as base64 string' }, { text: 'beta_cdf', hint: 'Returns the standard cumulative beta distribution function.' }, { text: 'beta_inv', hint: 'Returns the inverse of the beta cumulative probability beta density function.' }, { text: 'beta_pdf', hint: 'Returns the probability density beta function.' }, { text: 'bin', hint: 'Rounds values down to an integer multiple of a given bin size.' }, { text: 'bin_at', hint: "Rounds values down to a fixed-size 'bin', with control over the bin's starting point.\r\n(See also [`bin function`](./binfunction.md).)", }, { text: 'bin_auto', hint: "Rounds values down to a fixed-size 'bin', with control over the bin size and starting point provided by a query property.", }, { text: 'binary_and', hint: 'Returns a result of the bitwise `and` operation between two values.' }, { text: 'binary_not', hint: 'Returns a bitwise negation of the input value.' }, { text: 'binary_or', hint: 'Returns a result of the bitwise `or` operation of the two values.' }, { text: 'binary_shift_left', hint: 'Returns binary shift left operation on a pair of numbers.' }, { text: 'binary_shift_right', hint: 'Returns binary shift right operation on a pair of numbers.' }, { text: 'binary_xor', hint: 'Returns a result of the bitwise `xor` operation of the two values.' }, { text: 'buildschema', hint: 'Returns the minimal schema that admits all values of *DynamicExpr*.' }, { text: 'case', hint: 'Evaluates a list of predicates and returns the first result expression whose predicate is satisfied.', }, { text: 'ceiling', hint: 'Calculates the smallest integer greater than, or equal to, the specified numeric expression.', }, { text: 'cluster', hint: 'Changes the reference of the query to a remote cluster.' }, { text: 'coalesce', hint: 'Evaluates a list of expressions and returns the first non-null (or non-empty for string) expression.', }, { text: 'cos', hint: 'Returns the cosine function.' }, { text: 'cot', hint: 'Calculates the trigonometric cotangent of the specified angle, in radians.' }, { text: 'count', hint: 'Returns a count of the records per summarization group (or in total if summarization is done without grouping).', }, { text: 'countif', hint: 'Returns a count of rows for which *Predicate* evaluates to `true`.' }, { text: 'countof', hint: 'Counts occurrences of a substring in a string. Plain string matches may overlap; regex matches do not.', }, { text: 'current_principal', hint: 'Returns the current principal running this query.' }, { text: 'cursor_after', hint: 'A predicate over the records of a table to compare their ingestion time\r\nagainst a database cursor.', }, { text: 'cursor_before_or_at', hint: 'A predicate over the records of a table to compare their ingestion time\r\nagainst a database cursor.', }, { text: 'database', hint: 'Changes the reference of the query to a specific database within the cluster scope.' }, { text: 'datetime_add', hint: 'Calculates a new [datetime](./scalar-data-types/datetime.md) from a specified datepart multiplied by a specified amount, added to a specified [datetime](./scalar-data-types/datetime.md).', }, { text: 'datetime_diff', hint: 'Calculates calendarian difference between two [datetime](./scalar-data-types/datetime.md) values.', }, { text: 'datetime_part', hint: 'Extracts the requested date part as an integer value.' }, { text: 'dayofmonth', hint: 'Returns the integer number representing the day number of the given month' }, { text: 'dayofweek', hint: 'Returns the integer number of days since the preceding Sunday, as a `timespan`.' }, { text: 'dayofyear', hint: 'Returns the integer number represents the day number of the given year.' }, { text: 'dcount', hint: 'Returns an estimate of the number of distinct values of *Expr* in the group.' }, { text: 'dcount_hll', hint: 'Calculates the dcount from hll results (which was generated by [hll](hll-aggfunction.md) or [hll_merge](hll-merge-aggfunction.md)).', }, { text: 'dcountif', hint: 'Returns an estimate of the number of distinct values of *Expr* of rows for which *Predicate* evaluates to `true`.', }, { text: 'degrees', hint: 'Converts angle value in radians into value in degrees, using formula `degrees = (180 / PI ) * angle_in_radians`', }, { text: 'distance', hint: 'Returns the distance between two points in meters.' }, { text: 'endofday', hint: 'Returns the end of the day containing the date, shifted by an offset, if provided.' }, { text: 'endofmonth', hint: 'Returns the end of the month containing the date, shifted by an offset, if provided.' }, { text: 'endofweek', hint: 'Returns the end of the week containing the date, shifted by an offset, if provided.' }, { text: 'endofyear', hint: 'Returns the end of the year containing the date, shifted by an offset, if provided.' }, { text: 'estimate_data_size', hint: 'Returns an estimated data size of the selected columns of the tabular expression.', }, { text: 'exp', hint: 'The base-e exponential function of x, which is e raised to the power x: e^x.' }, { text: 'exp10', hint: 'The base-10 exponential function of x, which is 10 raised to the power x: 10^x. \r\n**Syntax**', }, { text: 'exp2', hint: 'The base-2 exponential function of x, which is 2 raised to the power x: 2^x.' }, { text: 'extent_id', hint: 'Returns a unique identifier that identifies the data shard ("extent") that the current record resides in.', }, { text: 'extent_tags', hint: 'Returns a dynamic array with the [tags](../management/extents-overview.md#extent-tagging) of the data shard ("extent") that the current record resides in.', }, { text: 'extract', hint: 'Get a match for a [regular expression](./re2.md) from a text string.' }, { text: 'extract_all', hint: 'Get all matches for a [regular expression](./re2.md) from a text string.' }, { text: 'extractjson', hint: 'Get a specified element out of a JSON text using a path expression.' }, { text: 'floor', hint: 'An alias for [`bin()`](binfunction.md).' }, { text: 'format_datetime', hint: 'Formats a datetime parameter based on the format pattern parameter.' }, { text: 'format_timespan', hint: 'Formats a timespan parameter based on the format pattern parameter.' }, { text: 'gamma', hint: 'Computes [gamma function](https://en.wikipedia.org/wiki/Gamma_function)' }, { text: 'getmonth', hint: 'Get the month number (1-12) from a datetime.' }, { text: 'gettype', hint: 'Returns the runtime type of its single argument.' }, { text: 'getyear', hint: 'Returns the year part of the `datetime` argument.' }, { text: 'hash', hint: 'Returns a hash value for the input value.' }, { text: 'hash_sha256', hint: 'Returns a sha256 hash value for the input value.' }, { text: 'hll', hint: 'Calculates the Intermediate results of [dcount](dcount-aggfunction.md) across the group.' }, { text: 'hll_merge', hint: 'Merges hll results (scalar version of the aggregate version [`hll_merge()`](hll-merge-aggfunction.md)).', }, { text: 'hourofday', hint: 'Returns the integer number representing the hour number of the given date' }, { text: 'iff', hint: 'Evaluates the first argument (the predicate), and returns the value of either the second or third arguments, depending on whether the predicate evaluated to `true` (second) or `false` (third).', }, { text: 'iif', hint: 'Evaluates the first argument (the predicate), and returns the value of either the second or third arguments, depending on whether the predicate evaluated to `true` (second) or `false` (third).', }, { text: 'indexof', hint: 'Function reports the zero-based index of the first occurrence of a specified string within input string.', }, { text: 'ingestion_time', hint: "Retrieves the record's `$IngestionTime` hidden `datetime` column, or null." }, { text: 'iscolumnexists', hint: 'Returns a boolean value indicating if the given string argument exists in the schema produced by the preceding tabular operator.', }, { text: 'isempty', hint: 'Returns `true` if the argument is an empty string or is null.' }, { text: 'isfinite', hint: 'Returns whether input is a finite value (is neither infinite nor NaN).' }, { text: 'isinf', hint: 'Returns whether input is an infinite (positive or negative) value.' }, { text: 'isnan', hint: 'Returns whether input is Not-a-Number (NaN) value.' }, { text: 'isnotempty', hint: 'Returns `true` if the argument is not an empty string nor it is a null.' }, { text: 'isnotnull', hint: 'Returns `true` if the argument is not null.' }, { text: 'isnull', hint: 'Evaluates its sole argument and returns a `bool` value indicating if the argument evaluates to a null value.', }, { text: 'log', hint: 'Returns the natural logarithm function.' }, { text: 'log10', hint: 'Returns the common (base-10) logarithm function.' }, { text: 'log2', hint: 'Returns the base-2 logarithm function.' }, { text: 'loggamma', hint: 'Computes log of absolute value of the [gamma function](https://en.wikipedia.org/wiki/Gamma_function)', }, { text: 'make_datetime', hint: 'Creates a [datetime](./scalar-data-types/datetime.md) scalar value from the specified date and time.', }, { text: 'make_dictionary', hint: 'Returns a `dynamic` (JSON) property-bag (dictionary) of all the values of *Expr* in the group.', }, { text: 'make_string', hint: 'Returns the string generated by the Unicode characters.' }, { text: 'make_timespan', hint: 'Creates a [timespan](./scalar-data-types/timespan.md) scalar value from the specified time period.', }, { text: 'makelist', hint: 'Returns a `dynamic` (JSON) array of all the values of *Expr* in the group.' }, { text: 'makeset', hint: 'Returns a `dynamic` (JSON) array of the set of distinct values that *Expr* takes in the group.', }, { text: 'materialize', hint: 'Allows caching a sub-query result during the time of query execution in a way that other subqueries can reference the partial result.', }, { text: 'max', hint: 'Returns the maximum value across the group.' }, { text: 'max_of', hint: 'Returns the maximum value of several evaluated numeric expressions.' }, { text: 'merge_tdigests', hint: 'Merges tdigest results (scalar version of the aggregate version [`merge_tdigests()`](merge-tdigests-aggfunction.md)).', }, { text: 'min', hint: 'Returns the minimum value agross the group.' }, { text: 'min_of', hint: 'Returns the minimum value of several evaluated numeric expressions.' }, { text: 'monthofyear', hint: 'Returns the integer number represents the month number of the given year.' }, { text: 'next', hint: 'Returns the value of a column in a row that it at some offset following the\r\ncurrent row in a [serialized row set](./windowsfunctions.md#serialized-row-set).', }, { text: 'not', hint: 'Reverses the value of its `bool` argument.' }, { text: 'now', hint: 'Returns the current UTC clock time, optionally offset by a given timespan.\r\nThis function can be used multiple times in a statement and the clock time being referenced will be the same for all instances.', }, { text: 'pack', hint: 'Creates a `dynamic` object (property bag) from a list of names and values.' }, { text: 'pack_all', hint: 'Creates a `dynamic` object (property bag) from all the columns of the tabular expression.', }, { text: 'pack_array', hint: 'Packs all input values into a dynamic array.' }, { text: 'parse_ipv4', hint: 'Converts input to integer (signed 64-bit) number representation.' }, { text: 'parse_json', hint: 'Interprets a `string` as a [JSON value](https://json.org/)) and returns the value as [`dynamic`](./scalar-data-types/dynamic.md). \r\nIt is superior to using [extractjson() function](./extractjsonfunction.md)\r\nwhen you need to extract more than one element of a JSON compound object.', }, { text: 'parse_path', hint: 'Parses a file path `string` and returns a [`dynamic`](./scalar-data-types/dynamic.md) object that contains the following parts of the path: \r\nScheme, RootPath, DirectoryPath, DirectoryName, FileName, Extension, AlternateDataStreamName.\r\nIn addition to the simple paths with both types of slashes, supports paths with schemas (e.g. "file://..."), shared paths (e.g. "\\\\shareddrive\\users..."), long paths (e.g "\\\\?\\C:...""), alternate data streams (e.g. "file1.exe:file2.exe")', }, { text: 'parse_url', hint: 'Parses an absolute URL `string` and returns a [`dynamic`](./scalar-data-types/dynamic.md) object contains all parts of the URL (Scheme, Host, Port, Path, Username, Password, Query Parameters, Fragment).', }, { text: 'parse_urlquery', hint: 'Parses a url query `string` and returns a [`dynamic`](./scalar-data-types/dynamic.md) object contains the Query parameters.', }, { text: 'parse_user_agent', hint: "Interprets a user-agent string, which identifies the user's browser and provides certain system details to servers hosting the websites the user visits. The result is returned as [`dynamic`](./scalar-data-types/dynamic.md).", }, { text: 'parse_version', hint: 'Converts input string representation of version to a comparable decimal number.' }, { text: 'parse_xml', hint: 'Interprets a `string` as a XML value, converts the value to a [JSON value](https://json.org/) and returns the value as [`dynamic`](./scalar-data-types/dynamic.md).', }, { text: 'percentile', hint: 'Returns an estimate for the specified [nearest-rank percentile](#nearest-rank-percentile) of the population defined by *Expr*. \r\nThe accuracy depends on the density of population in the region of the percentile.', }, { text: 'percentile_tdigest', hint: 'Calculates the percentile result from tdigest results (which was generated by [tdigest](tdigest-aggfunction.md) or [merge-tdigests](merge-tdigests-aggfunction.md))', }, { text: 'percentrank_tdigest', hint: "Calculates the approximate rank of the value in a set where rank is expressed as percentage of set's size. \r\nThis function can be viewed as the inverse of the percentile.", }, { text: 'pi', hint: 'Returns the constant value of Pi (π).' }, { text: 'point', hint: 'Returns a dynamic array representation of a point.' }, { text: 'pow', hint: 'Returns a result of raising to power' }, { text: 'prev', hint: 'Returns the value of a column in a row that it at some offset prior to the\r\ncurrent row in a [serialized row set](./windowsfunctions.md#serialized-row-set).', }, { text: 'radians', hint: 'Converts angle value in degrees into value in radians, using formula `radians = (PI / 180 ) * angle_in_degrees`', }, { text: 'rand', hint: 'Returns a random number.' }, { text: 'range', hint: 'Generates a dynamic array holding a series of equally-spaced values.' }, { text: 'repeat', hint: 'Generates a dynamic array holding a series of equal values.' }, { text: 'replace', hint: 'Replace all regex matches with another string.' }, { text: 'reverse', hint: 'Function makes reverse of input string.' }, { text: 'round', hint: 'Returns the rounded source to the specified precision.' }, { text: 'row_cumsum', hint: 'Calculates the cumulative sum of a column in a [serialized row set](./windowsfunctions.md#serialized-row-set).', }, { text: 'row_number', hint: "Returns the current row's index in a [serialized row set](./windowsfunctions.md#serialized-row-set).\r\nThe row index starts by default at `1` for the first row, and is incremented by `1` for each additional row.\r\nOptionally, the row index can start at a different value than `1`.\r\nAdditionally, the row index may be reset according to some provided predicate.", }, { text: 'series_add', hint: 'Calculates the element-wise addition of two numeric series inputs.' }, { text: 'series_decompose', hint: 'Applies a decomposition transformation on a series.' }, { text: 'series_decompose_anomalies', hint: 'Anomaly Detection based on series decomposition (refer to [series_decompose()](series-decomposefunction.md))', }, { text: 'series_decompose_forecast', hint: 'Forecast based on series decomposition.' }, { text: 'series_divide', hint: 'Calculates the element-wise division of two numeric series inputs.' }, { text: 'series_equals', hint: 'Calculates the element-wise equals (`==`) logic operation of two numeric series inputs.', }, { text: 'series_fill_backward', hint: 'Performs backward fill interpolation of missing values in a series.' }, { text: 'series_fill_const', hint: 'Replaces missing values in a series with a specified constant value.' }, { text: 'series_fill_forward', hint: 'Performs forward fill interpolation of missing values in a series.' }, { text: 'series_fill_linear', hint: 'Performs linear interpolation of missing values in a series.' }, { text: 'series_fir', hint: 'Applies a Finite Impulse Response filter on a series.' }, { text: 'series_fit_2lines', hint: 'Applies two segments linear regression on a series, returning multiple columns.', }, { text: 'series_fit_2lines_dynamic', hint: 'Applies two segments linear regression on a series, returning dynamic object.', }, { text: 'series_fit_line', hint: 'Applies linear regression on a series, returning multiple columns.' }, { text: 'series_fit_line_dynamic', hint: 'Applies linear regression on a series, returning dynamic object.' }, { text: 'series_greater', hint: 'Calculates the element-wise greater (`>`) logic operation of two numeric series inputs.', }, { text: 'series_greater_equals', hint: 'Calculates the element-wise greater or equals (`>=`) logic operation of two numeric series inputs.', }, { text: 'series_iir', hint: 'Applies a Infinite Impulse Response filter on a series.' }, { text: 'series_less', hint: 'Calculates the element-wise less (`<`) logic operation of two numeric series inputs.' }, { text: 'series_less_equals', hint: 'Calculates the element-wise less or equal (`<=`) logic operation of two numeric series inputs.', }, { text: 'series_multiply', hint: 'Calculates the element-wise multiplication of two numeric series inputs.' }, { text: 'series_not_equals', hint: 'Calculates the element-wise not equals (`!=`) logic operation of two numeric series inputs.', }, { text: 'series_outliers', hint: 'Scores anomaly points in a series.' }, { text: 'series_periods_detect', hint: 'Finds the most significant periods that exist in a time series.' }, { text: 'series_periods_validate', hint: 'Checks whether a time series contains periodic patterns of given lengths.', }, { text: 'series_seasonal', hint: 'Calculates the seasonal component of a series according to the detected or given seasonal period.', }, { text: 'series_stats', hint: 'Returns statistics for a series in multiple columns.' }, { text: 'series_stats_dynamic', hint: 'Returns statistics for a series in dynamic object.' }, { text: 'series_subtract', hint: 'Calculates the element-wise subtraction of two numeric series inputs.' }, { text: 'sign', hint: 'Sign of a numeric expression' }, { text: 'sin', hint: 'Returns the sine function.' }, { text: 'split', hint: 'Splits a given string according to a given delimiter and returns a string array with the contained substrings.', }, { text: 'sqrt', hint: 'Returns the square root function.' }, { text: 'startofday', hint: 'Returns the start of the day containing the date, shifted by an offset, if provided.' }, { text: 'startofmonth', hint: 'Returns the start of the month containing the date, shifted by an offset, if provided.', }, { text: 'startofweek', hint: 'Returns the start of the week containing the date, shifted by an offset, if provided.', }, { text: 'startofyear', hint: 'Returns the start of the year containing the date, shifted by an offset, if provided.', }, { text: 'stdev', hint: 'Calculates the standard deviation of *Expr* across the group, considering the group as a [sample](https://en.wikipedia.org/wiki/Sample_%28statistics%29).', }, { text: 'stdevif', hint: 'Calculates the [stdev](stdev-aggfunction.md) of *Expr* across the group for which *Predicate* evaluates to `true`.', }, { text: 'stdevp', hint: 'Calculates the standard deviation of *Expr* across the group, considering the group as a [population](https://en.wikipedia.org/wiki/Statistical_population).', }, { text: 'strcat', hint: 'Concatenates between 1 and 64 arguments.' }, { text: 'strcat_array', hint: 'Creates a concatenated string of array values using specified delimiter.' }, { text: 'strcat_delim', hint: 'Concatenates between 2 and 64 arguments, with delimiter, provided as first argument.', }, { text: 'strcmp', hint: 'Compares two strings.' }, { text: 'string_size', hint: 'Returns the size, in bytes, of the input string.' }, { text: 'strlen', hint: 'Returns the length, in characters, of the input string.' }, { text: 'strrep', hint: 'Repeats given [string](./scalar-data-types/string.md) provided amount of times.' }, { text: 'substring', hint: 'Extracts a substring from a source string starting from some index to the end of the string.', }, { text: 'sum', hint: 'Calculates the sum of *Expr* across the group.' }, { text: 'sumif', hint: 'Returns a sum of *Expr* for which *Predicate* evaluates to `true`.' }, { text: 'table', hint: 'References specific table using an query-time evaluated string-expression.' }, { text: 'tan', hint: 'Returns the tangent function.' }, { text: 'tdigest', hint: 'Calculates the Intermediate results of [`percentiles()`](percentiles-aggfunction.md) across the group.', }, { text: 'tdigest_merge', hint: 'Merges tdigest results (scalar version of the aggregate version [`tdigest_merge()`](tdigest-merge-aggfunction.md)).', }, { text: 'tobool', hint: 'Converts input to boolean (signed 8-bit) representation.' }, { text: 'todatetime', hint: 'Converts input to [datetime](./scalar-data-types/datetime.md) scalar.' }, { text: 'todecimal', hint: 'Converts input to decimal number representation.' }, { text: 'todouble', hint: 'Converts the input to a value of type `real`. (`todouble()` and `toreal()` are synonyms.)', }, { text: 'todynamic', hint: 'Interprets a `string` as a [JSON value](https://json.org/) and returns the value as [`dynamic`](./scalar-data-types/dynamic.md).', }, { text: 'toguid', hint: 'Converts input to [`guid`](./scalar-data-types/guid.md) representation.' }, { text: 'tohex', hint: 'Converts input to a hexadecimal string.' }, { text: 'toint', hint: 'Converts input to integer (signed 32-bit) number representation.' }, { text: 'tolong', hint: 'Converts input to long (signed 64-bit) number representation.' }, { text: 'tolower', hint: 'Converts input string to lower case.' }, { text: 'toscalar', hint: 'Returns a scalar constant value of the evaluated expression.' }, { text: 'tostring', hint: 'Converts input to a string representation.' }, { text: 'totimespan', hint: 'Converts input to [timespan](./scalar-data-types/timespan.md) scalar.' }, { text: 'toupper', hint: 'Converts a string to upper case.' }, { text: 'translate', hint: "Replaces a set of characters ('searchList') with another set of characters ('replacementList') in a given a string.\r\nThe function searches for characters in the 'searchList' and replaces them with the corresponding characters in 'replacementList'", }, { text: 'treepath', hint: 'Enumerates all the path expressions that identify leaves in a dynamic object.' }, { text: 'trim', hint: 'Removes all leading and trailing matches of the specified regular expression.' }, { text: 'trim_end', hint: 'Removes trailing match of the specified regular expression.' }, { text: 'trim_start', hint: 'Removes leading match of the specified regular expression.' }, { text: 'url_decode', hint: 'The function converts encoded URL into a to regular URL representation.' }, { text: 'url_encode', hint: 'The function converts characters of the input URL into a format that can be transmitted over the Internet.', }, { text: 'variance', hint: 'Calculates the variance of *Expr* across the group, considering the group as a [sample](https://en.wikipedia.org/wiki/Sample_%28statistics%29).', }, { text: 'varianceif', hint: 'Calculates the [variance](variance-aggfunction.md) of *Expr* across the group for which *Predicate* evaluates to `true`.', }, { text: 'variancep', hint: 'Calculates the variance of *Expr* across the group, considering the group as a [population](https://en.wikipedia.org/wiki/Statistical_population).', }, { text: 'weekofyear', hint: 'Returns the integer number represents the week number.' }, { text: 'welch_test', hint: 'Computes the p_value of the [Welch-test function](https://en.wikipedia.org/wiki/Welch%27s_t-test)', }, { text: 'zip', hint: 'The `zip` function accepts any number of `dynamic` arrays, and returns an\r\narray whose elements are each an array holding the elements of the input\r\narrays of the same index.', }, ]; export const KEYWORDS = [ 'by', 'on', 'contains', 'notcontains', 'containscs', 'notcontainscs', 'startswith', 'has', 'matches', 'regex', 'true', 'false', 'and', 'or', 'typeof', 'int', 'string', 'date', 'datetime', 'time', 'long', 'real', 'boolean', 'bool', ]; export const grafanaMacros = [ { text: '$__timeFilter', display: '$__timeFilter()', hint: 'Macro that uses the selected timerange in Grafana to filter the query.', }, { text: '$__timeTo', display: '$__timeTo()', hint: 'Returns the From datetime from the Grafana picker. Example: datetime(2018-06-05T20:09:58.907Z).', }, { text: '$__timeFrom', display: '$__timeFrom()', hint: 'Returns the From datetime from the Grafana picker. Example: datetime(2018-06-05T18:09:58.907Z).', }, { text: '$__escapeMulti', display: '$__escapeMulti()', hint: 'Macro to escape multi-value template variables that contain illegal characters.', }, { text: '$__contains', display: '$__contains()', hint: 'Macro for multi-value template variables.' }, ]; // Kusto operators // export const OPERATORS = ['+', '-', '*', '/', '>', '<', '==', '<>', '<=', '>=', '~', '!~']; export const DURATION = ['SECONDS', 'MINUTES', 'HOURS', 'DAYS', 'WEEKS', 'MONTHS', 'YEARS']; const tokenizer = { comment: { pattern: /(^|[^\\:])\/\/.*/, lookbehind: true, greedy: true, }, 'function-context': { pattern: /[a-z0-9_]+\([^)]*\)?/i, inside: {}, }, duration: { pattern: new RegExp(`${DURATION.join('?|')}?`, 'i'), alias: 'number', }, builtin: new RegExp(`\\b(?:${functionTokens.map(f => f.text).join('|')})(?=\\s*\\()`, 'i'), string: { pattern: /(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/, greedy: true, }, keyword: new RegExp(`\\b(?:${KEYWORDS.join('|')}|${operatorTokens.map(f => f.text).join('|')}|\\*)\\b`, 'i'), boolean: /\b(?:true|false)\b/, number: /\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i, operator: /-|\+|\*|\/|>|<|==|<=?|>=?|<>|!~|~|=|\|/, punctuation: /[{};(),.:]/, variable: /(\[\[(.+?)\]\])|(\$(.+?))\b/, }; tokenizer['function-context'].inside = { argument: { pattern: /[a-z0-9_]+(?=:)/i, alias: 'symbol', }, duration: tokenizer.duration, number: tokenizer.number, builtin: tokenizer.builtin, string: tokenizer.string, variable: tokenizer.variable, }; // console.log(tokenizer.builtin); export default tokenizer; // function escapeRegExp(str: string): string { // return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string // }