全部产品
Search
文档中心

DataWorks:Praktik terbaik menggunakan fungsi Aviator sebagai filter

更新时间:Jul 06, 2025

Di DataService Studio, Anda dapat menulis fungsi, mengaitkan satu atau beberapa fungsi dengan tipe yang sama ke API, dan menggunakan fungsi tersebut sebagai filter untuk API. Topik ini memberikan contoh cara menulis fungsi Aviator dengan logika tertentu berdasarkan sintaksis fungsi Aviator.

Skenario

  • Jika Anda menggunakan fungsi sebagai prefilter untuk API, fungsi tersebut memproses parameter permintaan API saat API dipanggil.
  • Jika Anda menggunakan fungsi sebagai post-filter untuk API, fungsi tersebut memproses dan merekonstruksi respons API saat API dipanggil.

Referensi

Parameter input fungsi

Catatan Nama variabel default dalam kode untuk fungsi Aviator adalah $0, yang menunjukkan seluruh input fungsi Aviator.
  • Skenario 1: Gunakan fungsi Aviator sebagai prefilter untuk API.
    Parameter permintaan dan nilai parameter permintaan API digunakan sebagai seluruh input untuk fungsi Aviator. Inputnya dalam format JSON satu lapis. Contoh:
    ## user_id adalah parameter permintaan.
    ## user_id = (0,1,2) menunjukkan bahwa beberapa nilai diteruskan untuk parameter permintaan saat API dipanggil.
    {
      "user_id": [0,1,2]
    }
  • Skenario 2: Gunakan fungsi Aviator sebagai post-filter untuk API.
    Respons API digunakan sebagai seluruh input fungsi Aviator. Inputnya dalam format JSON multi-lapis. Contoh:
    ## Data yang dikembalikan berisi tiga kolom: user_id, city, dan tags.
    ## Tiga entri data yang memenuhi kondisi dikembalikan setelah API dipanggil. Periksa baris dalam kode.
    {
      "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
    }

Gunakan fungsi Aviator

Skenario 1: Gunakan fungsi Aviator sebagai prefilter untuk API. Contoh:
  • Contoh 1: Fungsi Aviator dipanggil untuk mengubah nilai parameter permintaan yang diteruskan dari klien.
    • Fungsi Aviator:
      ## Nilai asli yang diteruskan dari klien untuk parameter permintaan user_id adalah 1.
      ## Setelah Anda menggunakan fungsi Aviator sebagai prefilter untuk memproses parameter permintaan user_id, nilai parameter permintaan yang Anda peroleh adalah 2.
      if $0.user_id == 1
      {
          $0.user_id = $0.user_id + 1;
      }
      return $0;
    • Input dan Output Fungsi Aviator:
      ## Input:
      {
          "user_id": 1
      }
      
      ## Output:
      {
        "user_id": 2
      }
  • Contoh 2: Fungsi Aviator dipanggil untuk memberikan nilai pada parameter permintaan yang nilainya tidak diteruskan dari klien. Jika parameter permintaan bersifat opsional dan tidak ada nilai yang tersedia untuk parameter permintaan, parameter permintaan dapat diberi nilai.
    • Fungsi Aviator:
      ## user_id= menunjukkan bahwa parameter permintaan user_id tidak ditentukan di klien.
      ## Setelah Anda menggunakan fungsi Aviator sebagai prefilter untuk memproses parameter permintaan user_id, nilai parameter permintaan yang Anda peroleh adalah 1.
      $0.user_id = 1;
      return $0;
    • Input dan Output Fungsi Aviator:
      ## Input:
      {
          "user_id": ""
      }
      
      ## Output:
      {
        "user_id": 1
      }
  • Contoh 3: Fungsi Aviator dipanggil untuk melintasi semua nilai dalam array yang diteruskan dari klien untuk parameter permintaan user_id dan mengubah nilai-nilai tersebut.
    • Fungsi Aviator:
      ## Nilai asli yang diteruskan dari klien untuk parameter permintaan user_id adalah 0, 1, dan 2.
      ## Setelah Anda menggunakan fungsi Aviator sebagai prefilter untuk memproses parameter permintaan user_id, nilai parameter permintaan yang Anda peroleh adalah 1, 2, dan 3.
      user_id = $0.user_id;
      for index in user_id
      {
          user_id[index] = index + 1;
      }
      return $0;
    • Input dan Output Fungsi Aviator:
      ## Input:
      {
        "user_id": [0,1,2]
      }
      
      ## Output:
      {
        "user_id": [
          1,
          2,
          3
        ]
      }
Skenario 2: Gunakan fungsi Aviator sebagai post-filter untuk API. Contoh:
  • Contoh 1: Fungsi Aviator dipanggil untuk memodifikasi entri data tertentu dalam data JSON yang dikembalikan oleh API.
    • Fungsi Aviator:
      ## Dapatkan dan lintasi array paling dalam bernama rows dalam data JSON untuk menemukan entri data di mana city adalah BJ. Lalu, ubah "tags":"" menjadi "tags":"DataService Studio" untuk entri data tersebut.
      rows = $0.data.rows;
      for row in rows
      {
          if(row.city == "BJ")
          {
              row.tags = "DataService Studio";
          }
      }
      return $0;
    • Input dan Output Fungsi Aviator:
      ## 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"
      }
  • Contoh 2: Fungsi Aviator dipanggil untuk menambahkan kolom konstan ke setiap entri data dalam data JSON yang dikembalikan oleh API.
    • Fungsi Aviator:
      ## Dapatkan dan lintasi array paling dalam bernama rows dalam data JSON dan tambahkan kolom konstan is_target= "Y" ke setiap entri data.
      rows = $0.data.rows;
      for row in rows
      {
          row.is_target= "Y";
      }
      
      return $0;
    • Input dan Output Fungsi Aviator:
      ## 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"
      }
  • Contoh 3: Data JSON yang dikembalikan oleh API berisi banyak bidang, dan Anda tidak ingin menentukan nilai pengembalian bidang satu per satu. Fungsi Aviator dipanggil untuk melintasi semua bidang dan mengubah nilai bidang yang memiliki nilai khusus.
    • Fungsi Aviator:
      ## Dapatkan array paling dalam bernama rows dalam data JSON. Lintasi data bersarang dalam array rows untuk mendapatkan peta setiap entri data. Lalu, ubah nilai peta yang nilainya null menjadi test.
      ## Dalam sintaksis Aviator, nil menentukan konstanta null, yang setara dengan null dalam sintaksis lain.
      rows = $0.data.rows;
      for row in rows
      {
          for index in row
          {
              if(index.value == nil)
              {
                  index.value = "test"
              }
          }
      }
      return $0;
    • Input dan Output Fungsi Aviator:
      ## 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"
      }

Efek penggunaan filter

Catatan Anda hanya dapat menggunakan fungsi yang telah diterbitkan sebagai filter untuk API.
Input dan Output API:
## Input API:
{
  "user_id": ""
}

## Output API:
{
  "data": {
    "totalNum": 1,
    "pageSize": 10,
    "rows": [
      {
        "is_target": "Y",
        "user_id": 2,
        "city": "BJ",
        "tags": "DataService Studio"
      }
    ],
    "pageNum": 1
  },
  "errCode": 0,
  "requestId": "0be30a8716357721257118118e2b0f",
  "errMsg": "success"
}