
TDengine PI Data Ingestion CSV Model Configuration File Reference【免費(fèi)下載鏈接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios項(xiàng)目地址: https://gitcode.com/GitHub_Trending/tde/TDengine本文是 TDengine 零代碼數(shù)據(jù)接入體系中PIAVEVA PI System原 OSIsoft PI數(shù)據(jù)源模型配置文件CSV 格式的完整參考。它定義了從 PI 系統(tǒng)到 TDengine 的數(shù)據(jù)映射規(guī)則超級表對應(yīng)關(guān)系、列與 TAG 映射、過濾條件與轉(zhuǎn)換表達(dá)式適用于在 taosExplorer 中創(chuàng)建 PI 實(shí)時任務(wù)與 PI 歷史回填任務(wù)時的模型配置。讀完本文你將掌握多列模型與單列模型兩類配置文件的完整格式、占位符與內(nèi)聯(lián)表達(dá)式語法并能自行編寫、校驗(yàn)和優(yōu)化 PI 接入的模型配置文件。概述模型配置文件在 PI 數(shù)據(jù)接入中的角色在 PI 數(shù)據(jù)接入 流程中taosX 通過 PI connector 插件從 PI 系統(tǒng)抽取實(shí)時或歷史數(shù)據(jù)寫入 TDengine。而「PI 數(shù)據(jù)如何映射到 TDengine 的表結(jié)構(gòu)」這一核心規(guī)則正是由一個CSV 格式的模型配置文件來定義的它至少包含四類信息PI 數(shù)據(jù)源與 TDengine 超級表的對應(yīng)關(guān)系PI Point單列模型或 AF 元素模板多列模型分別歸入哪個超級表PI 屬性與 TDengine 列的映射哪些屬性進(jìn) Metric 列COLUMN、哪些進(jìn)標(biāo)簽列TAG數(shù)據(jù)過濾條件可選僅同步滿足條件的元素/點(diǎn)位數(shù)據(jù)轉(zhuǎn)換表達(dá)式對源字段做清洗、拼接、替換等變換后再落庫。在 taosExplorer 中創(chuàng)建 PI 任務(wù)時數(shù)據(jù)模型配置區(qū)域提供「下載默認(rèn)配置」按鈕可自動生成一份默認(rèn)模型配置文件到本地你可以直接使用也可以編輯后上傳覆蓋默認(rèn)配置。該文件是 PI 接入任務(wù)可落地的關(guān)鍵一環(huán)其正確性直接決定目標(biāo)超級表結(jié)構(gòu)與數(shù)據(jù)質(zhì)量。前置背景任務(wù)類型、數(shù)據(jù)模型與數(shù)據(jù)源類型理解配置文件之前需要先明確 PI 接入任務(wù)的三個維度詳見 PI 接入索引按數(shù)據(jù)時效性劃分的任務(wù)類型任務(wù)類型taosExplorer 中的名稱說明實(shí)時任務(wù)PI持續(xù)訂閱 PI 系統(tǒng)中的實(shí)時數(shù)據(jù)變化并寫入 TDengine回填任務(wù)PI backfill抽取指定時間范圍內(nèi)的歷史數(shù)據(jù)寫入 TDengine按數(shù)據(jù)模型劃分對應(yīng)兩種配置文件數(shù)據(jù)模型映射規(guī)則適用場景單列模型Single-column Model一個 PI Point → 一張 TDengine 子表點(diǎn)位為中心的數(shù)據(jù)采集多列模型Multi-column Model一個 PI AF Element → 一張 TDengine 子表設(shè)備/資產(chǎn)為中心的數(shù)據(jù)采集按接入數(shù)據(jù)源類型劃分?jǐn)?shù)據(jù)源類型支持的數(shù)據(jù)模型說明僅 PI Data Archive僅單列模型直接連接 PI Data Archive ServerPI Data Archive AF Server單列與多列模型通過 PI AF SDK 連接支持完整資產(chǎn)框架其中多列模型依賴 AF 資產(chǎn)框架因此只在 AF Server 模式下可用而僅連接 PI Data Archive 時只能使用單列模型與point過濾單元詳見 Dataset Filter 配置。多列模型配置文件多列模型將一個 PI AF 元素映射為 TDengine 的一張子表同一個元素模板Template下的所有元素共享同一個超級表結(jié)構(gòu)。此類配置文件通常在「PI Data Archive AF Server」模式下配合多列模型使用。文件結(jié)構(gòu)多列模型配置文件由一個或多個超級表定義塊組成塊之間以空行分隔。每個超級表定義塊包含以下行行格式說明超級表名SuperTable,名稱TDengine 超級表名稱子表名規(guī)則SubTable,模板支持占位符如${element_name}_${element_id}元素模板Template,模板名對應(yīng) PI AF 中的元素模板名稱過濾條件Filter,條件可選用于過濾元素列定義列名,KEY\|COLUMN\|TAG,數(shù)據(jù)類型,映射規(guī)則定義每一列的映射列定義說明每行列定義由四個字段組成其中第二個字段為列類型關(guān)鍵字列類型關(guān)鍵字說明時間戳列KEY必須有且僅有一個數(shù)據(jù)類型為TIMESTAMP數(shù)據(jù)列COLUMN對應(yīng) PI Point 屬性的值Metric 列標(biāo)簽列TAG對應(yīng)元素的靜態(tài)屬性或元數(shù)據(jù)完整示例以下配置文件定義了兩個超級表metertemplate來自MeterTemplate模板和farm來自Farm模板SuperTable,metertemplate SubTable,${element_name}_${element_id} Template,MeterTemplate Filter, ts,KEY,TIMESTAMP,$ts voltage,COLUMN,DOUBLE,$voltage voltage_status,COLUMN,INT,$voltage_status current,COLUMN,DOUBLE,$current current_status,COLUMN,INT,$current_status element_id,TAG,VARCHAR(100),$element_id element_name,TAG,VARCHAR(100),$element_name path,TAG,VARCHAR(100),$path categories,TAG,VARCHAR(100),$categories SuperTable,farm SubTable,${element_name}_${element_id} Template,Farm Filter, ts,KEY,TIMESTAMP,$ts wind_speed,COLUMN,FLOAT,$wind_speed wind_speed_status,COLUMN,INT,$wind_speed_status power_production,COLUMN,FLOAT,$power_production power_production_status,COLUMN,INT,$power_production_status lost_power,COLUMN,FLOAT,$lost_power lost_power_status,COLUMN,INT,$lost_power_status farm_lifetime_production__weekly_,COLUMN,FLOAT,$farm_lifetime_production__weekly_ farm_lifetime_production__weekly__status,COLUMN,INT,$farm_lifetime_production__weekly__status farm_lifetime_production__hourly_,COLUMN,FLOAT,$farm_lifetime_production__hourly_ farm_lifetime_production__hourly__status,COLUMN,INT,$farm_lifetime_production__hourly__status element_id,TAG,VARCHAR(100),$element_id element_name,TAG,VARCHAR(100),$element_name path,TAG,VARCHAR(100),$path categories,TAG,VARCHAR(100),$categories逐行解讀以第一個超級表metertemplate為例逐行說明SuperTable,metertemplate定義超級表名為metertemplateSubTable,${element_name}_${element_id}子表名由元素名和元素 ID 拼接而成例如Meter001_12345Template,MeterTemplate數(shù)據(jù)來自 PI AF 中名為MeterTemplate的元素模板Filter,不設(shè)置過濾同步該模板下的全部元素ts,KEY,TIMESTAMP,$ts時間戳列取 PI 數(shù)據(jù)的時間戳voltage,COLUMN,DOUBLE,$voltage數(shù)據(jù)列取元素的voltage屬性值voltage_status,COLUMN,INT,$voltage_status數(shù)據(jù)列取voltage的質(zhì)量狀態(tài)碼element_id,TAG,VARCHAR(100),$element_id標(biāo)簽列取元素的唯一 IDpath,TAG,VARCHAR(100),$path標(biāo)簽列取元素在 AF 層級中的路徑。從示例可見一個典型的多列模型設(shè)計模式每個 PI Point 屬性帶一個_status質(zhì)量狀態(tài)碼列用于保存 PI 數(shù)據(jù)的質(zhì)量信息同時將element_id、element_name、path、categories等資產(chǎn)元數(shù)據(jù)沉淀為 TAG便于后續(xù)按資產(chǎn)維度做聚合與檢索。默認(rèn)映射規(guī)則對于使用 AF Server 的多列模型任務(wù)taosX 的默認(rèn)映射規(guī)則為taosX 默認(rèn)將PI Point 屬性映射為 TDengineCOLUMNMetric 列taosX 默認(rèn)將其他屬性靜態(tài)屬性映射為 TDengineTAG列。該默認(rèn)規(guī)則決定了「下載默認(rèn)配置」生成的列定義走向動態(tài)變化的過程量PI Point 屬性進(jìn)數(shù)據(jù)列靜態(tài)的資產(chǎn)描述信息進(jìn)標(biāo)簽列。若默認(rèn)規(guī)則不滿足需求可在下載后手動調(diào)整列定義行的第二個字段。單列模型配置文件單列模型將一個 PI Point 映射為 TDengine 的一張子表。該模型在「僅 PI Data Archive」與「PI Data Archive AF Server」兩種模式下均可用后者借助 AF 上下文補(bǔ)充 UOM、元素歸屬等元數(shù)據(jù)。文件結(jié)構(gòu)單列模型配置文件由兩部分組成超級表定義部分定義若干個超級表的列結(jié)構(gòu)寫法與多列模型的超級表定義塊類似。默認(rèn)生成的配置會按UOM工程單位 數(shù)據(jù)類型將點(diǎn)位自動分組到不同的超級表。點(diǎn)位映射部分格式為Point名稱,POINT,超級表名逐行定義每個 PI Point 歸屬于哪個超級表。完整示例SuperTable,volt_float32 SubTable,${point_name} Filter, ts,KEY,TIMESTAMP,$ts value,COLUMN,FLOAT,$value status,COLUMN,INT,$status path,TAG,VARCHAR(200),$path point_name,TAG,VARCHAR(100),$point_name ptclassname,TAG,VARCHAR(100),$ptclassname sourcetag,TAG,VARCHAR(100),$sourcetag tag,TAG,VARCHAR(100),$tag descriptor,TAG,VARCHAR(100),$descriptor exdesc,TAG,VARCHAR(100),$exdesc engunits,TAG,VARCHAR(100),$engunits pointsource,TAG,VARCHAR(100),$pointsource step,TAG,VARCHAR(100),$step future,TAG,VARCHAR(100),$future element_paths,TAG,VARCHAR(512),$element_paths.replace(\\, .) SuperTable,milliampere_float32 SubTable,${point_name} Filter, ts,KEY,TIMESTAMP,$ts value,COLUMN,FLOAT,$value status,COLUMN,INT,$status path,TAG,VARCHAR(200),$path point_name,TAG,VARCHAR(100),$point_name ptclassname,TAG,VARCHAR(100),$ptclassname sourcetag,TAG,VARCHAR(100),$sourcetag tag,TAG,VARCHAR(100),$tag descriptor,TAG,VARCHAR(100),$descriptor exdesc,TAG,VARCHAR(100),$exdesc engunits,TAG,VARCHAR(100),$engunits pointsource,TAG,VARCHAR(100),$pointsource step,TAG,VARCHAR(100),$step future,TAG,VARCHAR(100),$future element_paths,TAG,VARCHAR(512),$element_paths.replace(\\, .) Meter_1000004_Voltage,POINT,volt_float32 Meter_1000004_Current,POINT,milliampere_float32 Meter_1000001_Voltage,POINT,volt_float32 Meter_1000001_Current,POINT,milliampere_float32 Meter_1000474_Voltage,POINT,volt_float32 Meter_1000474_Current,POINT,milliampere_float32逐行解讀超級表定義部分以volt_float32為例SuperTable,volt_float32超級表名為volt_float32電壓類 Float32 點(diǎn)位SubTable,${point_name}子表名直接使用點(diǎn)位名value,COLUMN,FLOAT,$value數(shù)據(jù)列存儲點(diǎn)位的值status,COLUMN,INT,$status數(shù)據(jù)列存儲質(zhì)量狀態(tài)碼point_name,TAG,VARCHAR(100),$point_name標(biāo)簽列存儲點(diǎn)位名稱engunits,TAG,VARCHAR(100),$engunits標(biāo)簽列存儲工程單位element_paths,TAG,VARCHAR(512),$element_paths.replace(\\, .)標(biāo)簽列使用內(nèi)聯(lián)表達(dá)式將路徑分隔符從\替換為.。單列模型的超級表列結(jié)構(gòu)高度模板化除value/status兩個數(shù)據(jù)列外其余均為描述性 TAG涵蓋path、point_name、ptclassname點(diǎn)位類別名、sourcetag源標(biāo)簽、tag、descriptor描述、exdesc擴(kuò)展描述、engunits工程單位、pointsource點(diǎn)位來源、step步長、future以及element_paths點(diǎn)位關(guān)聯(lián)的元素路徑。這套 TAG 集合保留了 PI Point 的完整元數(shù)據(jù)便于在 TDengine 側(cè)按任意維度檢索。點(diǎn)位映射部分Meter_1000004_Voltage,POINT,volt_float32點(diǎn)位Meter_1000004_Voltage歸屬于超級表volt_float32Meter_1000004_Current,POINT,milliampere_float32點(diǎn)位Meter_1000004_Current歸屬于超級表milliampere_float32。注意示例中的分組邏輯Voltage點(diǎn)位單位 Volt全部歸入volt_float32Current點(diǎn)位單位毫安全部歸入milliampere_float32這正是「按 UOM 數(shù)據(jù)類型分組」這一默認(rèn)策略的直接體現(xiàn)。映射規(guī)則與表達(dá)式常用占位符以下占位符可在列定義的映射規(guī)則中使用占位符說明適用范圍$ts數(shù)據(jù)時間戳單列/多列$value點(diǎn)位值單列模型$status質(zhì)量狀態(tài)碼單列/多列$point_namePI Point 名稱單列模型$element_nameAF 元素名稱多列模型$element_idAF 元素唯一 ID多列模型$path元素/點(diǎn)位路徑單列/多列$categoriesAF 元素分類多列模型$element_paths點(diǎn)位關(guān)聯(lián)的元素路徑單列模型$屬性名PI Point 屬性或 AF 元素屬性按實(shí)際屬性名引用$屬性名是通用形式的占位符例如示例中的$voltage、$wind_speed、$power_production等都按 PI Point / AF 元素的實(shí)際屬性名引用。$ts、$status等內(nèi)置占位符則對應(yīng)數(shù)據(jù)管道注入的標(biāo)準(zhǔn)字段。內(nèi)聯(lián)表達(dá)式對于需要數(shù)據(jù)轉(zhuǎn)換的場景可以用反引號包裹內(nèi)聯(lián)表達(dá)式例如將路徑分隔符統(tǒng)一轉(zhuǎn)換為.element_paths,TAG,VARCHAR(512),$element_paths.replace(\\, .)該表達(dá)式的含義是取$element_paths字段值調(diào)用字符串replace方法將\替換為.轉(zhuǎn)換結(jié)果寫入element_paths標(biāo)簽列。內(nèi)聯(lián)表達(dá)式與 零代碼數(shù)據(jù)寫入 中「數(shù)據(jù)提取、過濾和轉(zhuǎn)換」部分描述的表達(dá)式體系一致支持的變換能力包括字符串處理pad(len, pad_chars)填充、trim去空白、sub_string(start_pos, len)截取、replace(substring, replacement)替換等類型轉(zhuǎn)換parse_int(56)字符串轉(zhuǎn)整型、parse_float(12.3)字符串轉(zhuǎn)浮點(diǎn)數(shù)值運(yùn)算expr四則運(yùn)算 - * /及sin/cos/sqrt/exp/ln/floor/round等數(shù)學(xué)函數(shù)條件過濾比較運(yùn)算符與is_empty、contains、starts_with、ends_with、len等字符串判斷函數(shù)并用、||、!組合。子表名占位符SubTable行的模板支持以下占位符占位符說明${point_name}PI Point 名稱單列模型${element_name}AF 元素名稱多列模型${element_id}AF 元素唯一 ID多列模型占位符可以組合使用例如${element_name}_${element_id}將生成Meter001_12345形式的子表名。子表名本質(zhì)上是字符串也可參照 零代碼數(shù)據(jù)寫入 中的format字符串格式化表達(dá)式按需構(gòu)造。常見模式與最佳實(shí)踐按 UOM 分超級表默認(rèn)生成的單列模型配置會按UOM工程單位 數(shù)據(jù)類型自動分組例如所有單位為Volt且數(shù)據(jù)類型為Float32的點(diǎn)位歸入同一個超級表volt_float32所有單位為milliampere的 Float32 點(diǎn)位歸入milliampere_float32。這是推薦的默認(rèn)做法因?yàn)橥怀壉硐滤凶颖肀仨毦哂型耆恢碌牧薪Y(jié)構(gòu)按 UOM 分組天然保證同組點(diǎn)位的量綱與精度一致列結(jié)構(gòu)自然對齊。過濾特定點(diǎn)位或模板在 taosExplorer 中填寫 Dataset Filter 條件后再點(diǎn)擊下載默認(rèn)配置可以只生成匹配過濾條件的點(diǎn)位/模板的配置。Dataset Filter 支持point、element、template三個過濾單元通配符語法為*匹配 0 或多個字符與?匹配恰好 1 個字符其中element單元還支持路徑匹配具體語法與注意事項(xiàng)參見 Dataset Filter 配置。需要注意的是Dataset Filter 只影響「下載默認(rèn)配置」時生成的點(diǎn)位/元素范圍生成之后還可以手動編輯 CSV 進(jìn)一步裁剪多列模型修改Filter行例如填入元素過濾條件或直接增刪超級表定義塊單列模型在點(diǎn)位映射部分刪除不需要的點(diǎn)位行Point名稱,POINT,超級表名。自定義超級表名如果默認(rèn)按 UOM 分組的命名不滿足業(yè)務(wù)需求可以直接修改SuperTable行的值并同步調(diào)整點(diǎn)位映射部分中的超級表引用。例如將電壓點(diǎn)位從volt_float32重命名為plant1_voltage則所有Meter_*_Voltage點(diǎn)位行中的第三個字段都要一并改為plant1_voltage。重命名時需保持整份文件中的引用一致否則點(diǎn)位會落入不存在的超級表定義導(dǎo)致任務(wù)配置校驗(yàn)失敗。延伸閱讀模型配置文件是 PI 接入任務(wù)的一個環(huán)節(jié)完整落地 PI 數(shù)據(jù)接入還涉及以下配套文檔PI 數(shù)據(jù)接入索引任務(wù)創(chuàng)建流程、連接配置、高級選項(xiàng)如多列模型實(shí)時任務(wù)的動態(tài)元素同步開關(guān)總覽部署架構(gòu)taosX 與 taosX-Agent 的部署形態(tài)連接配置與認(rèn)證PI Server / AF Server 連接字段、Windows 集成認(rèn)證與 PI 側(cè)權(quán)限配置Mapping 與 ACL歷史數(shù)據(jù)回填指南 與 實(shí)時數(shù)據(jù)同步指南兩種任務(wù)類型的參數(shù)與最佳實(shí)踐高可用與故障轉(zhuǎn)移多 taosX 實(shí)例冗余采集零代碼數(shù)據(jù)寫入數(shù)據(jù)提取、過濾與轉(zhuǎn)換的完整表達(dá)式語法?!久赓M(fèi)下載鏈接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios項(xiàng)目地址: https://gitcode.com/GitHub_Trending/tde/TDengine創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考