Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
974b2d4
updated example
EdB-MSFT Dec 19, 2024
dda7709
added run query buttomn
EdB-MSFT Dec 19, 2024
68ee381
Update create-function.md
EdB-MSFT Dec 19, 2024
9954209
fixes
EdB-MSFT Jan 6, 2025
49dc9e9
Merge branch 'uuf-create-function' of https://github.com/EdB-MSFT/dat…
EdB-MSFT Jan 6, 2025
ef38dce
clarify joins
EdB-MSFT Jan 7, 2025
903f9a5
chnage
EdB-MSFT Jan 7, 2025
84ea761
examples for ingestionMappingReference
EdB-MSFT Jan 15, 2025
58255be
fix
EdB-MSFT Jan 15, 2025
e6de747
formmat
EdB-MSFT Jan 15, 2025
4a55f49
formmat2
EdB-MSFT Jan 15, 2025
64ce1db
fix2
EdB-MSFT Jan 15, 2025
a2ed223
fix3
EdB-MSFT Jan 16, 2025
b3611c0
fix
EdB-MSFT Jan 16, 2025
e054fb4
fix4
EdB-MSFT Jan 16, 2025
40f6d15
added example to area charts
EdB-MSFT Jan 22, 2025
991cf4e
added split panels
EdB-MSFT Jan 22, 2025
ab94df2
fix
EdB-MSFT Jan 22, 2025
6896623
fix2
EdB-MSFT Jan 22, 2025
ad83075
fix2
EdB-MSFT Jan 22, 2025
dd41e46
fix3
EdB-MSFT Jan 22, 2025
a2947eb
fix3
EdB-MSFT Jan 22, 2025
b50eef2
fix4
EdB-MSFT Jan 22, 2025
d64c763
Apply suggestions from code review
shsagir Jan 23, 2025
709c413
review fixes
EdB-MSFT Jan 23, 2025
1964947
Update request-rate-limit-policy.md
y0nil Jan 24, 2025
b859cb8
populated branch
ktalmor Jan 26, 2025
6810502
example updated
ktalmor Jan 26, 2025
75da0a0
Fixed-versioned-link
ktalmor Jan 26, 2025
bd01e52
fix again
ktalmor Jan 26, 2025
ea2b403
Merge branch 'main' of https://github.com/MicrosoftDocs/dataexplorer-…
ktalmor Jan 26, 2025
8674d11
graph-match optional constraints required project
royoMS Jan 27, 2025
fa860ae
Merge branch 'main' of https://github.com/MicrosoftDocs/dataexplorer-…
ktalmor Jan 27, 2025
591bc28
Merge branch 'main' of https://github.com/MicrosoftDocs/dataexplorer-…
ktalmor Jan 28, 2025
edc389f
Merge branch 'main' of https://github.com/ktalmor/dataexplorer-docs-p…
ktalmor Jan 28, 2025
20304af
replaced help include
ktalmor Jan 28, 2025
31ef46c
5 panels
EdB-MSFT Jan 28, 2025
2eb8472
corrections
EdB-MSFT Jan 28, 2025
949781a
Clarify `lookup` operator table size assumptions
EdB-MSFT Jan 28, 2025
7db32b8
Add newline after lookup operator description
EdB-MSFT Jan 28, 2025
ab62fb4
Update pull_request_template.md
shsagir Jan 29, 2025
881ef50
Update show-continuous-failures.md
slavikn84 Jan 29, 2025
94168cb
Merge pull request #6593 from slavikn84/patch-31
prmerger-automator[bot] Jan 29, 2025
b3aa90b
Update data-explorer/kusto/query/tutorials/join-data-from-multiple-ta…
shsagir Jan 29, 2025
72b5569
Merge pull request #6586 from royoMS/patch-10
prmerger-automator[bot] Jan 29, 2025
b31ca37
Merge pull request #6505 from EdB-MSFT/join-data-from-multiple-tables
prmerger-automator[bot] Jan 29, 2025
1bf355f
Merge pull request #6571 from y0nil/patch-3
PMEds28 Jan 29, 2025
5d66f35
Merge pull request #6485 from EdB-MSFT/uuf-create-function
prmerger-automator[bot] Jan 29, 2025
31868bc
Clarify cross-cluster join strategy examples
shsagir Jan 29, 2025
ec882ac
Fix typos in timechart axis labels
PMEds28 Jan 29, 2025
bfca22e
Merge pull request #6544 from EdB-MSFT/ingestion-mappings
PMEds28 Jan 29, 2025
687db80
Merge pull request #6578 from ktalmor/wi-364896-batch5
PMEds28 Jan 29, 2025
02ea4fa
Merge pull request #6570 from EdB-MSFT/area-charts
PMEds28 Jan 29, 2025
18ebcef
Merge pull request #6595 from MicrosoftDocs/main
PMEds28 Jan 29, 2025
3c888da
Merging changes synced from https://github.com/MicrosoftDocs/dataexpl…
Jan 29, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ Please add a brief comment outlining the purpose of this PR. Add links to any re

## Make sure you've done the following:

1. **Acrolinx:** Make sure your Acrolinx score is **at least 80** (higher is better) and with **0** spelling issues.
1. **Acrolinx**: Make sure your Acrolinx score is **at least 80** (higher is better) and with **0** spelling issues.
1. **Successful build**: Review the build status to make sure **all files are green** (Succeeded) and there are no errors, warnings, or suggestions.
1. **Preview the pages**: Click each **Preview URL** link, scan the entire page looking for formatting issues, in particular the parts you edited.
1. **Check the Table of Contents:** If you're adding a new markdown file, make sure it is linked from the table of contents.
1. **Check the Table of Contents**: If you're adding a new markdown file, make sure it is linked from the table of contents.
1. **Sign off**: Once the PR is finalized, add a comment with `#sign-off` . If you need to cancel the sign-off, add a comment with `#hold-off`.

**NOTE**: *Signing off means the document can be published at any time.*
Expand Down

This file was deleted.

19 changes: 10 additions & 9 deletions data-explorer/kusto/management/create-function.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ title: .create function command
description: Learn how to use the `.create function` command to create a stored function.
ms.reviewer: orspodek
ms.topic: reference
ms.date: 08/11/2024
ms.date: 12/19/2024
---
# .create function command

Expand Down Expand Up @@ -71,7 +71,7 @@ You must have at least [Database User](../access-control/role-based-access-contr

## Examples

### Simple demo function
### Simple function

The following example creates the `MyFunction1` function with a description (`docstring`), a folder named `Demo`, and defines the function.

Expand All @@ -86,17 +86,18 @@ MyFunction1()
|---|---|---|---|---|
|MyFunction1|()|{StormEvents | take 100}|Demo|Simple demo function|

### Demo function with parameter
### Function with a parameter

The following example creates the *MyFunction2* function with a description (`docstring`), folder named `Demo`, and defines the `MyLimit` parameter.
The following example creates the `MyFunction2` function with a description (`docstring`), folder named `Demo`, and defines the `Mytimestamp` parameter.

```kusto
.create function
with (docstring = 'Demo function with parameter', folder='Demo')
MyFunction2(myLimit: long)
{StormEvents | take myLimit}
.create function with (docstring = "Demo function with date parameter",folder = "Demo")
MyFunction2(Mytimestamp:datetime) {
StormEvents
| where EndTime <= Mytimestamp
}
```

|Name|Parameters|Body|Folder|DocString|
|---|---|---|---|---|
|MyFunction2|(myLimit:long)|{StormEvents &#124; take myLimit}|Demo|Demo function with parameter|
|MyFunction2|(Mytimestamp:datetime)|{StormEvents &#124; where EndTime <= Mytimestamp}|Demo|Demo function with date parameter|
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ ms.date: 12/08/2024

> [!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)]

Returns all failures logged as part of the continuous export. To view only a specific time range, filter the results by the **Timestamp** column.
Returns all failures logged as part of the continuous export within the past 14 days. To view only a specific time range, filter the results by the **Timestamp** column.

::: moniker range="azure-data-explorer"
The command doesn't return any results if executed on a [follower database](/azure/data-explorer/follower), it must be executed against the leader database.
Expand Down
59 changes: 58 additions & 1 deletion data-explorer/kusto/management/mappings.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ Ingestion mappings are used during ingestion to map incoming data to columns ins

Data Explorer supports different types of mappings, both row-oriented (CSV, JSON, AVRO and W3CLOGFILE), and column-oriented (Parquet and ORC).

Ingestion mappings can be [precreated](create-ingestion-mapping-command.md) and can be referenced from the ingest command using `ingestionMappingReference` parameters. Ingestion is possible without specifying a mapping. For more information, see [identity mapping](#identity-mapping).
Ingestion mappings can be defined in the ingest command, or can be [precreated](create-ingestion-mapping-command.md) and referenced from the ingest command using `ingestionMappingReference` parameters. Ingestion is possible without specifying a mapping. For more information, see [identity mapping](#identity-mapping).

Each element in the mapping list is constructed from three fields:

Expand Down Expand Up @@ -47,6 +47,63 @@ The following table defines mapping types to be used when ingesting or querying
| ORC | [ORC Mapping](orc-mapping.md) |
| W3CLOGFILE | [W3CLOGFILE Mapping](w3c-log-file-mapping.md) |


## Ingestion mapping examples

The following examples use the `RawEvents` table with the following schema:

```kusto
.create table RawEvents (timestamp: datetime, deviceId: guid, messageId: guid, temperature: decimal, humidity: decimal)
```

### Simple mapping

The following example shows ingestion where the mapping is defined in the ingest command. The command ingests a JSON file from a URL into the `RawEvents` table. The mapping specifies the path to each field in the JSON file.

````kusto
.ingest into table RawEvents ('https://kustosamplefiles.blob.core.windows.net/jsonsamplefiles/simple.json')
with (
format = "json",
ingestionMapping =
```
[
{"column":"timestamp","Properties":{"path":"$.timestamp"}},
{"column":"deviceId","Properties":{"path":"$.deviceId"}},
{"column":"messageId","Properties":{"path":"$.messageId"}},
{"column":"temperature","Properties":{"path":"$.temperature"}},
{"column":"humidity","Properties":{"path":"$.humidity"}}
]
```
)
````

### Mapping with `ingestionMappingReference`

To map the same JSON file using a precreated mapping, create the `RawEventMapping` ingestion mapping reference with the following command:

````kusto
.create table RawEvents ingestion json mapping 'RawEventMapping'
```
[
{"column":"timestamp","Properties":{"path":"$.timestamp"}},
{"column":"deviceId","Properties":{"path":"$.deviceId"}},
{"column":"messageId","Properties":{"path":"$.messageId"}},
{"column":"temperature","Properties":{"path":"$.temperature"}},
{"column":"humidity","Properties":{"path":"$.humidity"}}
]
```
````

Ingest the JSON file using the `RawEventMapping` ingestion mapping reference with the following command:

```kusto
.ingest into table RawEvents ('https://kustosamplefiles.blob.core.windows.net/jsonsamplefiles/simple.json')
with (
format="json",
ingestionMappingReference="RawEventMapping"
)
```

## Identity mapping

Ingestion is possible without specifying `ingestionMapping` or `ingestionMappingReference` properties. The data is mapped using an identity data mapping derived from the table's schema. The table schema remains the same. `format` property should be specified. See [ingestion formats](../ingestion-supported-formats.md).
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ A request rate limit of kind `ResourceUtilization` includes the following proper
|--|--|--|--|
| ResourceKind | `ResourceKind` | The resource to limit.</br></br>When `ResourceKind` is `TotalCpuSeconds`, the limit is enforced based on post-execution reports of CPU utilization of completed requests. Requests that report utilization of 0.005 seconds of CPU or lower aren't counted. The limit (`MaxUtilization`) represents the total CPU seconds that can be consumed by requests within a specified time window (`TimeWindow`). For example, a user running ad-hoc queries may have a limit of 1000 CPU seconds per hour. If this limit is exceeded, subsequent queries will be throttled, even if started concurrently, as the cumulative CPU seconds have surpassed the defined limit within the sliding window period. | `RequestCount`, `TotalCpuSeconds` |
| MaxUtilization | `long` | The maximum of the resource that can be utilized. | RequestCount: [`1`, `16777215`]; TotalCpuSeconds: [`1`, `828000`] |
| TimeWindow | `timespan` | The sliding time window during which the limit is applied. | [`00:01:00`, `1.00:00:00`] |
| TimeWindow | `timespan` | The sliding time window during which the limit is applied. | [`00:00:01`, `01:00:00`] |

When a request exceeds the limit on resources utilization:

Expand Down
6 changes: 3 additions & 3 deletions data-explorer/kusto/query/graph-match-operator.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,16 @@ The `graph-match` operator searches for all occurrences of a graph pattern in an

## Syntax

*G* `|` `graph-match` [`cycles` `=` *CyclesOption*] *Pattern* `where` *Constraints* `project` [*ColumnName* `=`] *Expression* [`,` ...]
*G* `|` `graph-match` [`cycles` `=` *CyclesOption*] *Pattern* [`where` *Constraints*] `project` [*ColumnName* `=`] *Expression* [`,` ...]

## Parameters

| Name | Type | Required | Description |
|--|--|--|--|
| *G* | `string` | :heavy_check_mark: | The input graph source. |
| *Pattern* | `string` | :heavy_check_mark: | One or more comma delimited sequences of graph node elements connected by graph edge elements using graph notations. See [Graph pattern notation](#graph-pattern-notation). |
| *Constraints* | `string` | :heavy_check_mark: | A Boolean expression composed of properties of named variables in the *Pattern*. Each graph element (node/edge) has a set of properties that were attached to it during the graph construction. The constraints define which elements (nodes and edges) are matched by the pattern. A property is referenced by the variable name followed by a dot (`.`) and the property name. |
| *Expression* | `string` | | The `project` clause converts each pattern to a row in a tabular result. The project expression(s) have to be scalar and reference properties of named variables defined in the *Pattern*. A property is referenced by the variable name followed by a dot (`.`) and the attribute name. |
| *Constraints* | `string` | | A Boolean expression composed of properties of named variables in the *Pattern*. Each graph element (node/edge) has a set of properties that were attached to it during the graph construction. The constraints define which elements (nodes and edges) are matched by the pattern. A property is referenced by the variable name followed by a dot (`.`) and the property name. |
| *Expression* | `string` | :heavy_check_mark: | The `project` clause converts each pattern to a row in a tabular result. The project expression(s) have to be scalar and reference properties of named variables defined in the *Pattern*. A property is referenced by the variable name followed by a dot (`.`) and the attribute name. |
| *CyclesOption* | `string` | | Controls whether cycles are matched in the *Pattern*, allowed values: `all`, `none`, `unique_edges`. If `all` is specified then all cycles are matched, if `none` is specified cycles aren't matched, if `unique_edges` (default) is specified, cycles are matched but only if the cycles don't include the same edge more than once. |


Expand Down
4 changes: 2 additions & 2 deletions data-explorer/kusto/query/invoke-operator.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ title: invoke operator
description: Learn how to use the invoke operator to invoke a lambda expression that receives the source of `invoke` as a tabular parameter argument
ms.reviewer: alexans
ms.topic: reference
ms.date: 08/11/2024
ms.date: 01/15/2025
---
# invoke operator

Expand Down Expand Up @@ -34,7 +34,7 @@ Returns the result of the evaluated expression.

## Example

The following example shows how to use the `invoke` operator to call lambda `let` expression:
This example shows how to use the `invoke` operator to call lambda `let` expression:

:::moniker range="azure-data-explorer"
> [!div class="nextstepaction"]
Expand Down
33 changes: 12 additions & 21 deletions data-explorer/kusto/query/join-cross-cluster.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ title: Cross-cluster join
description: Learn how to perform the Cross-cluster join operation to join datasets residing on different clusters.
ms.reviewer: alexans
ms.topic: reference
ms.date: 08/11/2024
ms.date: 01/26/2025
monikerRange: "microsoft-fabric || azure-data-explorer"
---
# Cross-cluster join
Expand Down Expand Up @@ -57,40 +57,31 @@ The following list explains the supported values for the *Strategy* parameter:

## How the auto strategy works

By default, the `auto` strategy determines where the cross-cluster join should be executed based on the following rules:
By default, the `auto` strategy determines where the cross-cluster join is executed based on the following rules:

* If one of the tables is hosted in the local cluster, then the join is performed on the local cluster.
* If both tables are hosted outside of the local cluster, then join is performed on the right cluster.
* If one of the tables is hosted in the local cluster, then the join is performed on the local cluster. For example, with the auto strategy, this query is executed on the local cluster:

Consider the following examples:
```kusto
T | ... | join (cluster("B").database("DB").T2 | ...) on Col1
```

```kusto
// Example 1
T | ... | join (cluster("B").database("DB").T2 | ...) on Col1

// Example 2
cluster("B").database("DB").T | ... | join (cluster("C").database("DB2").T2 | ...) on Col1
```
* If both tables are hosted outside of the local cluster, then join is performed on the right cluster. For example, assuming neither cluster is the local cluster, the join would be executed on the right cluster:

With the `auto` strategy, "Example 1" would be executed on the local cluster. In "Example 2", assuming neither cluster is the local cluster, the join would be executed on the right cluster.
```kusto
cluster("B").database("DB").T | ... | join (cluster("C").database("DB2").T2 | ...) on Col1
```

## Performance considerations

For optimal performance, we recommend running the query on the cluster that contains the largest table.

Let's consider the following examples again:
In the following example, if the dataset produced by `T | ...` is smaller than one produced by `cluster("B").database("DB").T2 | ...` then it would be more efficient to execute the join operation on cluster `B`, in this case the right cluster instead of on the local cluster.

```kusto
// Example 1
T | ... | join (cluster("B").database("DB").T2 | ...) on Col1

// Example 2
cluster("B").database("DB").T | ... | join (cluster("C").database("DB2").T2 | ...) on Col1
```

"Example 1" is set to run on the local cluster, but if the dataset produced by `T | ...` is smaller than one produced by `cluster("B").database("DB").T2 | ...` then it would be more efficient to execute the join operation on cluster `B`, in this case the right cluster, instead of on the local cluster.

The following query does this by using the `right` strategy. With the `right` strategy, the join operation is performed on the right cluster, even if left table is in the local cluster.
You can rewrite the query to use `hint.remote=right` to optimize the performance. In this way, the join operation is performed on the right cluster, even if left table is in the local cluster.

```kusto
T | ... | join hint.remote=right (cluster("B").database("DB").T2 | ...) on Col1
Expand Down
2 changes: 2 additions & 0 deletions data-explorer/kusto/query/join-fullouter.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ A `fullouter` join combines the effect of applying both left and right outer-joi

## Example

This example query combines rows from both tables X and Y, filling in missing values with NULL where there's no match in the other table. This allows you to see all possible combinations of keys from both tables.

:::moniker range="azure-data-explorer"
> [!div class="nextstepaction"]
> <a href="https://dataexplorer.azure.com/clusters/help/databases/Samples?query=H4sIAAAAAAAAA8tJLVGIULBVSEksAcKknFQN79RKq%2BKSosy8dB2FsMSc0lRDq5z8vHRNrmguBSBQT1TXMdSBMJPUdYwQTGMoM1ldx4Qr1porB2h0JH6jjVCNBhpiaIAwxQiJbQxjpwBNNwAZH6FQo5CVn5mnkJ2Zl2KbVpqTk19akloEtDI%2FTwFoEwDuw%2F%2BW2gAAAA%3D%3D" target="_blank">Run the query</a>
Expand Down
4 changes: 3 additions & 1 deletion data-explorer/kusto/query/join-inner.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ title: inner join
description: Learn how to use the inner join flavor to merge the rows of two tables.
ms.reviewer: alexans
ms.topic: reference
ms.date: 08/11/2024
ms.date: 01/20/2025
monikerRange: "microsoft-fabric || azure-data-explorer || azure-monitor || microsoft-sentinel "
---

Expand Down Expand Up @@ -31,6 +31,8 @@ The `inner` join flavor is like the standard inner join from the SQL world. An o

## Example

The example query combines rows from tables X and Y where the keys match, showing only the rows that exist in both tables.

:::moniker range="azure-data-explorer"
> [!div class="nextstepaction"]
> <a href="https://dataexplorer.azure.com/clusters/help/databases/Samples?query=H4sIAAAAAAAAA8tJLVGIULBVSEksAcKknFQN79RKq+KSosy8dB2FsMSc0lRDq5z8vHRNrmguBSBQT1TXMdSBMJPUdYwQTGMoM1tdxxTKTFbXMeGKtebKAdoSid8WI1RbgOYZGiBMMUJiG8PYKUDTDZAsNQBZFaFQo5CVn5mnkJ2Zl2KbmZeXWgS0Oj9PAWgjAEho/dHtAAAA" target="_blank">Run the query</a>
Expand Down
6 changes: 5 additions & 1 deletion data-explorer/kusto/query/join-innerunique.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ title: innerunique join
description: Learn how to use the innerunique join flavor to merge the rows of two tables.
ms.reviewer: alexans
ms.topic: reference
ms.date: 08/11/2024
ms.date: 01/21/2025
monikerRange: "microsoft-fabric || azure-data-explorer || azure-monitor || microsoft-sentinel "
---

Expand Down Expand Up @@ -33,8 +33,12 @@ By default, the `innerunique` join flavor is used if the `kind` parameter isn't

## Examples

Review the examples and run them in your Data Explorer query page.

### Use the default innerunique join

The example query combines rows from tables X and Y where the keys match, showing only the rows that exist in both tables

:::moniker range="azure-data-explorer"
> [!div class="nextstepaction"]
> <a href="https://dataexplorer.azure.com/clusters/help/databases/Samples?query=H4sIAAAAAAAAA8tJLVGIULBVSEksAcKknFQN79RKq+KSosy8dB2FsMSc0lRDq5z8vHRNrmguBSBQT1TXMdSBMJPUdYwQTGMoM1ldx4Qr1porB2h0JH6jjVCNBhpiaIAwxQiJbQxjpwBNNwAZH6FQo5CVn5kHtCM/TwFoNADeA/cxywAAAA==" target="_blank">Run the query</a>
Expand Down
8 changes: 7 additions & 1 deletion data-explorer/kusto/query/join-leftanti.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ title: leftanti join
description: Learn how to use the leftanti join flavor to merge the rows of two tables.
ms.reviewer: alexans
ms.topic: reference
ms.date: 08/11/2024
ms.date: 01/21/2025
---

# leftanti join
Expand Down Expand Up @@ -31,6 +31,8 @@ The `leftanti` join flavor returns all records from the left side that don't mat

## Example

The example query combines rows from tables X and Y where there is no match in Y for the keys in X, effectively filtering out any rows in X that have corresponding rows in Y.

:::moniker range="azure-data-explorer"
> [!div class="nextstepaction"]
> <a href="https://dataexplorer.azure.com/clusters/help/databases/Samples?query=H4sIAAAAAAAAA8tJLVGIULBVSEksAcKknFQN79RKq+KSosy8dB2FsMSc0lRDq5z8vHRNrmguBSBQT1TXMdSBMJPUdYwQTGMoM1ldx4Qr1porB2h0JH6jjVCNBhpiaIAwxQiJbQxjpwBNNwAZH6FQo5CVn5mnkJ2Zl2Kbk5pWkphXkgm0MT9PAWgRAESy1PfZAAAA" target="_blank">Run the query</a>
Expand Down Expand Up @@ -59,3 +61,7 @@ X | join kind=leftanti Y on Key
|Key|Value1|
|---|---|
|a|1|

## Related content

* Learn about other [join flavors](join-operator.md#returns)
2 changes: 1 addition & 1 deletion data-explorer/kusto/query/join-leftouter.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ title: leftouter join
description: Learn how to use the leftouter join flavor to merge the rows of two tables.
ms.reviewer: alexans
ms.topic: reference
ms.date: 08/11/2024
ms.date: 01/21/2025
monikerRange: "microsoft-fabric || azure-data-explorer || azure-monitor || microsoft-sentinel "
---

Expand Down
Loading