Две большие таблицы, sales_transaction_header и sales_transaction_line, тесно связаны, неизменяемы после загрузки и часто объединяются. Как следует смоделировать их в BigQuery для оптимизации аналитической производительности?
Выберите ответ
Нажмите на вариант, чтобы проверить свой ответ.
Правильный ответ: Создать таблицу sales_transaction, которая содержит информацию sales_transaction_header в виде строк, а строки sales_transaction_line — в виде вложенных и повторяющихся полей..
Почему это правильный ответ
Правильный ответ — вложенные и повторяющиеся поля. BigQuery оптимизирован для работы с денормализованными данными, и вложенные, повторяющиеся поля (RECORD и REPEATED) идеально подходят для представления связей «один-ко-многим», таких как заголовок заказа и его строки. Это позволяет избежать дорогостоящих операций JOIN, которые снижают производительность при аналитических запросах. Дублирование данных заголовка для каждой строки (второй вариант) также является денормализацией, но приводит к избыточности данных и увеличивает объем хранимых данных без преимуществ вложенных структур, которые BigQuery эффективно обрабатывает. Хранение данных в формате JSON (третий вариант) не является оптимальным, так как BigQuery не может эффективно индексировать и запрашивать поля внутри JSON без предварительного парсинга, что замедляет выполнение запросов. Создание отдельных таблиц и использование JOIN (четвертый вариант) — это традиционный подход реляционных баз данных, но он менее эффективен в BigQuery для аналитических рабочих нагрузок по сравнению с денормализацией с использованием вложенных полей. Указание salestransactionline первой в предложении WHERE не меняет фундаментальную неэффективность JOIN для больших таблиц.
Сдайте экзамен — без бесконечного поиска ответов
Получите все проверенные вопросы и объяснения для этого экзамена в одном месте и сэкономьте часы подготовки. 1000+ сертификаций · 20+ языков · начните бесплатно.
Сдайте экзамен быстрее → Карта не требуется