六月婷婷AV,国产偷窥猎奇福利二区,日韩三级片。,好吊色网站,日韩成人中文在线视频,国产亚洲午夜啪啪,亚洲欧美另类国产精品,国产成人av1,任你艹在线观看

時序數(shù)據(jù)庫數(shù)據(jù)ETL與轉(zhuǎn)換實踐:零代碼接入中的解析與映射

Jing Wang

2026-04-24 /

在工業(yè)數(shù)據(jù)管理平臺的建設(shè)中,數(shù)據(jù)接入往往是最耗時且最容易出錯的環(huán)節(jié)。不同的數(shù)據(jù)源可能使用不同的物理單位、命名規(guī)則和時區(qū)設(shè)置,直接寫入數(shù)據(jù)庫會導(dǎo)致數(shù)據(jù)質(zhì)量參差不齊。TDengine內(nèi)置的ETL功能,能夠在數(shù)據(jù)寫入過程中完成解析、提取、過濾和轉(zhuǎn)換,實現(xiàn)零代碼的數(shù)據(jù)清洗和標(biāo)準(zhǔn)化。

為什么需要內(nèi)置ETL

在典型的工業(yè)場景中,數(shù)據(jù)源具有以下特征:

  • 多源異構(gòu):來自PLC、傳感器、SCADA系統(tǒng)等多種設(shè)備的數(shù)據(jù)格式各不相同
  • 單位不統(tǒng)一:溫度可能使用攝氏度或華氏度,壓力可能使用Pa、kPa或MPa
  • 命名規(guī)則差異:不同廠商的設(shè)備使用不同的標(biāo)簽命名規(guī)范
  • 時區(qū)不一致:全球部署的設(shè)備可能分布在不同時區(qū)

傳統(tǒng)的做法是在應(yīng)用層或中間件中處理這些差異,增加了系統(tǒng)復(fù)雜度和維護(hù)成本。TDengine將ETL能力內(nèi)置在數(shù)據(jù)接入流程中,數(shù)據(jù)在寫入數(shù)據(jù)庫之前即可完成標(biāo)準(zhǔn)化處理,簡化了整體架構(gòu)。

解析功能:從原始數(shù)據(jù)中提取結(jié)構(gòu)化信息

解析是ETL流程的第一步,負(fù)責(zé)將原始數(shù)據(jù)轉(zhuǎn)換為結(jié)構(gòu)化的字段。TDengine支持三種解析方式。

JSON解析

JSON是物聯(lián)網(wǎng)設(shè)備最常用的數(shù)據(jù)交換格式。TDengine支持JSONObject和JSONArray兩種JSON格式的解析。

對于簡單的JSON結(jié)構(gòu),系統(tǒng)可以自動解析,將JSON中的鍵值對直接映射為數(shù)據(jù)庫字段。對于嵌套的JSON結(jié)構(gòu),可以使用JSON Path表達(dá)式進(jìn)行手動解析,精確提取嵌套層級中的目標(biāo)字段。

例如,設(shè)備上報的數(shù)據(jù)可能包含多層嵌套的傳感器讀數(shù),通過JSON Path可以精準(zhǔn)定位并提取所需的數(shù)值字段,而忽略不需要的元數(shù)據(jù)信息。

Regex正則表達(dá)式解析

當(dāng)原始數(shù)據(jù)為非結(jié)構(gòu)化的字符串時,正則表達(dá)式是最靈活的解析工具。TDengine支持使用命名捕獲組從任何字符串字段中提取多個字段。

命名捕獲組的語法為(?P<name>pattern),其中name為提取后的字段名,pattern為匹配模式。這種方式特別適用于解析老舊設(shè)備的日志輸出、自定義協(xié)議的數(shù)據(jù)報文等場景。

UDT自定義解析腳本

對于JSON和正則表達(dá)式都無法覆蓋的復(fù)雜解析需求,TDengine提供了UDT(User Defined Transform)自定義解析腳本功能。UDT使用rhai語法編寫,支持json格式的原始數(shù)據(jù)作為輸入。

rhai是一種輕量級的嵌入式腳本語言,語法簡潔且執(zhí)行效率高。通過UDT,用戶可以實現(xiàn)任意復(fù)雜度的解析邏輯,例如多行數(shù)據(jù)的關(guān)聯(lián)解析、條件分支處理等。

提取與拆分功能

解析完成后,某些字段可能需要進(jìn)一步拆分或轉(zhuǎn)換。TDengine提供了兩種提取規(guī)則和一種轉(zhuǎn)換規(guī)則。

split拆分規(guī)則

split規(guī)則通過設(shè)置分隔符和拆分?jǐn)?shù)量,將一個字段拆分為多個字段。例如,設(shè)備ID中可能包含”工廠-車間-設(shè)備”的層級信息,通過split可以將其拆分為三個獨立字段,便于后續(xù)的分組查詢。

regex提取規(guī)則

regex提取規(guī)則與解析階段的正則表達(dá)式類似,但作用于已解析的字段值。使用命名捕獲組從字段值中提取子串,適用于字段值中包含結(jié)構(gòu)化子信息的場景。

convert值轉(zhuǎn)換

convert規(guī)則通過填寫JSON map對象進(jìn)行值轉(zhuǎn)換。例如,將設(shè)備的數(shù)字狀態(tài)碼轉(zhuǎn)換為可讀的文本描述:{"0": "停止", "1": "運行", "2": "故障"}。這種轉(zhuǎn)換在數(shù)據(jù)可視化場景中非常有用,能夠直接在數(shù)據(jù)庫層面完成數(shù)據(jù)的語義化。

過濾功能:精準(zhǔn)控制入庫數(shù)據(jù)

并非所有采集到的數(shù)據(jù)都需要寫入數(shù)據(jù)庫。TDengine的過濾功能支持豐富的條件表達(dá)式,幫助用戶在入庫前精準(zhǔn)篩選數(shù)據(jù)。

比較操作符

支持標(biāo)準(zhǔn)的比較操作符:>>=、<=<、==、!=??梢杂糜跀?shù)值范圍過濾,例如只保留溫度在合理范圍內(nèi)的數(shù)據(jù)。

時間函數(shù)

between_time_range(ts, t1, t2)函數(shù)用于過濾指定時間范圍內(nèi)的數(shù)據(jù),支持按時間段篩選。在時序數(shù)據(jù)庫的數(shù)據(jù)回填場景中,該函數(shù)可以精確控制入庫數(shù)據(jù)的時間范圍。

字符串函數(shù)

支持以下字符串判斷函數(shù):

  • is_empty:判斷字段是否為空
  • contains:判斷字段是否包含指定子串
  • starts_with:判斷字段是否以指定前綴開頭
  • ends_with:判斷字段是否以指定后綴結(jié)尾
  • len:獲取字段長度

這些函數(shù)可以組合使用,構(gòu)建復(fù)雜的過濾條件。例如,過濾出設(shè)備名稱以”TEMP_”開頭且描述字段不為空的記錄。

邏輯操作符

支持&&(與)、||(或)、!(非)三種邏輯操作符,可以將多個過濾條件組合為復(fù)雜的布爾表達(dá)式。

類型轉(zhuǎn)換函數(shù)

parse_intparse_float函數(shù)用于將字符串類型的數(shù)據(jù)轉(zhuǎn)換為數(shù)值類型,便于后續(xù)的數(shù)值比較和計算。

映射規(guī)則:構(gòu)建目標(biāo)字段

映射規(guī)則定義了如何將解析和提取后的數(shù)據(jù)映射到目標(biāo)數(shù)據(jù)庫的字段。TDengine提供了七種映射方式,覆蓋了絕大多數(shù)數(shù)據(jù)轉(zhuǎn)換需求。

mapping直接映射

最基礎(chǔ)的映射方式,將源字段直接映射到目標(biāo)字段。適用于字段名稱和含義完全一致的場景。

value常量值

為字段設(shè)置固定的常量值。例如,為所有來自同一數(shù)據(jù)源的數(shù)據(jù)添加固定的”數(shù)據(jù)源標(biāo)識”字段,便于后續(xù)的數(shù)據(jù)溯源。

generator時間戳生成器

now生成器用于生成當(dāng)前時間戳。在某些設(shè)備不攜帶時間戳的場景中,可以使用該生成器在入庫時自動添加時間戳。

join字符串連接

將多個字段的值拼接為一個字符串。例如,將”工廠編號”和”設(shè)備編號”拼接為完整的設(shè)備標(biāo)識符。

format字符串格式化

format工具提供了豐富的字符串處理函數(shù):

  • pad:字符串填充
  • trim:去除首尾空白字符
  • sub_string:截取子串
  • replace:字符串替換

這些函數(shù)可以組合使用,實現(xiàn)復(fù)雜的字符串格式化需求。

sum數(shù)值加法

將多個數(shù)值型字段相加。適用于需要將多個傳感器讀數(shù)匯總為一個綜合指標(biāo)的場景。

expr數(shù)值運算表達(dá)式

expr支持完整的數(shù)值運算能力,包括四則運算(+、-、*、/)和數(shù)學(xué)函數(shù)(sin、cossqrt等)。這是最靈活的映射方式,可以實現(xiàn)任意復(fù)雜的數(shù)值計算。

例如,將華氏溫度轉(zhuǎn)換為攝氏度:expr: (col_fahrenheit - 32) * 5 / 9。通過在ETL階段完成單位轉(zhuǎn)換,確保入庫數(shù)據(jù)的一致性。

實踐建議

在實際使用內(nèi)置ETL功能時,建議遵循以下原則:

  1. 優(yōu)先使用自動解析:對于標(biāo)準(zhǔn)JSON格式,優(yōu)先使用自動解析,減少配置工作量
  2. 合理設(shè)置過濾條件:在入庫前過濾無效數(shù)據(jù),減少存儲壓力和后續(xù)查詢的負(fù)擔(dān)
  3. 統(tǒng)一單位標(biāo)準(zhǔn):在ETL階段完成所有單位轉(zhuǎn)換,確保數(shù)據(jù)庫中存儲的數(shù)據(jù)使用統(tǒng)一的度量單位
  4. 利用映射規(guī)則豐富數(shù)據(jù)維度:通過常量值、字符串連接等方式,在入庫時添加業(yè)務(wù)維度信息

總結(jié)

TDengine內(nèi)置的ETL功能為時序數(shù)據(jù)庫的數(shù)據(jù)接入提供了強大的數(shù)據(jù)清洗和轉(zhuǎn)換能力。從JSON解析到正則提取,從條件過濾到靈活映射,覆蓋了工業(yè)數(shù)據(jù)管理平臺中數(shù)據(jù)標(biāo)準(zhǔn)化的核心需求。通過在數(shù)據(jù)寫入流程中集成ETL處理,企業(yè)可以顯著降低數(shù)據(jù)接入的開發(fā)和維護(hù)成本,同時保證入庫數(shù)據(jù)的質(zhì)量和一致性,為后續(xù)的分析和決策奠定堅實的數(shù)據(jù)基礎(chǔ)。