在 Bigquery 中参数化数据类型的目的是什么?

What's the purpose of parametrizing data types in Big Query?

在 BigQuery 中,您可以参数化某些数据类型 (reference)。例如:

DECLARE x STRING(10);
DECLARE y STRING;

这些参数不会传播,但会在 insertion/assignment 期间检查。

我现在正在将数据从 PostgreSQL 数据库推送到 BigQuery。我有一个 PSQL 模式,其中所有字符串都有一个设置的最大长度。这些最大长度从大约 1(对于类似枚举的值)到 1000+(对于自由文本)不等。我必须在 BigQuery 中定义一个 table 模式来将数据推送到。我对验证不感兴趣,因为我从我的 PSQL 模式中知道进入 BQ 的数据的确切限制。因此我的问题是:

对于我的用例,在任意长度的字符串上使用参数化数据类型是否有任何优势(性能、成本等)?

如果您既不需要执行也不需要语法糖,那么跳过使用参数化是完全合理的。派生表与原始数据保持相同的约束是有争议的,但这实际上取决于您自己的使用模式和习惯用法。

BigQuery data storage costs 基于实际字符串大小,partitioning/clustering 不利用参数化细节。他们不应该影响你的决定。