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