Google BigQuery: TABLE_QUERY AND TABLE_DATE_RANGE

У меня есть таблицы Big Query, как показано ниже, и мне нравится выдавать запрос к таблицам <=,

prefix_AAAAAAA_20170320
prefix_AAAAAAA_20170321
prefix_AAAAAAA_20170322 <=
prefix_AAAAAAA_20170323 <=
prefix_AAAAAAA_20170324 <=
prefix_AAAAAAA_20170325
prefix_BBBBBBB_20170320
prefix_BBBBBBB_20170321
prefix_BBBBBBB_20170322 <=
prefix_BBBBBBB_20170323 <=
prefix_BBBBBBB_20170324 <=
prefix_BBBBBBB_20170325
prefix_CCCCCCC_20170320
prefix_CCCCCCC_20170321
prefix_CCCCCCC_20170322
prefix_CCCCCCC_20170323
prefix_CCCCCCC_20170324
prefix_CCCCCCC_20170325

Я сделал запрос как это

SELECT * FROM 
  (TABLE_QUERY(mydataset, 
    'table_id CONTAINS "prefix" AND 
    (table_id CONTAINS "AAAAAA" OR table_id CONTAINS "BBBBBB")' )
   AND
   TABLE_DATE_RANGE(mydataset.prefix, TIMESTAMP('2017-03-22'), TIMESTAMP('2017-03-24')))

Я получил эту ошибку.

Error: Encountered " "AND" "AND "" at line 5, column 4. Was expecting: ")" ...

У кого-нибудь есть идеи?

1 ответ

Решение

Вы не можете смешивать TABLE_QUERY и TABLE_DATE_RANGE для одного и того же FROM!

Попробуйте что-то вроде ниже

#legacySQL
SELECT * 
FROM (TABLE_QUERY(mydataset, 'REGEXP_MATCH(table_id, "prefix_[AB]{7}_2017032[234]")'))  

Рассматривать Migrating to BigQuery Standard SQL

В этом случае вы можете Query Multiple Tables Using a Wildcard Table

Увидеть How to Migrate from TABLE_QUERY() to _TABLE_SUFFIX

Я думаю, что в этом случае ваш запрос может выглядеть так

#standardSQL
SELECT * 
FROM `mydataset.prefix_*`
WHERE REGEXP_CONTAINS(_TABLE_SUFFIX, '[AB]{7}_2017032[234]')  

Я не могу перейти на стандартный SQL, потому что...
Если я хотел бы искать, например, между 2017-03-29 и 2017-04-02, у вас есть какой-нибудь умный SQL

Попробуйте ниже версию

#legacySQL
SELECT * 
FROM (TABLE_QUERY(mydataset, 
    'REGEXP_MATCH(table_id, r"prefix_[AB]{7}_(\d){8}") AND 
    RIGHT(table_id, 8) BETWEEN "20170329" AND "20170402"'))  

Конечно, вы можете настроить выше, чтобы использовать любую логику, которую вам нужно применить!

Другие вопросы по тегам