SQL Server 评估 API 数据转换之 rename:列重命名的配置语法与实战
示例工程数据库教程后端【免费下载链接】sql-server-samplesAzure Data SQL Samples - Official Microsoft GitHub Repository containing code samples for SQL Server, Azure SQL, Azure Synapse, and Azure SQL Edge项目地址https://gitcode.com/gh_mirrors/sq/sql-server-samples点击查看免费下载本指南聚焦 Microsoft SQL Server 评估 APISQL Assessment API自定义规则集ruleset中数据转换Data Transformation的rename变换讲解其在 JSON 规则配置中的参数结构、映射方向与语义并给出可直接复制的配置示例。读完本文你将掌握如何在规则集与探针实现中把探测返回的原始列名批量重命名为规则表达式可引用的规范名称以及如何复用内置规则集中ServerCPUInfo、GetAzVmId等探针的重命名实践。什么是数据转换与 rename在 SQL Server 评估 API 中探针Probe负责从目标实例读取元数据返回的结果往往带有原始列名。当原始列名不适合在检查表达式Condition Expression或推荐消息中直接引用时可以在数据进入检查评估之前对列名进行统一规整——这就是数据转换Data Transformation的用途。rename是其中最简单、最直观的一种它只负责将任意一个数据列重命名为新的名字不改动列内数值内容也不改变行的数量或顺序。其典型价值在于将 T-SQL、WMI、注册表等不同来源的原始列名统一为规则表达式可读的规范标识符消除列名中的空格、特殊字符如Log File Size (Byte)对表达式和推荐消息模板的干扰在不修改探针查询本身的前提下为同一探针的不同检查定制不同的列名视图。从仓库文档体系看数据转换的完整目录位于 DataTransformation 参考文档rename是其成员之一与之并列的还有aggregate、defaultValue、nameValuePairs、parse、performance、toString等变换各司其职详见 数据转换总览。rename 的参数结构rename变换是一个 JSON 对象作为探针实现Probe Implementation中transform属性的值出现。其参数如下| 参数 | 必填 | 类型 | 说明 | | - | - | - | - | | type | 是 | string | 固定取值为rename用于标识变换类型 | | map | 是 | MapJSON 对象 | 建立“新列名 → 旧列名”的映射关系 |其中type在 JSON 配置文件中是字符串字面量map是一个 JSON 对象其每个属性名键代表新的列名每个属性值代表要被重命名的旧列名。也就是说映射方向是“新名指向旧名”这一点与直觉相反配置时务必注意transform: { type: rename, map: { newColumnName: Old Column Name } }执行后数据行中名为Old Column Name的列会被改名为newColumnName而该列的值原样保留。参考示例将三列一次重命名原文档给出的示例把探针返回的三列一次性重命名Archive #改为idLog File Size (Byte)改为sizeDate改为datetransform: { type: rename, map: { id: Archive #, size: Log File Size (Byte), date: Date } }映射规则说明如下map中可以同时包含任意多对“新名 → 旧名”映射一次重命名任意数量的列每个键必须是合法的表达式变量名字母、数字、下划线且不以数字开头因为重命名后的列名会被用作变量引用的基础每个值必须精确匹配探测返回的原始列名含空格与大小写只出现在map中的列会被重命名未出现在map中的列保持原名不变。这个示例适合套用在“返回多列、但列名不适合直接引用”的探针场景例如归档类探针输出Archive #、Log File Size (Byte)、Date等带空格或特殊字符的列名时通过一次rename即可得到id、size、date三个整洁的标识符供后续检查表达式使用。仓库内置规则集中的 rename 实战要理解rename的真实使用方式最直接的证据是仓库自带的主规则集文件 ruleset.json共 2 万余行包含全部内置检查与探针家族定义。其中至少有两处探针实现使用了rename变换示例一ServerCPUInfo 探针Windows 注册表来源ServerCPUInfo探针家族通过注册表查询获取 CPU 名称其查询结果包含ProcessorNameString与注册表键名等列随后用rename将注册表键名列统一为CPUidimplementation: { query: { HKEY_LOCAL_MACHINE: { HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\*: [ ProcessorNameString ] } }, transform: { type: rename, map: { CPUid: RegistryKeyName } } }关键点探针类型为Registry目标平台限定Windows、engineEdition为SqlServer见 ruleset.json重命名发生在注册表探针将RegistryKeyName注册表键名形如 CPU 序号返回之后规则表达式即可通过CPUid引用该值这一步证明了rename并非只能用于 SQL 探针任何返回命名列的探针类型WMI、注册表、PowerShell、AzGraph 等都能挂接相同的transform配置。示例二GetAzVmId 探针WMI 来源GetAzVmId探针家族通过 WMI 查询虚拟机 UUID其原始输出列名为Output.UUIDWMI 输出中带点的限定名同样通过rename规整为便于引用的vmIdimplementation: { query: SELECT UUID FROM Win32_ComputerSystemProduct, transform: { type: rename, map: { vmId: Output.UUID } } }对应配置位于 ruleset.json探针类型为WMI且target限定machineType为AzureVm。这个例子说明当原始列名包含.等对表达式引用不友好的字符时rename是低成本且安全的归一化手段——Output.UUID被改名为vmId后检查表达式只需写vmId即可。rename 在探针引用Probe Reference中的使用rename不仅可以直接挂在探针实现implementation.transform上还可以挂在探针引用Probe Reference上用于同一探针被多个检查复用时各自定制列名。关于探针引用的完整语义可参阅 ProbeReference 文档引用对象通过id指向探针家族通过可选的params传参通过可选的transform对返回数据做变换。这种设计带来两个直接好处参见 数据转换总览 的说明探针代码复用同一个探针家族可以被多个检查引用不必为每个检查重写查询数据复用探针只被调用一次不同检查各自应用自己的rename或其他变换既节省探测开销又避免为列名差异复制查询。例如某检查需要磁盘平均值、另一检查需要同一磁盘的最大值二者引用同一探针却各自应用aggregate等不同变换同理两个检查若对同一探针的列名有不同偏好也可各自挂接不同的rename映射。与 JSON 配置总格式的关系rename所在的transform属性属于探针实现Probe Implementation的可选属性之一。整个规则集文件遵循 JSONConfiguration 文档 定义的格式顶层包含version当前为0.3、checks检查数组与probes探针家族对象。探针实现的通用结构为| 属性 | 类型 | 说明 | | - | - | - | | type | string | 探针类型SQL、WMI、External、PowerShell、CmdShell、AzGraph、AzMetadata、Registry| | target? | SQL Object Pattern | 探针适用的目标对象模式 | | implementation | object | 探针所需参数如 SQL 探针的query属性transform可作为其中的可选属性 |值得强调的是根据文档的安全定位探针只读取元数据如更新日志、服务器属性不读取用户表数据也不向实例写任何内容见 JSONConfiguration 文档。rename作为纯内存内的列名映射自然符合这一安全模型——它不执行任何额外命令只对已取回的命名列做改名。快速上手在自己的规则集中使用 rename要在自定义规则集中启用rename只需三步在probes中定义一个探针家族或复用内置探针其implementation中给出query等取数逻辑在implementation.transform中加入type: rename与map按“新名 → 旧名”方向填写映射在checks中引用该探针家族 ID并在表达式中使用重命名后的新列名以前缀引用。一个完整的配置骨架如下{ version: 0.3, probes: { MyProbe: [ { type: SQL, implementation: { query: SELECT [Log File Size (Byte)], [Archive #], [Date] FROM ..., transform: { type: rename, map: { id: Archive #, size: Log File Size (Byte), date: Date } } } } ] }, checks: [ { name: MyCheck, displayName: My Check, level: Warning, probes: [MyProbe], condition: { greater: [size, 0] } } ] }配置完成后即可用 SQL Server 评估 API 对该规则集执行评估重命名后的列名会出现在检查表达式与推荐消息模板{variableName}形式中供你自由引用。小结rename是 SQL Server 评估 API 数据转换家族中结构最简单、语义最明确的成员一个type字段加一个map映射对象即可完成任意数量的列重命名且不触碰数据内容本身。实际使用中请牢记“键是新名、值是旧名”的映射方向并善用探针引用层面的transform挂接让同一份探测数据为多个检查提供不同列名视图。仓库内置规则集 ruleset.json 中的ServerCPUInfo、GetAzVmId探针是学习该变换的标准范例值得在自定义规则集开发时对照参考。赞分享示例工程数据库教程后端【免费下载链接】sql-server-samplesAzure Data SQL Samples - Official Microsoft GitHub Repository containing code samples for SQL Server, Azure SQL, Azure Synapse, and Azure SQL Edge项目地址https://gitcode.com/gh_mirrors/sq/sql-server-samples点击查看免费下载相关推荐Hap QuickTime视频编码器实现10倍性能提升的硬件加速视频编解码架构设计指南Hap QuickTime视频编码器实现10倍性能提升的硬件加速视频编解码架构设计指南 Hap QuickTime视频编码器是一款专为现代图形硬件优化的开源视示例工程数据库教程后端KotlinUdemy多媒体应用开发从零开始打造功能强大的MediaPlayer音频播放器KotlinUdemy多媒体应用开发从零开始打造功能强大的MediaPlayer音频播放器 在移动应用开发中音频播放功能是提升用户体验的重要组成部分。本文将示例工程数据库教程后端sql-server-samples 实战指南使用 SQL Assessment API 客户端评估 SQL Server 配置最佳实践sql server samples 实战指南使用 SQL Assessment API 客户端评估 SQL Server 配置最佳实践 SQL Assess示例工程数据库教程后端上一篇SDL 摄像机控制实战3 步搞定 2D 跟随与 3D 自由视角下一篇构建企业级PDF处理流水线pypdf库的架构设计与工程实践创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考