Skip to content

Commit e07fe03

Browse files
authored
Merge pull request #6367 from MicrosoftDocs/main
sync release
2 parents cbcb40f + 7573c81 commit e07fe03

14 files changed

+337
-106
lines changed

.openpublishing.build.ps1

Lines changed: 0 additions & 17 deletions
This file was deleted.

data-explorer/.openpublishing.redirection.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -429,6 +429,11 @@
429429
"source_path": "excel-connector.md",
430430
"redirect_url": "/azure/data-explorer/excel",
431431
"redirect_document_id": false
432+
},
433+
{
434+
"source_path": "query-exported-azure-monitor-data.md",
435+
"redirect_url": "/azure/data-explorer/query-monitor-data",
436+
"redirect_document_id": false
432437
}
433438
]
434439
}

data-explorer/ingest-data-event-hub-overview.md

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ ms.date: 06/04/2024
99

1010
[Azure Event Hubs](/azure/event-hubs/event-hubs-about) is a big data streaming platform and event ingestion service. Azure Data Explorer offers continuous ingestion from customer-managed Event Hubs.
1111

12-
The Event Hubs ingestion pipeline transfers events to Azure Data Explorer in several steps. First you create an event hub in the Azure portal. Then create a target table in Azure Data Explorer into which the [data in a particular format](#data-format), is ingested using the provided [ingestion properties](#ingestion-properties). The Event Hubs connection needs to be aware of [events routing](#events-routing). Data may be embedded with selected properties according to the [event system properties](#event-hubs-system-properties-mapping). Create a connection to Event Hubs to [create an event hub](#create-an-event-hub) and [send events](#send-events). This process can be managed through the [Azure portal](create-event-hubs-connection.md?tabs=portalADX), programmatically with [C#](create-event-hubs-connection-sdk.md?tabs=c-sharp) or [Python](create-event-hubs-connection-sdk.md?tabs=python), or with the [Azure Resource Manager template](create-event-hubs-connection.md?tabs=arm-template).
12+
The Event Hubs ingestion pipeline transfers events to Azure Data Explorer in several steps. First you create an event hub in the Azure portal. Then create a target table in Azure Data Explorer into which the [data in a particular format](#data-format), is ingested using the provided [ingestion properties](#ingestion-properties). The Event Hubs connection needs to be aware of [events routing](#events-routing). Data may be embedded with selected properties according to the [event system properties](#event-hubs-system-properties-mapping). Create a connection to Event Hubs to [create an event hub](#create-event-hubs) and [send events](#send-events). This process can be managed through the [Azure portal](create-event-hubs-connection.md?tabs=portalADX), programmatically with [C#](create-event-hubs-connection-sdk.md?tabs=c-sharp) or [Python](create-event-hubs-connection-sdk.md?tabs=python), or with the [Azure Resource Manager template](create-event-hubs-connection.md?tabs=arm-template).
1313

1414
For general information about data ingestion in Azure Data Explorer, see [Azure Data Explorer data ingestion overview](ingest-data-overview.md).
1515

@@ -190,12 +190,7 @@ You can use one of the following methods to embed custom properties into the dat
190190
* Use Azure Stream Analytics to [process events from the event hub and embed the custom properties](/azure/event-hubs/process-data-azure-stream-analytics) in the event data. From Azure Stream Analytics you can ingest the data natively using the [Azure Data Explorer output connector](/azure/stream-analytics/azure-database-explorer-output), or route the data into another event hub and from there into your cluster.
191191
* Use [Azure Functions](/azure/azure-functions/functions-overview) to add the custom properties and then ingest the data.
192192

193-
## Cross-region Event Hubs data connection
194-
195-
For best performance, create all the following resources in the same region as the cluster.
196-
If there is no other alternative, consider using [Premium](/azure/event-hubs/event-hubs-premium-overview) or [Dedicated](/azure/event-hubs/event-hubs-dedicated-overview) Event Hubs tiers. Event Hubs tiers comparison can be found [here](/azure/event-hubs/compare-tiers).
197-
198-
### Create an event hub
193+
## Create Event Hubs
199194

200195
If you don't already have one, [Create an event hub](/azure/event-hubs/event-hubs-create). Connecting to event hub can be managed through the [Azure portal](create-event-hubs-connection.md?tabs=portalADX), programmatically with [C#](create-event-hubs-connection-sdk.md?tabs=c-sharp) or [Python](create-event-hubs-connection-sdk.md?tabs=python), or with the [Azure Resource Manager template](create-event-hubs-connection.md?tabs=arm-template).
201196

@@ -204,10 +199,18 @@ If you don't already have one, [Create an event hub](/azure/event-hubs/event-hub
204199
> * The ability to dynamically add partitions after creating an event hub is only available with Event Hubs Premium and Dedicated tiers. Consider the long-term scale when setting partition count.
205200
> * Consumer group *must* be unique per consumer. Create a consumer group dedicated to Azure Data Explorer connection.
206201
207-
### Send events
202+
### Cross-region Event Hubs data connection
203+
204+
For best performance, create the event hub in the same region as the cluster. If this is not possible, consider using [Premium](/azure/event-hubs/event-hubs-premium-overview) or [Dedicated](/azure/event-hubs/event-hubs-dedicated-overview) Event Hubs tiers. For a comparison of tiers, see [Compare Azure Event Hubs tiers](/azure/event-hubs/compare-tiers).
205+
206+
## Send events
208207

209208
See the [sample app](https://github.com/Azure-Samples/event-hubs-dotnet-ingest) that generates data and sends it to an event hub.
210209

210+
> [!NOTE]
211+
>
212+
> To enable efficient processing of events from Event Hubs to Azure Data Explorer, avoid an unbalanced distribution of events across partitions. Uneven mapping can cause a high [discovery latency](/azure/data-explorer/using-metrics#ingestion-metrics). For more information, see [Mapping of events to partitions](/azure/event-hubs/event-hubs-features#mapping-of-events-to-partitions).
213+
211214
## Set up Geo-disaster recovery solution
212215

213216
Event hub offers a [Geo-disaster recovery](/azure/event-hubs/event-hubs-geo-dr) solution.

data-explorer/kusto/management/row-level-security-policy.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ For more information, see [management commands for managing the Row Level Securi
4141
* When it's referenced by an [update policy](update-policy.md) query, while the update policy is not configured with a managed identity.
4242
* When it's referenced by a [continuous export](../management/data-export/continuous-data-export.md) that uses an authentication method other than impersonation.
4343
* When a [restricted view access policy](restricted-view-access-policy.md) is configured for the table.
44+
* The RLS query can't reference tables located in other databases.
4445

4546
## Examples
4647

Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
---
2+
title: graph-mark-components operator (Preview)
3+
description: Learn how to use the graph-mark-components operator to find and mark all connected components of a graph.
4+
ms.reviewer: royo
5+
ms.topic: reference
6+
ms.date: 11/06/2024
7+
---
8+
# graph-mark-components operator (Preview)
9+
10+
> [!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)]
11+
12+
The `graph-mark-components` operator finds all connected components of a graph and marks each node with a component identifier.
13+
14+
> [!NOTE]
15+
> This operator is used in conjunction with the [make-graph operator](make-graph-operator.md).
16+
17+
## Syntax
18+
19+
*G* `|` `graph-mark-components` [`kind` `=` *Kind*] [`with_component_id` `=` *ComponentId*]
20+
21+
## Parameters
22+
23+
| Name | Type | Required | Description |
24+
|--|--|--|--|
25+
| *G* | string | :heavy_check_mark: | The graph source. |
26+
| *Kind* | string | | The connected component kind, either `weak` (default) or `strong`. A weak component is a set of nodes connected by a path, ignoring the direction of edges. A strong component is a set of nodes connected in both directions, considering the edges' directions. |
27+
| *ComponentId* | string | | The property name that denotes the component identifier. The default property name is `ComponentId`. |
28+
29+
## Returns
30+
31+
The `graph-mark-components` operator returns a *graph* result, where each node has a component identifier in the *ComponentId* property. The identifier is a zero-based consecutive index of the components. Each component index is chosen arbitrarily and might not be consistent across runs.
32+
33+
## Examples
34+
35+
### Find families by their relationships
36+
37+
The following example creates a graph from a set of child-parent pairs and identifies connected components using a `family` identifier.
38+
39+
:::moniker range="azure-data-explorer"
40+
> [!div class="nextstepaction"]
41+
> <a href="https://dataexplorer.azure.com/clusters/help/databases/Samples?query=H4sIAAAAAAAAA2WQ24rCMBCG7%2FMUQ65caF5AccGzILIPsCwyNrENzaFMw4qwD79pNLUiuUj%2Bb77JxW9UgFWtjfy6wBwkhnjORk3Knk27QNpVBbRIyoVH%2FAD2DQyAL4wuFS%2BAL%2F05XomtkLzpWR6%2B0jX%2BDnBHqnozMxyLe39Fkm%2FqE4%2FlTXryLaFrMsuBH9EYTzdejMyDpjhjPzNguQj2BxYbJSrCtoZUBQjx%2BagBrjrUJ%2BelOmk5d2hV9JMqLFIjSm9b76LY3c0hRz12fEGrzW1YCV6kxqH%2FsPsH1QoVAI8BAAA%3D" target="_blank">Run the query</a>
42+
::: moniker-end
43+
44+
```kusto
45+
let ChildOf = datatable(child:string, parent:string)
46+
[
47+
"Alice", "Bob",
48+
"Carol", "Alice",
49+
"Carol", "Dave",
50+
"Greg", "Alice",
51+
"Greg", "Dave",
52+
"Howard", "Alice",
53+
"Howard", "Dave",
54+
"Eve", "Frank",
55+
"Frank", "Mallory",
56+
"Eve", "Kirk",
57+
];
58+
ChildOf
59+
| make-graph child --> parent with_node_id=name
60+
| graph-mark-components with_component_id = family
61+
| graph-to-table nodes
62+
```
63+
64+
**Output**
65+
66+
|name|family|
67+
|---|---|
68+
|Alice|0|
69+
|Bob|0|
70+
|Carol|0|
71+
|Dave|0|
72+
|Greg|0|
73+
|Howard|0|
74+
|Eve|1|
75+
|Frank|1|
76+
|Mallory|1|
77+
|Kirk|1|
78+
79+
### Find a greatest common ancestor for each family
80+
81+
The following example uses the connected component `family` identifier and the `graph-match` operator to identify the greatest ancestor of each family in a set of child-parent data.
82+
83+
:::moniker range="azure-data-explorer"
84+
> [!div class="nextstepaction"]
85+
> <a href="https://dataexplorer.azure.com/clusters/help/databases/Samples?query=H4sIAAAAAAAAA2WQy07DQAxF9%2FkKK6sEJZFYsAG1EpSXhBAfUFWVO%2BMmQ%2BYROQMliI9nkiYlqJqFx9fHvpY1eVhVSsu3PSxAog9vpykRvXbdela2zKBBJuvHNIVoDRFAfKuVoDiD%2BM7tQhi0FbLTvTYV%2F6v3%2BHkSn5jKM3IS5%2BCzOyDLM%2FRPnsMPwzd%2BZLT1pE1J%2FIpaO%2B7ibEa%2BKA61aHMD0XSI6AcM1pSXjE0Fwykgz5fjGeCgfLW1TtJWyYVFQ4Ef0Nwg17lwpnE2gO2RPOUBDzfeo1G6m7V4UUEiqRVkJVqf5mtx3OPisiiuNvkyQSuo9Y7TsHbD7p2Eh943TJtKRZ9noJUlLPvCOKMYYja6zhtOe7QfJuytvgmSkiwxeuVsmw0Oad%2FBpcGvBJmx22qypa%2BS0SfNjtCuGw1%2BAcTWyMtPAgAA" target="_blank">Run the query</a>
86+
::: moniker-end
87+
88+
```kusto
89+
let ChildOf = datatable(child:string, parent:string)
90+
[
91+
"Alice", "Bob",
92+
"Carol", "Alice",
93+
"Carol", "Dave",
94+
"Greg", "Alice",
95+
"Greg", "Dave",
96+
"Howard", "Alice",
97+
"Howard", "Dave",
98+
"Eve", "Frank",
99+
"Frank", "Mallory",
100+
"Eve", "Kirk",
101+
];
102+
ChildOf
103+
| make-graph child --> parent with_node_id=name
104+
| graph-mark-components with_component_id = family
105+
| graph-match (descendant)-[childOf*1..5]->(ancestor)
106+
project name = ancestor.name, lineage = childOf.child, family = ancestor.family
107+
| summarize (generations, name) = argmax(array_length(lineage),name) by family
108+
```
109+
110+
**Output**
111+
112+
|family|generations|name|
113+
|---|---|---|
114+
|1|2|Mallory|
115+
|0|2|Bob|
116+
117+
## Related content
118+
119+
* [Best practices for Kusto Query Language (KQL) graph semantics](graph-best-practices.md)
120+
* [Graph operators](graph-operators.md)
121+
* [make-graph operator](make-graph-operator.md)
122+
* [graph-match operator](graph-match-operator.md)
123+
* [graph-to-table operator](graph-to-table-operator.md)
124+

data-explorer/kusto/query/graph-operators.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ title: Graph operators
33
description: Learn how to use KQL graph operators.
44
ms.reviewer: alexans
55
ms.topic: reference
6-
ms.date: 08/11/2024
6+
ms.date: 11/05/2024
77
---
88
# Graph operators
99

@@ -28,6 +28,8 @@ The following table describes the supported graph operators.
2828
| [make-graph](make-graph-operator.md) | Builds a graph from tabular data. |
2929
| [graph-match](graph-match-operator.md) | Searches for patterns in a graph. |
3030
| [graph-to-table](graph-to-table-operator.md) | Builds nodes or edges tables from a graph. |
31+
| [graph-shortest-paths](graph-shortest-paths-operator.md) | Finds the shortest paths from a given set of source nodes to a set of target nodes. |
32+
| [graph-mark-components](graph-mark-components-operator.md) | Finds and marks all connected components. |
3133

3234
## Graph model
3335

0 commit comments

Comments
 (0)