日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

數(shù)據(jù)加工語法

更新時間: 2024-12-17 17:44:48

SLS DSL基于Python語言開發(fā),提供兩百多個內(nèi)置函數(shù)來簡化數(shù)據(jù)加工任務(wù)。本文介紹DSL的語言模式、分類和運(yùn)行原理等。

語言模式

SLS DSL兼容Python,標(biāo)準(zhǔn)模式下,SLS DSL可視為Python的子集。除基本的數(shù)據(jù)結(jié)構(gòu)與表達(dá)方式外,語法規(guī)則是以函數(shù)方式進(jìn)行編排。如果您有特定UDF的需求,請?zhí)峤?span props="china">工單。

類別

Python語法

標(biāo)準(zhǔn)模式

數(shù)據(jù)結(jié)構(gòu)

數(shù)字、字符串、布爾

支持。

不支持"""形式字符串。

元組、列表、集合、字典

支持。

不支持集合set{1,2,3}。

對象

僅支持內(nèi)置擴(kuò)展數(shù)據(jù)結(jié)構(gòu),如表格、日期時間對象等。

基本語法

操作符,如加減乘除等

支持比較運(yùn)算符(==、!=、>等)和邏輯運(yùn)算符(and、or、not),其余不直接支持,需要通過函數(shù)支持。

注釋

支持。

變量定義賦值

不支持,需使用函數(shù)調(diào)用傳遞。

條件

支持。例如e_if、e_if_else、e_switch函數(shù)。

循環(huán)

不直接支持,可通過內(nèi)置函數(shù)嵌套實(shí)現(xiàn)。例如如下遍歷數(shù)組:

e_if(op_ge(op_len(json_parse(v("x"))), 1), e_set("x0", lst_get(v("x"), 0)))
e_if(op_ge(op_len(json_parse(v("x"))), 2), e_set("x1", lst_get(v("x"), 1)))

函數(shù)

標(biāo)準(zhǔn)Python內(nèi)置函數(shù)

不支持。使用200+內(nèi)置函數(shù)。

函數(shù)調(diào)用

支持。解包調(diào)用不支持。

自定義函數(shù)def或lambda

不支持,提供兩百多個全局操作函數(shù)與表達(dá)式函數(shù),且支持基于現(xiàn)有函數(shù)的自由組合調(diào)用。

模塊

導(dǎo)入與使用Python標(biāo)準(zhǔn)庫

不支持。

線程與進(jìn)程創(chuàng)建

不支持。

導(dǎo)入第三方庫

不支持。

外部網(wǎng)絡(luò)連接或命令調(diào)用

支持內(nèi)置的資源連接器。

函數(shù)分類

標(biāo)準(zhǔn)模式的SLS DSL是通過調(diào)用函數(shù)的方式完成的,其內(nèi)置兩百多個函數(shù),主要分為兩類:

  • 全局操作函數(shù)

    主要用來接收日志、處理并返回日志的函數(shù)。且只有全局操作函數(shù)才能構(gòu)建加工規(guī)則的每個步驟。

  • 表達(dá)式函數(shù)

    通用型函數(shù),接受特定參數(shù),組合調(diào)用后作為參數(shù)傳遞給全局操作函數(shù)以定義更加靈活的邏輯。

兩類函數(shù)功能對比:

函數(shù)類型

全局步驟

接收

返回

修改日志

組合調(diào)用

全局操作函數(shù)

支持

自動接收日志

0到多條日志

支持大部分情況

支持

表達(dá)式函數(shù)

不支持

除個別函數(shù)支持,大部分不直接處理日志。

特定數(shù)據(jù)結(jié)構(gòu)

不支持

支持

全局操作函數(shù)

接收日志并返回日志的函數(shù)。

說明

除全局函數(shù)外,其他內(nèi)置函數(shù)不能放在每個步驟的第一行。

一個SLS DSL規(guī)則的形式如下:

全局函數(shù)1(..參數(shù)....)
全局函數(shù)2(..參數(shù)....)
全局函數(shù)3(..參數(shù)....)
全局函數(shù)4(..參數(shù)....)

全局操作函數(shù)可以分為兩類:

函數(shù)分類

描述

樣例

流程控制函數(shù)

用于步驟流程控制,接收日志,基于條件控制調(diào)用其他日志函數(shù)完成日志處理。

e_if、e_switch、e_if_else等。

事件處理函數(shù)

對日志進(jìn)行加工的函數(shù) 。返回0到多條日志。

函數(shù)樣例如下:

  • e_drop_fields丟棄日志字段。

  • e_kv提取并添加日志的鍵值對。

  • e_dict_map給日志做富化。

加工邏輯:

  • 基本處理:

    數(shù)據(jù)加工會以流式方式讀取源Logstore的數(shù)據(jù),并將每一條日志以字典的數(shù)據(jù)結(jié)構(gòu)傳遞給加工規(guī)則,然后根據(jù)加工規(guī)則中定義的日志函數(shù)順序處理日志數(shù)據(jù),并將最終的數(shù)據(jù)加工結(jié)果輸出到目標(biāo)Logstore。

    說明

    在傳遞的過程中日志的字段和值始終都是字符串形式。例如:原日志是{"__time__": "1234567", "__topic__": "", "k1": "test"},函數(shù)e_set("f1", 200)設(shè)置字段f1的值為200,經(jīng)過這個函數(shù)處理后,原日志會變成:{"__time__": "1234567", "__topic__": "", "k1": "test", "f1": "200"},其中f1200都是字符串類型。

    規(guī)則中定義的每個日志函數(shù)會順序執(zhí)行,每個函數(shù)會對每個日志進(jìn)行處理和修改,最后返回修改后的日志。

    例如e_set("type", "test")會對每個日志添加一個字段type,值為test,下一個函數(shù)接收到的就是修改后的日志。

  • 條件判斷:

    • 條件判斷e_if:某些日志可以增加條件判斷,不滿足條件的日志就會跳過本次操作,相當(dāng)于一個if的邏輯。

      例如e_if(e_match("status", "200"), e_regex("data", "ret: \d+", "result")),會首先判斷字段status是否為200,如果條件判斷為真,則會對字段data用正則表達(dá)式提取出新字段result;如果條件判斷為否,則不會執(zhí)行任何操作。

    • e_if_else:與if_else操作類似。

  • 停止處理:

    • 某些步驟可能返回0個日志,表示刪除日志。

      例如e_if(str_islower(v("result")), e_drop()),如果每個result字段的值是小寫字符串,則丟棄這條日志,后續(xù)的操作將不再進(jìn)行,自動重新開始下一條日志。

    • 輸出日志可以視為一種特殊的停止處理,例如e_output提前輸出日志到目標(biāo)并刪除日志,其后續(xù)的操作也不會再進(jìn)行。

      說明

      函數(shù)e_coutput會復(fù)制一份當(dāng)前的日志輸出,并繼續(xù)處理后續(xù)。

  • 分裂并行:

    某些步驟也可能返回多個日志,表示分裂日志。

    例如e_split(data),表示根據(jù)字段data的值將原本的一條日志分裂成兩條日志。假如data的值是"abc, xyz",則分裂后兩條日志字段data的值分別是abcxyz。

    分裂后的每條日志都會繼續(xù)進(jìn)行后續(xù)的步驟。

更多關(guān)于全局函數(shù)的說明,請參見全局操作函數(shù)概覽

表達(dá)式函數(shù)

除了全局操作函數(shù)外,SLS DSL還提供200個表達(dá)式函數(shù),接收特定參數(shù),返回特定的值,一般是單個表達(dá)式函數(shù)或其調(diào)用組合。形式如下:

全局操作1(表達(dá)式函數(shù)1(...), ....)
全局操作2(..., 表達(dá)式函數(shù)2(...), 表達(dá)式函數(shù)3(...),...)

表達(dá)式函數(shù)大概可以分為四類:

函數(shù)分類

描述

樣例

事件檢查函數(shù)

接收日志,提取或檢索返回特定信息的函數(shù),不會修改傳遞的日志。

函數(shù)v返回日志字段的值。函數(shù)e_searche_match返回日志是否符合特定的條件。

資源函數(shù)

連接本地或外部資源,接收特定參數(shù)配置并返回數(shù)據(jù),一般是字典、表格等類型。

OSS、RDS、Logstore資源函數(shù)。

控制函數(shù)

用于表達(dá)式的邏輯操作,接收特定參數(shù)并基于條件做控制,調(diào)用其他表達(dá)式函數(shù)返回結(jié)果。

op_and、op_orop_not、op_if、op_coalesce等。

其他表達(dá)式函數(shù)

接受固定或者其他函數(shù)的調(diào)用結(jié)果,返回特定的值。

字符串、時間、類型轉(zhuǎn)換函數(shù)等。

更多關(guān)于表達(dá)式函數(shù)的說明,請參見表達(dá)式函數(shù)概覽。

上一篇: 為數(shù)據(jù)加工任務(wù)開啟監(jiān)控告警 下一篇: 語言簡介
阿里云首頁 日志服務(wù) 相關(guān)技術(shù)圈