This is an automated email from the ASF dual-hosted git repository.

morningman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris-website.git


The following commit(s) were added to refs/heads/master by this push:
     new 7fb72d3f2ba [doc](dbt) Fix Iceberg examples and prerequisites in the 
adapter guide (#4241)
7fb72d3f2ba is described below

commit 7fb72d3f2ba1fb0fee256d2a42b007663839eeb3
Author: Chenjunwei <[email protected]>
AuthorDate: Wed Oct 14 14:37:04 2026 +0800

    [doc](dbt) Fix Iceberg examples and prerequisites in the adapter guide 
(#4241)
    
    ### What problem does this PR solve?
    
    Related PR: #4229 (merged)
    
    The guide's `select 1 as id` Iceberg example fails on the verified Doris
    runtime because the literal is inferred as `TINYINT`. Use `cast(1 as
    int)` so the example creates a supported Iceberg column.
    
    This follow-up also:
    
    - States that ordinary partitioned Iceberg Seed reload uses native MERGE
    and requires V2+; V1 partitioned Seeds can use `dbt seed
    --full-refresh`.
    - Clarifies that partitioned Iceberg microbatch needs
    `partition_type='LIST'`, and that all `overwrite_partitions`
    configurations, including column/value mappings, are forbidden. Scopes
    the RANGE example to Internal Catalog OLAP targets.
    - Pins the runnable-demo link to the revision that defaults both setup
    and verification to adapter 1.1.1, instead of the release tag whose demo
    scripts still expect 1.1.0.
    - Describes source data as already queryable through Doris, including
    configured External Catalogs.
    
    ### Validation
    
    - Targeted repository link, frontmatter, feature-doc and i18n-sync
    checks passed. SEO reports four existing duplicate-title warnings across
    version/locale mirrors and no errors.
    - Manual verification used the **published `dbt-for-apache-doris==1.1.1`
    wheel**, dbt Core 1.12.5, and Doris 4.1.3-rc02:
    - The original literal example fails with `Not a supported type:
    TINYINT`; the INT-cast example succeeds.
    - Partitioned V1 Seed first load succeeds, ordinary reload fails on the
    position-delete format requirement, and full refresh succeeds.
    - Iceberg microbatch with the default RANGE configuration fails;
    explicit LIST succeeds; a column/value overwrite mapping is rejected.
    - English current/4.x copies and Chinese current/4.x copies remain
    identical within each language.
    
    ### Review scope
    
    Only four existing guide pages change. Their structure, paths, heading
    anchors, frontmatter and navigation remain unchanged. This PR does not
    modify adapter code, website components, styles or build configuration.
    No additional correctness issue was found in the revised examples and
    descriptions; the duplicate SEO titles predate this follow-up.
    
    ## Versions
    
    - [x] dev
    - [x] 4.x
    - [ ] 3.x
    - [ ] 2.1 or older (not covered by version/language sync gate)
    
    The version and language scope matches #4229.
    
    ## Languages
    
    - [x] Chinese
    - [x] English
    
    ## Docs Checklist
    
    - [x] Checked by AI
    - [x] Test Cases Built
    - [x] Updated required version and language counterparts
    - [x] Confirmed source/translation synchronization
---
 .../data-integration/dbt-doris-adapter.md               | 16 +++++++++-------
 .../data-integration/dbt-doris-adapter.md               | 17 +++++++++--------
 .../data-integration/dbt-doris-adapter.md               | 17 +++++++++--------
 .../data-integration/dbt-doris-adapter.md               | 16 +++++++++-------
 4 files changed, 36 insertions(+), 30 deletions(-)

diff --git a/docs/connection-integration/data-integration/dbt-doris-adapter.md 
b/docs/connection-integration/data-integration/dbt-doris-adapter.md
index 205cd1dc01a..5a26f337aa3 100644
--- a/docs/connection-integration/data-integration/dbt-doris-adapter.md
+++ b/docs/connection-integration/data-integration/dbt-doris-adapter.md
@@ -26,7 +26,7 @@
 
 [dbt](https://docs.getdbt.com/docs/introduction) manages the transformation 
step in an ELT (Extract, Load, Transform) workflow. The `dbt-for-apache-doris` 
adapter compiles dbt models into Doris SQL and executes table creation, 
transformation, testing, and documentation operations through the Doris 
Frontend (FE) MySQL query port.
 
-Source data must already be loaded into Doris. The adapter performs 
transformations; it does not ingest or synchronize source data.
+Source data must already be queryable through Doris, either in Internal 
Catalog tables or through configured External Catalogs. The adapter performs 
transformations; it does not ingest or synchronize source data.
 
 :::caution
 
@@ -277,23 +277,25 @@ Create `models/iceberg_sample.sql`:
 ```sql
 {{ config(materialized='table', engine='iceberg') }}
 
-select 1 as id
+select cast(1 as int) as id
 ```
 
+The explicit `INT` cast avoids inferring `TINYINT`, which is not an Iceberg 
column type.
+
 Run `dbt run --select iceberg_sample`. It creates 
`iceberg_catalog.analytics.iceberg_sample`. The Catalog must exist; its 
database must exist or be creatable by dbt, and the target must be writable. 
`engine='iceberg'` emits an explicit engine clause; omitting `engine` lets 
Doris infer it from the target Catalog. Catalog-based inference was verified 
with Doris 4.1.3. Earlier Doris releases may require the explicit engine.
 
 | Iceberg target | v1.1.1 behavior |
 | --- | --- |
 | `table` | Creates an Iceberg table; reruns replace it through backup and 
rename |
 | `incremental` | Supports `append`, `merge`, `insert_overwrite`, and 
`microbatch` as described below |
-| Seed and Snapshot | Supported; Snapshot publication and Seed full refresh 
use backup and rename. Ordinary Iceberg Seed reload uses overwrite or MERGE |
+| Seed and Snapshot | Supported; Snapshot publication and Seed full refresh 
use backup and rename. Ordinary reload uses INSERT OVERWRITE for unpartitioned 
tables; partitioned reload uses native MERGE and requires V2+. For V1 
partitioned Seeds, use `dbt seed --full-refresh` |
 | `view` and `materialized_view` | Targets must be in Internal Catalog; 
Internal Catalog views and MVs can query External Catalog sources |
 
-Iceberg `merge` and `microbatch` require a Doris release with native Iceberg 
`MERGE INTO` and an Iceberg V2 or later table. These paths were verified on 
Doris 4.1.3; [Doris documents Iceberg MERGE as experimental since 
4.1.0](../../lakehouse/catalogs/iceberg-catalog#merge-into). An external table 
replacement is not atomic: its name is briefly unavailable between renames, and 
a failure can leave the old table under a backup name. Use an isolated test 
project to validate your Doris release [...]
+Iceberg `merge`, `microbatch`, and partitioned Seed reload require a Doris 
release with native Iceberg `MERGE INTO` and an Iceberg V2 or later table. 
These paths were verified on Doris 4.1.3; [Doris documents Iceberg MERGE as 
experimental since 4.1.0](../../lakehouse/catalogs/iceberg-catalog#merge-into). 
An external table replacement is not atomic: its name is briefly unavailable 
between renames, and a failure can leave the old table under a backup name. Use 
an isolated test project to v [...]
 
 The adapter rejects model or column `constraints` declarations before writing 
a Table, View, Incremental, or MV target. Model contracts still check column 
names and types. Use `data_tests` such as `not_null` to check data after 
writing; these do not create database-enforced constraints.
 
-The [five runnable Doris 
demos](https://github.com/velodb/dbt-for-apache-doris/tree/v1.1.1/examples/doris-demos)
 cover models, tests, cross-database sources, incremental processing, 
snapshots, and asynchronous materialized views.
+The [five runnable Doris 
demos](https://github.com/velodb/dbt-for-apache-doris/tree/3fb9cc75f9dcdd756b472847728bbdf42fb3b128/examples/doris-demos)
 cover models, tests, cross-database sources, incremental processing, 
snapshots, and asynchronous materialized views. The demo setup defaults to 
`dbt-for-apache-doris==1.1.1`.
 
 <!-- Knowledge Type: Capability Reference / Configuration Parameters / 
Architecture Decision -->
 <!-- Use Case: Materialization selection / Incremental processing / 
Materialized views -->
@@ -467,7 +469,7 @@ For Iceberg targets, omit `overwrite_partitions` to use 
native dynamic overwrite
 
 ### Microbatch
 
-`microbatch` uses the dbt Core batch context. Configure an `event_time` field 
on each direct upstream resource and on the target model. For the `raw.orders` 
source created in the first-model example above, add this configuration to its 
existing table declaration:
+`microbatch` uses the dbt Core batch context. The following example targets an 
Internal Catalog OLAP table and overwrites one exact RANGE partition for each 
UTC window. Configure an `event_time` field on each direct upstream resource 
and on the target model. For the `raw.orders` source created in the first-model 
example above, add this configuration to its existing table declaration:
 
 ```yaml
 sources:
@@ -517,7 +519,7 @@ Doris also requires a positive `dynamic_partition.buckets` 
value when creating a
 
 :::caution
 
-For `append`, `merge`, and partition-scoped `insert_overwrite`, the adapter 
does not discover new or changed source rows automatically. The model SQL must 
return the intended batch. Whole-table `insert_overwrite` must return the 
complete target data. Each `merge` batch must contain unique `unique_key` 
values. dbt Core supplies Microbatch filtering from upstream resources 
configured with `event_time`, so Microbatch models do not need 
`is_incremental()`. Run `dbt run --full-refresh` after  [...]
+For `append`, `merge`, and partition-scoped `insert_overwrite`, the adapter 
does not discover new or changed source rows automatically. The model SQL must 
return the intended batch. Whole-table `insert_overwrite` must return the 
complete target data. Each `merge` batch must contain unique `unique_key` 
values. dbt Core supplies Microbatch filtering from upstream resources 
configured with `event_time`, so Microbatch models do not need 
`is_incremental()`. Run `dbt run --full-refresh` after  [...]
 
 :::
 
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/connection-integration/data-integration/dbt-doris-adapter.md
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/connection-integration/data-integration/dbt-doris-adapter.md
index cfe88da5df9..d862463957d 100644
--- 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/connection-integration/data-integration/dbt-doris-adapter.md
+++ 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/connection-integration/data-integration/dbt-doris-adapter.md
@@ -29,7 +29,7 @@
 [dbt](https://docs.getdbt.com/docs/introduction) 用于管理 
ELT(Extract、Load、Transform)
 流程中的转换环节。`dbt-for-apache-doris` Adapter 会将 dbt Model
 编译为 Doris SQL,并通过 Doris Frontend(FE)的 MySQL Query Port 执行建表、数据转换、
-测试和文档生成。原始数据需要提前写入 Doris;Adapter 不负责采集或同步源数据。
+测试和文档生成。原始数据需要已能通过 Doris 查询,可以来自 Internal Catalog 内表或已配置的 External 
Catalog;Adapter 不负责采集或同步源数据。
 
 :::caution
 
@@ -284,23 +284,25 @@ schema: analytics
 ```sql
 {{ config(materialized='table', engine='iceberg') }}
 
-select 1 as id
+select cast(1 as int) as id
 ```
 
+显式转换为 `INT`,避免常量被推断为 Iceberg 不支持的 `TINYINT` 字段类型。
+
 执行 `dbt run --select iceberg_sample`,创建 
`iceberg_catalog.analytics.iceberg_sample`。Catalog 必须已存在;Database 必须已存在或允许 dbt 
创建,目标需要可写。`engine='iceberg'` 会生成显式 Engine 子句;省略 `engine` 时,Doris 会根据目标 Catalog 
推断。Catalog 推断已在 Doris 4.1.3 验证;更早的 Doris 版本可能需要显式设置 Engine。
 
 | Iceberg 目标 | v1.1.1 行为 |
 | --- | --- |
 | `table` | 创建 Iceberg 表;再次运行时通过备份和重命名替换目标 |
 | `incremental` | 支持下文介绍的 `append`、`merge`、`insert_overwrite` 和 `microbatch` |
-| Seed 和 Snapshot | 支持;Snapshot 发布和 Seed 完整刷新使用备份和重命名。Iceberg Seed 常规重载使用覆盖或 
MERGE |
+| Seed 和 Snapshot | 支持;Snapshot 发布和 Seed 完整刷新使用备份和重命名。非分区表常规重载使用 INSERT 
OVERWRITE;分区表重载使用原生 MERGE,需要 V2+。V1 分区 Seed 应使用 `dbt seed --full-refresh` |
 | `view` 和 `materialized_view` | 目标必须位于 Internal Catalog;Internal Catalog 中的 
View 和 MV 可以查询 External Catalog Source |
 
-Iceberg 的 `merge` 和 `microbatch` 需要支持原生 Iceberg `MERGE INTO` 的 Doris 版本,以及 
Iceberg V2 或更高版本的表。这些路径已在 Doris 4.1.3 验证;[Doris 文档将 Iceberg MERGE 标记为自 4.1.0 
起的实验功能](../../lakehouse/catalogs/iceberg-catalog#merge-into)。External Catalog 
表的替换不是原子操作:两次重命名之间,目标表名会短暂不可用;失败时旧表可能保留在备份名称下。生产使用前,应在隔离项目中验证 Doris 版本、Catalog 
Connector 和故障恢复流程。
+Iceberg 的 `merge`、`microbatch` 和分区 Seed 常规重载需要支持原生 Iceberg `MERGE INTO` 的 
Doris 版本,以及 Iceberg V2 或更高版本的表。这些路径已在 Doris 4.1.3 验证;[Doris 文档将 Iceberg MERGE 
标记为自 4.1.0 
起的实验功能](../../lakehouse/catalogs/iceberg-catalog#merge-into)。External Catalog 
表的替换不是原子操作:两次重命名之间,目标表名会短暂不可用;失败时旧表可能保留在备份名称下。生产使用前,应在隔离项目中验证 Doris 版本、Catalog 
Connector 和故障恢复流程。
 
 Adapter 会在写入 Table、View、Incremental 或 MV 目标前拒绝 Model 或字段上的 `constraints` 
声明。Model Contract 仍会校验字段名称和类型。`not_null` 等 `data_tests` 可在写入后校验数据,但不会创建数据库约束。
 
-[五个可运行的 Doris 
Demo](https://github.com/velodb/dbt-for-apache-doris/tree/v1.1.1/examples/doris-demos)
 展示了 Model、测试、跨 Database Source、增量处理、Snapshot 和异步物化视图。
+[五个可运行的 Doris 
Demo](https://github.com/velodb/dbt-for-apache-doris/tree/3fb9cc75f9dcdd756b472847728bbdf42fb3b128/examples/doris-demos)
 展示了 Model、测试、跨 Database Source、增量处理、Snapshot 和异步物化视图。Demo 环境默认安装 
`dbt-for-apache-doris==1.1.1`。
 
 <!-- 知识类型: 能力定义 / 配置参数 / 架构选型决策 -->
 <!-- 适用场景: Materialization 选型 / 增量加工 / 物化视图 -->
@@ -487,8 +489,7 @@ where order_time >= '2026-07-01'
 
 ### Microbatch
 
-`microbatch` 使用 dbt Core 的批处理上下文,把每个 UTC 时间窗口映射为一个
-精确的 Doris RANGE 分区,并逐分区执行 `INSERT OVERWRITE`。例如:
+`microbatch` 使用 dbt Core 的批处理上下文处理每个 UTC 时间窗口。下例针对 Internal Catalog OLAP 
目标,将窗口映射为精确的 Doris RANGE 分区,并逐分区执行 `INSERT OVERWRITE`:
 
 先为每个直接上游资源和目标 Model 配置 Event Time 字段,使 dbt Core 能向每批输入
 注入时间过滤。对于前文示例中创建的 `raw.orders` Source,在已有 Table 声明下增加:
@@ -560,7 +561,7 @@ Doris 创建 Dynamic Partition 表时还要求 
`dynamic_partition.buckets` 为
 目标表所需的完整数据。同一批 `merge` 数据中的 `unique_key` 必须唯一。Microbatch
 的时间过滤由 dbt Core 根据已配置 `event_time` 的上游资源生成,不需要使用
 `is_incremental()`。修改 Key、分区方式或其他不兼容表结构后,应执行
-`dbt run --full-refresh`。对于 Iceberg Microbatch,不要配置 OLAP Dynamic Partition 
属性、具名 `overwrite_partitions` 或 `partition_by_init`;每个 UTC 时间窗口由原生 MERGE 
替换,包括空窗口。
+`dbt run --full-refresh`。对于 Iceberg Microbatch,不要配置 
`unique_key`、`overwrite_partitions`(包括字段和值映射)、`partition_by_init` 或 OLAP 
Dynamic Partition 属性。若设置 `partition_by`,必须显式配置 `partition_type='LIST'`。每个 UTC 
时间窗口由原生 MERGE 替换,包括空窗口。
 :::
 
 ### 异步物化视图
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/version-4.x/connection-integration/data-integration/dbt-doris-adapter.md
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-4.x/connection-integration/data-integration/dbt-doris-adapter.md
index cfe88da5df9..d862463957d 100644
--- 
a/i18n/zh-CN/docusaurus-plugin-content-docs/version-4.x/connection-integration/data-integration/dbt-doris-adapter.md
+++ 
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-4.x/connection-integration/data-integration/dbt-doris-adapter.md
@@ -29,7 +29,7 @@
 [dbt](https://docs.getdbt.com/docs/introduction) 用于管理 
ELT(Extract、Load、Transform)
 流程中的转换环节。`dbt-for-apache-doris` Adapter 会将 dbt Model
 编译为 Doris SQL,并通过 Doris Frontend(FE)的 MySQL Query Port 执行建表、数据转换、
-测试和文档生成。原始数据需要提前写入 Doris;Adapter 不负责采集或同步源数据。
+测试和文档生成。原始数据需要已能通过 Doris 查询,可以来自 Internal Catalog 内表或已配置的 External 
Catalog;Adapter 不负责采集或同步源数据。
 
 :::caution
 
@@ -284,23 +284,25 @@ schema: analytics
 ```sql
 {{ config(materialized='table', engine='iceberg') }}
 
-select 1 as id
+select cast(1 as int) as id
 ```
 
+显式转换为 `INT`,避免常量被推断为 Iceberg 不支持的 `TINYINT` 字段类型。
+
 执行 `dbt run --select iceberg_sample`,创建 
`iceberg_catalog.analytics.iceberg_sample`。Catalog 必须已存在;Database 必须已存在或允许 dbt 
创建,目标需要可写。`engine='iceberg'` 会生成显式 Engine 子句;省略 `engine` 时,Doris 会根据目标 Catalog 
推断。Catalog 推断已在 Doris 4.1.3 验证;更早的 Doris 版本可能需要显式设置 Engine。
 
 | Iceberg 目标 | v1.1.1 行为 |
 | --- | --- |
 | `table` | 创建 Iceberg 表;再次运行时通过备份和重命名替换目标 |
 | `incremental` | 支持下文介绍的 `append`、`merge`、`insert_overwrite` 和 `microbatch` |
-| Seed 和 Snapshot | 支持;Snapshot 发布和 Seed 完整刷新使用备份和重命名。Iceberg Seed 常规重载使用覆盖或 
MERGE |
+| Seed 和 Snapshot | 支持;Snapshot 发布和 Seed 完整刷新使用备份和重命名。非分区表常规重载使用 INSERT 
OVERWRITE;分区表重载使用原生 MERGE,需要 V2+。V1 分区 Seed 应使用 `dbt seed --full-refresh` |
 | `view` 和 `materialized_view` | 目标必须位于 Internal Catalog;Internal Catalog 中的 
View 和 MV 可以查询 External Catalog Source |
 
-Iceberg 的 `merge` 和 `microbatch` 需要支持原生 Iceberg `MERGE INTO` 的 Doris 版本,以及 
Iceberg V2 或更高版本的表。这些路径已在 Doris 4.1.3 验证;[Doris 文档将 Iceberg MERGE 标记为自 4.1.0 
起的实验功能](../../lakehouse/catalogs/iceberg-catalog#merge-into)。External Catalog 
表的替换不是原子操作:两次重命名之间,目标表名会短暂不可用;失败时旧表可能保留在备份名称下。生产使用前,应在隔离项目中验证 Doris 版本、Catalog 
Connector 和故障恢复流程。
+Iceberg 的 `merge`、`microbatch` 和分区 Seed 常规重载需要支持原生 Iceberg `MERGE INTO` 的 
Doris 版本,以及 Iceberg V2 或更高版本的表。这些路径已在 Doris 4.1.3 验证;[Doris 文档将 Iceberg MERGE 
标记为自 4.1.0 
起的实验功能](../../lakehouse/catalogs/iceberg-catalog#merge-into)。External Catalog 
表的替换不是原子操作:两次重命名之间,目标表名会短暂不可用;失败时旧表可能保留在备份名称下。生产使用前,应在隔离项目中验证 Doris 版本、Catalog 
Connector 和故障恢复流程。
 
 Adapter 会在写入 Table、View、Incremental 或 MV 目标前拒绝 Model 或字段上的 `constraints` 
声明。Model Contract 仍会校验字段名称和类型。`not_null` 等 `data_tests` 可在写入后校验数据,但不会创建数据库约束。
 
-[五个可运行的 Doris 
Demo](https://github.com/velodb/dbt-for-apache-doris/tree/v1.1.1/examples/doris-demos)
 展示了 Model、测试、跨 Database Source、增量处理、Snapshot 和异步物化视图。
+[五个可运行的 Doris 
Demo](https://github.com/velodb/dbt-for-apache-doris/tree/3fb9cc75f9dcdd756b472847728bbdf42fb3b128/examples/doris-demos)
 展示了 Model、测试、跨 Database Source、增量处理、Snapshot 和异步物化视图。Demo 环境默认安装 
`dbt-for-apache-doris==1.1.1`。
 
 <!-- 知识类型: 能力定义 / 配置参数 / 架构选型决策 -->
 <!-- 适用场景: Materialization 选型 / 增量加工 / 物化视图 -->
@@ -487,8 +489,7 @@ where order_time >= '2026-07-01'
 
 ### Microbatch
 
-`microbatch` 使用 dbt Core 的批处理上下文,把每个 UTC 时间窗口映射为一个
-精确的 Doris RANGE 分区,并逐分区执行 `INSERT OVERWRITE`。例如:
+`microbatch` 使用 dbt Core 的批处理上下文处理每个 UTC 时间窗口。下例针对 Internal Catalog OLAP 
目标,将窗口映射为精确的 Doris RANGE 分区,并逐分区执行 `INSERT OVERWRITE`:
 
 先为每个直接上游资源和目标 Model 配置 Event Time 字段,使 dbt Core 能向每批输入
 注入时间过滤。对于前文示例中创建的 `raw.orders` Source,在已有 Table 声明下增加:
@@ -560,7 +561,7 @@ Doris 创建 Dynamic Partition 表时还要求 
`dynamic_partition.buckets` 为
 目标表所需的完整数据。同一批 `merge` 数据中的 `unique_key` 必须唯一。Microbatch
 的时间过滤由 dbt Core 根据已配置 `event_time` 的上游资源生成,不需要使用
 `is_incremental()`。修改 Key、分区方式或其他不兼容表结构后,应执行
-`dbt run --full-refresh`。对于 Iceberg Microbatch,不要配置 OLAP Dynamic Partition 
属性、具名 `overwrite_partitions` 或 `partition_by_init`;每个 UTC 时间窗口由原生 MERGE 
替换,包括空窗口。
+`dbt run --full-refresh`。对于 Iceberg Microbatch,不要配置 
`unique_key`、`overwrite_partitions`(包括字段和值映射)、`partition_by_init` 或 OLAP 
Dynamic Partition 属性。若设置 `partition_by`,必须显式配置 `partition_type='LIST'`。每个 UTC 
时间窗口由原生 MERGE 替换,包括空窗口。
 :::
 
 ### 异步物化视图
diff --git 
a/versioned_docs/version-4.x/connection-integration/data-integration/dbt-doris-adapter.md
 
b/versioned_docs/version-4.x/connection-integration/data-integration/dbt-doris-adapter.md
index 205cd1dc01a..5a26f337aa3 100644
--- 
a/versioned_docs/version-4.x/connection-integration/data-integration/dbt-doris-adapter.md
+++ 
b/versioned_docs/version-4.x/connection-integration/data-integration/dbt-doris-adapter.md
@@ -26,7 +26,7 @@
 
 [dbt](https://docs.getdbt.com/docs/introduction) manages the transformation 
step in an ELT (Extract, Load, Transform) workflow. The `dbt-for-apache-doris` 
adapter compiles dbt models into Doris SQL and executes table creation, 
transformation, testing, and documentation operations through the Doris 
Frontend (FE) MySQL query port.
 
-Source data must already be loaded into Doris. The adapter performs 
transformations; it does not ingest or synchronize source data.
+Source data must already be queryable through Doris, either in Internal 
Catalog tables or through configured External Catalogs. The adapter performs 
transformations; it does not ingest or synchronize source data.
 
 :::caution
 
@@ -277,23 +277,25 @@ Create `models/iceberg_sample.sql`:
 ```sql
 {{ config(materialized='table', engine='iceberg') }}
 
-select 1 as id
+select cast(1 as int) as id
 ```
 
+The explicit `INT` cast avoids inferring `TINYINT`, which is not an Iceberg 
column type.
+
 Run `dbt run --select iceberg_sample`. It creates 
`iceberg_catalog.analytics.iceberg_sample`. The Catalog must exist; its 
database must exist or be creatable by dbt, and the target must be writable. 
`engine='iceberg'` emits an explicit engine clause; omitting `engine` lets 
Doris infer it from the target Catalog. Catalog-based inference was verified 
with Doris 4.1.3. Earlier Doris releases may require the explicit engine.
 
 | Iceberg target | v1.1.1 behavior |
 | --- | --- |
 | `table` | Creates an Iceberg table; reruns replace it through backup and 
rename |
 | `incremental` | Supports `append`, `merge`, `insert_overwrite`, and 
`microbatch` as described below |
-| Seed and Snapshot | Supported; Snapshot publication and Seed full refresh 
use backup and rename. Ordinary Iceberg Seed reload uses overwrite or MERGE |
+| Seed and Snapshot | Supported; Snapshot publication and Seed full refresh 
use backup and rename. Ordinary reload uses INSERT OVERWRITE for unpartitioned 
tables; partitioned reload uses native MERGE and requires V2+. For V1 
partitioned Seeds, use `dbt seed --full-refresh` |
 | `view` and `materialized_view` | Targets must be in Internal Catalog; 
Internal Catalog views and MVs can query External Catalog sources |
 
-Iceberg `merge` and `microbatch` require a Doris release with native Iceberg 
`MERGE INTO` and an Iceberg V2 or later table. These paths were verified on 
Doris 4.1.3; [Doris documents Iceberg MERGE as experimental since 
4.1.0](../../lakehouse/catalogs/iceberg-catalog#merge-into). An external table 
replacement is not atomic: its name is briefly unavailable between renames, and 
a failure can leave the old table under a backup name. Use an isolated test 
project to validate your Doris release [...]
+Iceberg `merge`, `microbatch`, and partitioned Seed reload require a Doris 
release with native Iceberg `MERGE INTO` and an Iceberg V2 or later table. 
These paths were verified on Doris 4.1.3; [Doris documents Iceberg MERGE as 
experimental since 4.1.0](../../lakehouse/catalogs/iceberg-catalog#merge-into). 
An external table replacement is not atomic: its name is briefly unavailable 
between renames, and a failure can leave the old table under a backup name. Use 
an isolated test project to v [...]
 
 The adapter rejects model or column `constraints` declarations before writing 
a Table, View, Incremental, or MV target. Model contracts still check column 
names and types. Use `data_tests` such as `not_null` to check data after 
writing; these do not create database-enforced constraints.
 
-The [five runnable Doris 
demos](https://github.com/velodb/dbt-for-apache-doris/tree/v1.1.1/examples/doris-demos)
 cover models, tests, cross-database sources, incremental processing, 
snapshots, and asynchronous materialized views.
+The [five runnable Doris 
demos](https://github.com/velodb/dbt-for-apache-doris/tree/3fb9cc75f9dcdd756b472847728bbdf42fb3b128/examples/doris-demos)
 cover models, tests, cross-database sources, incremental processing, 
snapshots, and asynchronous materialized views. The demo setup defaults to 
`dbt-for-apache-doris==1.1.1`.
 
 <!-- Knowledge Type: Capability Reference / Configuration Parameters / 
Architecture Decision -->
 <!-- Use Case: Materialization selection / Incremental processing / 
Materialized views -->
@@ -467,7 +469,7 @@ For Iceberg targets, omit `overwrite_partitions` to use 
native dynamic overwrite
 
 ### Microbatch
 
-`microbatch` uses the dbt Core batch context. Configure an `event_time` field 
on each direct upstream resource and on the target model. For the `raw.orders` 
source created in the first-model example above, add this configuration to its 
existing table declaration:
+`microbatch` uses the dbt Core batch context. The following example targets an 
Internal Catalog OLAP table and overwrites one exact RANGE partition for each 
UTC window. Configure an `event_time` field on each direct upstream resource 
and on the target model. For the `raw.orders` source created in the first-model 
example above, add this configuration to its existing table declaration:
 
 ```yaml
 sources:
@@ -517,7 +519,7 @@ Doris also requires a positive `dynamic_partition.buckets` 
value when creating a
 
 :::caution
 
-For `append`, `merge`, and partition-scoped `insert_overwrite`, the adapter 
does not discover new or changed source rows automatically. The model SQL must 
return the intended batch. Whole-table `insert_overwrite` must return the 
complete target data. Each `merge` batch must contain unique `unique_key` 
values. dbt Core supplies Microbatch filtering from upstream resources 
configured with `event_time`, so Microbatch models do not need 
`is_incremental()`. Run `dbt run --full-refresh` after  [...]
+For `append`, `merge`, and partition-scoped `insert_overwrite`, the adapter 
does not discover new or changed source rows automatically. The model SQL must 
return the intended batch. Whole-table `insert_overwrite` must return the 
complete target data. Each `merge` batch must contain unique `unique_key` 
values. dbt Core supplies Microbatch filtering from upstream resources 
configured with `event_time`, so Microbatch models do not need 
`is_incremental()`. Run `dbt run --full-refresh` after  [...]
 
 :::
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to