Wellknown types(知名类型)

Wellknown 类型是 Tableau 生态系统中广泛使用的内置通用类型。

概述

为方便使用,Wellknown 类型是 Tableau 的内置类型,类似于 Protocol Buffers Well-Known Types

使用时需要引入 Tableau 和 Protocol Buffers 提供的 proto 文件:

Datetime(日期时间)

使用示例请参考 Wellknown 类型:Datetime →

类型默认值说明
datetime0000-00-00 00:00:00格式:yyyy-MM-dd HH:mm:ss 或 RFC3339。
例如:2020-01-01 05:10:00
2020-01-01T05:10:00+08:00
date0000-00-00格式:yyyy-MM-ddyyyyMMdd
例如:2020-01-0120200101
time00:00:00格式:HH:mm:ssHHmmssHH:mmHHmm
例如:05:10:0005100005:100510

提示:

Duration(时长)

使用示例请参考 Wellknown 类型:Duration →

类型默认值说明
duration0s格式如:72h3m0.5s
duration 字符串是一个可带符号的十进制数序列,每个数可带可选小数和单位后缀,例如 300ms-1.5h2h45m
有效时间单位:nsus(或 µs)、mssmh

提示:

Fraction(分数)

使用示例请参考 Wellknown 类型:Fraction →

分数表示整体的一部分,或更广泛地说,任意数量的等份。详见 wiki: Fraction

类型默认值说明
fraction0格式:
- N%:百分比,例如:10%
- N‰:千分比,例如:10‰
- N‱:万分比,例如:10‱
- N/D:简单分数,例如:3/4
- N:仅分子,例如:3 等同于 3/1
- N:浮点分子,例如:0.01 等同于 1/100
message Fraction {
  int32 num = 1;  // numerator(分子)
  int32 den = 2;  // denominator(分母)
}

Comparator(比较器)

使用示例请参考 Wellknown 类型:Comparator →

comparator 包含一个 sign(符号)和一个分数 value(值),任意数字或分数均可与之比较。

类型默认值说明
comparator==0格式:<Sign><Fraction>
例如:==10!=1/2<10%<=10‰>10%>=10‱
message Comparator {
  Sign sign = 1;
  Fraction value = 2;

  enum Sign {
    SIGN_EQUAL = 0;             // ==
    SIGN_NOT_EQUAL = 1;         // !=
    SIGN_LESS = 2;              // <
    SIGN_LESS_OR_EQUAL = 3;     // <=
    SIGN_GREATER = 4;           // >
    SIGN_GREATER_OR_EQUAL = 5;  // >=
  }
}

Version(版本号)

使用示例请参考 Wellknown 类型:Version →

version 表示点分十进制表示法的版本号。 版本格式为:<MAJOR>.<MINOR>.<PATCH>[.<OTHER>]...

version 字段提供三种表示形式以方便使用:

  • 字符串版本:str
  • 整数版本:val
  • 整数版本各部分:majorminorpatchothers

可以通过字段属性 pattern 指定版本模式,格式为 <MAJOR_MAX>.<MINOR_MAX>.<PATCH_MAX>[.<OTHER_MAX>]...

  • 每个带 “MAX” 后缀的部分表示点分十进制表示法中对应部分的最大十进制值。
  • 每个 “XXX_MAX+1” 表示该部分在整数中占用的值。
  • 通用模式 <MAJOR_MAX>.<MINOR_MAX>.<PATCH_MAX> 的整数版本公式为:MAJOR*(MINOR_MAX+1)*(PATCH_MAX+1) + MINOR*(PATCH_MAX+1) + PATCH

默认 pattern 为:255.255.255

类型默认值说明
version""格式:<MAJOR>.<MINOR>.<PATCH>
例如:1.0.1
version|{pattern:"255.255.255.255"}""格式:<MAJOR>.<MINOR>.<PATCH>.<OTHER>
例如:1.0.1.1
message Version {
  string str = 1;           // 字符串形式的版本号。
  uint64 val = 2;           // 整数形式的版本号。
  uint32 major = 3;         // 主版本号。
  uint32 minor = 4;         // 次版本号。
  uint32 patch = 5;         // 修订版本号。
  repeated uint32 others = 6; // 其他版本号,如构建号、资源版本号等。
}