有没有办法在BigQuery中设置列名称中字符串的最大长度?

时间:2017-06-19 21:53:31

标签: google-bigquery

我找不到任何文档,如果我认为最多128个字符?

1 个答案:

答案 0 :(得分:2)

让我们通过生成一个长列名进行检查:

#standardSQL
SELECT
  STRING_AGG(
    CODE_POINTS_TO_STRING([MOD(c, 26) + TO_CODE_POINTS('a')[OFFSET(0)]]),
    '')
FROM UNNEST(GENERATE_ARRAY(0, 127)) AS c;
+----------------------------------------------------------------------------------------------------------------------------------+
|                                                               f0_                                                                |
+----------------------------------------------------------------------------------------------------------------------------------+
| abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwx |
+----------------------------------------------------------------------------------------------------------------------------------+

现在我们可以在查询中使用它:

bq query --use_legacy_sql=false "SELECT 1 AS abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwx;"
Waiting on <job ID> ... (1s) Current status: DONE   
+----------------------------------------------------------------------------------------------------------------------------------+
| abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwx |
+----------------------------------------------------------------------------------------------------------------------------------+
|                                                                                                                                1 |
+----------------------------------------------------------------------------------------------------------------------------------+

好的,所以128个字符都可以。如果我们再使用一次该怎么办?

bq query --use_legacy_sql=false "SELECT 1 AS abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxy;"
Waiting on <job ID> ... (0s) Current status: DONE   
BigQuery error in query operation: Error processing job 'bigquerytestdefault:bqjob_r5056943d6408b629_0000015cc29ae7ae_1': Invalid field name "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxy". Fields
must contain only letters, numbers, and underscores, start with a letter or underscore, and be at most 128 characters long.

我收到有关名称长度的错误。这被记录为tables reference的一部分,说:

  

[必填]字段名称。名称必须只包含字母(a-z,   A-Z),数字(0-9)或下划线(_),必须以字母开头   或下划线。最大长度为128个字符。