@@ -1891,29 +1891,45 @@ def test_model_normalization():
18911891 assert model .clustered_by == ["A" ]
18921892 assert model .depends_on == {"BLA" }
18931893
1894+ # Check possible variations of unique_key definitions
1895+ for key in ("""[a, COALESCE(b, ''), "c"]""" , """(a, COALESCE(b, ''), "c")""" ):
1896+ expr = d .parse (
1897+ f"""
1898+ MODEL (
1899+ name foo,
1900+ kind INCREMENTAL_BY_UNIQUE_KEY (
1901+ unique_key { key }
1902+ ),
1903+ dialect snowflake
1904+ );
1905+
1906+ SELECT
1907+ x.a AS a,
1908+ x.b AS b,
1909+ x."c" AS c
1910+ FROM test.x AS x
1911+ """
1912+ )
1913+ model = SqlModel .parse_raw (load_sql_based_model (expr ).json ())
1914+ assert model .unique_key == [
1915+ exp .column ("A" , quoted = False ),
1916+ exp .func ("COALESCE" , exp .column ("B" , quoted = False ), "''" ),
1917+ exp .column ("c" , quoted = True ),
1918+ ]
1919+
18941920 expr = d .parse (
18951921 """
18961922 MODEL (
18971923 name foo,
1898- kind INCREMENTAL_BY_UNIQUE_KEY (
1899- unique_key [a, COALESCE(b, ''), "c"]
1900- ),
1901- dialect snowflake
1924+ dialect snowflake,
1925+ kind INCREMENTAL_BY_UNIQUE_KEY(unique_key a)
19021926 );
19031927
1904- SELECT
1905- x.a AS a,
1906- x.b AS b,
1907- x."c" AS c
1908- FROM test.x AS x
1928+ SELECT x.a AS a FROM test.x AS x
19091929 """
19101930 )
19111931 model = SqlModel .parse_raw (load_sql_based_model (expr ).json ())
1912- assert model .unique_key == [
1913- exp .column ("A" , quoted = False ),
1914- exp .func ("COALESCE" , exp .column ("B" , quoted = False ), "''" ),
1915- exp .column ("c" , quoted = True ),
1916- ]
1932+ assert model .unique_key == [exp .column ("A" , quoted = False )]
19171933
19181934
19191935def test_incremental_unmanaged_validation ():
0 commit comments