Перейти к основному содержимому

Конфигурации Microsoft Fabric Data Warehouse

На этой странице описываются параметры конфигурации, специфичные для адаптера dbt-fabric при работе с Microsoft Fabric Data Warehouse. Здесь приводится обзор поддерживаемых материализаций, стратегий инкрементальной загрузки (включая merge и ]microbatch](#microbatch)), межхранилищных ссылок, снапшотов хранилища и настройки профиля.

Материализации

Эфемерная материализация не поддерживается, так как T-SQL не поддерживает вложенные CTE. Она может работать в некоторых случаях, когда вы работаете с очень простыми эфемерными моделями.

Таблицы

Таблицы — это материализация по умолчанию в dbt-fabric. Когда вы настраиваете модель как table, dbt при каждом запуске будет создавать или заменять таблицу в Fabric Data Warehouse.

models/example.sql
{{
config(
materialized='table'
)
}}

select *
from ...

Ограничение: Вложенные CTE не поддерживаются при материализации моделей. Модели, использующие несколько вложенных CTE, могут завершиться с ошибкой во время компиляции или выполнения.

Клонирование таблиц

Материализация table_clone создает физическую копию существующей таблицы, используя возможности клонирования Fabric. Это полезно для версионирования, ветвления или рабочих процессов наподобие снапшотов.

{{ config(materialized='table_clone', clone_from='staging_table') }}
select * from staging_table

Заметки:

  • Исходная таблица должна существовать в целевом хранилище данных.
  • Клонирование сохраняет схему и состояние данных на момент создания.
  • Идеально подходит для сценариев, требующих быстрого дублирования без копирования данных (zero-copy) для тестирования или отката.

Сиды (Seeds)

По умолчанию dbt-fabric пытается загружать seed‑файлы пакетами по 400 строк.
Если это значение превышает ограничение Microsoft Fabric Data Warehouse в 2100 параметров, адаптер автоматически уменьшит размер пакета до максимально допустимого безопасного значения.

Чтобы установить другое значение по умолчанию для seed, вы можете задать переменную max_batch_size в конфигурации вашего проекта.

dbt_project.yml
vars:
max_batch_size: 200 # Любое целое число, меньшее или равное 2100, подойдет.

Views

Вы можете создавать представления (views), используя материализацию view:

{{ config(materialized='view') }}
select * from source_data

Также это можно задать глобально:

models:
my_project:
+materialized: view

Ограничение: В материализациях моделей не поддерживаются вложенные CTE (Common Table Expressions). Модели, использующие несколько уровней вложенных CTE, могут завершиться ошибкой на этапе компиляции или выполнения.

Снимки (Snapshots)

Столбцы в исходных таблицах не могут иметь никаких ограничений. Если, например, любой столбец имеет ограничение NOT NULL, будет выдана ошибка.

Индексы

Индексы не поддерживаются в Microsoft Fabric Data Warehouse. Любые индексы, указанные в конфигурации, игнорируются адаптером.

Права с автоматическим предоставлением

Гранты с автоматическим предоставлением (auto provisioning) в настоящее время не поддерживаются Microsoft Fabric Data Warehouse.

Инкрементальные модели

Инкрементальные материализации поддерживаются с использованием нескольких стратегий. В dbt-fabric стратегией по умолчанию является merge, представленная в версии v1.9.7. Другие поддерживаемые стратегии включают append, delete+insert и microbatch.

Merge (по умолчанию)

Стратегия merge автоматически обновляет существующие записи и вставляет новые на основе настроенного unique_key.

{{
config(
materialized='incremental',
unique_key='id'
)
}}
select * from source_table
{% if is_incremental() %}
where updated_at > (select max(updated_at) from {{ this }})
{% endif %}

Append

Добавляет новые записи к существующему набору данных.

{{
config(
materialized='incremental',
incremental_strategy='append'
)
}}
select * from new_data

Delete+Insert

Удаляет и повторно вставляет данные на основе unique_key.

{{
config(
materialized='incremental',
incremental_strategy='delete+insert',
unique_key='id'
)
}}
select * from updated_data

Microbatch

Стратегия microbatch обрабатывает данные в ограниченных временных интервалах, используя колонку с временной меткой события.

{{
config(
materialized='incremental',
incremental_strategy='microbatch',
event_time='event_timestamp',
batch_size='1 day'
)
}}

select * from raw_events

Примечания

  • event_time должен быть корректной колонкой с типом timestamp.
  • dbt обрабатывает каждый батч независимо, что позволяет эффективно выполнять инкрементальное обновление больших временных рядов.
  • Если unique_key не указан, dbt-fabric по умолчанию использует стратегию append.

Подробнее см. Incremental models.

Разрешения

Идентификатор Microsoft Entra (пользователь или служебный принципал) должен быть администратором рабочей области Fabric, чтобы работать на уровне базы данных в настоящее время. В будущем будет внедрен более детальный контроль доступа.

Ссылки между хранилищами

Адаптер dbt-fabric поддерживает межхранилищные запросы (cross-warehouse queries) с использованием макросов source() или ref().

select * from {{ source('sales_dw', 'transactions') }}
union all
select * from {{ ref('customer_dim') }}

Убедитесь, что соответствующие определения моделей или источников указывают корректный параметр database:, чтобы ссылаться на другое хранилище Fabric Warehouse.

Пример sources.yml:

sources:
- name: sales_dw
database: saleswarehouse
schema: sales
tables:
- name: transactions

Чтобы использовать межхранилищные ссылки или снимки хранилища (warehouse snapshots), убедитесь, что настроенная здесь учётная запись (identity) имеет доступ ко всем используемым Fabric Warehouses.

Снимки хранилища

Снимки хранилища Microsoft Fabric (warehouse snapshots) — это доступные только для чтения копии вашего хранилища на определённый момент времени, которые хранятся до 30 дней. Они позволяют аналитикам выполнять запросы к стабильному набору данных, даже когда ELT-процессы обновляют хранилище. При перемещении временной метки снимка вперёд все изменения применяются одновременно (атомарно).

dbt-fabric поддерживает снимки хранилища, что помогает отслеживать изменения объектов Fabric Data Warehouse между запусками dbt. Fabric автоматически создаёт снимки до и после выполнения команд dbt run, dbt build или dbt snapshot.

Для их использования в вашем profiles.yml необходимо указать workspace_id и имя снимка хранилища, чтобы dbt мог создать снимок как дочерний объект вашего хранилища.

Подробнее см. здесь

fabric_dw:
target: dev
outputs:
dev:
type: fabric
server: "<your-fabric-server-name>"
database: "<your-warehouse-name>"
schema: "<default-schema>"
authentication: CLI
workspace_id: e4487eff-d67d-4b58-917c-ffbb61a5c05f
warehouse_snapshot_name: dbt-dwtests-snpshot

Поведение

  • Перед выполнением операции dbt (run, build, snapshot) адаптер фиксирует состояние затронутых таблиц до изменений.
  • После выполнения создаётся снимок хранилища с соответствующей временной меткой.

Дополнительные сведения:

dbt-utils

В настоящий момент не поддерживается. Однако dbt-fabric предоставляет некоторые макросы из dbt-utils. Подробности см. в пакете tsql-utils.

Нашли ошибку?

0
Loading