| 12345678910111213141516171819202122232425 |
- namespace Admin.NET.Plugin.AiDOP.DataPlatform.S0Dim;
- /// <summary>
- /// dim 单列的声明式映射。
- ///
- /// 🔴 <see cref="JsonPath"/> **没有默认值、不可省略**(TenantIdColumn 除外):
- /// staging 的 <c>raw_data</c> 键是源表的**物理列名**(<c>MdpDbPullExecutor</c> 走 <c>SELECT *</c>
- /// 后按 DataTable 列名序列化),而实体属性名与物理列名并不总是一致。
- /// 典型反例:<c>AdoS0LocationMaster.DomainCode</c> 的物理列名是 <c>Domain</c>,
- /// 同表另有一个 132 行全为空串的影子列 <c>domain_code</c>;
- /// 任何 “属性名 → snake_case” 的自动推导都会静默取到空值且不报错。
- /// </summary>
- /// <param name="TargetColumn">dim 表列名。</param>
- /// <param name="Kind">取值方式。</param>
- /// <param name="JsonPath">源表**物理列名**(即 raw_data 的键)。<see cref="S0DimValueKind.TenantIdColumn"/> 时必须为 null。</param>
- /// <param name="Required">true 时生成 <c>IS NOT NULL</c> 过滤:取不到值的整行不进 dim(随后被行数对账捕获)。业务键列必须为 true。</param>
- /// <param name="Precision">仅 <see cref="S0DimValueKind.Dec"/> 使用。</param>
- /// <param name="Scale">仅 <see cref="S0DimValueKind.Dec"/> 使用。</param>
- public sealed record S0DimColumn(
- string TargetColumn,
- S0DimValueKind Kind,
- string? JsonPath = null,
- bool Required = false,
- int Precision = 18,
- int Scale = 6);
|