Tous les produits
Search
Centre de documentation

DataWorks:Bonnes pratiques pour l'utilisation des fonctions Aviator en tant que filtres

Dernière mise à jour :Aug 25, 2026

DataService Studio vous permet d'écrire des fonctions et de les associer à une API pour les utiliser comme filtres. Cette rubrique propose des exemples d'écriture de la logique fonctionnelle avec Aviator et sa syntaxe.

Scénarios

  • Si vous configurez une fonction en tant que pré-filtre pour une API, celle-ci peut prétraiter les paramètres de requête lors de l'appel de l'API.

  • Si vous configurez une fonction en tant que post-filtre pour une API, celle-ci peut retraiter et transformer les valeurs de retour lors de l'appel de l'API.

Guide d'utilisation

Exemples de paramètres d'entrée

Remarque

Dans le code Aviator, le nom de variable par défaut $0 fait référence à l'intégralité de l'entrée de la fonction.

  • Scénario 1 : Utiliser une fonction Aviator en tant que pré-filtre d'API

    Dans ce scénario, les paramètres de requête de l'API constituent l'entrée complète de la fonction, structurée sous forme de JSON à un seul niveau. L'exemple suivant illustre les paramètres de requête en tant qu'entrée de fonction :

    ## The request parameter is user_id
    ## Multiple parameter values are passed when the API is called: user_id = (0,1,2)
    {
      "user_id": [0,1,2]
    }
  • Scénario 2 : Utiliser une fonction Aviator en tant que post-filtre d'API

    Dans ce scénario, la valeur de retour de l'API constitue l'entrée complète de la fonction, structurée sous forme de JSON multiniveau. L'exemple suivant illustre une valeur de retour en tant qu'entrée de fonction :

    ## The return result contains three columns: user_id, city, and tags
    ## After the API is called, three matching data records are returned (see rows)
    {
      "data": {
        "totalNum": 3,
        "pageSize": 10,
        "rows": [
          {
            "user_id": 2,
            "city": "BJ",
            "tags": "B,D,dongcs,ccccc"
          },
          {
            "user_id": 3,
            "city": "SH",
            "tags": "A,C,D,F"
          },
          {
            "user_id": 1,
            "city": "HZ",
            "tags": "A,B,C"
          }
        ],
        "pageNum": 1
      },
      "errCode": 0,
      "requestId": "0bb211c516357674333185698eb07b",
      "errMsg": "success",
      "apiLog": null
    }

Exemples d'utilisation des fonctions

Scénario 1 : Utiliser une fonction Aviator en tant que pré-filtre d'API. Les exemples suivants montrent comment utiliser la fonction :

  • Exemple 1 : Lors de l'appel de la fonction, celle-ci modifie la valeur d'un paramètre de requête transmis par le client.

    • Fonction Aviator :

      ## For the request parameter user_id, the original value passed from the client is user_id=1
      ## After being processed by the filter, the actual value for the query is user_id=2
      if $0.user_id == 1
      {
          $0.user_id = $0.user_id + 1;
      }
      return $0;
    • Entrée et sortie de la fonction :

      ## Input:
      {
          "user_id": 1
      }
      
      ## Output:
      {
        "user_id": 2
      }
  • Exemple 2 : Lors de l'appel de la fonction, celle-ci attribue une valeur à un paramètre de requête non transmis par le client. Ce cas s'applique lorsque le paramètre de requête n'est pas obligatoire et qu'aucune valeur n'est fournie.

    • Fonction Aviator :

      ## For the request parameter user_id, the original value passed from the client is user_id=
      ## After being processed by the filter, the actual value for the query is user_id=1
      $0.user_id = 1;
      return $0;
    • Entrée et sortie de la fonction :

      ## Input:
      {
          "user_id": ""
      }
      
      ## Output:
      {
        "user_id": 1
      }
  • Exemple 3 : Lors de l'appel de la fonction, si un paramètre de requête transmis par le client est un tableau (ce qui signifie que plusieurs valeurs sont transmises pour un même paramètre), la fonction peut parcourir le tableau et modifier chaque valeur selon la condition de boucle.

    • Fonction Aviator :

      ## For the request parameter user_id, the original value passed from the client is user_id=(0,1,2)
      ## After being processed by the filter, the actual value for the query is user_id=(1,2,3)
      user_id = $0.user_id;
      for index in user_id
      {
          user_id[index] = index + 1;
      }
      return $0;
    • Entrée et sortie de la fonction :

      ## Input:
      {
        "user_id": [0,1,2]
      }
      
      ## Output:
      {
        "user_id": [
          1,
          2,
          3
        ]
      }

Scénario 2 : Utiliser une fonction Aviator en tant que post-filtre d'API. Les exemples suivants montrent comment utiliser la fonction :

  • Exemple 1 : Après l'appel de la fonction, celle-ci modifie un enregistrement spécifique dans la valeur de retour de l'API, au format JSON.

    • Fonction Aviator :

      ## First, get the innermost array 'rows' from the JSON. Then, traverse the array. When a record with "city":"BJ" is found, change "tags":"" to "tags":"DataService Studio"
      rows = $0.data.rows;
      for row in rows
      {
          if(row.city == "BJ")
          {
              row.tags = "DataService Studio";
          }
      }
      return $0;
    • Entrée et sortie de la fonction :

      ## Input:
      {
        "data": {
          "totalNum": 3,
          "pageSize": 10,
          "rows": [
            {
              "user_id": 2,
              "city": "BJ",
              "tags": "DataService Studio"
            },
            {
              "user_id": 1,
              "city": "HZ",
              "tags": "A,B,C"
            },
            {
              "user_id": 3,
              "city": "SH",
              "tags": "A,C,D,F"
            }
          ],
          "pageNum": 1
        },
        "errCode": 0,
        "requestId": "0bb211e016357705412263266e571e",
        "errMsg": "success",
        "apiLog": null
      }
      
      ## Output:
      {
        "data": {
          "totalNum": 3,
          "pageSize": 10,
          "rows": [
            {
              "user_id": 2,
              "city": "BJ",
              "tags": "DataService Studio"
            },
            {
              "user_id": 1,
              "city": "HZ",
              "tags": "A,B,C"
            },
            {
              "user_id": 3,
              "city": "SH",
              "tags": "A,C,D,F"
            }
          ],
          "pageNum": 1
        },
        "errCode": 0,
        "requestId": "0bb211e016357705412263266e571e",
        "errMsg": "success"
      }
  • Exemple 2 : Après l'appel de la fonction, celle-ci ajoute une colonne constante à chaque enregistrement de la valeur de retour de l'API, au format JSON.

    • Fonction Aviator :

      ## First, get the innermost array 'rows' from the JSON. Then, traverse the array and add a constant column is_target= "Y" to each record.
      rows = $0.data.rows;
      for row in rows
      {
          row.is_target= "Y";
      }
      
      return $0;
    • Entrée et sortie de la fonction :

      ## Input:
      {
        "data": {
          "totalNum": 3,
          "pageSize": 10,
          "rows": [
            {
              "user_id": 2,
              "city": "BJ",
              "tags": "DataService Studio"
            },
            {
              "user_id": 1,
              "city": "HZ",
              "tags": "A,B,C"
            },
            {
              "user_id": 3,
              "city": "SH",
              "tags": "A,C,D,F"
            }
          ],
          "pageNum": 1
        },
        "errCode": 0,
        "requestId": "0bb211e016357705412263266e571e",
        "errMsg": "success",
        "apiLog": null
      }
      
      ## Output:
      {
        "data": {
          "totalNum": 3,
          "pageSize": 10,
          "rows": [
            {
              "is_target": "Y",
              "user_id": 2,
              "city": "BJ",
              "tags": "DataService Studio"
            },
            {
              "is_target": "Y",
              "user_id": 1,
              "city": "HZ",
              "tags": "A,B,C"
            },
            {
              "is_target": "Y",
              "user_id": 3,
              "city": "SH",
              "tags": "A,C,D,F"
            }
          ],
          "pageNum": 1
        },
        "errCode": 0,
        "requestId": "0bb211e016357705412263266e571e",
        "errMsg": "success"
      }
  • Exemple 3 : Après l'appel de la fonction, si la valeur de retour de l'API (au format JSON) contient de nombreux champs et que vous ne souhaitez pas vérifier la valeur de chaque champ individuellement, vous pouvez utiliser une fonction pour parcourir tous les champs et modifier les valeurs de champs spécifiques.

    • Fonction Aviator :

      ## First, get the innermost array 'rows' from the JSON. Then, perform a nested traversal of the 'rows' array. For each element in 'rows', get its map. If a value in the map is null, change it to "test".
      ## In Aviator syntax, 'nil' is the null constant, equivalent to 'null' in other syntaxes.
      rows = $0.data.rows;
      for row in rows
      {
          for index in row
          {
              if(index.value == nil)
              {
                  index.value = "test"
              }
          }
      }
      return $0;
    • Entrée et sortie de la fonction :

      ## Input:
      {
        "data": {
          "totalNum": 3,
          "pageSize": 10,
          "rows": [
            {
              "user_id": null,
              "city": "SH",
              "tags": "A,C,D,F"
            },
            {
              "user_id": 2,
              "city": "BJ",
              "tags": "DataService Studio"
            },
            {
              "user_id": null,
              "city": null,
              "tags": "A,B,C"
            }
          ],
          "pageNum": 1
        },
        "errCode": 0,
        "requestId": "0bb211f016372870359913841e52d8",
        "errMsg": "success",
        "apiLog": null
      }
      
      ## Output:
      {
        "data": {
          "totalNum": 3,
          "pageSize": 10,
          "rows": [
            {
              "user_id": "test",
              "city": "SH",
              "tags": "A,C,D,F"
            },
            {
              "user_id": 2,
              "city": "BJ",
              "tags": "DataService Studio"
            },
            {
              "user_id": "test",
              "city": "test",
              "tags": "A,B,C"
            }
          ],
          "pageNum": 1
        },
        "errCode": 0,
        "requestId": "0bb211f016372870359913841e52d8",
        "errMsg": "success"
      }