diff --git a/data-explorer/find-my-partner.md b/data-explorer/find-my-partner.md index f179996347..04671b89a1 100644 --- a/data-explorer/find-my-partner.md +++ b/data-explorer/find-my-partner.md @@ -358,7 +358,7 @@ Development and design of cloud native solutions based on the latest Microsoft t - Sweden - Norway - Iceland -- Holland +- Netherlands - Belgium - Luxembourg diff --git a/data-explorer/ingest-data-no-code.md b/data-explorer/ingest-data-no-code.md index acf55b11b7..2667c46133 100644 --- a/data-explorer/ingest-data-no-code.md +++ b/data-explorer/ingest-data-no-code.md @@ -87,13 +87,13 @@ Following is an example of an Azure Data Explorer [diagnostic ingestion log](usi "operationVersion": "1.0", "category": "FailedIngestion", "resultType": "Failed", - "correlationId": "d59882f1-ad64-4fc4-b2ef-d663b6cc1cc5", + "correlationId": "aaaa0000-bb11-2222-33cc-444444dddddd", "properties": { "OperationId": "00000000-0000-0000-0000-000000000000", "Database": "Kusto", "Table": "Table_13_20_prod", "FailedOn": "2019-08-26T13:22:36.8804326Z", - "IngestionSourceId": "d59882f1-ad64-4fc4-b2ef-d663b6cc1cc5", + "IngestionSourceId": "aaaa0000-bb11-2222-33cc-444444dddddd", "Details": { "error": @@ -149,7 +149,7 @@ Azure activity logs are subscription-level logs that provide insight into the op "resultSignature": "Started.", "durationMs": 0, "callerIpAddress": "13.66.225.188", - "correlationId": "0de9f4bc-4adc-4209-a774-1b4f4ae573ed", + "correlationId": "bbbb1111-cc22-3333-44dd-555555eeeeee", "identity": { "authorization": { ... @@ -173,7 +173,7 @@ Azure activity logs are subscription-level logs that provide insight into the op "resultSignature": "Succeeded.OK", "durationMs": 194, "callerIpAddress": "13.66.225.188", - "correlationId": "0de9f4bc-4adc-4209-a774-1b4f4ae573ed", + "correlationId": "bbbb1111-cc22-3333-44dd-555555eeeeee", "identity": { "authorization": { ... diff --git a/data-explorer/kusto-tocs/query/toc.yml b/data-explorer/kusto-tocs/query/toc.yml index e81d85a7da..34bd0516cc 100644 --- a/data-explorer/kusto-tocs/query/toc.yml +++ b/data-explorer/kusto-tocs/query/toc.yml @@ -1746,6 +1746,9 @@ items: - name: series_pow() displayName: element-wise, elementwise href: /kusto/query/series-pow-function?view=azure-data-explorer&preserve-view=true + - name: series_product() + displayName: element-wise, elementwise + href: /kusto/query/series-product-function?view=azure-data-explorer&preserve-view=true - name: series_seasonal() displayName: periods href: /kusto/query/series-seasonal-function?view=azure-data-explorer&preserve-view=true diff --git a/data-explorer/kusto/query/bag-merge-function.md b/data-explorer/kusto/query/bag-merge-function.md index 0851fe1b50..6e10b15f52 100644 --- a/data-explorer/kusto/query/bag-merge-function.md +++ b/data-explorer/kusto/query/bag-merge-function.md @@ -13,7 +13,7 @@ The function merges multiple `dynamic` property bags into a single `dynamic` pro ## Syntax -`bag_merge(`*bag1*`,`*bag2*`[`,`*bag3*, ...])` +`bag_merge(`*bag1*`,`*bag2*`,`*bag3*`, ...])` [!INCLUDE [syntax-conventions-note](../includes/syntax-conventions-note.md)] diff --git a/data-explorer/kusto/query/geo-line-lookup-plugin.md b/data-explorer/kusto/query/geo-line-lookup-plugin.md index f2310619ce..8a2af6e0fe 100644 --- a/data-explorer/kusto/query/geo-line-lookup-plugin.md +++ b/data-explorer/kusto/query/geo-line-lookup-plugin.md @@ -13,7 +13,7 @@ The `geo_line_lookup` plugin looks up a `Line` value in a lookup table and retur ## Syntax -*T* `|` `evaluate` `geo_line_lookup(` *LookupTable* `,` *LookupLineKey* `,` *SourceLongitude* `,` *SourceLatitude* `,` *Radius* `,` [ *return_unmatched* ] `,` [ *lookup_area_radius* ] `)` +*T* `|` `evaluate` `geo_line_lookup(` *LookupTable* `,` *LookupLineKey* `,` *SourceLongitude* `,` *SourceLatitude* `,` *Radius* `,` [ *return_unmatched* ] `,` [ *lookup_area_radius* ] `,` [ *return_lookup_key* ] `)` ## Parameters @@ -27,6 +27,7 @@ The `geo_line_lookup` plugin looks up a `Line` value in a lookup table and retur | *Radius* | `real` | :heavy_check_mark: | Length from the line where the source location is considered a match.| | *return_unmatched* | `bool` | | An optional boolean flag that defines if the result should include all or only matching rows (default: `false` - only matching rows returned).| | *lookup_area_radius* | `real` | | An optional lookup area radius distance in meters value that may help in matching locations to their respective lines.| +| *return_lookup_key* | `bool` | | An optional boolean flag that defines if the result should include column *LookupLineKey* (default: `false`).| ## Returns @@ -81,7 +82,7 @@ The following example returns only matching rows. :::moniker range="azure-data-explorer" > [!div class="nextstepaction"] -> Run the query +> Run the query ::: moniker-end ```kusto @@ -98,7 +99,7 @@ let locations = datatable(location_name:string, longitude:real, latitude:real) "Kensington Palace", -0.1885272501232862, 51.504906159672316 ]; locations -| evaluate geo_line_lookup(roads, road, longitude, latitude, 100) +| evaluate geo_line_lookup(roads, road, longitude, latitude, 100, return_lookup_key = true) ``` **Output** @@ -112,7 +113,7 @@ The following example returns both matching and nonmatching rows. :::moniker range="azure-data-explorer" > [!div class="nextstepaction"] -> Run the query +> Run the query ::: moniker-end ```kusto @@ -129,7 +130,7 @@ let locations = datatable(location_name:string, longitude:real, latitude:real) "Kensington Palace", -0.1885272501232862, 51.504906159672316 ]; locations -| evaluate geo_line_lookup(roads, road, longitude, latitude, 100, return_unmatched = true) +| evaluate geo_line_lookup(roads, road, longitude, latitude, 100, return_unmatched = true, return_lookup_key = true) ``` **Output** @@ -145,7 +146,7 @@ The following example returns both matching and nonmatching rows, with radius se :::moniker range="azure-data-explorer" > [!div class="nextstepaction"] -> Run the query +> Run the query ::: moniker-end ```kusto @@ -162,7 +163,7 @@ let locations = datatable(location_name:string, longitude:real, latitude:real) "Kensington Palace", -0.1885272501232862, 51.504906159672316 ]; locations -| evaluate geo_line_lookup(roads, road, longitude, latitude, 350, return_unmatched = true) +| evaluate geo_line_lookup(roads, road, longitude, latitude, 350, return_unmatched = true, return_lookup_key = true) ``` |location_name|longitude|latitude|road_name|road diff --git a/data-explorer/kusto/query/geo-polygon-lookup-plugin.md b/data-explorer/kusto/query/geo-polygon-lookup-plugin.md index c9c9ee72d5..13ea6ed7d0 100644 --- a/data-explorer/kusto/query/geo-polygon-lookup-plugin.md +++ b/data-explorer/kusto/query/geo-polygon-lookup-plugin.md @@ -13,7 +13,7 @@ The `geo_polygon_lookup` plugin looks up a `Polygon` value in a lookup table and ## Syntax -*T* `|` `evaluate` `geo_polygon_lookup(` *LookupTable* `,` *LookupPolygonKey* `,` *SourceLongitude* `,` *SourceLatitude* `,` [ *radius* ] `,` [ *return_unmatched* ] `,` [ *lookup_area_radius* ] `)` +*T* `|` `evaluate` `geo_polygon_lookup(` *LookupTable* `,` *LookupPolygonKey* `,` *SourceLongitude* `,` *SourceLatitude* `,` [ *radius* ] `,` [ *return_unmatched* ] `,` [ *lookup_area_radius* ] `,` [ *return_lookup_key* ] `)` ## Parameters @@ -27,6 +27,7 @@ The `geo_polygon_lookup` plugin looks up a `Polygon` value in a lookup table and | *radius* | `real` | | An optional radius value that defines the length from the polygon borders where the location is considered a match.| | *return_unmatched* | `bool` | | An optional boolean flag that defines if the result should include all or only matching rows (default: `false` - only matching rows returned).| | *lookup_area_radius* | `real` | | An optional lookup area radius distance in meters value that may help in matching locations to their respective polygons.| +| *return_lookup_key* | `bool` | | An optional boolean flag that defines if the result should include column *LookupPolygonKey* (default: `false`).| ## Returns @@ -90,7 +91,7 @@ The following example returns only matching rows. :::moniker range="azure-data-explorer" > [!div class="nextstepaction"] -> Run the query +> Run the query ::: moniker-end ```kusto @@ -108,7 +109,7 @@ let locations = datatable(location_name:string, longitude:real, latitude:real) "Statue of Liberty", -74.04462223203123, 40.689195627512674, ]; locations -| evaluate geo_polygon_lookup(polygons, polygon, longitude, latitude) +| evaluate geo_polygon_lookup(polygons, polygon, longitude, latitude, return_lookup_key = true) ``` **Output** @@ -123,7 +124,7 @@ The following example returns both matching and nonmatching rows. :::moniker range="azure-data-explorer" > [!div class="nextstepaction"] -> Run the query +> Run the query ::: moniker-end ```kusto @@ -141,7 +142,7 @@ let locations = datatable(location_name:string, longitude:real, latitude:real) "Statue of Liberty", -74.04462223203123, 40.689195627512674, ]; locations -| evaluate geo_polygon_lookup(polygons, polygon, longitude, latitude, return_unmatched = true) +| evaluate geo_polygon_lookup(polygons, polygon, longitude, latitude, return_unmatched = true, return_lookup_key = true) ``` **Output** @@ -158,7 +159,7 @@ The following example returns both matching and nonmatching rows where radius is :::moniker range="azure-data-explorer" > [!div class="nextstepaction"] -> Run the query +> Run the query ::: moniker-end ```kusto @@ -176,7 +177,7 @@ let locations = datatable(location_name:string, longitude:real, latitude:real) "Statue of Liberty", -74.04462223203123, 40.689195627512674, ]; locations -| evaluate geo_polygon_lookup(polygons, polygon, longitude, latitude, radius = 7000, return_unmatched = true) +| evaluate geo_polygon_lookup(polygons, polygon, longitude, latitude, radius = 7000, return_unmatched = true, return_lookup_key = true) ``` **Output** diff --git a/data-explorer/kusto/query/scalar-functions.md b/data-explorer/kusto/query/scalar-functions.md index 0c23327297..a9450c0237 100644 --- a/data-explorer/kusto/query/scalar-functions.md +++ b/data-explorer/kusto/query/scalar-functions.md @@ -257,6 +257,7 @@ This article lists all available scalar functions grouped by type. For aggregati |[series_pearson_correlation()](series-pearson-correlation-function.md)|Calculates the Pearson correlation coefficient of two series.| |[series_periods_detect()](series-periods-detect-function.md)|Finds the most significant periods that exist in a time series.| |[series_periods_validate()](series-periods-validate-function.md)|Checks whether a time series contains periodic patterns of given lengths.| +|[series_product()](series-product-function.md)|Calculates the product of numeric series elements.| |[series_seasonal()](series-seasonal-function.md)|Finds the seasonal component of the series.| |[series_stats()](series-stats-function.md)|Returns statistics for a series in multiple columns.| |[series_stats_dynamic()](series-stats-dynamic-function.md)|Returns statistics for a series in dynamic object.| diff --git a/data-explorer/kusto/query/search-operator.md b/data-explorer/kusto/query/search-operator.md index 577edeb832..217d8219d0 100644 --- a/data-explorer/kusto/query/search-operator.md +++ b/data-explorer/kusto/query/search-operator.md @@ -54,8 +54,6 @@ You can also restrict the search to a specific column, look for an exact match i Use boolean expressions to combine conditions and create more complex searches. For example, `"error" and x==123` would result in a search for records that have the term `error` in any columns and the value `123` in the `x` column. - - ### Search predicate syntax examples |# |Syntax |Meaning (equivalent `where`) |Comments| @@ -78,22 +76,18 @@ Use boolean expressions to combine conditions and create more complex searches. Unlike the [find operator](find-operator.md), the `search` operator doesn't support the following syntax: -1. `withsource=`: The output always includes a column called `$table` of type `string` whose value - is the table name from which each record was retrieved (or some system-generated name if the source +1. `withsource=`: The output always includes a column called `$table` of type `string` whose value is the table name from which each record was retrieved (or some system-generated name if the source isn't a table but a composite expression). -2. `project=`, `project-smart`: The output schema is equivalent to `project-smart` output schema. +2. `project=`, `project-smart`: The `search` operator doesn't support these options for customizing the output columns. Instead, it automatically selects a relevant set of columns for the output, which is equivalent to the set of columns retrieved by the `project-smart` option in the `find` operator. ## Examples -The example in this section shows how to use the syntax to help you get started. - [!INCLUDE [help-cluster](../includes/help-cluster-note.md)] -### Global term search - +The followiwing example shows how to execute a global term search. Search for the term Green in all the tables of the *ContosoSales* database. -The output finds records with the term *Green* as a last name or a color in the `Customers`, `Products`, and `SalesTable` tables. +The output finds records with the term *Green* as a last name or a color in the `Customers`, `Products`, and `SalesTable` tables. :::moniker range="azure-data-explorer" > [!div class="nextstepaction"] @@ -115,8 +109,7 @@ The output finds records with the term *Green* as a last name or a color in the | Customers | Beverly Hills | North America | 7674 | Graduate Degree | James | M | Green | | Customers | Burbank | North America | 5241 | Graduate Degree | Madeline | F | Green | -### Conditional global term search - +The following example shows how to execute a conditional global term search. Search for records that contain the term *Green* and one of either terms *Deluxe* or *Proseware* in the *ContosoSales* database. :::moniker range="azure-data-explorer" @@ -140,8 +133,7 @@ search "Green" and ("Deluxe" or "Proseware") | Products | Proseware Desk Jet All-in-One Printer, Scanner, Copier M350 Green | Proseware, Inc. | Green | Regular | Computers | | Products | Proseware Duplex Scanner M200 Green | Proseware, Inc. | Green | Regular | Computers | -### Search a specific table - +The following example demonstrates how to search for a term within a specific table. Search for the term *Green* only in the `Customers` table. :::moniker range="azure-data-explorer" @@ -164,8 +156,7 @@ search in (Products) "Green" | Products | NT Wireless Bluetooth Stereo Headphones M402 Green | Northwind Traders | Green | | Products | NT Wireless Transmitter and Bluetooth Headphones M150 Green | Northwind Traders | Green | -### Case-sensitive search - +The following example demonstrates how to search for a case-sensitive term. Search for records that match the case-sensitive term in the *ContosoSales* database. :::moniker range="azure-data-explorer" @@ -189,8 +180,7 @@ search kind=case_sensitive "blue" | NewSales | Litware 120mm Blue LED Case Fan E901 blue | Litware, Inc. | blue | Economy | | NewSales | Litware 120mm Blue LED Case Fan E901 blue | Litware, Inc. | blue | Economy | -### Search specific columns - +The following example demonstrates how to search for a term in specific columns. Search for the terms *Aaron* and *Hughes*, in the "FirstName" and "LastName" columns respectively, in the *ContosoSales* database. :::moniker range="azure-data-explorer" @@ -213,8 +203,7 @@ search FirstName:"Aaron" or LastName:"Hughes" | Customers | 13436 | Graduate Degree | Mariah | F | Hughes | | Customers | 10152 | Graduate Degree | Aaron | M | Campbell | -### Limit search by timestamp - +The following example demonstrates how to search for a term with a timestamp. Search for the term *Hughes* in the *ContosoSales* database, if the term appears in a record with a date greater than the given date in 'datetime'. :::moniker range="azure-data-explorer" diff --git a/data-explorer/kusto/query/series-product-function.md b/data-explorer/kusto/query/series-product-function.md new file mode 100644 index 0000000000..4949552ae6 --- /dev/null +++ b/data-explorer/kusto/query/series-product-function.md @@ -0,0 +1,46 @@ +--- +title: series_product() +description: Learn how to use the series_product() function to calculate the product of series elements. +ms.reviewer: adieldar +ms.topic: reference +ms.date: 04/08/2025 +--- +# series_product() + +> [!INCLUDE [applies](../includes/applies-to-version/applies.md)] [!INCLUDE [fabric](../includes/applies-to-version/fabric.md)] [!INCLUDE [azure-data-explorer](../includes/applies-to-version/azure-data-explorer.md)] [!INCLUDE [monitor](../includes/applies-to-version/monitor.md)] [!INCLUDE [sentinel](../includes/applies-to-version/sentinel.md)] + +Calculates the product of series elements. + +## Syntax + +`series_product(`*series*`)` + +[!INCLUDE [syntax-conventions-note](../includes/syntax-conventions-note.md)] + +## Parameters + +| Name | Type | Required | Description | +|--|--|--|--| +| *series* | `dynamic` | :heavy_check_mark: | Array of numeric values. | + +## Returns + +Returns a double type value with the product of the elements of the array. + +## Example + +:::moniker range="azure-data-explorer" +> [!div class="nextstepaction"] +> Run the query +::: moniker-end + +```kusto +print arr=dynamic([1,2,3,4]) +| extend series_product=series_product(arr) +``` + +**Output** + +|s1|series_product| +|---|---| +|[1,2,3,4]|24| diff --git a/data-explorer/kusto/query/summarize-operator.md b/data-explorer/kusto/query/summarize-operator.md index 90257fcbc6..9588705326 100644 --- a/data-explorer/kusto/query/summarize-operator.md +++ b/data-explorer/kusto/query/summarize-operator.md @@ -27,15 +27,15 @@ Produces a table that aggregates the content of the input table. |--|--|--|--| |*Column*| `string` ||The name for the result column. Defaults to a name derived from the expression.| |*Aggregation*| `string` | :heavy_check_mark:|A call to an [aggregation function](aggregation-functions.md) such as `count()` or `avg()`, with column names as arguments.| -|*GroupExpression*|scalar| :heavy_check_mark:|A scalar expression that can reference the input data. The output will have as many records as there are distinct values of all the group expressions.| +|*GroupExpression*|scalar| :heavy_check_mark:|A scalar expression that can reference the input data. The output has as many records as there are distinct values of all the group expressions.| |*SummarizeParameters*| `string` ||Zero or more space-separated parameters in the form of *Name* `=` *Value* that control the behavior. See [supported parameters](#supported-parameters).| > [!NOTE] > When the input table is empty, the output depends on whether *GroupExpression* > is used: > -> * If *GroupExpression* is not provided, the output will be a single (empty) row. -> * If *GroupExpression* is provided, the output will have no rows. +> * If *GroupExpression* isn't provided, the output is a single (empty) row. +> * If *GroupExpression* is provided, the output has no rows. ### Supported parameters @@ -43,14 +43,14 @@ Produces a table that aggregates the content of the input table. |---|---| |`hint.num_partitions` |Specifies the number of partitions used to share the query load on cluster nodes. See [shuffle query](shuffle-query.md) | |`hint.shufflekey=` |The `shufflekey` query shares the query load on cluster nodes, using a key to partition data. See [shuffle query](shuffle-query.md) | - |`hint.strategy=shuffle` |The `shuffle` strategy query shares the query load on cluster nodes, where each node will process one partition of the data. See [shuffle query](shuffle-query.md) | + |`hint.strategy=shuffle` |The `shuffle` strategy query shares the query load on cluster nodes, where each node processes one partition of the data. See [shuffle query](shuffle-query.md) | ## Returns The input rows are arranged into groups having the same values of the `by` expressions. Then the specified aggregation functions are computed over each group, producing a row for each group. The result contains the `by` columns and also at least one column for each computed aggregate. (Some aggregation functions return multiple columns.) The result has as many rows as there are distinct combinations of `by` values -(which may be zero). If there are no group keys provided, the result has a single +(which might be zero). If there are no group keys provided, the result has a single record. To summarize over ranges of numeric values, use `bin()` to reduce ranges to discrete values. @@ -58,7 +58,7 @@ To summarize over ranges of numeric values, use `bin()` to reduce ranges to disc > [!NOTE] > > * Although you can provide arbitrary expressions for both the aggregation and grouping expressions, it's more efficient to use simple column names, or apply `bin()` to a numeric column. -> * The automatic hourly bins for datetime columns is no longer supported. Use explicit binning instead. For example, `summarize by bin(timestamp, 1h)`. +> * The automatic hourly bins for datetime columns are no longer supported. Use explicit binning instead. For example, `summarize by bin(timestamp, 1h)`. ## Default values of aggregations @@ -71,19 +71,13 @@ The following table summarizes the default values of aggregations: | All others | null | > [!NOTE] -> When applying these aggregates to entities that include null values, the null values are ignored and don't factor into the calculation. For examples, see [Aggregates default values](#aggregates-default-values). +> When applying these aggregates to entities that include null values, the null values are ignored and don't factor into the calculation. See [Examples](#examples). ## Examples -The example in this section shows how to use the syntax to help you get started. - [!INCLUDE [help-cluster](../includes/help-cluster-note.md)] -:::image type="content" source="media/summarizeoperator/summarize-price-by-supplier.png" alt-text="Summarize price by fruit and supplier."::: - -### Unique combination - -The following query determines what unique combinations of `State` and `EventType` there are for storms that resulted in direct injury. There are no aggregation functions, just group-by keys. The output will just show the columns for those results. +The following example determines what unique combinations of `State` and `EventType` there are for storms that resulted in direct injury. There are no aggregation functions, just group-by keys. The output displays only the columns for those results. :::moniker range="azure-data-explorer" > [!div class="nextstepaction"] @@ -109,9 +103,7 @@ The following table shows only the first 5 rows. To see the full output, run the | TEXAS | Flood | |...|...| -### Minimum and maximum timestamp - -Finds the minimum and maximum heavy rain storms in Hawaii. There's no group-by clause, so there's just one row in the output. +The following example finds the minimum and maximum heavy rain storms in Hawaii. There's no group-by clause, so there's just one row in the output. :::moniker range="azure-data-explorer" > [!div class="nextstepaction"] @@ -133,9 +125,7 @@ StormEvents ::: moniker range="microsoft-fabric || azure-data-explorer || azure-monitor || microsoft-sentinel" -### Distinct count - -The following query calculates the number of unique storm event types for each state and sorts the results by the number of unique storm types: +The following example calculates the number of unique storm event types for each state and sorts the results by the number of unique storm types: > [!div class="nextstepaction"] > Run the query @@ -159,8 +149,6 @@ The following table shows only the first 5 rows. To see the full output, run the | ILLINOIS | 23 | |...|...| -### Histogram - The following example calculates a histogram storm event types that had storms lasting longer than 1 day. Because `Duration` has many values, use `bin()` to group its values into 1-day intervals. > [!div class="nextstepaction"] @@ -185,8 +173,7 @@ StormEvents | Heavy Rain | 29.00:00:00 | 42 | | ... | ... | ... | -### Aggregates default values - +The following example shows the default values of aggregates when the input table is empty. The `summarize` operator is used to calculate the default values of the aggregates. When the input of `summarize` operator has at least one empty group-by key, its result is empty, too. When the input of `summarize` operator doesn't have an empty group-by key, the result is the default values of the aggregates used in the `summarize` For more information, see [Default values of aggregations](#default-values-of-aggregations). @@ -235,13 +222,11 @@ datatable(x:long)[] |---|---| |[]|[]| -The aggregate avg sums all the non-nulls and counts only those which participated in the calculation (won't take nulls into account). - +The avg aggregate sums only the non-null values and counts only those values in its calculation, ignoring any nulls. > [!div class="nextstepaction"] > Run the query - ```kusto range x from 1 to 4 step 1 | extend y = iff(x == 1, real(null), real(5)) @@ -254,7 +239,7 @@ range x from 1 to 4 step 1 |---|---| |15|5| -The regular count will count nulls: +The standard count function includes null values in its count: > [!div class="nextstepaction"] > Run the query diff --git a/data-explorer/kusto/query/toc.yml b/data-explorer/kusto/query/toc.yml index 9fa6aa103d..1fd0372364 100644 --- a/data-explorer/kusto/query/toc.yml +++ b/data-explorer/kusto/query/toc.yml @@ -1290,7 +1290,7 @@ items: displayName: all() graph function href: all-graph-function.md - name: any() - displayName: any() graph function + displayName: any() graph function href: any-graph-function.md - name: map() displayName: map() graph function @@ -1554,6 +1554,9 @@ items: - name: series_pow() displayName: element-wise, elementwise href: series-pow-function.md + - name: series_product() + displayName: element-wise, elementwise + href: series-product-function.md - name: series_seasonal() displayName: periods href: series-seasonal-function.md diff --git a/data-explorer/manage-cluster-choose-sku.md b/data-explorer/manage-cluster-choose-sku.md index 93677ece8f..bc02c1bc87 100644 --- a/data-explorer/manage-cluster-choose-sku.md +++ b/data-explorer/manage-cluster-choose-sku.md @@ -17,7 +17,7 @@ You can change the compute SKU for the cluster at any time by [scaling up the cl You can use the [Pricing calculator](https://aka.ms/adx.cost) to estimate the pricing of your Azure Data Explorer cluster, based on your workloads and data volume. > [!TIP] -> By purchasing a reservation, you can pre-pay for the cluster, the virtual machines used in the cluster, and storage resources costs for a period of one or three years. These reserved instances (RI) are bought separately and can save a significant amount of money securing the best rates for your Azure Data Explorer cluster. For more information, see [Prepay for Azure Data Explorer markup units with Azure Data Explorer reserved capacity](pricing-reserved-capacity.md). +> By combining savings plans and reserved instances, you can save a significant amount of money securing the best rates for your cluster. Savings plans are recommended for the virtual machines used in the cluster, while reserved instances are recommended for storage resources costs. Both of these options can be purchased for a period of one or three years and are purchased separately. For more information, see [Prepay for Azure Data Explorer markup units with Azure Data Explorer reserved capacity](pricing-reserved-capacity.md). ## Select a cluster type diff --git a/data-explorer/net-sdk-ingest-data.md b/data-explorer/net-sdk-ingest-data.md index 4bbb06e81c..d38a1fb4f1 100644 --- a/data-explorer/net-sdk-ingest-data.md +++ b/data-explorer/net-sdk-ingest-data.md @@ -47,7 +47,7 @@ For example, if your domain is *contoso.com*, the URL is: [https://login.microso "authorization_endpoint":"https://login.microsoftonline.com/6babcaad-604b-40ac-a9d7-9fd97c0b779f/oauth2/authorize" ``` -The tenant ID in this case is `6babcaad-604b-40ac-a9d7-9fd97c0b779f`. +The tenant ID in this case is `aaaabbbb-0000-cccc-1111-dddd2222eeee`. This example uses an interactive Microsoft Entra user authentication to access the cluster. You can also use Microsoft Entra application authentication with certificate or application secret. Make sure to set the correct values for `tenantId` and `clusterUri` before running this code. diff --git a/data-explorer/pricing-reservation-discount.md b/data-explorer/pricing-reservation-discount.md index a871ade79d..f5df2332d1 100644 --- a/data-explorer/pricing-reservation-discount.md +++ b/data-explorer/pricing-reservation-discount.md @@ -24,7 +24,7 @@ A reservation discount is applied to Azure Data Explorer markup consumption on a > [!NOTE] > -> * It is **highly recommended** to purchase [reservation capacity](/azure/virtual-machines/prepay-reserved-vm-instances) for the virtual machines used for the Azure Data Explorer cluster to maximize the reserved capacity savings. +> * We **highly recommend** purchasing [savings plan](/azure/cost-management-billing/savings-plan/savings-plan-compute-overview) for virtual machines used in your cluster to maximize reserved capacity savings. > * The reservation purchase will apply discounts to all regions. ## Examples diff --git a/data-explorer/pricing-reserved-capacity.md b/data-explorer/pricing-reserved-capacity.md index afef78221c..d849ae609d 100644 --- a/data-explorer/pricing-reserved-capacity.md +++ b/data-explorer/pricing-reserved-capacity.md @@ -10,7 +10,7 @@ ms.date: 11/03/2019 Save money with Azure Data Explorer by prepaying for the markup units compared to pay-as-you-go prices. With Azure Data Explorer reserved capacity, you make a commitment for Azure Data Explorer use for a period of one or three years to get a significant discount on the Azure Data Explorer markup costs. To purchase Azure Data Explorer reserved capacity, you only need to specify the term, it will apply to all deployments of Azure Data Explorer in all regions. -By purchasing a reservation, you're pre-paying for the markup costs for a period of one or three years. As soon as you buy a reservation, the Azure Data Explorer markup charges that match the reservation attributes are no longer charged at the pay-as-you go rates. Azure Data Explorer clusters that are already running or ones that are newly deployed will automatically get the benefit. This reservation doesn't cover compute, networking, or storage charges associated with the clusters. Reserved capacity for these resources needs to be purchased separately. At the end of the reservation term, the billing benefit expires and the Azure Data Explorer markup units are billed at the pay-as-you go price. Reservations don't auto-renew. For pricing information, see the [Azure Data Explorer pricing page](https://azure.microsoft.com/pricing/details/data-explorer/). +By purchasing a reservation, you're pre-paying for the markup costs for a period of one or three years. As soon as you buy a reservation, the Azure Data Explorer markup charges that match the reservation attributes are no longer charged at the pay-as-you go rates. Azure Data Explorer clusters that are already running or ones that are newly deployed will automatically get the benefit. This reservation doesn't cover compute, networking, or storage charges associated with the clusters. Savings plans for compute and reserved capacity for networking and storage resources needs to be purchased separately. At the end of the reservation term, the billing benefit expires, and the Azure Data Explorer markup units are billed at the pay-as-you go price. Reservations don't auto-renew. For pricing information, see the [Azure Data Explorer pricing page](https://azure.microsoft.com/pricing/details/data-explorer/). You can buy Azure Data Explorer reserved capacity in the [Azure portal](https://portal.azure.com). To buy Azure Data Explorer reserved capacity: diff --git a/data-explorer/python-ingest-data.md b/data-explorer/python-ingest-data.md index 8a92e3cd8e..c9f6b31ed4 100644 --- a/data-explorer/python-ingest-data.md +++ b/data-explorer/python-ingest-data.md @@ -58,7 +58,7 @@ For example, if your domain is *contoso.com*, the URL is: [https://login.microso "authorization_endpoint":"https://login.microsoftonline.com/6babcaad-604b-40ac-a9d7-9fd97c0b779f/oauth2/authorize" ``` -The tenant ID in this case is `6babcaad-604b-40ac-a9d7-9fd97c0b779f`. Set the values for AAD_TENANT_ID, KUSTO_URI, KUSTO_INGEST_URI, and KUSTO_DATABASE before running this code. +The tenant ID in this case is `aaaabbbb-0000-cccc-1111-dddd2222eeee`. Set the values for AAD_TENANT_ID, KUSTO_URI, KUSTO_INGEST_URI, and KUSTO_DATABASE before running this code. ```python AAD_TENANT_ID = "" diff --git a/data-explorer/python-query-data.md b/data-explorer/python-query-data.md index 62539e18ca..cc8acdbfc3 100644 --- a/data-explorer/python-query-data.md +++ b/data-explorer/python-query-data.md @@ -50,7 +50,7 @@ For example, if your domain is *contoso.com*, the URL is: [https://login.microso "authorization_endpoint":"https://login.microsoftonline.com/6babcaad-604b-40ac-a9d7-9fd97c0b779f/oauth2/authorize" ``` -The tenant ID in this case is `6babcaad-604b-40ac-a9d7-9fd97c0b779f`. Set the value for AAD_TENANT_ID before running this code. +The tenant ID in this case is `aaaabbbb-0000-cccc-1111-dddd2222eeee`. Set the value for AAD_TENANT_ID before running this code. ```python AAD_TENANT_ID = ""