> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-parallel-read-in-order-multi-part.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Как экспортировать данные из BigQuery в ClickHouse Cloud с помощью ClickPipes.

# Интеграция BigQuery с ClickHouse Cloud

export const Image = ({img, alt, size = "lg", background}) => {
  const normalizedSize = ["sm", "md", "lg"].includes(size) ? size : "lg";
  const backgroundColor = background === "white" ? "white" : background === "black" ? "rgb(31 31 28)" : undefined;
  return <div className={`ch-image-${normalizedSize}`}>
      <Frame>
        <img src={img} alt={alt} style={{
    backgroundColor
  }} />
      </Frame>
    </div>;
};

export const PrivatePreviewBadge = () => {
  return <div className="privatePreviewBadge">
            <div className="privatePreviewIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path d="M5.33301 6.66667V4.66667V4.66667C5.33301 3.194 6.52701 2 7.99967 2V2C9.47234 2 10.6663 3.194 10.6663 4.66667V4.66667V6.66667" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path d="M8.00033 9.33337V11.3334" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path fillRule="evenodd" clipRule="evenodd" d="M11.333 14H4.66634C3.92967 14 3.33301 13.4033 3.33301 12.6666V7.99996C3.33301 7.26329 3.92967 6.66663 4.66634 6.66663H11.333C12.0697 6.66663 12.6663 7.26329 12.6663 7.99996V12.6666C12.6663 13.4033 12.0697 14 11.333 14Z" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>
        </div>
            {'Закрытая предварительная версия'}
        </div>;
};

<PrivatePreviewBadge />

<Note>
  Вы можете записаться в список ожидания закрытой предварительной версии [здесь](https://clickhouse.com/cloud/clickpipes/bigquery-connector).
</Note>

BigQuery ClickPipe предоставляет полностью управляемый и отказоустойчивый способ приёма данных из BigQuery в ClickHouse Cloud. В закрытой предварительной версии поддерживается метод репликации **первоначальной загрузки**, который позволяет массово загружать наборы данных BigQuery для анализа и прототипирования. Поддержка **CDC** появится в будущем — а пока мы рекомендуем использовать [Google Cloud Storage ClickPipe](/ru/integrations/clickpipes/object-storage/google-cloud-storage/overview), чтобы после завершения первоначальной загрузки непрерывно синхронизировать экспортированные из BigQuery данные с ClickHouse Cloud.

BigQuery ClickPipes можно вручную развёртывать и настраивать через интерфейс ClickPipes, а также программно с помощью [OpenAPI](/ru/integrations/clickpipes/programmatic-access/openapi) и [Terraform](/ru/integrations/clickpipes/programmatic-access/terraform).

<div id="features">
  ## Возможности
</div>

<div id="initial-load">
  ### Начальная загрузка
</div>

ClickPipe для BigQuery загрузит выбранные таблицы из [набора данных](https://docs.cloud.google.com/bigquery/docs/datasets-intro) BigQuery в целевые таблицы ClickHouse одной батч-операцией. После завершения задачи по ингестии ClickPipe автоматически останавливается. Для процесса ингестии при начальной загрузке требуется предоставленный пользователем GCS-бакет в качестве промежуточного хранилища. В будущем этот промежуточный бакет будет предоставляться и управляться ClickPipes.

<Note>
  ClickPipes использует батч-задания выгрузки для переноса данных из BigQuery в промежуточный GCS-бакет. Эта операция **не приводит к расходам на обработку** в BigQuery.
</Note>

<div id="cdc">
  ### CDC (фиксация изменений данных)
</div>

CDC **не поддерживается** в закрытой предварительной версии, но будет поддерживаться в будущем. Пока мы рекомендуем использовать [ClickPipe для Google Cloud Storage](/ru/integrations/clickpipes/object-storage/google-cloud-storage/overview), чтобы после завершения начальной загрузки непрерывно синхронизировать экспортированные из BigQuery данные с ClickHouse Cloud.

<div id="data-type-mapping">
  ## Сопоставление типов данных
</div>

[Типы данных BigQuery](https://docs.cloud.google.com/bigquery/docs/reference/standard-sql/data-types).

| Тип данных BigQuery | Тип данных ClickHouse | Подробности |
| - | - | - |
| `BOOL` | `Bool` | |
| `INT64` | `Int64` | |
| `FLOAT64` | `Float64` | |
| `NUMERIC` | `Decimal(P, S)` | Точность до 38, масштаб до 9. Точность и масштаб сохраняются. |
| `BIGNUMERIC` | `Decimal(P, S)` | Точность до 76, масштаб до 38. Точность и масштаб сохраняются. |
| `STRING` | `String` | |
| `BYTES` | `String` | |
| `JSON` | `String` (JSON) | |
| `DATE` | `Date` | |
| `TIME` | `String` | Точность до микросекунд. |
| `DATETIME` | `DateTime` | Точность до микросекунд. |
| `TIMESTAMP` | `DateTime64(6)` | Точность до микросекунд. |
| `GEOGRAPHY` | `String` | |
| `GEOMETRY` | `String` | |
| `UUID` | `String` | |
| `ARRAY<T>` | `Array(T)` | |
| `ARRAY<DATE>` | `Array(Date)` | |
| `STRUCT` (RECORD) | `String` | |

<div id="access-control">
  ## Управление доступом
</div>

<div id="authentication">
  ### Аутентификация
</div>

<div id="service-account-credentials">
  #### Учетные данные сервисного аккаунта
</div>

ClickPipes аутентифицируется в вашем проекте Google Cloud с помощью [ключа сервисного аккаунта](https://docs.cloud.google.com/iam/docs/keys-create-delete). Мы рекомендуем создать отдельный сервисный аккаунт с минимально необходимым набором [разрешений](#permissions), чтобы ClickPipes мог экспортировать данные из BigQuery, загружать их в промежуточный GCS-бакет и считывать в ClickHouse.

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/MiCB1is-Av7QztGF/images/integrations/data-ingestion/clickpipes/bigquery/cp_iam.webp?fit=max&auto=format&n=MiCB1is-Av7QztGF&q=85&s=0ffad3e66220fb014984d89f393f47f2" alt="Создание ключа сервисного аккаунта с разрешениями для BigQuery и Cloud Storage" size="lg" border width="2682" height="1336" data-path="images/integrations/data-ingestion/clickpipes/bigquery/cp_iam.webp" />

<div id="permissions">
  ### Разрешения
</div>

<div id="bigquery">
  #### BigQuery
</div>

У сервисного аккаунта должны быть следующие роли BigQuery:

* [`roles/bigquery.dataViewer`](https://docs.cloud.google.com/bigquery/docs/access-control#bigquery.dataViewer)
* [`roles/bigquery.jobUser`](https://docs.cloud.google.com/bigquery/docs/access-control#bigquery.jobUser)

Чтобы дополнительно сузить область доступа, рекомендуем использовать [условия IAM](https://docs.cloud.google.com/bigquery/docs/conditions), чтобы ограничить ресурсы, к которым у роли есть доступ. Например, роль `dataViewer` можно ограничить конкретным набором данных, содержащим таблицы, которые вы хотите синхронизировать:

```bash theme={null}
resource.name.startsWith("projects/<PROJECT_ID>/datasets/<DATASET_NAME>")
```

<div id="cloud-storage">
  #### Cloud Storage
</div>

Сервисный аккаунт должен иметь следующие роли Cloud Storage:

* [`roles/storage.objectAdmin`](https://docs.cloud.google.com/storage/docs/access-control/iam-roles#storage.objectAdmin)
* [`roles/storage.bucketViewer`](https://docs.cloud.google.com/storage/docs/access-control/iam-roles#storage.bucketViewer)

Чтобы дополнительно сузить область доступа, мы рекомендуем использовать [условия IAM](https://docs.cloud.google.com/bigquery/docs/conditions), чтобы ограничить ресурсы, к которым у роли есть доступ. Например, можно ограничить роли `objectAdmin` и `bucketViewer`, предоставив им доступ только к выделенному бакету, созданному для синхронизации ClickPipes.

```bash theme={null}
resource.name.startsWith("projects/_/buckets/<BUCKET_NAME>")
```
