Comprendre le filtrage d’événements pour les abonnements Event GridUnderstand event filtering for Event Grid subscriptions
Cet article décrit les différentes façons de filtrer les événements qui sont envoyés à votre point de terminaison.This article describes the different ways to filter which events are sent to your endpoint. Quand vous créez un abonnement à un événement, trois options de filtrage s’offrent à vous :When creating an event subscription, you have three options for filtering:
- Types d’événementsEvent types
- Objet commençant ou se terminant parSubject begins with or ends with
- Opérateurs et champs avancésAdvanced fields and operators
Filtrage par type d’événementEvent type filtering
Par défaut, tous les types d’événements pour la source de l’événement sont envoyés au point de terminaison.By default, all event types for the event source are sent to the endpoint. Vous pouvez décider d’envoyer uniquement certains types d’événements à votre point de terminaison.You can decide to send only certain event types to your endpoint. Par exemple, vous pouvez être notifié des mises à jour de vos ressources, mais ne pas être notifié d’autres opérations comme les suppressions.For example, you can get notified of updates to your resources, but not notified for other operations like deletions. Dans ce cas, effectuez le filtrage par type d’événement Microsoft.Resources.ResourceWriteSuccess
.In that case, filter by the Microsoft.Resources.ResourceWriteSuccess
event type. Fournissez un tableau avec les types d’événements, ou spécifiez All
pour obtenir tous les types d’événements de la source de l’événement.Provide an array with the event types, or specify All
to get all event types for the event source.
La syntaxe JSON pour le filtrage par type d’événement est :The JSON syntax for filtering by event type is:
"filter": {
"includedEventTypes": [
"Microsoft.Resources.ResourceWriteFailure",
"Microsoft.Resources.ResourceWriteSuccess"
]
}
Filtrage par objetSubject filtering
Pour le filtrage simple par objet, spécifiez une valeur de départ ou de fin pour l’objet.For simple filtering by subject, specify a starting or ending value for the subject. Par exemple, vous pouvez spécifier que l’objet se termine par .txt
pour obtenir uniquement les événements liés au chargement d’un fichier texte sur le compte de stockage.For example, you can specify the subject ends with .txt
to only get events related to uploading a text file to storage account. Ou vous pouvez filtrer sur l’objet commençant par /blobServices/default/containers/testcontainer
pour obtenir tous les événements pour ce conteneur, mais pas pour d’autres conteneurs du compte de stockage.Or, you can filter the subject begins with /blobServices/default/containers/testcontainer
to get all events for that container but not other containers in the storage account.
Lorsque vous publiez des événements dans des rubriques personnalisées, créez des objets pour vos événements permettant aux abonnés de savoir facilement si l’événement les intéresse.When publishing events to custom topics, create subjects for your events that make it easy for subscribers to know whether they're interested in the event. Les abonnés utilisent la propriété d’objet pour filtrer et router des événements.Subscribers use the subject property to filter and route events. Envisagez d’ajouter le chemin à l’origine de l’événement, de sorte que les abonnés puissent filtrer sur des segments de ce chemin.Consider adding the path for where the event happened, so subscribers can filter by segments of that path. Le chemin d’accès permet aux abonnés de filtrer les événements avec précision ou à grande échelle.The path enables subscribers to narrowly or broadly filter events. Si vous fournissez un chemin de trois segments comme /A/B/C
dans l’objet, les abonnés peuvent filtrer sur le premier segment /A
pour obtenir un vaste ensemble d’événements.If you provide a three segment path like /A/B/C
in the subject, subscribers can filter by the first segment /A
to get a broad set of events. Ces abonnés obtiennent des événements avec des objets tels que /A/B/C
ou /A/D/E
.Those subscribers get events with subjects like /A/B/C
or /A/D/E
. Les autres abonnés peuvent filtrer par /A/B
pour obtenir un ensemble plus restreint d’événements.Other subscribers can filter by /A/B
to get a narrower set of events.
La syntaxe JSON pour le filtrage par objet est :The JSON syntax for filtering by subject is:
"filter": {
"subjectBeginsWith": "/blobServices/default/containers/mycontainer/log",
"subjectEndsWith": ".jpg"
}
Filtrage avancéAdvanced filtering
Pour filtrer sur des valeurs dans les champs de données et spécifier l’opérateur de comparaison, utilisez l’option de filtrage avancé.To filter by values in the data fields and specify the comparison operator, use the advanced filtering option. Dans le filtrage avancé, vous spécifiez les éléments suivants :In advanced filtering, you specify the:
- type d'opérateur : type de comparaison.operator type - The type of comparison.
- clé : champ des données d’événement que vous utilisez pour le filtrage.key - The field in the event data that you're using for filtering. Il peut s’agir d’un nombre, d’une valeur booléenne, d’une chaîne ou d’un tableau.It can be a number, boolean, string, or an array.
- valeurs : valeur ou valeurs à comparer à la clé.values - The value or values to compare to the key.
CléKey
La clé est le champ des données d’événement que vous utilisez pour le filtrage.Key is the field in the event data that you're using for filtering. Les types possibles sont les suivants :It can be one of the following types:
NumberNumber
BooleanBoolean
StringString
Array.Array. Vous devez définir la propriété
enableAdvancedFilteringOnArrays
sur true pour utiliser cette fonctionnalité.You need to set theenableAdvancedFilteringOnArrays
property to true to use this feature. Actuellement, le portail Azure ne prend pas en charge l’activation de cette fonctionnalité.Currently, the Azure portal doesn't support enabling this feature."filter": { "subjectBeginsWith": "/blobServices/default/containers/mycontainer/log", "subjectEndsWith": ".jpg", "enableAdvancedFilteringOnArrays": true }
Pour les événements dans le schéma Event Grid, utilisez les valeurs suivantes pour la clé : ID
, Topic
, Subject
, EventType
, DataVersion
ou événement de donnée (comme data.key1
).For events in the Event Grid schema, use the following values for the key: ID
, Topic
, Subject
, EventType
, DataVersion
, or event data (like data.key1
).
Pour les événements dans le schéma des événements cloud, utilisez les valeurs suivantes pour la clé : eventid
, source
, eventtype
, eventtypeversion
ou événement de données (comme data.key1
).For events in Cloud Events schema, use the following values for the key: eventid
, source
, eventtype
, eventtypeversion
, or event data (like data.key1
).
Pour le schéma d’entrée personnalisé, utilisez les champs de données d’événement (comme data.key1
).For custom input schema, use the event data fields (like data.key1
). Pour accéder aux champs de la section de données, utilisez la notation .
(point).To access fields in the data section, use the .
(dot) notation. Par exemple, data.sitename
, data.appEventTypeDetail.action
pour accéder à sitename
ou action
pour l’exemple d’événement suivant.For example, data.sitename
, data.appEventTypeDetail.action
to access sitename
or action
for the following sample event.
"data": {
"appEventTypeDetail": {
"action": "Started"
},
"siteName": "<site-name>",
"clientRequestId": "None",
"correlationRequestId": "None",
"requestId": "292f499d-04ee-4066-994d-c2df57b99198",
"address": "None",
"verb": "None"
},
ValeursValues
Les valeurs peuvent être : nombre, chaîne, booléen ou tableauThe values can be: number, string, boolean, or array
OpérateursOperators
Les opérateurs disponibles pour les nombres sont les suivants :The available operators for numbers are:
NumberInNumberIn
L’opérateur NumberIn prend la valeur true si la valeur de clé est l’une des valeurs de filtre spécifiées.The NumberIn operator evaluates to true if the key value is one of the specified filter values. Dans l’exemple suivant, il vérifie si la valeur de l'attribut counter
dans la section data
est 5 ou 1.In the following example, it checks whether the value of the counter
attribute in the data
section is 5 or 1.
"advancedFilters": [{
"operatorType": "NumberIn",
"key": "data.counter",
"values": [
5,
1
]
}]
Si la clé est un tableau, toutes les valeurs du tableau sont vérifiées par rapport au tableau de valeurs de filtre.If the key is an array, all the values in the array are checked against the array of filter values. Voici le pseudo-code avec la clé : [v1, v2, v3]
et le filtre : [a, b, c]
.Here's the pseudo code with the key: [v1, v2, v3]
and the filter: [a, b, c]
. Les valeurs de clé avec des types de données qui ne correspondent pas au type de données du filtre sont ignorées.Any key values with data types that don’t match the filter’s data type are ignored.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF filter == key
MATCH
NumberNotInNumberNotIn
L’opérateur NumberNotIn prend la valeur true si la valeur de clé n’est pas l’une des valeurs de filere spécifiées.The NumberNotIn evaluates to true if the key value is not any of the specified filter values. Dans l’exemple suivant, il vérifie si la valeur de l'attribut counter
dans la section data
n’est pas 41 ou 0.In the following example, it checks whether the value of the counter
attribute in the data
section isn't 41 and 0.
"advancedFilters": [{
"operatorType": "NumberNotIn",
"key": "data.counter",
"values": [
41,
0
]
}]
Si la clé est un tableau, toutes les valeurs du tableau sont vérifiées par rapport au tableau de valeurs de filtre.If the key is an array, all the values in the array are checked against the array of filter values. Voici le pseudo-code avec la clé : [v1, v2, v3]
et le filtre : [a, b, c]
.Here's the pseudo code with the key: [v1, v2, v3]
and the filter: [a, b, c]
. Les valeurs de clé avec des types de données qui ne correspondent pas au type de données du filtre sont ignorées.Any key values with data types that don’t match the filter’s data type are ignored.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF filter == key
FAIL_MATCH
NumberLessThanNumberLessThan
L’opérateur NumberLessThan prend la valeur true si la valeur de clé est inférieure à la valeur de filtre spécifiée.The NumberLessThan operator evaluates to true if the key value is less than the specified filter value. Dans l’exemple suivant, il vérifie si la valeur de l'attribut counter
dans la section data
est inférieure à 100.In the following example, it checks whether the value of the counter
attribute in the data
section is less than 100.
"advancedFilters": [{
"operatorType": "NumberLessThan",
"key": "data.counter",
"value": 100
}]
Si la clé est un tableau, toutes les valeurs du tableau sont vérifiées par rapport à la valeur de filtre.If the key is an array, all the values in the array are checked against the filter value. Voici le pseudo-code avec la clé : [v1, v2, v3]
.Here's the pseudo code with the key: [v1, v2, v3]
. Les valeurs de clé avec des types de données qui ne correspondent pas au type de données du filtre sont ignorées.Any key values with data types that don’t match the filter’s data type are ignored.
FOR_EACH key IN (v1, v2, v3)
IF key < filter
MATCH
NumberGreaterThanNumberGreaterThan
L’opérateur NumberGreaterThan prend la valeur true si la valeur de clé est supérieure à la valeur de filtre spécifiée.The NumberGreaterThan operator evaluates to true if the key value is greater than the specified filter value. Dans l’exemple suivant, il vérifie si la valeur de l'attribut counter
dans la section data
est supérieure à 20.In the following example, it checks whether the value of the counter
attribute in the data
section is greater than 20.
"advancedFilters": [{
"operatorType": "NumberGreaterThan",
"key": "data.counter",
"value": 20
}]
Si la clé est un tableau, toutes les valeurs du tableau sont vérifiées par rapport à la valeur de filtre.If the key is an array, all the values in the array are checked against the filter value. Voici le pseudo-code avec la clé : [v1, v2, v3]
.Here's the pseudo code with the key: [v1, v2, v3]
. Les valeurs de clé avec des types de données qui ne correspondent pas au type de données du filtre sont ignorées.Any key values with data types that don’t match the filter’s data type are ignored.
FOR_EACH key IN (v1, v2, v3)
IF key > filter
MATCH
NumberLessThanOrEqualsNumberLessThanOrEquals
L’opérateur NumberLessThanOrEquals prend la valeur true si la valeur de clé est inférieure ou égale à la valeur de filtre spécifiée.The NumberLessThanOrEquals operator evaluates to true if the key value is less than or equal to the specified filter value. Dans l’exemple suivant, il vérifie si la valeur de l'attribut counter
dans la section data
est inférieure ou égale à 100.In the following example, it checks whether the value of the counter
attribute in the data
section is less than or equal to 100.
"advancedFilters": [{
"operatorType": "NumberLessThanOrEquals",
"key": "data.counter",
"value": 100
}]
Si la clé est un tableau, toutes les valeurs du tableau sont vérifiées par rapport à la valeur de filtre.If the key is an array, all the values in the array are checked against the filter value. Voici le pseudo-code avec la clé : [v1, v2, v3]
.Here's the pseudo code with the key: [v1, v2, v3]
. Les valeurs de clé avec des types de données qui ne correspondent pas au type de données du filtre sont ignorées.Any key values with data types that don’t match the filter’s data type are ignored.
FOR_EACH key IN (v1, v2, v3)
IF key <= filter
MATCH
NumberGreaterThanOrEqualsNumberGreaterThanOrEquals
L’opérateur NumberGreaterThanOrEquals prend la valeur true si la valeur de clé est supérieure ou égale à la valeur de filtre spécifiée.The NumberGreaterThanOrEquals operator evaluates to true if the key value is greater than or equal to the specified filter value. Dans l’exemple suivant, il vérifie si la valeur de l'attribut counter
dans la section data
est supérieure ou égale à 30.In the following example, it checks whether the value of the counter
attribute in the data
section is greater than or equal to 30.
"advancedFilters": [{
"operatorType": "NumberGreaterThanOrEquals",
"key": "data.counter",
"value": 30
}]
Si la clé est un tableau, toutes les valeurs du tableau sont vérifiées par rapport à la valeur de filtre.If the key is an array, all the values in the array are checked against the filter value. Voici le pseudo-code avec la clé : [v1, v2, v3]
.Here's the pseudo code with the key: [v1, v2, v3]
. Les valeurs de clé avec des types de données qui ne correspondent pas au type de données du filtre sont ignorées.Any key values with data types that don’t match the filter’s data type are ignored.
FOR_EACH key IN (v1, v2, v3)
IF key >= filter
MATCH
NumberInRangeNumberInRange
L’opérateur NumberInRange prend la valeur true si la valeur de clé est dans l’une des plages de filtres spécifiées.The NumberInRange operator evaluates to true if the key value is in one of the specified filter ranges. Dans l’exemple suivant, il vérifie si la valeur de l'attribut key1
dans la section data
est dans l’une de ces deux plages : 3.14159 - 999.95, 3000 - 4000.In the following example, it checks whether the value of the key1
attribute in the data
section is in one of the two ranges: 3.14159 - 999.95, 3000 - 4000.
{
"operatorType": "NumberInRange",
"key": "data.key1",
"values": [[3.14159, 999.95], [3000, 4000]]
}
La propriété values
est un tableau de plages.The values
property is an array of ranges. Dans l’exemple précédent, il s’agit d’un tableau de deux plages.In the previous example, it's an array of two ranges. Voici un exemple de tableau avec une plage à vérifier.Here's an example of an array with one range to check.
Tableau avec une plage :Array with one range:
{
"operatorType": "NumberInRange",
"key": "data.key1",
"values": [[3000, 4000]]
}
Si la clé est un tableau, toutes les valeurs du tableau sont vérifiées par rapport au tableau de valeurs de filtre.If the key is an array, all the values in the array are checked against the array of filter values. Voici le pseudo-code avec la clé : [v1, v2, v3]
et le filtre : un tableau de plages.Here's the pseudo code with the key: [v1, v2, v3]
and the filter: an array of ranges. Dans ce pseudo-code, a
et b
sont des valeurs basses et élevées de chaque plage du tableau.In this pseudo code, a
and b
are low and high values of each range in the array. Les valeurs de clé avec des types de données qui ne correspondent pas au type de données du filtre sont ignorées.Any key values with data types that don’t match the filter’s data type are ignored.
FOR_EACH (a,b) IN filter.Values
FOR_EACH key IN (v1, v2, v3)
IF key >= a AND key <= b
MATCH
NumberNotInRangeNumberNotInRange
L’opérateur NumberNotInRange prend la valeur true si la valeur de clé n’est pas dans l’une des plages de filtres spécifiées.The NumberNotInRange operator evaluates to true if the key value is not in any of the specified filter ranges. Dans l’exemple suivant, il vérifie si la valeur de l'attribut key1
dans la section data
est dans l’une de ces deux plages : 3.14159 - 999.95, 3000 - 4000.In the following example, it checks whether the value of the key1
attribute in the data
section is in one of the two ranges: 3.14159 - 999.95, 3000 - 4000. Si c’est le cas, l’opérateur retourne false.If it's, the operator returns false.
{
"operatorType": "NumberNotInRange",
"key": "data.key1",
"values": [[3.14159, 999.95], [3000, 4000]]
}
La propriété values
est un tableau de plages.The values
property is an array of ranges. Dans l’exemple précédent, il s’agit d’un tableau de deux plages.In the previous example, it's an array of two ranges. Voici un exemple de tableau avec une plage à vérifier.Here's an example of an array with one range to check.
Tableau avec une plage :Array with one range:
{
"operatorType": "NumberNotInRange",
"key": "data.key1",
"values": [[3000, 4000]]
}
Si la clé est un tableau, toutes les valeurs du tableau sont vérifiées par rapport au tableau de valeurs de filtre.If the key is an array, all the values in the array are checked against the array of filter values. Voici le pseudo-code avec la clé : [v1, v2, v3]
et le filtre : un tableau de plages.Here's the pseudo code with the key: [v1, v2, v3]
and the filter: an array of ranges. Dans ce pseudo-code, a
et b
sont des valeurs basses et élevées de chaque plage du tableau.In this pseudo code, a
and b
are low and high values of each range in the array. Les valeurs de clé avec des types de données qui ne correspondent pas au type de données du filtre sont ignorées.Any key values with data types that don’t match the filter’s data type are ignored.
FOR_EACH (a,b) IN filter.Values
FOR_EACH key IN (v1, v2, v3)
IF key >= a AND key <= b
FAIL_MATCH
L’opérateur disponible pour les valeurs booléennes est :The available operator for booleans is:
BoolEqualsBoolEquals
L’opérateur BoolEquals prend la valeur true si la valeur de clé est le filtre de valeur booléenne spécifié.The BoolEquals operator evaluates to true if the key value is the specified boolean value filter. Dans l’exemple suivant, il vérifie si la valeur de l'attribut isEnabled
dans la section data
est true
.In the following example, it checks whether the value of the isEnabled
attribute in the data
section is true
.
"advancedFilters": [{
"operatorType": "BoolEquals",
"key": "data.isEnabled",
"value": true
}]
Si la clé est un tableau, toutes les valeurs du tableau sont vérifiées par rapport à la valeur booléenne du filtre.If the key is an array, all the values in the array are checked against the filter boolean value. Voici le pseudo-code avec la clé : [v1, v2, v3]
.Here's the pseudo code with the key: [v1, v2, v3]
. Les valeurs de clé avec des types de données qui ne correspondent pas au type de données du filtre sont ignorées.Any key values with data types that don’t match the filter’s data type are ignored.
FOR_EACH key IN (v1, v2, v3)
IF filter == key
MATCH
Les opérateurs disponibles pour les chaînes sont les suivants :The available operators for strings are:
StringContainsStringContains
L’opérateur StringContains prend la valeur true si la valeur de clé contient une des valeurs de filtre spécifiées (sous forme de substrings).The StringContains evaluates to true if the key value contains any of the specified filter values (as substrings). Dans l’exemple suivant, il vérifie si la valeur de l'attribut key1
dans la section data
contient l’une des substrings spécifiées : microsoft
ou azure
.In the following example, it checks whether the value of the key1
attribute in the data
section contains one of the specified substrings: microsoft
or azure
. Par exemple, azure data factory
contient azure
.For example, azure data factory
has azure
in it.
"advancedFilters": [{
"operatorType": "StringContains",
"key": "data.key1",
"values": [
"microsoft",
"azure"
]
}]
Si la clé est un tableau, toutes les valeurs du tableau sont vérifiées par rapport au tableau de valeurs de filtre.If the key is an array, all the values in the array are checked against the array of filter values. Voici le pseudo-code avec la clé : [v1, v2, v3]
et le filtre : [a,b,c]
.Here's the pseudo code with the key: [v1, v2, v3]
and the filter: [a,b,c]
. Les valeurs de clé avec des types de données qui ne correspondent pas au type de données du filtre sont ignorées.Any key values with data types that don’t match the filter’s data type are ignored.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF key CONTAINS filter
MATCH
StringNotContainsStringNotContains
L’opérateur StringNotContains prend la valeur true si la clé ne contient pas les valeurs de filtre spécifiées sous la forme de substrings.The StringNotContains operator evaluates to true if the key does not contain the specified filter values as substrings. Si la clé contient une des valeurs spécifiées sous la forme d’une substring, l’opérateur prend la valeur false.If the key contains one of the specified values as a substring, the operator evaluates to false. Dans l’exemple suivant, l’opérateur retourne true uniquement si la valeur de l'attribut key1
dans la section data
ne contient pas contoso
et fabrikam
comme substrings.In the following example, the operator returns true only if the value of the key1
attribute in the data
section doesn't have contoso
and fabrikam
as substrings.
"advancedFilters": [{
"operatorType": "StringNotContains",
"key": "data.key1",
"values": [
"contoso",
"fabrikam"
]
}]
Si la clé est un tableau, toutes les valeurs du tableau sont vérifiées par rapport au tableau de valeurs de filtre.If the key is an array, all the values in the array are checked against the array of filter values. Voici le pseudo-code avec la clé : [v1, v2, v3]
et le filtre : [a,b,c]
.Here's the pseudo code with the key: [v1, v2, v3]
and the filter: [a,b,c]
. Les valeurs de clé avec des types de données qui ne correspondent pas au type de données du filtre sont ignorées.Any key values with data types that don’t match the filter’s data type are ignored.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF key CONTAINS filter
FAIL_MATCH
StringBeginsWithStringBeginsWith
L’opérateur StringBeginsWith prend la valeur true si la valeur de clé commence par l’une des valeurs de filtre spécifiées.The StringBeginsWith operator evaluates to true if the key value begins with any of the specified filter values. Dans l’exemple suivant, il vérifie si la valeur de l'attribut key1
dans la section data
commence par event
ou grid
.In the following example, it checks whether the value of the key1
attribute in the data
section begins with event
or grid
. Par exemple, event hubs
commence par event
.For example, event hubs
begins with event
.
"advancedFilters": [{
"operatorType": "StringBeginsWith",
"key": "data.key1",
"values": [
"event",
"message"
]
}]
Si la clé est un tableau, toutes les valeurs du tableau sont vérifiées par rapport au tableau de valeurs de filtre.If the key is an array, all the values in the array are checked against the array of filter values. Voici le pseudo-code avec la clé : [v1, v2, v3]
et le filtre : [a,b,c]
.Here's the pseudo code with the key: [v1, v2, v3]
and the filter: [a,b,c]
. Les valeurs de clé avec des types de données qui ne correspondent pas au type de données du filtre sont ignorées.Any key values with data types that don’t match the filter’s data type are ignored.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF key BEGINS_WITH filter
MATCH
StringNotBeginsWithStringNotBeginsWith
L’opérateur StringNotBeginsWith prend la valeur true si la valeur de clé ne commence pas par l’une des valeurs de filtre spécifiées.The StringNotBeginsWith operator evaluates to true if the key value does not begin with any of the specified filter values. Dans l’exemple suivant, il vérifie si la valeur de l'attribut key1
dans la section data
commence par event
ou message
.In the following example, it checks whether the value of the key1
attribute in the data
section doesn't begin with event
or message
.
"advancedFilters": [{
"operatorType": "StringNotBeginsWith",
"key": "data.key1",
"values": [
"event",
"message"
]
}]
Si la clé est un tableau, toutes les valeurs du tableau sont vérifiées par rapport au tableau de valeurs de filtre.If the key is an array, all the values in the array are checked against the array of filter values. Voici le pseudo-code avec la clé : [v1, v2, v3]
et le filtre : [a,b,c]
.Here's the pseudo code with the key: [v1, v2, v3]
and the filter: [a,b,c]
. Les valeurs de clé avec des types de données qui ne correspondent pas au type de données du filtre sont ignorées.Any key values with data types that don’t match the filter’s data type are ignored.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF key BEGINS_WITH filter
FAIL_MATCH
StringEndsWithStringEndsWith
L’opérateur StringEndsWith prend la valeur true si la valeur de clé se termine par l’une des valeurs de filtre spécifiées.The StringEndsWith operator evaluates to true if the key value ends with one of the specified filter values. Dans l’exemple suivant, il vérifie si la valeur de l'attribut key1
dans la section data
se termine par jpg
ou jpeg
ou png
.In the following example, it checks whether the value of the key1
attribute in the data
section ends with jpg
or jpeg
or png
. Par exemple, eventgrid.png
se termine par png
.For example, eventgrid.png
ends with png
.
"advancedFilters": [{
"operatorType": "StringEndsWith",
"key": "data.key1",
"values": [
"jpg",
"jpeg",
"png"
]
}]
Si la clé est un tableau, toutes les valeurs du tableau sont vérifiées par rapport au tableau de valeurs de filtre.If the key is an array, all the values in the array are checked against the array of filter values. Voici le pseudo-code avec la clé : [v1, v2, v3]
et le filtre : [a,b,c]
.Here's the pseudo code with the key: [v1, v2, v3]
and the filter: [a,b,c]
. Les valeurs de clé avec des types de données qui ne correspondent pas au type de données du filtre sont ignorées.Any key values with data types that don’t match the filter’s data type are ignored.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF key ENDS_WITH filter
MATCH
StringNotEndsWithStringNotEndsWith
L’opérateur StringNotEndsWith prend la valeur true si la valeur de clé ne se termine pas par l’une des valeurs de filtre spécifiées.The StringNotEndsWith operator evaluates to true if the key value does not end with any of the specified filter values. Dans l’exemple suivant, il vérifie si la valeur de l'attribut key1
dans la section data
ne se termine pas par jpg
ou jpeg
ou png
.In the following example, it checks whether the value of the key1
attribute in the data
section doesn't end with jpg
or jpeg
or png
.
"advancedFilters": [{
"operatorType": "StringNotEndsWith",
"key": "data.key1",
"values": [
"jpg",
"jpeg",
"png"
]
}]
Si la clé est un tableau, toutes les valeurs du tableau sont vérifiées par rapport au tableau de valeurs de filtre.If the key is an array, all the values in the array are checked against the array of filter values. Voici le pseudo-code avec la clé : [v1, v2, v3]
et le filtre : [a,b,c]
.Here's the pseudo code with the key: [v1, v2, v3]
and the filter: [a,b,c]
. Les valeurs de clé avec des types de données qui ne correspondent pas au type de données du filtre sont ignorées.Any key values with data types that don’t match the filter’s data type are ignored.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF key ENDS_WITH filter
FAIL_MATCH
StringInStringIn
L’opérateur StringIn vérifie si la valeur de clé correspond exactement à l’une des valeurs de filtre spécifiées.The StringIn operator checks whether the key value exactly matches one of the specified filter values. Dans l’exemple suivant, il vérifie si la valeur de l'attribut key1
dans la section data
est exact
ou string
ou matches
.In the following example, it checks whether the value of the key1
attribute in the data
section is exact
or string
or matches
.
"advancedFilters": [{
"operatorType": "StringIn",
"key": "data.key1",
"values": [
"contoso",
"fabrikam",
"factory"
]
}]
Si la clé est un tableau, toutes les valeurs du tableau sont vérifiées par rapport au tableau de valeurs de filtre.If the key is an array, all the values in the array are checked against the array of filter values. Voici le pseudo-code avec la clé : [v1, v2, v3]
et le filtre : [a,b,c]
.Here's the pseudo code with the key: [v1, v2, v3]
and the filter: [a,b,c]
. Les valeurs de clé avec des types de données qui ne correspondent pas au type de données du filtre sont ignorées.Any key values with data types that don’t match the filter’s data type are ignored.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF filter == key
MATCH
StringNotInStringNotIn
L’opérateur StringNotIn vérifie si la valeur de clé ne correspond à l’une des valeurs de filtre spécifiées.The StringNotIn operator checks whether the key value does not match any of the specified filter values. Dans l’exemple suivant, il vérifie si la valeur de l'attribut key1
dans la section data
n’est pas aws
et bridge
.In the following example, it checks whether the value of the key1
attribute in the data
section isn't aws
and bridge
.
"advancedFilters": [{
"operatorType": "StringNotIn",
"key": "data.key1",
"values": [
"aws",
"bridge"
]
}]
Si la clé est un tableau, toutes les valeurs du tableau sont vérifiées par rapport au tableau de valeurs de filtre.If the key is an array, all the values in the array are checked against the array of filter values. Voici le pseudo-code avec la clé : [v1, v2, v3]
et le filtre : [a,b,c]
.Here's the pseudo code with the key: [v1, v2, v3]
and the filter: [a,b,c]
. Les valeurs de clé avec des types de données qui ne correspondent pas au type de données du filtre sont ignorées.Any key values with data types that don’t match the filter’s data type are ignored.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF filter == key
FAIL_MATCH
Les comparaisons de chaînes ne respectent pas toutes la casse.All string comparisons aren't case-sensitive.
Notes
Si le JSON de l’événement ne contient pas de clé de filtre avancé, le filtre est évalué comme non correspondant pour les opérateurs suivants : NumberGreaterThan, NumberGreaterThanOrEquals, NumberLessThan, NumberLessThanOrEquals, NumberIn, BoolEquals, StringContains, StringNotContains, StringBeginsWith, StringNotBeginsWith, StringEndsWith, StringNotEndsWith, StringIn.If the event JSON doesn't contain the advanced filter key, filter is evaulated as not matched for the following operators: NumberGreaterThan, NumberGreaterThanOrEquals, NumberLessThan, NumberLessThanOrEquals, NumberIn, BoolEquals, StringContains, StringNotContains, StringBeginsWith, StringNotBeginsWith, StringEndsWith, StringNotEndsWith, StringIn.
Le filtre est évalué comme correspondant pour les opérateurs suivants : NumberNotIn, StringNotIn.The filter is evaulated as matched for the following operators:NumberNotIn, StringNotIn.
IsNullOrUndefinedIsNullOrUndefined
L’opérateur IsNullOrUndefined prend la valeur true si la valeur de la clé est NULL ou non définie.The IsNullOrUndefined operator evaluates to true if the key's value is NULL or undefined.
{
"operatorType": "IsNullOrUndefined",
"key": "data.key1"
}
Dans l’exemple suivant, key1 est manquant, donc l’opérateur prend la valeur true.In the following example, key1 is missing, so the operator would evaluate to true.
{
"data":
{
"key2": 5
}
}
Dans l’exemple suivant, key1 est défini sur null, donc l’opérateur prend la valeur true.In the following example, key1 is set to null, so the operator would evaluate to true.
{
"data":
{
"key1": null
}
}
Si key1 a une autre valeur dans ces exemples, l’opérateur prend la valeur false.if key1 has any other value in these examples, the operator would evaluate to false.
IsNotNullIsNotNull
L’opérateur IsNotNull prend la valeur true si la valeur de la clé n’est pas NULL ou n’est pas définie.The IsNotNull operator evaluates to true if the key's value isn't NULL or undefined.
{
"operatorType": "IsNotNull",
"key": "data.key1"
}
OR et ANDOR and AND
Si vous spécifiez un seul filtre avec plusieurs valeurs, une opération OU est effectuée : la valeur du champ clé doit donc être une de ces valeurs.If you specify a single filter with multiple values, an OR operation is performed, so the value of the key field must be one of these values. Voici un exemple :Here is an example:
"advancedFilters": [
{
"operatorType": "StringContains",
"key": "Subject",
"values": [
"/providers/microsoft.devtestlab/",
"/providers/Microsoft.Compute/virtualMachines/"
]
}
]
Si vous spécifiez plusieurs filtres différents, une opération ET est effectuée : chaque condition du filtre doit donc être satisfaite.If you specify multiple different filters, an AND operation is done, so each filter condition must be met. Voici un exemple :Here's an example:
"advancedFilters": [
{
"operatorType": "StringContains",
"key": "Subject",
"values": [
"/providers/microsoft.devtestlab/"
]
},
{
"operatorType": "StringContains",
"key": "Subject",
"values": [
"/providers/Microsoft.Compute/virtualMachines/"
]
}
]
CloudEventsCloudEvents
Pour les événements dans le schéma des événements cloud, utilisez les valeurs suivantes pour la clé : eventid
, source
, eventtype
, eventtypeversion
ou événement de données (comme data.key1
).For events in the CloudEvents schema, use the following values for the key: eventid
, source
, eventtype
, eventtypeversion
, or event data (like data.key1
).
Vous pouvez également utiliser des attributs de contexte d’extension dans CloudEvents 1.0.You can also use extension context attributes in CloudEvents 1.0. Dans l’exemple suivant, comexampleextension1
et comexampleothervalue
sont des attributs de contexte d’extension.In the following example, comexampleextension1
and comexampleothervalue
are extension context attributes.
{
"specversion" : "1.0",
"type" : "com.example.someevent",
"source" : "/mycontext",
"id" : "C234-1234-1234",
"time" : "2018-04-05T17:31:00Z",
"subject": null,
"comexampleextension1" : "value",
"comexampleothervalue" : 5,
"datacontenttype" : "application/json",
"data" : {
"appinfoA" : "abc",
"appinfoB" : 123,
"appinfoC" : true
}
}
Voici un exemple d’utilisation d’un attribut de contexte d’extension dans un filtre.Here's an example of using an extension context attribute in a filter.
"advancedFilters": [{
"operatorType": "StringBeginsWith",
"key": "comexampleothervalue",
"values": [
"5",
"1"
]
}]
LimitesLimitations
Le filtrage avancé présente les limites suivantes :Advanced filtering has the following limitations:
- 5 filtres avancés et 25 valeurs de filtre pour tous les filtres par abonnement Event Grid5 advanced filters and 25 filter values across all the filters per event grid subscription
- 512 caractères par valeur de type chaîne512 characters per string value
- Cinq valeurs pour les opérateurs dans et pas dansFive values for in and not in operators
- Clés contenant le signe
.
(point) .Keys with.
(dot) character in them. Par exemple,http://schemas.microsoft.com/claims/authnclassreference
oujohn.doe@contoso.com
.For example:http://schemas.microsoft.com/claims/authnclassreference
orjohn.doe@contoso.com
. Actuellement, les caractères d’échappement ne sont pas pris en charge dans les clés.Currently, there's no support for escape characters in keys.
La même clé peut être utilisée dans plusieurs filtres.The same key can be used in more than one filter.
Étapes suivantesNext steps
- Pour en savoir plus sur le filtrage d’événements avec PowerShell et Azure CLI, consultez Filtrer des événements pour Event Grid.To learn about filtering events with PowerShell and Azure CLI, see Filter events for Event Grid.
- Pour une prise en main rapide d’Event Grid, consultez Créer et acheminer des événements personnalisés avec Azure Event Grid.To quickly get started using Event Grid, see Create and route custom events with Azure Event Grid.