Megosztás a következőn keresztül:


Az Event Grid-előfizetések eseményszűrésének ismertetése

Ez a cikk a végpontnak küldött események szűrésének különböző módjait ismerteti. Esemény-előfizetés létrehozásakor három szűrési lehetőség közül választhat:

  • Eseménytípusok
  • A tárgy kezdőbetűje vagy vége:
  • Speciális mezők és operátorok

Azure Resource Manager-sablon

A cikkben bemutatott példák JSON-kódrészletek az Azure Resource Manager-sablonok szűrőinek definiálásához. Egy teljes ARM-sablonra és egy ARM-sablon üzembe helyezésére vonatkozó példa: Rövid útmutató: Blob Storage-események átirányítása a webes végpontra ARM-sablon használatával. Íme néhány további szakasz a filter rövid útmutatóban szereplő példából. Az ARM-sablon a következő erőforrásokat határozza meg.

  • Azure Storage-fiók
  • A tárfiók rendszertémaköre
  • Esemény-előfizetés a rendszertémakörhöz. Az alszakasz az filter esemény-előfizetés szakaszban jelenik meg.

Az alábbi példában az esemény-előfizetés szűri az eseményeket és Microsoft.Storage.BlobDeleted az Microsoft.Storage.BlobCreated eseményeket.

{
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-08-01",
      "name": "[parameters('storageAccountName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "StorageV2",
      "properties": {
        "accessTier": "Hot"
      }
    },
    {
      "type": "Microsoft.EventGrid/systemTopics",
      "apiVersion": "2021-12-01",
      "name": "[parameters('systemTopicName')]",
      "location": "[parameters('location')]",
      "properties": {
        "source": "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]",
        "topicType": "Microsoft.Storage.StorageAccounts"
      },
      "dependsOn": [
        "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]"
      ]
    },
    {
      "type": "Microsoft.EventGrid/systemTopics/eventSubscriptions",
      "apiVersion": "2021-12-01",
      "name": "[format('{0}/{1}', parameters('systemTopicName'), parameters('eventSubName'))]",
      "properties": {
        "destination": {
          "properties": {
            "endpointUrl": "[parameters('endpoint')]"
          },
          "endpointType": "WebHook"
        },
        "filter": {
          "includedEventTypes": [
            "Microsoft.Storage.BlobCreated",
            "Microsoft.Storage.BlobDeleted"
          ]
        }
      },
      "dependsOn": [
        "[resourceId('Microsoft.EventGrid/systemTopics', parameters('systemTopicName'))]"
      ]
    }
  ]
}

Eseménytípus-szűrés

Alapértelmezés szerint az eseményforrás összes eseménytípusa a végpontra kerül. Dönthet úgy, hogy csak bizonyos eseménytípusokat küld a végpontnak. Értesülhet például az erőforrások frissítéséről, de más műveletekről, például törlésekről nem. Ebben az esetben szűrjön az Microsoft.Resources.ResourceWriteSuccess esemény típusa szerint. Adjon meg egy tömböt az eseménytípusokkal, vagy adja meg All az eseményforrás összes eseménytípusának lekérését.

Az eseménytípus szerinti szűrés JSON-szintaxisa a következő:

"filter": {
  "includedEventTypes": [
    "Microsoft.Resources.ResourceWriteFailure",
    "Microsoft.Resources.ResourceWriteSuccess"
  ]
}

Tárgyszűrés

A tárgy szerinti egyszerű szűréshez adja meg a tárgy kezdő vagy záró értékét. Megadhatja például, hogy a tárgy vége .txt csak a szövegfájl tárfiókba való feltöltésével kapcsolatos események lekérése legyen. Vagy szűrheti a tárgyat /blobServices/default/containers/testcontainer , hogy lekérje az adott tároló összes eseményét, de a tárfiók többi tárolójának nem.

Amikor eseményeket tesz közzé egyéni témakörökben, hozzon létre témákat az eseményekhez, amelyek megkönnyítik az előfizetők számára, hogy megtudják, érdekli-e őket az esemény. Az előfizetők a tárgytulajdonság használatával szűrik és irányítják az eseményeket. Fontolja meg az esemény helyszínének elérési útját, hogy az előfizetők az elérési út szegmensei alapján szűrhessenek. Az elérési út lehetővé teszi az előfizetők számára az események szűk vagy széles körű szűrését. Ha a tárgyhoz hasonlóan /A/B/C három szegmensútvonalat ad meg, az előfizetők az első szegmens /A alapján szűrhetnek az események széles körének lekéréséhez. Ezek az előfizetők eseményeket kapnak olyan témákkal, mint /A/B/C vagy /A/D/E. Más előfizetők szűrhetnek /A/B az események szűkebb halmazának lekéréséhez.

Példák (Blob Storage-események)

A blobesemények szűrhetők a létrehozott vagy törölt objektum eseménytípusa, tárolóneve vagy neve alapján.

A Blob Storage-események tárgya a következő formátumot használja:

/blobServices/default/containers/<containername>/blobs/<blobname>

A tárfiók összes eseményének egyeztetéséhez üresen hagyhatja a tárgyszűrőket.

Az előtaggal rendelkező tárolókban létrehozott blobok eseményeinek egyeztetéséhez használjon egy szűrőt subjectBeginsWith , például:

/blobServices/default/containers/containerprefix

Az adott tárolóban létrehozott blobok eseményeinek egyeztetéséhez használjon a következőhöz hasonló szűrőt subjectBeginsWith :

/blobServices/default/containers/containername/

Ha egy adott tárolóban létrehozott blobok eseményeit szeretné egy blobnév-előtaggal megosztani, használjon a következőhöz hasonló szűrőt subjectBeginsWith :

/blobServices/default/containers/containername/blobs/blobprefix

Ha egy tároló egy adott almappájában létrehozott blobokból származó eseményeket szeretné egyeztetni, használjon a következőhöz hasonló szűrőt subjectBeginsWith :

/blobServices/default/containers/{containername}/blobs/{subfolder}/

Ha egy adott tárolóban létrehozott blobok eseményeit szeretné egy blob utótagjával megosztani, használjon olyan szűrőt subjectEndsWith , mint a ".log" vagy a ".jpg".

Speciális szűrés

Az adatmezők értékei alapján történő szűréshez és az összehasonlító operátor megadásához használja a speciális szűrési lehetőséget. Speciális szűrés esetén a következőket kell megadnia:

  • operátor típusa – Az összehasonlítás típusa.
  • key – A szűréshez használt eseményadatok mezője. Ez lehet szám, logikai, sztring vagy tömb.
  • értékek – A kulcshoz viszonyítandó érték vagy értékek.

Key

A kulcs a szűréshez használt eseményadatok mezője. A következő típusok egyike lehet:

  • Szám

  • Boolean

  • Sztring

  • Tömb. A funkció használatához igaz értékre kell állítania a enableAdvancedFilteringOnArrays tulajdonságot.

    "filter":
    {
        "subjectBeginsWith": "/blobServices/default/containers/mycontainer/blobs/log",
        "subjectEndsWith": ".jpg",
        "enableAdvancedFilteringOnArrays": true
    }
    

A Cloud Events-sémában lévő eseményekhez használja a következő értékeket a kulcshoz: eventid, source, eventtype, eventtypeversion, vagy eseményadatokhoz (példáuldata.key1).

Ha alapszintű Event Grid-szintet használ, az Event Grid-sémában lévő eseményekhez használja a kulcs alábbi értékeit: ID, Topic, , Subject, EventType, DataVersionvagy eseményadatok (például data.key1). Egyéni bemeneti séma esetén használja az esemény adatmezőit (példáuldata.key1). Az adatszakasz mezőinek eléréséhez használja a . (pont) jelölést. Például data.siteNamedata.appEventTypeDetail.action a hozzáféréshez siteName vagy action a következő mintaeseményhez.

	"data": {
		"appEventTypeDetail": {
			"action": "Started"
		},
		"siteName": "<site-name>",
		"clientRequestId": "None",
		"correlationRequestId": "None",
		"requestId": "292f499d-04ee-4066-994d-c2df57b99198",
		"address": "None",
		"verb": "None"
	},

Megjegyzés:

Az Event Grid nem támogatja az objektumtömbök szűrését. Csak az azonos típusú sztringeket, logikai értékeket, számokat és tömböket engedélyezi (például egész számtömböt vagy sztringtömböt).

Értékek

Az értékek lehetnek: szám, sztring, logikai vagy tömb

Operátorok

A számokhoz elérhető operátorok a következők:

NumberIn

A NumberIn operátor igaz értéket ad vissza, ha a kulcs értéke a megadott szűrőértékek egyike. Az alábbi példában ellenőrzi, hogy a counter szakaszban szereplő data attribútum értéke 5 vagy 1.

"advancedFilters": [{
    "operatorType": "NumberIn",
    "key": "data.counter",
    "values": [
        5,
        1
    ]
}]

Ha a kulcs tömb, a rendszer a tömb összes értékét ellenőrzi a szűrőértékek tömbjében. Itt van a pszeudo kód a kulccsal: [v1, v2, v3] és a szűrő: [a, b, c]. A szűrő adattípusának nem megfelelő adattípusú kulcsértékek figyelmen kívül lesznek hagyva.

FOR_EACH filter IN (a, b, c)
    FOR_EACH key IN (v1, v2, v3)
        IF filter == key
            MATCH

NumberNotIn

A NumberNotIn értéke igaz, ha a kulcs értéke nem a megadott szűrőértékek egyike. Az alábbi példában data azt ellenőrzi, hogy a counter szakasz attribútumának értéke nem 41 és 0-e.

"advancedFilters": [{
    "operatorType": "NumberNotIn",
    "key": "data.counter",
    "values": [
        41,
        0
    ]
}]

Ha a kulcs tömb, a rendszer a tömb összes értékét ellenőrzi a szűrőértékek tömbjében. Itt van a pszeudo kód a kulccsal: [v1, v2, v3] és a szűrő: [a, b, c]. A szűrő adattípusának nem megfelelő adattípusú kulcsértékek figyelmen kívül lesznek hagyva.

FOR_EACH filter IN (a, b, c)
    FOR_EACH key IN (v1, v2, v3)
        IF filter == key
            FAIL_MATCH

NumberLessThan

A NumberLessThan operátor igaz értéket ad vissza, ha a kulcs értéke kisebb a megadott szűrőértéknél. Az alábbi példában ellenőrzi, hogy a counter szakaszban szereplő data attribútum értéke kisebb-e 100-nál.

"advancedFilters": [{
    "operatorType": "NumberLessThan",
    "key": "data.counter",
    "value": 100
}]

Ha a kulcs egy tömb, a rendszer a tömb összes értékét ellenőrzi a szűrőértéken. Itt van a pszeudo kód a következő kulccsal: [v1, v2, v3]. A szűrő adattípusának nem megfelelő adattípusú kulcsértékek figyelmen kívül lesznek hagyva.

FOR_EACH key IN (v1, v2, v3)
    IF key < filter
        MATCH

NumberGreaterThan

A NumberGreaterThan operátor igaz értéket ad vissza, ha a kulcs értéke nagyobb a megadott szűrőértéknél. Az alábbi példában data azt ellenőrzi, hogy a szakasz attribútumának counter értéke nagyobb-e 20-nál.

"advancedFilters": [{
    "operatorType": "NumberGreaterThan",
    "key": "data.counter",
    "value": 20
}]

Ha a kulcs egy tömb, a rendszer a tömb összes értékét ellenőrzi a szűrőértéken. Itt van a pszeudo kód a következő kulccsal: [v1, v2, v3]. A szűrő adattípusának nem megfelelő adattípusú kulcsértékek figyelmen kívül lesznek hagyva.

FOR_EACH key IN (v1, v2, v3)
    IF key > filter
        MATCH

NumberLessThanOrEquals

A NumberLessThanOrEquals operátor értéke igaz, ha a kulcs értéke kisebb vagy egyenlő a megadott szűrőértéknél . Az alábbi példában data azt ellenőrzi, hogy a szakasz attribútumának counter értéke kisebb-e, mint 100.

"advancedFilters": [{
    "operatorType": "NumberLessThanOrEquals",
    "key": "data.counter",
    "value": 100
}]

Ha a kulcs egy tömb, a rendszer a tömb összes értékét ellenőrzi a szűrőértéken. Itt van a pszeudo kód a következő kulccsal: [v1, v2, v3]. A szűrő adattípusának nem megfelelő adattípusú kulcsértékek figyelmen kívül lesznek hagyva.

FOR_EACH key IN (v1, v2, v3)
    IF key <= filter
        MATCH

NumberGreaterThanOrEquals

A NumberGreaterThanOrEquals operátor értéke igaz, ha a kulcs értéke nagyobb vagy egyenlő a megadott szűrőértéknél . Az alábbi példában data azt ellenőrzi, hogy a szakasz attribútumának counter értéke nagyobb-e, mint 30.

"advancedFilters": [{
    "operatorType": "NumberGreaterThanOrEquals",
    "key": "data.counter",
    "value": 30
}]

Ha a kulcs egy tömb, a rendszer a tömb összes értékét ellenőrzi a szűrőértéken. Itt van a pszeudo kód a következő kulccsal: [v1, v2, v3]. A szűrő adattípusának nem megfelelő adattípusú kulcsértékek figyelmen kívül lesznek hagyva.

FOR_EACH key IN (v1, v2, v3)
    IF key >= filter
        MATCH

NumberInRange

A NumberInRange operátor igaz értéket ad vissza, ha a kulcs értéke a megadott szűrőtartományok egyikében található. A következő példában data ellenőrzi, hogy a szakasz attribútumának key1 értéke a két tartomány egyikében található-e: 3.14159 – 999.95, 3000 – 4000.

{
    "operatorType": "NumberInRange",
    "key": "data.key1",
    "values": [[3.14159, 999.95], [3000, 4000]]
}

A values tulajdonság tartománytömb. Az előző példában ez két tartományból álló tömb. Íme egy példa egy olyan tömbre, amelynek egy tartományát ellenőrizni kell.

Tömb egy tartománnyal:

{
    "operatorType": "NumberInRange",
    "key": "data.key1",
    "values": [[3000, 4000]]
}

Ha a kulcs tömb, a rendszer a tömb összes értékét ellenőrzi a szűrőértékek tömbjében. A következő pszeudokódot kell megadni a kulccsal: [v1, v2, v3] és a szűrővel: tartománytömb. Ebben a pszeudokódban ab a tömb minden tartományának alacsony és magas értékei vannak. A szűrő adattípusának nem megfelelő adattípusú kulcsértékek figyelmen kívül lesznek hagyva.

FOR_EACH (a,b) IN filter.Values
    FOR_EACH key IN (v1, v2, v3)
       IF key >= a AND key <= b
           MATCH

NumberNotInRange

A NumberNotInRange operátor igaz értéket ad vissza, ha a kulcs értéke nem szerepel a megadott szűrőtartományokban. A következő példában data ellenőrzi, hogy a szakasz attribútumának key1 értéke a két tartomány egyikében található-e: 3.14159 – 999.95, 3000 – 4000. Ha így van, az operátor hamis értéket ad vissza.

{
    "operatorType": "NumberNotInRange",
    "key": "data.key1",
    "values": [[3.14159, 999.95], [3000, 4000]]
}

A values tulajdonság tartománytömb. Az előző példában ez két tartományból álló tömb. Íme egy példa egy olyan tömbre, amelynek egy tartományát ellenőrizni kell.

Tömb egy tartománnyal:

{
    "operatorType": "NumberNotInRange",
    "key": "data.key1",
    "values": [[3000, 4000]]
}

Ha a kulcs tömb, a rendszer a tömb összes értékét ellenőrzi a szűrőértékek tömbjében. A következő pszeudokódot kell megadni a kulccsal: [v1, v2, v3] és a szűrővel: tartománytömb. Ebben a pszeudokódban ab a tömb minden tartományának alacsony és magas értékei vannak. A szűrő adattípusának nem megfelelő adattípusú kulcsértékek figyelmen kívül lesznek hagyva.

FOR_EACH (a,b) IN filter.Values
    FOR_EACH key IN (v1, v2, v3)
        IF key >= a AND key <= b
            FAIL_MATCH

A logikai értékekhez elérhető operátor a következő:

BoolEquals

A BoolEquals operátor igaz értéket ad vissza, ha a kulcsérték a megadott logikai értékszűrő. Az alábbi példában ellenőrzi, hogy a szakaszban szereplő data attribútum értéke isEnabled a truekövetkező-e.

"advancedFilters": [{
    "operatorType": "BoolEquals",
    "key": "data.isEnabled",
    "value": true
}]

Ha a kulcs tömb, a rendszer a tömb összes értékét ellenőrzi a szűrő logikai értékével. Itt van a pszeudo kód a következő kulccsal: [v1, v2, v3]. A szűrő adattípusának nem megfelelő adattípusú kulcsértékek figyelmen kívül lesznek hagyva.

FOR_EACH key IN (v1, v2, v3)
    IF filter == key
        MATCH

A sztringekhez elérhető operátorok a következők:

StringContains

A StringContains értéke igaz, ha a kulcsértéka megadott szűrőértékek bármelyikét tartalmazza (részszűrésekként). A következő példában ellenőrzi, hogy a szakaszban szereplő data attribútum értéke key1 tartalmazza-e a megadott részsztringek egyikét: microsoft vagy azure. Például van azure data factoryazure benne.

"advancedFilters": [{
    "operatorType": "StringContains",
    "key": "data.key1",
    "values": [
        "microsoft", 
        "azure"
    ]
}]

Ha a kulcs tömb, a rendszer a tömb összes értékét ellenőrzi a szűrőértékek tömbjében. Itt van a pszeudo kód a kulccsal: [v1, v2, v3] és a szűrő: [a,b,c]. A szűrő adattípusának nem megfelelő adattípusú kulcsértékek figyelmen kívül lesznek hagyva.

FOR_EACH filter IN (a, b, c)
    FOR_EACH key IN (v1, v2, v3)
        IF key CONTAINS filter
            MATCH

StringNotContains

A StringNotContains operátor igaz értéket ad vissza, ha a kulcs nem tartalmazza a megadott szűrőértékeket alsztringként. Ha a kulcs a megadott értékek egyikét részsztringként tartalmazza, az operátor hamis értéket ad eredményül. Az alábbi példában data az operátor csak akkor ad vissza igaz értéket, ha a key1 szakasz attribútumának értéke nem rendelkezik contoso és fabrikam alsztringként van megadva.

"advancedFilters": [{
    "operatorType": "StringNotContains",
    "key": "data.key1",
    "values": [
        "contoso", 
        "fabrikam"
    ]
}]

Ha a kulcs tömb, a rendszer a tömb összes értékét ellenőrzi a szűrőértékek tömbjében. Itt van a pszeudo kód a kulccsal: [v1, v2, v3] és a szűrő: [a,b,c]. A szűrő adattípusának nem megfelelő adattípusú kulcsértékek figyelmen kívül lesznek hagyva.

FOR_EACH filter IN (a, b, c)
    FOR_EACH key IN (v1, v2, v3)
        IF key CONTAINS filter
            FAIL_MATCH

Az operátor aktuális korlátozásáról lásd a Korlátozások szakaszt.

StringBeginsWith

A StringBeginsWith operátor igaz értéket ad vissza, ha a kulcs értéke a megadott szűrőértékek bármelyikével kezdődik. Az alábbi példában data azt ellenőrzi, hogy a szakasz attribútumának key1 értéke a következővel event kezdődik-e: vagy message. Például a event hubs következővel eventkezdődik: .

"advancedFilters": [{
    "operatorType": "StringBeginsWith",
    "key": "data.key1",
    "values": [
        "event", 
        "message"
    ]
}]

Ha a kulcs tömb, a rendszer a tömb összes értékét ellenőrzi a szűrőértékek tömbjében. Itt van a pszeudo kód a kulccsal: [v1, v2, v3] és a szűrő: [a,b,c]. A szűrő adattípusának nem megfelelő adattípusú kulcsértékek figyelmen kívül lesznek hagyva.

FOR_EACH filter IN (a, b, c)
    FOR_EACH key IN (v1, v2, v3)
        IF key BEGINS_WITH filter
            MATCH

StringNotBeginsWith

A StringNotBeginsWith operátor igaz értéket ad vissza, ha a kulcs értéke nem a megadott szűrőértékekkel kezdődik. Az alábbi példában data ellenőrzi, hogy a szakasz attribútumának key1 értéke nem a következővel event kezdődik-e, vagy message.

"advancedFilters": [{
    "operatorType": "StringNotBeginsWith",
    "key": "data.key1",
    "values": [
        "event", 
        "message"
    ]
}]

Ha a kulcs tömb, a rendszer a tömb összes értékét ellenőrzi a szűrőértékek tömbjében. Itt van a pszeudo kód a kulccsal: [v1, v2, v3] és a szűrő: [a,b,c]. A szűrő adattípusának nem megfelelő adattípusú kulcsértékek figyelmen kívül lesznek hagyva.

FOR_EACH filter IN (a, b, c)
    FOR_EACH key IN (v1, v2, v3)
        IF key BEGINS_WITH filter
            FAIL_MATCH

StringEndsWith

A StringEndsWith operátor igaz értéket ad vissza, ha a kulcs értéke a megadott szűrőértékek egyikével végződik. Az alábbi példában azt ellenőrzi, hogy a szakasz attribútumának key1 értéke a következővel jpg végződik-e: vagy jpegpng.data Például a eventgrid.png következővel pngvégződik: .

"advancedFilters": [{
    "operatorType": "StringEndsWith",
    "key": "data.key1",
    "values": [
        "jpg", 
        "jpeg", 
        "png"
    ]
}]

Ha a kulcs tömb, a rendszer a tömb összes értékét ellenőrzi a szűrőértékek tömbjében. Itt van a pszeudo kód a kulccsal: [v1, v2, v3] és a szűrő: [a,b,c]. A szűrő adattípusának nem megfelelő adattípusú kulcsértékek figyelmen kívül lesznek hagyva.

FOR_EACH filter IN (a, b, c)
    FOR_EACH key IN (v1, v2, v3)
        IF key ENDS_WITH filter
            MATCH

StringNotEndsWith

A StringNotEndsWith operátor igaz értéket ad vissza, ha a kulcs értéke nem végződik a megadott szűrőértékekkel. A következő példában data ellenőrzi, hogy a szakasz attribútumának key1 értéke nem végződik-e jpg vagy jpegpngsem.

"advancedFilters": [{
    "operatorType": "StringNotEndsWith",
    "key": "data.key1",
    "values": [
        "jpg", 
        "jpeg", 
        "png"
    ]
}]

Ha a kulcs tömb, a rendszer a tömb összes értékét ellenőrzi a szűrőértékek tömbjében. Itt van a pszeudo kód a kulccsal: [v1, v2, v3] és a szűrő: [a,b,c]. A szűrő adattípusának nem megfelelő adattípusú kulcsértékek figyelmen kívül lesznek hagyva.

FOR_EACH filter IN (a, b, c)
    FOR_EACH key IN (v1, v2, v3)
        IF key ENDS_WITH filter
            FAIL_MATCH

StringIn

A StringIn operátor ellenőrzi, hogy a kulcs értéke pontosan megfelel-e a megadott szűrőértékek egyikének. Az alábbi példában ellenőrzi, hogy a szakaszban szereplő attribútum értéke key1 vagy fabrikamfactory.datacontoso

"advancedFilters": [{
    "operatorType": "StringIn",
    "key": "data.key1",
    "values": [
        "contoso", 
        "fabrikam", 
        "factory"
    ]
}]

Ha a kulcs tömb, a rendszer a tömb összes értékét ellenőrzi a szűrőértékek tömbjében. Itt van a pszeudo kód a kulccsal: [v1, v2, v3] és a szűrő: [a,b,c]. A szűrő adattípusának nem megfelelő adattípusú kulcsértékek figyelmen kívül lesznek hagyva.

FOR_EACH filter IN (a, b, c)
    FOR_EACH key IN (v1, v2, v3)
        IF filter == key
            MATCH

StringNotIn

A StringNotIn operátor ellenőrzi, hogy a kulcs értéke nem felel-e meg a megadott szűrőértékek egyikének sem. Az alábbi példában data ellenőrzi, hogy a szakasz attribútumának key1 értéke nem aws és bridgenem is.

"advancedFilters": [{
    "operatorType": "StringNotIn",
    "key": "data.key1",
    "values": [
        "aws", 
        "bridge"
    ]
}]

Ha a kulcs tömb, a rendszer a tömb összes értékét ellenőrzi a szűrőértékek tömbjében. Itt van a pszeudo kód a kulccsal: [v1, v2, v3] és a szűrő: [a,b,c]. A szűrő adattípusának nem megfelelő adattípusú kulcsértékek figyelmen kívül lesznek hagyva.

FOR_EACH filter IN (a, b, c)
    FOR_EACH key IN (v1, v2, v3)
        IF filter == key
            FAIL_MATCH

Az összes sztring-összehasonlítás nem megkülönbözteti a kis- és nagybetűket.

Megjegyzés:

Ha az esemény JSON-ja nem tartalmazza a speciális szűrőkulcsot, A szűrő nem egyezik a következő operátorokkal: NumberGreaterThan, NumberGreaterThanOrEquals, NumberLessThan, NumberLessThanOrEquals, NumberIn, BoolEquals, StringContains, StringNotContains, StringBeginsWith, StringNotBeginsWith, StringEndsWith, StringNotEndsWith, StringIn.

A szűrő kiértékelése a következő operátorok szerint történik: NumberNotIn, StringNotIn.

IsNullOrUndefined

Az IsNullOrUndefined operátor igaz értéket ad vissza, ha a kulcs értéke NULL vagy nem definiált.

{
    "operatorType": "IsNullOrUndefined",
    "key": "data.key1"
}

Az alábbi példában az 1. kulcs hiányzik, ezért az operátor értéke igaz.

{ 
    "data": 
    { 
        "key2": 5 
    } 
}

Az alábbi példában az 1. kulcs értéke null, így az operátor értéke igaz lesz.

{
    "data": 
    { 
        "key1": null
    }
}

Ha az 1. kulcsnak más értéke is van ezekben a példákban, az operátor hamis értéket ad ki.

IsNotNull

Az IsNotNull operátor igaz értéket ad vissza, ha a kulcs értéke nem NULL vagy nem definiált.

{
    "operatorType": "IsNotNull",
    "key": "data.key1"
}

VAGY és ÉS

Ha egyetlen szűrőt ad meg több értékkel, a rendszer OR műveletet hajt végre, így a kulcsmező értékének ezen értékek egyikének kell lennie. Here's an example:

"advancedFilters": [
    {
        "operatorType": "StringContains",
        "key": "Subject",
        "values": [
            "/providers/microsoft.devtestlab/",
            "/providers/Microsoft.Compute/virtualMachines/"
        ]
    }
]

Ha több különböző szűrőt ad meg, az AND művelet befejeződik, így minden szűrőfeltételnek teljesülnie kell. Here's an example:

"advancedFilters": [
    {
        "operatorType": "StringContains",
        "key": "Subject",
        "values": [
            "/providers/microsoft.devtestlab/"
        ]
    },
    {
        "operatorType": "StringContains",
        "key": "Subject",
        "values": [
            "/providers/Microsoft.Compute/virtualMachines/"
        ]
    }
]

CloudEvents

A CloudEvents sémában lévő eseményekhez használja a kulcs alábbi értékeit: eventid, source, , eventtype, eventtypeversionvagy eseményadatok (példáuldata.key1).

A CloudEvents 1.0 bővítménykörnyezeti attribútumait is használhatja. Az alábbi példában comexampleextension1comexampleothervalue a bővítménykörnyezet attribútumai.

{
    "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
    }
}

Íme egy példa egy bővítménykörnyezet attribútumának szűrőben való használatára.

"advancedFilters": [{
    "operatorType": "StringBeginsWith",
    "key": "comexampleothervalue",
    "values": [
        "5", 
        "1"
    ]
}]

Limitations

A speciális szűrésre a következő korlátozások vonatkoznak:

  • 25 speciális szűrő és 25 szűrőérték az Event Grid-előfizetés összes szűrője között
  • Sztringértékenként 512 karakter
  • A (pont) karakterrel rendelkező . kulcsok. Például: http://schemas.microsoft.com/claims/authnclassreference vagy john.doe@contoso.com. A kulcsokban jelenleg nem támogatott a feloldó karakterek használata.

Ugyanaz a kulcs több szűrőben is használható.

Következő lépések