BigQuery: Клъстерирането откри ключ, който е по-дълъг от

При клъстериране на моите таблици с показвания на страници в Wikipedia получих грешката:

Клъстерирането откри ключ, който е по-дълъг от максимално допустимото ограничение от 1024 байта.

Контекст: https://medium.com/google-cloud/bigquery-optimized-cluster-your-tables-65e2f684594b

(Групирам се от

CREATE TABLE `fh-bigquery.wikipedia_v3.pageviews_2017`
PARTITION BY DATE(datehour)
CLUSTER BY wiki, title
...

)


person Felipe Hoffa    schedule 18.08.2018    source източник
comment
като FYI: доколкото разбирам - има открита грешка в налагането на дължина от 1KB, която беше въведена наскоро. Така че това е деактивирано от сега, докато не бъде поправено   -  person Mikhail Berlyant    schedule 21.08.2018


Отговори (1)


При клъстериране на таблици BigQuery има ограничение от 1KB за ключовете.

Можете да разрешите това за примерните таблици, като промените кода си за вмъкване, така че да съкращава всеки запис, който е твърде дълъг.

Например вместо:

INSERT INTO `fh-bigquery.wikipedia_v3.pageviews_2018` (datehour, wiki, title, views)
SELECT datehour, wiki, title, views

съкратете потенциално дългите заглавия с:

INSERT INTO `fh-bigquery.wikipedia_v3.pageviews_2018` (datehour, wiki, title, views)
SELECT datehour, wiki, SUBSTR(title, 0, 300) title, views

Ако продължавате да получавате грешки, имайте предвид, че някои неправилно формирани низове може да имат по-голяма дължина от това, което SUBSTR() вижда. Филтрирайте ги с:

WHERE BYTE_LENGTH(title) < 300
person Felipe Hoffa    schedule 18.08.2018
comment
трябва да кажа, че обичам да виждам как BQ се развива и обновява със скоростта, с която го прави :)! - person Willian Fuks; 19.08.2018
comment
Подозирам, че заглавието не е „деформирано“, но SUBSTR работи с Unicode руни (символи) и че ограниченията за групиране са в байтове. По този начин заглавия със знаци с двойна/тройна ширина (много китайски йероглифи, знаци с ударения, емотикони) ще попаднат в този случай. - person elithrar; 19.08.2018
comment
В моя конкретен случай това бяха неправилно формирани низове (идващи от дневници от реалния живот) - person Felipe Hoffa; 19.08.2018
comment
Правя CLUSTER BY wiki, title, така че трябваше да се уверя, че BYTE_LENGTH(wiki+title) е по-ниско от ограничението. - person Felipe Hoffa; 20.08.2018
comment
Знаете ли дали BigQuery работи върху разширяването на този лимит @FelipeHoffa? - person Eben du Toit; 11.06.2019
comment
Просто следвам тази тема. Това ограничение е премахнато за известно време и новото поведение е документирано тук. cloud.google.com/bigquery/docs/ - person Pavan Edara; 05.08.2020