QUALIFY clause does not work with incremental models
See original GitHub issueDescribe the bug
When using QUALIFY
in an incremental model, the view dbt creates does not exist. This prevents dbt from doing the merge statement.
Steps To Reproduce
test.sql
{{ config(
materialized = 'incremental',
incremental_strategy = 'merge',
unique_key = 'id',
) }}
with test as (
select 1 as id
)
select *
from test
qualify row_number() over (order BY id) = 1
log results:
create temporary view test__dbt_tmp as
with test as (
select 1 as id
)
select *
from test
qualify row_number() over (order BY id) = 1
17:50:20.156423 [debug] [Thread-1 ]: Opening a new connection, currently in state closed
17:50:21.114806 [debug] [Thread-1 ]: SQL status: OK in 0.96 seconds
17:50:22.030437 [debug] [Thread-1 ]: Writing runtime SQL for node "model.lakehouse.test"
17:50:22.031221 [debug] [Thread-1 ]: Spark adapter: NotImplemented: add_begin_query
17:50:22.031552 [debug] [Thread-1 ]: Using databricks connection "model.lakehouse.test"
17:50:22.031835 [debug] [Thread-1 ]: On model.lakehouse.test: /* {"app": "dbt", "dbt_version": "1.0.4", "profile_name": "limebi", "target_name": "stg", "node_id": "model.lakehouse.test"} */
merge into silver_limeade_platform.test as DBT_INTERNAL_DEST
using test__dbt_tmp as DBT_INTERNAL_SOURCE
on
DBT_INTERNAL_SOURCE.id = DBT_INTERNAL_DEST.id
when matched then update set *
when not matched then insert *
17:50:22.578607 [debug] [Thread-1 ]: Databricks adapter: Error while running:
/* {"app": "dbt", "dbt_version": "1.0.4", "profile_name": "limebi", "target_name": "stg", "node_id": "model.lakehouse.test"} */
merge into silver_limeade_platform.test as DBT_INTERNAL_DEST
using test__dbt_tmp as DBT_INTERNAL_SOURCE
on
DBT_INTERNAL_SOURCE.id = DBT_INTERNAL_DEST.id
when matched then update set *
when not matched then insert *
17:50:22.579077 [debug] [Thread-1 ]: Databricks adapter: Query execution failed. State: ERROR_STATE; Error code: 0; SQLSTATE: None; Error message: org.apache.hive.service.cli.HiveSQLException: Error running query: org.apache.spark.sql.AnalysisException: Table or view not found: test__dbt_tmp; line 9 pos 12
at org.apache.spark.sql.hive.thriftserver.HiveThriftServerErrors$.runningQueryError(HiveThriftServerErrors.scala:47)
at org.apache.spark.sql.hive.thriftserver.SparkExecuteStatementOperation.org$apache$spark$sql$hive$thriftserver$SparkExecuteStatementOperation$$execute(SparkExecuteStatementOperation.scala:418)
at org.apache.spark.sql.hive.thriftserver.SparkExecuteStatementOperation$$anon$2$$anon$3.$anonfun$run$2(SparkExecuteStatementOperation.scala:245)
at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
at org.apache.spark.sql.hive.thriftserver.ThriftLocalProperties.withLocalProperties(ThriftLocalProperties.scala:123)
at org.apache.spark.sql.hive.thriftserver.ThriftLocalProperties.withLocalProperties$(ThriftLocalProperties.scala:48)
at org.apache.spark.sql.hive.thriftserver.SparkExecuteStatementOperation.withLocalProperties(SparkExecuteStatementOperation.scala:52)
at org.apache.spark.sql.hive.thriftserver.SparkExecuteStatementOperation$$anon$2$$anon$3.run(SparkExecuteStatementOperation.scala:223)
at org.apache.spark.sql.hive.thriftserver.SparkExecuteStatementOperation$$anon$2$$anon$3.run(SparkExecuteStatementOperation.scala:208)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1878)
at org.apache.spark.sql.hive.thriftserver.SparkExecuteStatementOperation$$anon$2.run(SparkExecuteStatementOperation.scala:257)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.spark.sql.AnalysisException: Table or view not found: test__dbt_tmp; line 9 pos 12
at org.apache.spark.sql.AnalysisException.copy(AnalysisException.scala:71)
at org.apache.spark.sql.hive.thriftserver.SparkExecuteStatementOperation.org$apache$spark$sql$hive$thriftserver$SparkExecuteStatementOperation$$execute(SparkExecuteStatementOperation.scala:410)
... 16 more
Expected behavior
Expect view to be created and queryable to execute merge statement.
Screenshots and log output
If applicable, add screenshots or log output to help explain your problem.
System information
The output of dbt --version
:
1.04
The operating system you’re using:
WSL
The output of python --version
:
Python 3.9.11
Additional context
Add any other context about the problem here.
Issue Analytics
- State:
- Created a year ago
- Comments:11
Top Results From Across the Web
On the limits of incrementality - Archive - dbt Community Forum
The easiest use case to create an incremental model is when your underlying data comes in as an immutable event stream and your...
Read more >Implementing Window Functions in Incremental dbt Models
Learn how to use window functions in incremental dbt models by following along with our step-by-step implementation.
Read more >[CT-547] [Bug] incremental materializations first run doesn't ...
When running an incremental model for the first time it doesn't use the unique_key plus incremental_strategy. This means that if your model ......
Read more >15.10 - QUALIFY Clause - Teradata Database
A conditional clause in the SELECT statement that filters results of a previously computed ordered analytical function according to ...
Read more >In dbt, Why is my incremental model not registering as ...
is_incremental () behavior. Have you run this model before? How are you running this model? I ask because is_incremental() will only be true ......
Read more >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
@binhnefits Thanks for providing the info. This is a known issue with SQL endpoints and the team is actively working on fixing it (likely by the end of the month). Will give an update once the fix is rolled out to production.
Hi @allisonwang-db @superdupershant I have confirmed that it is working now. Thank you!