From 3b8804d5e887f4b026da6fad845264cd777f516b Mon Sep 17 00:00:00 2001 From: Mike Gouline <1960272+gouline@users.noreply.github.com> Date: Sat, 2 Nov 2024 15:56:33 +1100 Subject: [PATCH] Demote field ordering failures to warning (#290) * demote field ordering failures to warning * tests for source relationships --- Makefile | 2 +- dbtmetabase/_models.py | 9 +- sandbox/docker-compose.yml | 2 + sandbox/metabase.db/metabase.db.mv.db | Bin 290816 -> 303104 bytes sandbox/models/staging/schema.yml | 15 +- sandbox/models/staging/stg_orders.sql | 3 +- sandbox/postgres-initdb/init.sql | 4 + tests/fixtures/api/card/27.json | 4 +- tests/fixtures/api/card/28.json | 4 +- tests/fixtures/api/card/29.json | 4 +- tests/fixtures/api/card/30.json | 4 +- tests/fixtures/api/card/31.json | 4 +- tests/fixtures/api/card/32.json | 4 +- tests/fixtures/api/card/33.json | 8 +- tests/fixtures/api/dashboard/2.json | 8 +- tests/fixtures/api/database.json | 2 +- tests/fixtures/api/database/2/metadata.json | 215 +- tests/fixtures/api/table.json | 144 +- tests/fixtures/api/user/1.json | 4 +- .../exposure/collection/our_analytics.yml | 2 +- tests/fixtures/exposure/default/exposures.yml | 2 +- tests/fixtures/exposure/type/card/33.yml | 2 +- tests/fixtures/manifest-v12.json | 8146 +++++++++-------- tests/test_manifest.py | 17 + tests/test_models.py | 9 +- 25 files changed, 4567 insertions(+), 4051 deletions(-) create mode 100644 sandbox/postgres-initdb/init.sql diff --git a/Makefile b/Makefile index e0461b8e..2910d3e9 100644 --- a/Makefile +++ b/Makefile @@ -69,7 +69,7 @@ sandbox-models: --metabase-username $$MB_USER \ --metabase-password $$MB_PASSWORD \ --metabase-database $$POSTGRES_DB \ - --include-schemas "pub*",other \ + --include-schemas "pub*",inventory \ --http-header x-dummy-key dummy-value \ --order-fields \ --verbose ) diff --git a/dbtmetabase/_models.py b/dbtmetabase/_models.py index 08d5c853..2923a4e2 100644 --- a/dbtmetabase/_models.py +++ b/dbtmetabase/_models.py @@ -234,7 +234,7 @@ def __export_model( ) if order_fields: - success &= self.__export_model_column_order( + self.__export_model_column_order( ctx=ctx, model=model, api_table=api_table, @@ -254,7 +254,7 @@ def __export_model_column_order( model: Model, api_table: Mapping, table_key: str, - ) -> bool: + ): """Exports model column order to Metabase field order.""" api_ord = {} @@ -295,14 +295,11 @@ def __export_model_column_order( if dbt_only: details.append(f"missing in Metabase {dbt_only}") - _logger.error( + _logger.warning( "Table field order '%s' mismatch: %s", table_key, ", ".join(details), ) - return False - - return True def __export_column( self, diff --git a/sandbox/docker-compose.yml b/sandbox/docker-compose.yml index 71ce9ad1..20bb480a 100644 --- a/sandbox/docker-compose.yml +++ b/sandbox/docker-compose.yml @@ -11,6 +11,8 @@ services: - ${POSTGRES_PORT}:5432 networks: - common + volumes: + - ./postgres-initdb:/docker-entrypoint-initdb.d healthcheck: test: ["CMD-SHELL", "pg_isready -U $POSTGRES_USER"] interval: 5s diff --git a/sandbox/metabase.db/metabase.db.mv.db b/sandbox/metabase.db/metabase.db.mv.db index d693a78001aa90c629c91239348425de96d553e1..c3703daf12bcdf7b12b4cc4bc7ec298e08521c9a 100644 GIT binary patch delta 55368 zcmbSz2bk1U_x`;}CNo><3+w`WlbM}e%0MznCJCs_Qmn9|U;|N71sh27!#3a|ARxt2 zhA!CXu&~0?t000RDi#oM0kQXrDEdE{Srz^1=lA@1c=n!ibCcY;x%Ir~J)>(IjNaaG zT1;?ENs@J0Xy*o`v3p8k|sU0c6S&c%6*shxvb)nKDBuvdh~NYpRUCr)XP&Ae0=sRPq{XIW!j5pJ>{C( z{182R)^}C4D2eiGb3#7KH+sq0!?pM_l$XBiUfebZjcOtiArba>={02RVP#9_#M`&VpCas#BNxzs< zuTjwf>ahT*v#Dxk5=m7I!jG{(Q=NSve>4bx-=zz6j-5n`sC~G23|UB4kX2+md5Ih# z<3kfe(?Z+Z&6GAuTcv~2Yf|wc=`HE7bWA!dACcdYkIKj703bU!95q$qA1JY_o*Qx-mhiqp}T6SdQfUQbrc)ZYY~apN5^XY_0e(f&%55A zTJO)vT3>y3d-)T%@0#)fYY7VY@Y#+J;=Z4DBsl{RJm3&D5%)b*OO5w!p`O8gx70HA z(c&`iuET}Pao@v*1L6d69enk6+WyI;ruFUkW}4j^I1+e-q^1tW z>)BOVk7P}SrWt~lus;Ms+0#kQFGKKGxQx&FIOkE4gR=N+K8Mfc^Z0ze9$%ktz&GR@ z@$gJ+XHUs}jMOw8hHt{`?7TyHkCW7W!|`K@`gv#aQ-p$7Q{KyQF!!B$GfC6ThoWC# zAuo>Tx5j4D_v_N{GAYBe74a(y4Xn(}_A^LtT2HEvr6cRoN&5<${q4VY&3KW&j5qjE{B+DONqsj0w{G|o%_kXt z8RIoomwGqXpGi_>Bk=|71@){3Am26;$3R}x5ah)f`IANy>YOoCkSHMxGc1 z`4^D=eVVwTnWR~&&wco^T=@B@Pm|Y5AOof5-G|#G9%lH73_pqCCo}vb3_pe8r!xFB zhM&&xkEWXo%1;S<<)Hx|WBA7zeg?y*7=9+h&tmx53_pkA=Q8{}hM&*yPcZxfhF{3= zPcr;d4F5F4Kg00PGW;TjU(E1J7=CHynbQikmd+&Y(6R)>FK74_48M}$S227Q!>?xe zH4Ib~#PFLLehb5IW%z9jzn$TCF#Jx2-^K9HGyHCb z-^1`PF#KMIf05z$G5mgpe~IB=X7~dP{|dt&WcXJZ{xybwo#78L{2NR@|7NB}g9~0Q zn?q8s-G>L|j%<2E>$#*pwU;WwsiOY4FlFA4d$CT_?QQ0h)Q0=<&8*w(&bA9ls`vps zprC%U2iiUP#|T4Cv!ckNbh(@I@WsuaYQGq!>Mc~0Udb~nF3P&5HoF|Pul1Furr(8| z7X>ayeQL8WN8wuEZWC2EC=5zIB-_eJ#!uMyUrSD!A0O~v&jHDt8c;R}~VH~VDVcQNfpi)u$mjv1PG4T9|By+ux@7XRrc|WMXC28; zr`aW$>)Au<(#@GP$A2JwJ;%DbE@OUO#wQi&3%P23CVe1tJ$GLw%`3=U&#S9Q-pacC zvycAmM9{2R`=V6U82pVEc;xA$%=$AD`f)&B!IRt8urn*eXgV|gmI}evym3BDWDvy#HE<+(8?DBCFddB8m@37RZu#O z^RBcdD>P6BjmIUJZ5Mn(2j%ezI1I)3uRDUW^I@-8`%tJ8C|^#*W$?7prWb%xJlT6% z`|u?ff^y{}-j#N(H(dnE15>;Q2xZ@N24&e)+yZHrPT1N8!{GlK9ZhG#ZfAqIBO2SPwaMOg*dFV07|8X5W zYj4sJpGAd{xcs1Q3}fc1m&ll=Fv>3$l?W1kqq1$i$Got^4s$RXffQd7`pu4)t#Wh z5EWC7U9p+8r~2kENq?f>hQm@Qw|UNS|KhO)Xc^qU8}2`NIu9)e`Goh}y&PHr@_Qgp zm={4S6L7<0bC3J04#;Q~TsQ<57T5St739x&>s|le+0D^v$e#=OwfkAL24rYS=EFzB zs2b!IARqiTfSv<+gO|UdIa&+%o_zaVf7Oe*XdSf1oWsx>AD5vTD6`WmzqJsp2YC<3 zi7zKBXagum;q$y5LmLO=qT?i&8T|u=HbM3mQ0C0SPG~d8UTc3jT1Q*p`5V4Ho9&d-XgZ#3W|4a$m0rJ}*dkwi0?)~ArQ~uhmGTH@l;+gMH z`L}=20zD6fc0r*pr)8tvAbXXYc~U@o>Ta%mycv1{rEA3-WjIJo*uWUWDh2 z`Qem*+IkV~19`@*kNn%0_|bkSG7E}Nc)2Bd3FLVodmr#+ke>zlOl=q?4uG-}l=aEB z=oPqme!{n7UIurDf1WfeID}SD1TL5y0tESxh_3g zmwuAj%H{vcrpwoB%+}50Ma?;pyNolqQQUOQEy3Qhc0tFjJ-3k5w7K3+t>c3gAitcE z_guM!Bo|(;`Z{Iz0_m71Ra^y9^D96)bv2aSF%Mtj@6%~X?=7$qsz1MOBh>$b+&)`K z5lVh~MMzzXxpkPU!Q6VxZNS_{%x%KlX3TBD+*ZtO!`ybv?ZDhl%^E+?S1)-+BFBlB)j{?#T9ucf8?6QghW) zxB`>HE^qhU_qVHeX_ue+y$n@;8gl`?>jgKyLNH2kH{wQGe^(denCqH?D~h5j2})E{ zbrt?Y`=G{M%laRLRiEN8vu|pZ*QThn>)kiKntm4PjD211yZJTZ%Y3B<#n;32IBIxm zW;$&=^iVo&a?@k!w4m3FblTLoR%p|#d5adQsn6hw(#1G0q*m37LBLda0*=@-KLkpAnJ#%XYJd2;B5*y+lvxY6k zqA{IQ%2#tosE96buHVpHS=A+h>wu#gsbEaWkrYzvGfY>D$mNyUrlLv_$2D!u;4v*} zW+)z}71fZ)rO4rJe?+!)D`GnQ^R%m*8o$&h>$>3dBVpQdM1c#?5oovs8O8q)96&pI z#3FZbt@-~@F;yQB<~5%wMxwe%!pP!ZY+yKw8xaiEHe;HlSf*PF&v69D2;Pn(Iw>GM zkr7-;*}BW0MJDON3QEkih3n&CzoROWBS*ww5AqS0o1;flf)UZw;Dxy{S&$qt784y;n8)3WqXItw zI|?@*sqtOGUsAo6;=)9iVDK6KF3O0?{3%+OA`&kJG+DHTm@4gvR|M~*WeeJ?AovI? zo4Oj&qWmmclno`g(4iaW1 zu%qaT9$bm#C>g;BHgo`zILoS{D%vqUcok(^cf$`<6n;)<7?xeW6)o$A#$QYcYNR|H zIo!L9A&Ghd3aMuBF)l#qvP5)UDk7L&%BPiQg6R%)wM=)Z+2PwsIg9AcM`BEa%isCpWW3g-pgU~xF_}Qsn zmf^C*bpA5z*d-cPo!}eDEP0NK=}Neim7=zyX=|YxQupZ>Pr~r&U!`P0usALyq zXm)5843e9dh0k&IeNn~Ml&&P~Q({poCY3PO8{Y4^&ZpUGL~^;+STaghQI7C*d@d7H zV|J9gr^{g;h3?0uT+)fLOhwT67U9paH~p{|_FQAUM%qwai@lkGq)Jxc>(!cgDYgaD zwVrE49NmT4A|{Cu(=|wbjs_h{)Kyy+)yLwcSq^kA9cB?N7QZ|7$O_!7U}OUqMw+O{ zB9bgh5jh%@BV<)-(+XUi^BL>fc0?DW24rnz{G|^K#SK?W?ck0Gf zxENoQj9=RrSEZ(}!sGL^4cUn3wggk2$iJ8>t%8lRmb$76U)^tGd<2dO!B*rbR#pB# zB#T^+Y;sSoZfh}3GNXbnyZ4X^Hf9(q3?;s#Ykj|@XfVK|N|)JLlIuuOO;(*%@d}?B zHKM8xbGGh~PeX;NBUQL45yEsNDl1(+Ml#n4%UbX)emVaUR<+y_hZzkYFz`luVYIMegl2{KJJ#F-9Xo4dc@Eb!;uwHQDNA@aF3am zt%NS*r*l8#XhT(E z!M%)Q+DbEc-&2&Pn?Vi5`1Ok6}_OS&gKNN;*)wDwZsu6m?O&lv|5!omV_ z1XGjsE%9ABu3?y#8;xj&>~I|$YfeOuI(9^nWmSV^NHQJ!Ia2D=VBlLinc|Nsk^)P% zO-iw2a&f;P8k%CdI_ZxXn3`l!&@_c>3p4k&0vVQB`0QFjj%d098-=K3nlWQiyn>Y- z&C&&t6Oc?k<({S@n$7XKu4-ADp{uUsSnK1ZekG=u3asy>KD^G1a)&7gUix8n6m~5! z*@VTb4;jhA45dqo%&ms5hkRyCf%%I30JFRjzmoK#1T8TxUXcx>Sd?IDa!r+6#3;HE zF$j+$+}&BS9D|LKsfxWx1y%*_G;2$dm~0!|MC6bUU_3co<80LwO(zOdwLQlh@4970 zHGUvv3o>7Z6z(uAk>x(sbX`R)&!!yp(Re9kNHVw6CpV3#j;525NaC0HWk-xS7PRGd zU#jz3+$6zG!nVodfTVjH7fV&RBeYe!8hv#qFXS%whN6q{Rv1&!;J z1+!Wt;VMzb5Q6v7h92`qz}{=Ct=C9%s;Kzi_KvW{NN*lZhlGpmsHmx4U136kRRfyP za4k7vDpAvoLQkSK(d-fr7ehx@plce?d7-kFl86|V0CT$((_IZ(*QRWZkT47QLA2FNRL{Qsp@)!vJ9Kdp(IO!c}&O^bzN~J6GoDu ztsuK{bZ@P)MJ3`W2I<`d0IvwFIbuZD6IvA7QI@rsc?rB$jyaBG#3GjCs07vrGd?%p ziYSV#$K7SwGC=uMg^=$gSXIHr(KeO3%MktTVPe3T`p4-kSC9Sx&F zH&jh`Vi9f-*^OMT9(luOMjTj^xto2m<*L#quggI<>Cfm9$S8<2aUV z3xXj?#y~Q^o(X7P6xMi2OqecAKPI=D?C`;0jlzoCnek33m%(thyvbK3LtqBu-iF2T z(*}laLH`wOC#Fl595oc0gtHu55oObexC;3I%aU;tIprqt`OT;SrvvjADB?=66xj}J zDo6_${i?SpleVm6B%)5#aky76ej33J^7s%k5+0e1}U z7Z^MI2#(}BF__a}hi_V@(;4=r3V#D@!iW+rne1X+I0~4uO0Ldh}fz|=EBBcP(eVqMKhuZvdX{eQ|+jxKpzgOJ{1;$h|5hSJsAn6WtVG!qFs8z zPF)M$gCz>ysFMef5U)l?*Kx=R-c0MUn8HW7{(ez&B`fN{aAvypNA_!^1=YMbbquz7 zHOdBj1Sht};V5pC>p6iH;e-~EZSp+UW28502{FmG6z&(wQmW&n*_tW9)DOQ3I%p#l zObl4c-L%q#p3~`csOcaBusg5}aP5hQ#rVYKV@;i`BQ!RT4Y@r-i5e?YmD{_om&D&%f>CH&Cs9NN6Ml%%S zcIefv4a-lI8;eDU%%${%;EbuFVZC+8FIW}1PtZa#0=m9w!(4nXvV)B%7$M|Iti{N3 zN;B*(1`^3htSlH%nq?WW7;Lyi%jG8dY*mk#G17+>VM&bICN~{+H33*vL^0SGi9rFw z%2bi#swNzsp=+wP#l6XV!=mq1rE+wQVwiF z;qb>j%m@)z*5W;}8iiioD#wBCSyYmuuw*ImIcy9zm!@FzQ%GCC44Vy@rY*7;y4PX8 zHv?0qJ3d}YYv73xuken9TxXwRLSIw(6-YUBqPYzsaLn-#t9=wk)0TP znkcM~O~Cj7V_E`K&oF`_mWALg+{>&1CWL5A0>BBjW8wpFVuk^$IWP-cBV#`Z_T6?cV!CpO1zmacvW>Kz51<8+UJ6+)A@Z~$(Wd~ z**7DtU)Lp*Uhm9E={xbY>@s`PEr&?WjGg!yfA%fTk%5O`=e(#adHl7)ngRQ8J&d)Q zA^Y(Gn$q=}_$&A=9C)cI*YoB6pZZfpuj1x(EuLGWzKZYjQJt8YwQu6X*#FwLvc0Hh z$JETXaT$ZIAXaMk+xR%!`2N@+c-7LwIN#6infT?cplqwf+jH2*#|*j+lyRTpsd?;8 z^IpCklon_4^?vr=WfSiJQ1kA6GN$&8sk`vm`khaG>`PP!c87>>SoO{PkU+5RvK^$nO8@s-fO<`ur^D@7KNfuv37uNh*POYGPR6Y|GYO1?>U4zNvr7;-l#KlG>SWwCGME&mTF zdACrnWV3~>`iuhQ)Lm5LTy|Q+Gxvb<%l*{ET=u1qd@m?dCsKRz*-qlG_knWbEJ_Km z2fKH;AC#F3seKGPt;@|1fHLS=Y9hlvTJdrMl(S2zM||wn+eTwh9;u=(rPyAF#(2s* zYpBySd-c8tJ!Q{2>WGiMVO*uBJiD11$FTM6HDx z&vgF&pI@KuQ#TKuolcFVnLcUlKa$qntV}vk$)va5*f*Vj`}o3idguPx>2%2H%wQP0 zGgEFvex}^rGa6(HjM|(@?>%xn6?%c{kUe<8IH*<=YJT%1{-&U2*bCG-KReJj9x`i2 zzCs=Lvv+Nt;3?O; zL1|3=*t9r#=joO;r+=U(1o9U5d?cNFwt4Y1oEnX(R%>U{g9GfsBU8Lv^Rnn?0_>*z zsh+aF0iB!0R$nsBQ}z|oR)Br})O1ggg7lq!c4x_>p0cP7U6#cjZ0tr(*Qyzw;=hu9qkeOAT?)SmwrPyGIJ6x?T~V`{_&6y_ zO`nU!M02i?E8@KTrfBLc{I2Ir#RvF|0}JF*ernxpeBw9sdGyK($c&@W-%LrTV>;(& z(n)pco0uehET0freDdQdQ3On=(Pg(2IC78`xx4=_sZ}Ex+#xL}g`h#e|g>&{k z=_%#6(f~&1k*7T6&fC0Vxwk#-Df4gl9#F6UGoJF|9p07vs%Jgr$2+}y8oa;AQ^G^M zm)1YD*i-u4{ugQZ*=x{L^*!_r zRD5tM|6Y1bS8%|ZX$ z%Of7N99Rh7WAxD+4_Z!Rn;u~8y;W?vZFTysk^Db@xan}ycz~0)&(1{;!%fpkUV_>C zLN-dmg>OAP`ME}EY$HX zzMe{B%kP2g;mkAOp&x@>^-Qxgw*1zTWB!9D^V8V!!%N8|`Y7#T%V-;vIkQtpW6{rp zJYffip7tsS*z)MleQ9X<3CMr@-4N>q%Ymo7E}S@4>a`iwqxh>e&}IT< z<}XfvjNdvq_*w+k0-*fmcMTDM%jq{xINUr9E_;~&`tM`}$ToV@d-67)2QCLD0iIlY zx)iO1eD6cPJwZ=n%O^peFw>U?qfdi;@Nk2K2QCNZ1JFErP4hIkoCZd#l{C1#4hpUR zNb|tuz%c-n7w^JpaCz3@cm3N}`8;qLZS`I-NlSyvUK4!yG)aTY2fP=25JOc^=2b8M zYy`mNJoE|3Rhv7e!R4Pw0@`nb=AN5J;9d-qaT7oXAZRU(B;7MfHaR@RhUMX zy>Ip5fre>x`4Gqp_O|fQ<-m7zx()I|0F|E3uh5AGX>|D)kUbdrMX21vKM<8(+B}U$Plo(2lUW|T9GK%l z%^TaM;pGL8U%Mm&FE0am@hO51z`bi{gFD6y)kBxjF|W-0CTVo}dyo^}fb-zx9|6kV z+t@>w1C?_=@>gwa;6d3a-4M^^q|xPB3&1G?@)p8*DN}SA)8cZb3E|;2fq;7IAY%X4AjGB&@zy>7i zqSimJgNHYRJ5!|VxU{O_y!GPr%ufZ-a18ko)%EJT1}Mr2uu!qF@m1N)~O5Cj=42T{wdC6zF9RIvD)C62vBd=uv zdI#2JFz-gl$1S1}*RTaR7=lT{)tZE4*8*%Q>P8&Xw96w6!Dwwd7970+E>2j2CMaUG zwm~J8EvlT~ueBH2%h}BG0b|$~Hm+e8SBdd4e=-Bc-}PmzfZUX9{SPA`_i#%<=LFA+ z>DsCokwvib16&UF$Ec|Ra7}7()U0hV<^=mNOmvm(&tt0D35hQ|!S8TH9Sm#adMX+f zxetonmNr?y=h<-G<8P;Q>h4+0Y|swm=0}( zSK=#TcKxvny!O|0Fy(>C2as6q1HbNqbcnglmum_5l?T0mC&;fcwR2sQA+NtJ%HVWAVzYXd1)?b8<&?08q z>=k?ri(oq>Zv|)hGDa`{A-2xw6>RELG}V?wubKJ8%=)rng0&(hYY|&;z-A(IERKoZ zqpRW3JAbTZzkF1RS7J>hW5Ax_&>oZ$T1bIWl+_a; zU6C!aq>&;5LL(Xx#dR%L2iFHvwY*0^2akSt$(w8fT%X|Ck{ImAN&u?@M#(u?5KBtH zXz?2o4Xzp7EqpQ?Oy!0Jb~Z4jhq@z|WR)DC%!n9jLF=NZ@SAEIR=&q9%w3B;f6Hx) zU>mfnC_cugY5+!o1qT}{jGdSQaIRT0&L?|dR6;G80SHZ~WtJhE4j?mj#3A335^UJr zF9XkrF}|1{1$%C&`^kpWYnd^yYL8)O&xGC3ZXO;j*@CKy!AAfAbAu_salWR~m@{DE zPjFAM9^~946zk4lLnvuZDV9p+1z(^5a0@mHU&I<_ETIUBR$Dv^Y`EYcoIW3x^5iW?A1XW~|>@NmGI2ik5g;6kE85UU2)cPZO4!&p5?YA2p zl=cECtDh>rpKg?@e2#8KmGw?N^&HJ5N{3M*>0OeAhYqSm0vd7JKN_}0C)s7+obvB| zKBwHpx)Ht)3pQDS0Y^AV0gk{K2yld~KX8OFd<~hyD8`*ec3GF;3=G4qF?a!$U=O!Y zTvgCi?G*VIc3G9|{+S>7r~S|ZrUN&c0PA$w2?nf!*bpOJa-`@W2=F?1Lna7nID z0!S`q1V09kh|terANO$y&+39Eg0-ESiKCL&_cz01mu?;(_;P96cqLN1T#79>*bORG zG8!2i#dpd3GmgoBO-52?RBfFQgAeet;t#<0h9BWt-N%F;LHenN!#`ki(H8h1%lD2C zRDEiGjm*nk=rj|sXtudGGz7&;j$>CV8v~Fdn8*R|XUb-RS4S~mf2*T!SpbzLY^&`d$`vGT5>m^$wbsLrV#f*1 zX8^4ctdm?4wzieNr%sFyOql0TzGxJHYzsWT99aroUzPx{HX8me?TFMaivmZa%NNsz z9koJJ!z_wj+zv-$B^0A-YQzcs0*3ml%a(k^Er2a@CHv~f;{%JgCEAtyLlqRD=m4Ms zie8>ub~n;svW=MGEF4wH9Z0x%B6i)@Mc~(yjihjM_}q4xf;GMDWlD>Q{4%lx2`9OF zu-S&W^{2Uk(Vuk~P|2i0^)^3qucKJ-$MTPmQ__GmYSWHMjKuW;e&?LPSH)%J1@iyykaZImd#4SIG5{*GiLI@RC~+%(l>8-0wu^|qb(dy+b{jaIV;Pu_)pAb#qt8f`m$ zF{Td7snI*=EAhV6!5#F&)Dbz=ZzmnXr&FVM((h33$f^FjKz%Ru;4ZosbyQ9r+64#e z_Ng;o?y*$M=jmzGaXGc>c~DDIhn}Zg$!LKBVFXv)7=mJ-QCk zE*;r7HsHGfOf7d7GYw&PEDxUfJU&b4j74tFnT%azZkKD*JLh@hNIHFb@?6}YS))tu zej3W*@SS^h!#$X)!o~7#y5GJ0Ae-;VyB1(NfG_YhPwb}sm>urh1Ep$~@1e7N?5+3( zPuaAeZrmb!{@}f!G@|x&PBqA)o1{MffM#=#;$!$YE`Ar+;*;w>q$9bJ`86-%b6!It zA8_|_QGL`H6(GVCaZC%IX$duBg0mmnhkpf@$E;M}Z|R5mgVJ=WHv1V=QtP`0j~D_- zn-g&dIk(%9k;d&KNZ(pI<@=828T49hUaH-9ba#9xHS{|=j(4W2zXRjNTd8-xqwmFs zQ`db@uf@k|@_wKPV)oes`|)V5=H4@OV}^Zp+DrIBF7^1&^o{JZ(_hBpxzrCo(@$i> zy12vZbWgRaS#XYSh!cySK7c23c^P8H($$%kU54`0ExPQgI(@;EjQ(vVU4B(XT3^1n zF8w8wzvB9gzM?9lufzw_#zG57$s^2S-G>x~GivF?V3Ls_>Af ze8e)>Vz&CHH$0_#fa#6dHS^!}l=)eVf!XKiw>-s{!}P;!&Dgg+#m!|pV|K&5!=AD% zk4a*76LrK>y47RmQ0$gT?|91T2FxzZZod7fr>tzm+)QQfk&od=xK`A;JUERtuMr9u zg-z@^b{tRT7=)P$im9NP3Wo6-2esJq>$`Xw>_vZL(iF96(S}QRb5yYBqgtHwZYrTl z>2^#emwQ1tfgj_tk;l5>5zYC4m{*@K;B$kGgWe;HUTAv~&wxi3@h$k4d@H_~C!KkY z_pUX4q3BGTsoTuFdA$rg}dF;crI7{3v_+|H7~yM zKAy)Vn+7Xd7rywz2l(mCEi}hxp5@(w%zcAC#7j9J)ucJ@-hobSyB{}8J{{~-ug$)$ zAK_&jh0xb+1?4Yh!;`cjhR^PEZ7Mz$IjjGGaBuG^Ao%hS_E^@y6NUF z+P~vdT;+WVt_9bUYsD3Fgo8~O{A;lP{m<}fXbhl7rZb9OYWX>?_R9VrURBeVlGMhC**;LYAI>)wIt z-XZ;C5A^#MZ$0nFHa$@B9p2{E{7*dRrU#tw@pdo!e2YCQKJeHN_{UZl!?WV3y3T~M zc3a;DEpI?5aP6M2&%osd)S<%SOE0VD$}R~cvadP1>_^CKNo|T0-_W<;js0)Bc>uVG z*^Yb5z(Kd(cKaQ74jyvX&|$+zAm)bR@vkrJ{O$YCHeURAM>PJ>!p^D1?`7@XqM|-` zj<~~ghTdE}*u8o1P#Xy4y@!t);&kXT=$6aw9PZrW3`OPjrLKcVWZgNO40g%zfeslh z#Pdd1pAxp>Tz383GF0IX;!mGwSiL;j*q^B9&l%?R-x@Ie&K!Z_+3fM{$NlSHD`wGTj`vDEC^#iiX zIit;(M(*Y4zG&o&thZ6%HqLsVT+P-(R>M_ZwR$TSZXTNATze-fAH-?)C{O>Me+HSy>!@Z zBZlSjmk$|X-ag3cX^j{*d@yqd^s?;j4e86F!;yNZ!S;Ggk0HjWJ4h#-{I>ITSFQPQ z-8d>$?9Z&x8{22r*p2rbfY-*+#yy#}c2mQ;^rpIWY3BN-Gx_Oqn=j7)&Aym?G_HzG zzg+)h_O!K81iY8?4SP#Ses-OS&a=?L>=ONG!gzRp^~dqH*x%v97bbX0QI|687d~$N zu%}$swKXW8jhg5w|LF#b`01sSJY`Y$HrTIxF>kV`ymfJVoUMKS&Lf~Sqb{n>zqAc5 z@ZQk#%WJ1VULkc!J)q!t7Q*BOmrYKr1>fyI4)SQ-==?z4$s5&xTz6VV>p`wN;Gzv6 zXHKOe+6Z#p!4Pc%x$Y!~HiKMu{6bqm&K#QBpsgU+op#VRkP~$W6to?b%%LKJc7U8Y z475W#L9W}v!>>Td{+gOf%`C2CCv9HS4f5h>^Nz8Z^x*TEw3f-FU({XyWn5a{(vZ!h zr59&DREuVXf5T3?@arF@!Am@PlFELgP4{G=CxLwbqaXu4DdxZMo2^MtK9-g%AM@nq zSH%1k-_$(rmG?+Wfor~PH3O6kODPXtjrx7NI|Vs~X`0d<|2s_yZpG|(=Vnr~it9K( zTM`+td|R7l>EE<{b>nopW0kjd#L>>B8HbEro8FAHE-Y-(;?V?24(ic9d?S#4Og9ED zkKm^KXSYzrQ9ZX%@T|3yGkWySUi!^-v*3*ps%P@0p)IQOd+wkT>;DI`j|$FK|4#M^ zg1-&eO#g-K)0g~-?9==2$UfSDe<%Bd;W__6_DPQJ)vWaIm_6W?1g=egrS`NG|2wB= z?*HZVB=fE+?El{=J>WR{@01?!=lw@YPx9ugnk4>2;rTOzXC(ZN^B6oBNG8J=4NPn2 zGkCzc3I8jDXZ$}hcy2q7!n10?zcYB0|B1n~3^4ou%iu}gboD%oxtOTg-H{5 zNa7ywJ_D~${=XA>p8Izq&(Oao^5p(b#*m?_&@RL~lb`F~5e$p=SrSr%jy zV(K`qIvkVp-(I|Ctt){P+*LDAv695LnzNU zpCXjpbA89Q;UKM>lEzTp5)TL|48839Nz^)`*#8lkD3^NN8qXc9|=6*%Ks+Hx2i{|pO%L)DocucPXK2Q)A|Z$&cyYL6An(NIHU_Bv zFVr1dEB-&s9bbmILl!nakGYe79&-oK$bTU2EC&uO5O=r+Oq#euzDyKAFu32DJAYvI z7ynPhoo(@ohJQocDIb#iJ8uVQJA?iUZ71;uZ)fZOMB7Qg3{*$k;obuL?0LYv^U0y# zcsn;`csm=R$9ue;8|!#GBiY}1J8T`^#zEk-TS&Yj=MUnJ>2klqQdk86}1Lx$y@}$A#7QA6YsXlFk7j>9FUKbo|_N zX_C$=kEBy@9!clEza!}ofHPMiG4TgWr{P~%Iye6MdzY4Mdx~yFoV6Q|H9F!2Oa${9G&wiItMcp9gn;a z`+JH`56YwHjKUHOai)9zXY*i)x1gFff=CR8?wHjZZZ4z}TmB~k&Kj6i)1C-?SL(kI za60~#faCv-fWr^Z{)2!s^X~~bO}d6)?KHW6rQuBVHr@X~!%0puixPiFxVa6w<6j6j z9^ZxnzD-br>D1%fEFdF-{i%PW+dT1abeobi-^Twhe4FIuRw=$ZIn*lYm?qoI`Jc!( z-nZz~=|!vIH~${3hSy0?8rxn-Unqvkh0O`+lxvyXBm5Nbk?DRZFvyMICrA!|?{|RHE<-Tj&{rr-dO)xd2WDTX#8M4Fs6QL1gCKABA$qqja$9y}S%{_}Pt7H-=78#0EvY0jvNeJ^igmciZi}!%} zrV03$L`psmw(e4Z^(g-dTNiwXFNTe^gj_y|b)jS&&{93#eN?mfDc;V8yMeJ~O;t$% zb%2(2g%UcEiP3Y(MaT}V4(`knBen*#O>k`u{wJjRYzTl5b4V9{EjJoDp{a}kzDAK? z4}LSNst{5lc0;@eMD^kCMs}CA!Pez@5Z5K#FYAwxK9@`i*OWFXeLd)s5?V=ZRHTP)!4Ny)A~*rQj?A)w3^)WiWl$GGFP*_H#_&PExqv$4gHFmbgXNTWTM-vJT3jYAzjrE*(N{Z7? zJm47aMH33r!345`2Gls#WnGBn@+olPY25+Ne6CRZLT)IU4p$T!O@p!1PVkL^4!sB&p-8Y7*fu^v(a_%T;)_`%g;emZ>j8c9 zCk8xoH6fIR9)Mn>nx&zx1UAJm8`!~s7d&L77tyFo5d{&Ax)Y^~Jp}%V~=rN^LGM?-5UQCc;iC%J%|3Sp2`yIZ5y<$MGV1rQRc^$H3O zezXn?}_Y;}TRfqOc zKqJ0v5|V;luo!E7BO|$n>+=1$YoLYUIzDr71U?IxA#FOxszKlC|$;}W4dw5qxv3#zOlcsulMRIERr}AOM8j2DRA`-UeBivq_@jy{e8GTvM)Uf6aRDM10-Ehug7OFla!9H!gkM7b{?gs4Ft%(iTpI6Ws^ zBN^{`er%|Z8vm{Fn)J-pU`9}2$EkqxKA8?9z$6{&$!f&XMexZM4KU|w4Y*kLc|oPP z`m`5Rin}EDPd08cI}f~^!C?~i2k@=oN0&kYaIuFNcMzYzGI+2tMx*oNvuV!~9&bi= zaLaxRNX2zZG?XB&1_Z)~l^XoqA%co4L6{lJ(nK!ib7Tm>fp8jRxGxjYij&h3t+;FX+ZYJWrrKm3^h=TZ0l4uN+0NaXYeLX{ z+XgBI9PcNP3uk-g_AVP>qU>MZJIeqQ2RI7DR-9CMee-O3vAZ3Xg2rzAI7uT$7cac;0U<2@-kMW^2HD;%?K`p0e23I7E(;2F=V&vgy_Zq*O=#^7OoAbymR9EU#zGzoq^1|Pw2j*={?Y}mBYGxqZ}!PaCu z)+BB*?V0*R_@tSH31@)gj@*aVb~A{Fc}!zg3pt5K{34zpeO-bgWT^|Ac~_4hVrhv!P)nX z24=GR*ftHmD%lFlTMUMx2^%*p#3e_MZCchEB$c)#c^K)z`M}pd^dIcVY!rXFh6zu>*hCc{qiAT$22E6PIIkX`8?bvqosj!(0KBVGa z$$k&D6~d)3`<1*4Zt?GO2THTaaXJd<1}8H*SWMmEEhU?|UcfETxl!F3ASL{Ea@|9m zR5Bv;8g!m{ut8HxBS^VeprV!>{J3OTj;VVAQerBE0dq@o@ta;1|Nenu~PCG zC7H3{e9BQoZYTV8!`CH8jVq^0OOu<&g(0Bi2M~QNd;zze{KDM`JGtwy1_5TkE}-#8 zeVOQMoB}~JcnXLy@e*!8S!Y7Z>cM6p82HWCeH1Kji(#R5`L0OfzJdijluvu{*}4<| zZ}HiJSApMlK5PMw;fNhxR$5*5HLULma9f1fC6;T2hte_2Ss9=GTM)NNUJ$p^vKIf3 zwD$m$qS(TQtGjE$?y!kvi3{63GrNRkVRBedX90z)pePwsrY9kigI>LeGvpv5y6ONb z4v0vSAR;J+AxToia1k-}><)^0%{id|TivsW;r{pgo^PM0r?zwTsZ*y;ojT_|mKUX8 zjB0odf|GpaYb3W$i>{HNl10U7R^I%CMMuKDhGP_V**fXT(!c;AiqNNyc$Gt1M{24* zK%aA24nfy`Jv9^a{3}} zaXT4|8+QRg4(gTH`i}WI=_??#s0ebRD8w0rT*r2m&+;x8>f7lw#``?L(fp_Lm|llS ztm+_?j85M|JCmU0V?9Y69_ZEk8n{(M6RQl7nofH=&t)#;osB?y2RdcUA-zJv9q*P# zcIiO;oqmE+CCeQjCHBfYImcCEe~g9@G}fQZZ*VSe=N4St@3`EGzFFOII1l(aOk2Em zae1e8VkO>jus5|nOJV(RyF1OpPmX{PPU{}T;`qIt(o9JS1^UA)J=FP@F3^L; zm#o4135!~lZR6xvpZS-4!T~C0r)4pG>#Hnl>Q^jk*QH}QG~B(^Z^P`>Jcf9zk6>|L z+TZ0fOdx(U)cB%^F^jmWU#^Dh>!LQj_e$p^r_L{jfR$HSh6*?9_!KO}E~|ly+N{pX zTdnP2NPd$C43_yDXb>G!9K$0q)Z3~zVQ_EDk5re+c8pvsbMd_x_1IdOxRD2Bo!FJf z{1$3iIB-q=1(0>(S*WC5@l_#Ip_~et^V;_XR%8zhI3HlEYSa z8qo`8gPAXGTB5@kt~&b5B4Q>yA>brEy%19NZVc z`e(>3U1DrP){BSg+)yFEGHS6*2)e?Iys;UgCIO@C)`FSD)to#)JgdR)Nm%3#$IOd# z+Crab%MW{i9g8?UKO#KF>AiqMieL&fo6Qqfa$cvoy&)F$0<6a!75ACVFwaH7;%^xs z$~~CFfd2jUQ4iMrZ811SM-lY!w7`}NVQ~P!6o<;S;~B7RS2QK2)Kaxx92&_k9( zQj21LowlZEnGAlk=-8T~G?SqMN-r6p==eNgycmIZF3Ai%b{FF0%nj(9;sj0(n;VSO z4Irh6w6@-UXW4lGLG#4s7Xk>DS)Bk2bcK$Cwi6(H@c@KZ?ULRTV|pJf6rRYlb+ay9 zp+p~0S185W=6`?~M8KQN6*WI>xf`)x4F;Fri3mi%&%S7ig`*BRj-?};U)}+Y(VbOD#9DqwP0TKW8I}qUp9I^W?5ol9a!*cMr02m>=I1?kuIfRr*ise}W!E*xW zqk$EgMYITb!zhht}y#NS@^puU44=;C5C#YyAOnpSH?@rYI%~TCkdb z5NhdhT7s1;zy}`7XRuk_44tF7fPgDNECF@QX8DW)5Xm00KF8PCWvSNuo%uZspsj_l z-Qf^#*7$ z@yfJ5w<2rZ#3PtkItHa8YVOdqCR=$cS7xoe0mDKM@m-6}n(!4r>usREs4M2QK4BRwl>%~Ct~3OO@y>Vz z9Zc`?LD~1;9T>m>7%hu=tm;|^if607L-SZp!8C9{x*c92HkW0ME);UOZ4NPlak#s+ zCy7>liBW0_Mz*MVErv^{&+Tdkl4IGo>M;aqiXpJnRsc3yKG&9gt#4GW;={IxbON}2 zc)u-HH3M(B&K$}Q!viMl06MkJi4~`)J0z8pxq+1zpgQ*MPJGgw$^p`)VEYc@bRM%F z^LPxSomtr3SaCgOqwYS7^S#je-A;Sh>xx;+`ACe(`c=MHH>QwlOICBw;w^vF)T$7 z_@7JB`L0lz6}W>C!(nlvjzP}3WN}XkSka4d%MtZ>u$JPC0ky6_Rlz33C))fOY%<=2 zHi;lx*zja=5(3`PbG_mo=%lWISmXuVG{!SKBDH0=Em{}opZEKscAZPSrOjW~v=Mpg z^UE%;ES@5sx{=_vsMsA#xgjxVjQV{xyF2Er5c^{^b;X+?E2U9-%tjbwrQ~mR!NND@ z6OZuWh)Y~7$e52vv)Xy#7Qz4|;pF7^+YwYH+hR@2<5CF=nvO_L71y%AI23Lu=W#8? z6?%6>hWv1gcLB(oMXGz^VjiMl5hm<%OM1N@2+elKW@#2%MK`z8R?($53jef-4(%My zCz!NG5cn=VL)jXTHvph?5yoY&c+jN9y+Z^!LYIlK_=(dD=OHqo#D~OVE!i|47@6@V zkW5Up5O?nLn=cYD2gR6Wo+!BrU2qX%sD7>paD!tnKzwNH@fbS+q$zepa89V#i}@EU z$BSo8EMgJZyMRKp!8}L3ki>qeUqKC|3jknc7P5#%`;~fzwHXK4CL~!5rV6`V8U~-j zv0_U@6WFG>(inC)LI89JI_g2`Td2Fu#SbZ#jKfh&FIbps_>k>+)JntSG#4U3Q|;Fb zk5j6ZUN)Y`<3xPW&4yffrcX>m%dkl{;*MMLsT=W`cIhUB2#4aRR&M#<@-T+3y|C;| zlJ3bZ|07?L3fqYpF>i1(Y+Ab=H3y@Hqyq6a-T{#MV!f9I=ewSPEM_hO$8#_fE{j{uI}Mo3!JZv))XkwbCy)j$XGo2RIB)5nKuJbO?ig|9AKVDw zG>gb}S-M?(5k?}fc_NQ)h^ZGQZ$=Cfu^NaSpY$E)iuQs<-SP&a?3aian32XHaJOa?g;Ra6_i!31< zk8Z8vh?-AuF}HLS>V)(q4`%7L3rJKU>-Er0%)6j;#>5J7C+x^E@oF|vTVXCW*4O~V z4vjAsx3++#0E*=Wjtsp}@k$`QMZ~LN{|)jCZFDqs0S&`p!I~b1Peg~i%4!Xp+%x}5m?d;=xi zZhi{G_j>ClojVcb+corw`;*lyrd_f0L0!*MPGd%3padEQV;l`-z zDS}}C-HQXC;WCTT1oTwEtXAH}17;QW`Un<+#D@^S?zLV7VtXx@3jqDBu`U(tF#AiL zs={Lbs==6GLRQ2qCUFH^SI{Zj5l5f-n8!>qzi$LAhD}Ct28Wn2zkHebbJ&7x;wU|k zEZo4lHDR^Zxpl}`0MrU|p#U>NOpNaZdsXRks1@QBdiVta)3#PTOZ=9) zCPY{BJ)BGKbr0usSl_@L*E$;JUaSN`{f8A3p@9y|yHe2FMQkK~^C2v*7>q3V-|n=# zmj_lt09Y+p+=B7j7wFh~E{t+>Ao%Ri-nt6$7zRAaW5UG6;rGJs>A+O*ZkWGe+fV83 zPT01g{B`909xLXoA@dq6C%9Fp*dm|+NMjH_?lgCWH4wtkdMRutc%4(a68r=d>=4id zTz>0pb6z22D}YhLaH^0)cKI&UDiRjENUz3uEJaC0ea0~Chc{vB0GKS|DFM-fg$kEd z0;I0L#=1;whh8JSisi965W{Zs7!DxS1}-*9T$w|h{g89JEH~kn1JX?KVIGjPmWyGV zhpia4|0vc7fkJ0Kw0jKw2;!G+~scU#)Qdg!xGt{MpI(nOscb;|aX_+iy*=161y9&4{A zn7M03Pj93(=<@)kLn-q(>9`OEgh*u@>9izRJ~IIQ8m3K$*JmxO{LT6eFvJE3VL;ke z9cHsxi=he97H#2HA#E)M7&YD0?}a{Ad8}$3*u+3$z3!&aU1~g*{zll0fzE8V8`vzz zUbTwYtFEk?4{s80$hu8nptqG}dIYMwp#NAGU8nPT9B}cr{sIhh8HTKgWiS}VvdQQK zSiBpHi46T!2a)IVxx}k_kFVPxeGkr#h${ry6^mJyz@GV)4mmV{pkr>2R;&bA0uZlX zz@p%t^`AT>4j#|R_Dh?YKLUfSk?O1qaUza&Oq<;C1Rlc#+EsS6(6MASz>3$1soljjJEMs;qrSYVL;>lZZc5_cO=5{*ASL zU0c*%-d}SN+P3NiU7YNJuK{xp5~r&OyONzD?240Nv-@6k52`9+3pGCTGX|uoV6Ycq za~WnCuUaq0(yLRp{0cL&^boRqL>uX%x>9l+dn@>b4#E2fJKAR1a^j^xK!27`9@Q^;|Xk>*elLr_G7ee=% zPk}r=b(o#P`B~~OZnF-@I)cS(?jgXA0z81ZCA68Sn=u3W^#SAs_Wm04PCJ#fVR|a&nBVswsIp>4&TZjvDH=z5P%>dO7 zSZ@Y^3%r%Yd6Z%MdaJ(GK_8EJqm?JEo22isCJacQ$}!f(6e|(%wt5bR=O7HjTlLJL zDGqJ64@d~(3Y&G`XgrSweA#1IN)Xp${CtyhhC7yEJ;5@F_$zn9AQ!WH07Ncbi}Vg9D1CA5tb@HUMEf1!Ln?FxEJ+(h;?ZeZg~q zW*)mIBKu)n3&+?h9;qBAZ{=52p=@ONWnt3jecLJ<88G%}$pNpS3G@2%oi3z@cATldo1{@GPw0z`k&*7mw(Q!`-v$&@yEAQaGG~ir|kvBZAR#M09 z&D8sb(HZy?gcC_ z^V@jvTXYWh9|0w@F~7&Iw~hjvXq8Ze1UC!MZxq&XkE`Vd?j;e|l#jaMMO?!^`eS}B z_l-fveM;wXhjcjCV$|G2ILF}}%LILzJ+pe$U5EKpMX!AF4Nt!1$#*>Yo+m%>$!>9vC_%#(ef{0{blTf0Q*x_!Y4jknlskmoTN5jr*S0Cdat*Ecr zv?c$*bpnghOCw63!9k{&srd%-ibXqD-yBtx=;*ETFae69GY*ByRiyrUGO{;(9@iwh+(@nG#=eWMt_dU+9uTXQ+_EvM!_Er9zllHQ| z&q>>d<)oGB@7-eN`l)$oFGXJ39$YUqC9PpZu=y+e#)^91)@uyc1<#$}H&xUx+d6do zzThRV@|!F2S$_+VQFvdb3CdAJAA=_Qt#`?wErK?*4RL$)-VjWNpA>)k^08;=G1lYfk^TmSC8nN^N zhmw$N6srXw_D98%fRT&X6Gp*qi`s)FNNVD8q>RLi%^m0~cCG(*`^3_Avy^rguY-0w z7VntC8J--oymNOi^ z(RGULyztC^&ai&`__x^3!e>`=hE)^4I?Z;vKcD0b!D$oUW;-vvFoHLECJ%oHJDvH( zE$X}P`=BylEc1s#K8Md3M%baxgGPaY3pqw4st2N>7fPjQsdwzJt*Z4`HYcS`U8l4!9TKit9Sm$KgZ?A8A&}k_D=dl*my(4AKqIusOMHSp>|gNFTrGaZH_FzucChUQR`(Tw+%VN??^{_tOfeyiJN ze8?Zc;Xk0p;8B~;@-J1?i^r_?^zBnW;$H?{#R`2zUcRYWL19sGN%K zai2rwhj&(fRBA}S*m1}7V;tYSP04~|Yc6?x@#~$IKi`w6zzy?W?ikO|05@=YBX^dc zR@}Xz!)NIgq>2h>yE2-u+|#wI+0h_rKP_zcL-Pvf&>maZP|UP8mvo?GYf^<@c)x z&g|7L_}~j||E$;qqTcQToL#zkM)(sveMk4>>!?2Q@Bgs>-+pa9&AW5Yr})1$KPI{5 zEw1g3b#Km~`b8r@W9K`*lcag~@BdsqA7;?HZFgjp1kI~|<_q=MNCvFib;tc@=2H`W z{^8rdRF4LKht+LG3aqf9J7FnCK&vxss{n{Bl1kMt`M517>{$14Z`#V(xZrEy@TqS2 z8loHh=(}IxA?Vy z5phg~27U_+-rvD*vC8~A_^rUuZ}GIR=RcuewvPs!e?YMnU(x46;>6U2Ft$M_x91tu zZ?`?*Y^LGT0?gLoh$H9CE2V!2Op8~10w~*MXQhDicd*&vBGwE32sR7rE3jr0WAqtd z)28O;1)MnmSuqW)he$*k$HLngfGl%d4T<+t6+kvPMt|hgj&^#az79AwP+0Mp3JQxg zczDh~z}L_EqGgCyWa@WLN2%;27@F5AcCoU3h;;wR=f1 zX7>s>&CQDboTF&ALH`55U4MAEdBDjKSnaSvg@C8%lpZz$+o%R{S+N>v5|QKLuQbLm zSn>Sle-y`Xz^rr@JM94G&Ecvdu_ZEm8uU3_Rr6S6XL7n@iC1)Ytv{(>|7*yQLrN7N zXr`s@)1Xq_=1cRMybEAxcsLKk!kdqtFr1j(EjR`w0syKc^Kl@cO5?B`_y`}00Tuwp zcDJ}oU>?Rnr|#|hfj9qFs7DJ1Y^tWl1F$KAi$lOz#>)Hc;y9L*O-qf3%U=T!YWj(w z6KfF>yZKRz32>$2E6e~@f?PU4E4B22C$&@ba59)uzZLMNaX=mg9>`}%q^=0^5yG+l zsF){U1tcO)`2!XyZg>>HrI1)4DI6rjmU{&??U<9ng<_%fk8q(d83_8702obetU?1b zg9uAJj5TSmMS<1x^&&WG+H2yl;@KodIFgfpkyJ-W*(0CeHIA}m~)m_|I@1rj6b}>2jTD^v;2md|G@AzAHWjD#XPdW zSssJdsAYkR^(jL4d=L1X%U1S4H`IVMeMs8oa=JvPWjp6{SWI~=qc4EB;b4R7<4)ZJ z0Nz}FGHlX$)ev{<1cs3r7!Om(pW3YI0BTr)|31b~{#Th)OvdSD;0gpyV` z5h7^pO*j{fgP%)-SZZn1;4dwgh+~Y;0=4i&Qib~`LmplDHUCCMyWHHyNb-QVSU>j5 zfViiAgydEp|5uQ$D6e>{L>@aKR>_SQoZq92W|h?Q76^?-xd#L zB}ZP=O71K5I45+{N*d9Q>mFU63o83_(XIZ(SC--*g}dnnOmcPJHTB=)dv~1s%C5`b z@W~JOzcoKs#gpH0%@4)8{HI>{Q9ZWG$VR^M9ShIRr}A6)je@~xZ)JqNa62i3oP{8zSfxCOV1>W?n_ zjqS{9gIT}+Gy*n4cN@Em2RuYD@-K@Sbi%V`C>mVV*p7 z?8ND%8v5rnGgF|}Aj!z`IaMTJBF~DZ;={8gLfa%`0j?@}yaU%h{*y2$JYJqQZEWmT zafCuvAxpzO{1?mZ!Byn-fXQ&Yg3!|9&NIZp0V}CVxyabyRe>9WWr;NbnRHf&Onz2) znNF8O4 z6N7&Jq8%soiKIE`C(A?=18*lClauSXq4E3pUxllK_Zgs4NB=cxVl;R+c}$$gFTBf$ z|F+`V^wMI|sklrMQ8lPbyK*LC~`A#Q08aTfkBy$ofwJUvSv0p7Z}0Sw+u$f26K(! z)RJa}gjN^()6sNwU~JM}#kGo0xe9S$#!u(zi^chyahEd zY=&fq2FIBJ?ejuKi{ zT%O*o7+um~Qm&AZ#(DG#d7?c2)_=_&L*5eu{1@?kmSBJG<=y5VDRSG;N$`f}=F@D^ zev%RWyt31aHe4n8b*FZAA+%?9?0#+m%{JRl9u@E5c7HhgA;z`3g+KZTZI$i1pDYBo z$=A+aN78{I+>$(*kYl2Wo;_VisYB`HMfAX&0@+}?5GKgjFiMZB`4UGN`yO(}V(H{0nTxid9l?YzJUvH~2D+GYhuit zUk!2Bbu+J3$bNn~y*hZmJ}0|oUr*MH^Lflez=KbqaxAG*7l&Yd4n{^|1Vzne0k$Z{W%c-)fN2;doXht_ylU*ap%GAhN{|SynH;rG(um7rD z@R5S16ixJDp}1;BsxOmVE=Pl~zE@Xju61al>j8)^1gSxEaq}O=V$vZ$MAxej2rQu! zy*wwndbMgGzod#1&oyuhh$^@q{9SOZZbSYpj^KAM=nl!Xw^zKo`742r)8tlND_)L7 zED=R0p;Mz1Cf%$ErMzvXUm+9uhyEtV8naogyGOxA$gzIeB-%wd={=~%KV+CEztKT_Fc_Ucr?GCIp0A&+GFBf4Lc z$TD?$&hWgGNH@h&Nzpem{5@oCw&)1AXt`L!Jx~(7i`*re_{3*A^T_P=hsmQ^(_yka zFppc;9%J3Z5CkmIRaLh2VX|)Rgw>tvULucRT>Ihy8^*OQxD&arDod>64(Q^k>OQSA zx|sP~mK#SNOO0sYt1vta;7_eGLVT&Yv5*>ze#HewCHkeRv&{}E!YHynt3L!5?av?H z-UBS~Df=R1funu0wnM7yF^nuZvJ|4H8~=T2#Rj^OZlas%<8%w%O1IJN^a;9yK1p}d zr{Z)M-AyZ=rq9ql^jZ2GeV)ER({wN0NB7eM^dNna9-@b7#Swax9-}YOm+5i(3Ozwz zrLWP~=^OOl^dv_lRP8U##&p~q@xqp zJf1hxe_pN~B^WXd6QU53>X0cgX$1ay7M!+zZcF@!_RC|bzbs9h#&6Qb%zTWQO+po8 z=0ULDi8BRYz1Nwhf&^jRz=(MQ6b@#iZy%HNjePhgjQ;JFfTh>((gkJG0G>id zGif1V0`w`x7@R#c(GG&cuj+fkHpox&DtTGC{(hu5JG`<~90At}|#7lIeC66n+%H6VfrK*fpSQY&+5{_yk!Y9a2-YQBRX%w}sra z?~j_@bL6RP{sHm;~7}q zS$cr%&Xyh^FTx1)#gch5A?-|RvbRoIIOjf{)g2)3hym`DCwK=p@3c8ak;;vBZsdSy zn=Rf4k>%qP-}4~#C%BI#gR9Ao-Andl`O#}eU3MS&93iPctnLwfi2NKd2~RuY(6qXy z$+HR{e56Yt2!T16|03ZJ2FYB>$M0UKvpk&bk|xh(`LzCNWQ$8Ju>}X~UPT_bvvc9& zm&9@Me6}b}(on#5e~?(JehPBRb!?rzK22W8n$qMDn)L8{U4zG%KAxD%rA8h1@lUY&?zihW1WM72yn5;Nw z$_&P#>}ydhdo7 z9iPco?;|I{;f&I2!QcxYprG^y*0I`Ve55klX`ed6k=gD4d6)1$may*O+FzCYd<-UB zSccl-7_1bO>)Eo<7RNyLZwl*7TO32xqgb%n;uxY7mh0GZkE2jAl^c0oLS4}+P%mbS zU5=~S6Q&PZWPGd z_(-mh8BxmIYCo?0tmfY3JA4YP0xS`35MsXF~pyYLyzCPHSWutROS*K&3moK1VEeE=Mffpc0F{dA3+lFPz1jU*IYV zlSS8aZO5o@sm{A9lJdDHg+oaHe7%HZG)vN?iD`9 z+qQ7+l1Ow_nyk5wD{x+=l(fbD__><>3}Qcn+0PL6GgK*V%Q0sG(qHO$pYSPezqy5W zcj7uu@48CKFU8&Xxtje9Vn2h~&k*)ARLLvl*v(|H^vV6g=YM`VZpS$zHR+Scni zYioSLWyGxLE;F9b{GjAtOs-CTay{1*oY!fz%6a`pa~Fa0=8xt&=q-+w!uJ))jib4H z^i?e%5Pqyk_6l+dL~$S($=1?U>+sjQeciC~VsrVcZMOEqu!cJ|cw+_ZJ2exK-D~W$ zV(N0*e7n95a+h(%CWmdX%~NZ4*V=5|qzCoMe}uTc`R2%j!mn86`bmeRmu+_K2yt&x zef4V(3BLjOd<<6`=SFscDTFH%@PPr&)c+c-{6Z_6EorXq7gTHe1xL00!V$UhC+&FA zGHt)umMc$d$4jPb`_0SlQJ>TN39T$0kSpUqE>%yo=rd3&Hx_DT?s!@4adp3Jx#~c| zwIs#re#x>U5O>e98_wRy$~^5kwTC8054Y*B2n6ubGZ|F%`wy*^g=TCMKzgYT*?wnv9* z_QTq?&aUI4x7H$9J%Ru#d)J%e^7vYR6nIeXP*f3oaQJsC1wMTU3n6xwO)2&v+`*&h zeZ-xZqQ@E=)||rZsMG6ZM_p+jm7@-KM4>)XtMH9DVZ#Z;i+fVFI{0)Vt5&eqfV85( z00HrIXNXxZJ+{@AiAS9_veUPw%J$r zo>M^l4MnfR1vTdP$1*fIt{ZI|Z#0-@%?M8BBgptjCo9z3P+SH>_X?b9LT*(WFtpX0AvoE@xi#4hANI1~Sw|J)k?fs?|~NTe&$be(6v zgfGVib~ijvz*`C51&jcA4rH;7gcGdM9pF)M3P|l%OjAHb#J$GZEl$RyelVmX6r7^y zHl}^xHgGFq#}pkHG(*c3L!-)^({w)B>v!3L(|%`8p;j8B=%*o`ZM7(b{QhYA!*p#% z5J7A3Pc0h67qz=WzTh;)^dZ*$6~l*^Vj`U(LaF0gD}h7Vp>Ws{@v}bR&F~`eH5B&* z_>*7a@DFh*hRLgsHV8eDM-(u2KHr)xvv0yD85LYIS#IQHhd@w=poVNO4Mi^{}Ioz;$ zhrA8KWL&8fWp#cay2oTCf6AQU04`Swr&x}1QF~*v;j>=k?5N$8MlxIxHfNh%%z6Ea z{>*`G$q9Da20%sjY|%f>XL=oJ;Ld3LHPhB_HRG=x=lRR|Cjs{t_W7Uk%?0NAyDg4` z6|O%BI5>O!nZaC542JZ#viA=R#^jsJi*AZ4`l6x=FlQ}Ips(TN>LDPIF(>7sokM)y^yq}i@Up|WHtS18DDMmy92wYwUV9=m zXAchugiO(w=1x+VOwnb@)lPa5SDt*|NxQ`nk?4Zp_BkMdW_Vs-!#HHyc@A;?PYLAy z-xA0TCi$DK!VLjb@cRge5RzoM8@%gvAYT11+~D@8W1B05o*hGYj*B&<$EOZ$?i8Be z<8>*`eTcR~n`5AhpsDE;b)aL%3{%dF5)Z=cV1|k!x~6HI^C^X!F-9PK+!lm%K0nIY zoep)BYif!Ph9=p@#JbaAgK*Pf00xd8hD()cp>F7X8LW#9;%p%$f8%Vh0;CV*n^N4E z_B9xKG!PzWmTtMBqz9{6p^uCB5hmsgD|92NlH*5a4I#E!J2OIWW7Cl8QDE!D=mTM| z74p|blvu;6b ziC-zIMcAg-zb4sWI>9+HRG(RstlNR4s`@^&ua76Ta2V+fLsC9Smh&=JOC-@%xKg-nZS65gULpc2V|gV15Iku zsHeN+5yorh&hwflCymB5>0AHz;>Zh5`!8Dsz#=bHx9oPtY^{;pmW>F1;Wn3Bl|62B z=@5plh{|jbHAQT^kU>KAW7#gUA;cm|sgFQ#AQ~jS5hIvWWke>b(v6TX2t0)Z*a(uc zVM*0Qa^ua?ixlJJ47pQj>19Ji21ACXluXLdgPh$D=73!Dxs}rOia}9YPc~=*!Vckb zP0E*4ytFJ1#W`a*mtvYA;LgIfps&HS9>Na_T0@4MqpEae6?QQZD#%fPq@g5(yHruS zku`Sdoy3tTy0fu($*dtzl~L0*lc1OgjQ=d1h&?0xhKRXF!@&$!Zl01UDd#;Nu;Y-_ zl-`5lB-GgaAW)^$u2K$o#cjqY!n(Y*}5y z9K5f=xH08rqaR=@JcumxKoZUCkzLEUW9@nFfRFfp(S_nUWt;Q;Z&Bm}gZ#|~xC5`s z92#}~_CJkO&bHb}mD6=qZfWY8zIf1U&~$i6Cs!+a=O74+#b z@8|;yeWFUCqcO5G@vP`aL!HnsSNPG0LWCMJS`n7BhB7Qqy?TLauaOdZ)JLR2 zInfACr8vHk3r92h{0yDJR0(ftLq=$KzS}ASFf^66-rvWNwzEEg;~mtt$*GJYOg1z* z>L(`8`VV9b_{xhHhe80R$`rR@5tr(v5OZ)04@2)sYyc=u#&E~#bBeG*I$nu5OB=Bz z8gSfc&lI*}x{a49$WVFR=qmb+=mp97we+GmBB$M%!rvtDPXxmxn9$x}$fTzryxD1M z&=XP{{!d~Gg2{98djAj(m<%rjHzQG$D`Y*n`pB$d0NI1UTD`16;PBF#n!Mg*aF$bDpLA|Ig}=40if2TZQ}wc>~Zk z@KhYm)W6T~n)GYG2dIO86+wu{Rn?z_4b&j)RR^`c< zepM&{oih4s6mGp5fPwwQQ=9y=}~Ec}zT&d{j77*cL4HJ4a%^kQ{UoH9Hf) zIs(fLQb+?IjrkjzPsBdPc>(ZE;f4}~20F3^Hv}mkamtO&@4(sQri-XGo+*Yrb2J*R zQAi`ydUqqeMjL+;JrAy966V44>>&SF3DYECLjPO9guoFOY>45J^~G33LAF3P;Fdkzc#xM`i)I9c&`!{{A>>IPj3Wz zaV+Gv1-+jgBqm+`YUu3Uap^- zY2F@E<1V!=FfhWY+aKJJ&a%M`9FxtEczfz`1FcgPR&Gcqs6o(??XehR<}!JxY0~8A z#KBYLiPPlpbhCp@Q*;Y35*A(wea;h>K5jtrWDG~|?R8wBz5{9+V=a3U)7Tnxtr~||38oQ9aski%fUkgq|9cWqQJnI=wY zFzmyJAyz2E9m25;J*08lhF;?zYbkJT_!rKz8#8Jd`It9p_tJKN%uQVaPv=xoQmmon zNx6o$jN@3m!f*Qn-~43~)$TmsK)d=A-}qsa(MB|=nHrZQ{O6n5Z)l2_QiQ1(5x_{b zn3c1^OPy{N1bykL;FYO~O*otUr33A$%a9J#pS-w&j&lNAxuIw}sN@Ml(}teQ;Rq8G zjTAY+WXK$d5KMmcLmHZs2Eo^8?2yb<(DvNYe)>Fu8=)EXUKsmiD~K08N;&FG;uS)@?vs^AEwcH zOr2>x>(#I6jRs~~jQNwrUV4!z+fs%Uk~L`?C%aM=zwcJazGP>Kb};F47B_KNaq=38 zelB>Ou4ErGtrLK0mt1J3?zm#8RrFuLB$P1>Pmh3v^vU5_m+wD@?!dpoIXoFXoCc5U zBMf!cZ3}Hp*DJztbfHFrq>x%RphFvUD6}@CTgAH2O>4Hp@WdvX(61lYK4N~~K^xdd zeBSgCvflukr<^j7t>Q6 zXODytH76O^L^$fQhc285E4tb^tRscB1}$uiOx0KX%vmdnJam{%BXWlDxN;ZjOqE>ZN`neMC3^1W6drh$XarjA;*qkl^uaQrm|xM z4fr=(1@P}L&_)4c`RB1BXE^ygbrhDlTmyRis&yFlW8j5A5;Qe{BJ}jZ=bza*psO+? zoYU#?hnR>4ei}QfT3j%ri!y2F@L-nHG;4vvkbI?znyvEEy+c53bYU1m;DZlS#093~ zi~w{uU$R9GD{MuV3aqm4CntV18d3?V|HZdYU z(?sM*a;pn+CaU(5}+nIU;vkr51 z2u$CsyZErfEp{eR%|Pn(c)^bepP7TT64U}uC15s1I~4ekT*4W3NoN|0Yf17{XKJO; zYcQqmLfhwObW33$gs$jKR(GMj2kc!6FcR53U2Rx&4OqftZ>HIyy|Alpgb58mehtn2 zoD;HXD5iB>IFzAFH3_ussyUklt}Fj~lLU$}zV-QxF+F3`W&0VoQs7O4EOkP zupg-0>TVBqtSgN2_)VU@gkBrRJVf^@B3OKNkC58ck5oARtOMo5FT$^Yu;J`#y3pdx zdMeh}RHntq59~8c%JZAd(106dXZ~P@Hb#)b0U0b@-XI9bIfvMlHs1594fITNA?|_h z8*yXi=~hY_FcSs^A!I_~5GHRM_O^rI5jNnv^pnBqN`7M+YEUE7ZTw2U*TC#=$xo_j zhd2iVe;Xe#Q4z%)jji#b!GI%(L+8zFi79I)gVtJ?RJkWZ2eXd?ZaS*5x}E3~fEtRC z6vJkw@WqT!Zg3&!CJI>41oU8_`D6@tW||M7LQD=*YXb=dXfTgN19`*|7b)k6;m7G> z|H%Q$`Gm^2AOICh6i7rAkX9QwS(DRSUw8as1OO}3;+(s###r*1Nbe~Iidn!uEVG$z=&-4 zC{Q`zA+{jJqilhzu-&G!Iq|^})coQ>^;;Rqwu8JQWH(v;ws_XHar#gb1p_M5HP^N_{2Qo z31aL<=?HY>>@uilkKh7Ok8^r)l^s;-h+ZKU>Ktf{m_syz1~ktD*7Ks_eKvdwR*(*TgD@Od5_^t;6N_*VSmV@-^vBpzJPP63S;c{)HBq@@MqHtOsGJv?YP z59$s`n$}!*H~0m+Q}LbcLFuco&Bx1t)El@Q+Xy5VLG4!!`|%0Ji4P@P_NAG)DQ6Bs zO`WJ5AlJa{?tsyV?%@SBz-_F3O%!bluyEvg5sSoDK;uD-3!`9&y)?|e$cs9M7~4j% z*>TFtS{zM*ih2VPB;5c%`tiXY)O{v8P-g+}Oro zt43o0(;eSo4~*x$tOZ^iv3~~}8CDC;Olk{gYw4!6Nl2#q(XZnsn1b;|HrB_1;Q&}% zk>sv#;>u3v6gRyfqJ%#kcuHTc98~ zjPr+ZgD-F+wsO`usGkH@tqe93AS$9FfWClW-tkbI zcrRpMb3Aw^2?e7nb(x?zHrxm-gKqr#Cf?F!PH+w=#E8au3*bdSuv}cu*^_r&PCHl> z9WcifJ#dgz$YJi!1rmkof`yx-nT;a^U^b~$}CZeolH0qaKt#~|<=Vi9qJ1Q0vm zRY7cpPcX3_3(?z7AC7^1ZdJgDCHPSEh+uOOF`IVmMpfD2MVAmU;{hfbaRwzY26&e7 zIQu@YXytq!5i6PEV3p4C0PEX==!5G7;&afaD9F+sNnOCtUXa)un1pQrX7OT`xRpUK z3gTmc;Ua`YMt!jpkTL@P4R9^bU8$C>`fGk4tyV16_CL`4K3aFnmA4#k!~8tT3-j}) zPMQ>-4i68foR`W29&$R5mqW&2DIfDiQ{WEPFM5nT_LM-{@UL=3sxx!9u@OD)!)2LRJk`2yT`#|WRV~EgayXjE=bdh6x>|60G52Ie)RkIF z-7+vz63E054*76n)Q|UouO}r$0jRg(R2{4t3h@9X3}+??m~8seBJoRar?3WutQ#Pn z=UQQxKw4w+sS-O!YtZC8h2o4v$kf4zrBV?@(MZXt26|np{=lZ2?#L*26%1w|8#@TW z$9_EQCyF0-19pIatPs2U1GOk^r=AFCCKBqA-98scg?t>&L_Uqei^QLZ=R=PTxm4Qu z+=*(bl6QtZ!7}kBaB#XzfR{=%RVIXNVGtI?bASe6v0FMHAeU*R1VTMTU_aVo2{5l$ zGzar_$dd(8AIt|ln%(Y8c*J}t4v9H}&*t!?CWyE{bx_<-9O-J_XN!AMTLF=6_uIU| z{xG`(0oeh~k&`MDNuGs@p zh5*dz#s|ybADjBY5qm-eJUdYLQu$bf3PVk-rheEGY`7e#hju$I583RYcmx+hpS6b* zA_&DQpHE`=5wA$7v{Fbl%%(mNE5fP_x<|mG4y^Dbmh#95AP!I5LLDrJJ;)|r|NPU8 zY;XTgHaWz|rt(`9oEBo#VI3}yIN48JWuNo?mwi3DF#F*~fHjfn(q;?-Jk-k^U6>P9 zB*h%7EKs-7C8WvY3Z7Q!zRi3gMlm4&0d5|AA}~;B6fsz@z%Q8Op!S$tqqo`Y=`#Gn zS0G*naJRIGggE{*IxaFWCHiA_8cAc0>PKVO0l-t?%Gd{#39`dxPk4~h2B?I1um_N% zDbUQGz6E(Xy{^#JVRrtUQJ;!ohW9hyeY*Zysym8)%4PIvH5W#cV1}wX@CAS+&j{sU<$^udi z#J0RyD6G+hS?k%SN8n{d@&SA)C(0YUJOZz2?FvJIZ{gjGbsZu8g%jke<_N4d;n<% zp_qjgGlb%D7htLI=CvHG+(;k78^Izmh)h!l^ zFiNqZA>2fXCLcTa)}?`HoOVMbq}pkM z=Sv9{&=i3dCC;5F^)R6ZLUhL#qD&CoM@B-80ix&o zp-d2cyELJBX`-*db@_zo{e^^@aDH)u&;p#l8%#Exl5`J`drQbDcF)b{?k3UK0pc=B0z+dsRLTM zHCH~LD__o)@2F**6n+8{vm1T`Nl+HGU}c&VRfE}zu|Iq;p(SZj?8J4=2`Rn;H#QHD z;!(#@CP?u%kh~Q8yTF8{X;QqG654{0;#UGFar_M&Z;>Fy?-i+KNyTurY~HvWWjsMz zOnpN=P_LRwFLMJo^BM(nrUiWpIp9TuKaOL4$ywX|Gvty)&C z#e;Fa(`{|lvbya%YT0e3wr{^}rMmBmpp4@}&uypG1HOA(s%33~_TV0$v{v^oTB_Z6 z$qKEkdvBzAyifguYT0+CR-wzE*UBrWXx9ylpH$CZy+bRnc~dI~_q;|uKKPY4(Em|^ zAxH054-D(2mBXW~43H5o+@Y19vlj-)sPEX91;}-u4Oh$2lUAywypg>yK*GmPt7R-t zD{pXX<&D>lRF98e&{i!c9$TrFlh2$&|Hq9}_h}d2RH$9}&-=9tZhclOXPkZy*Cj}z z1l_0=%9h}fR%w!`Lff|vkVIGX9#(DvbF%VlFeS=amlSH{9l7$Pc6_#UrFwk!gm~_s zr?nGv=yCPLoPoLWf!y&AwQ{aQJ3jaJE7j}f9?|yawJcQk=Y^JP<(Az3w^}(raHV>D zey$?(PaaqI7sM^vi3O9;ecA-bLLOh(CP5bJ!R>9+WMLbFR@y)r>@SX=R?8(Dv~uYy zTDj~it*mdWmG@n-QoSzu0QTDj$jY|p1?4Esi%}-X$^rWjw;Lewl|vC8-yR3<`~PaY z-yHrHX7gCRcNe#g9jhuWe?TQp&<@6FG8#kXgHpx z0Sim35HjUAY@9;qld^^u0iS=(=Z#MaHn zY<<+RPjK|f0`vG5{!>^_&{EBJbeV@^OL#Ud3z10hSXmAvT0vQN(K~!LPE~UuK;jG^ zu);&)n}D+Z-a~99$1`WChh$Y5Z#o2$FK~QyfMhkl`*~Mhav#^{r8RjVPTBvR<3+6h zKx%hD1Ek*K3TxTl!YBp);~NzLwxL0oI)taf^7{-m9 zs2=Vwz-NzFSUH)xYE7mtHJQ59Wa?6rsY_0#P6K@R^-inLyl2z6%C}krOmvn?bT-bn zeI+`Znx~v`IjpO`v@$!{^mjz#%uY5nvy+Xr(RSXCthf5_fK;NA_ma-xGKKvZ+C7>^?p#k~}_z_+T zee|#5XFCe?-^W)XnNTa0P-|pDt#R7cN~l$>gjypLYNZltjZCPON~krSnp!8kWK#=7z>4KT?2THWygnVgd}M1~h1_YWX*OGrIr zmav{+y_6f8U|qx~oD7ipG1oe=(WpE|^_9mcmB%O*$LRW8P#&Wi%43wwV}yGJ$UfUm z17vs4p&_!hJWF_-WDh=UWg?eqC2~n6a!Dm}NhNYgC2~n6a!Dm}NhNamT2LgHR3w*F zB$reqmsBK|R3evDB9~MmmsBE`R3aBOiCj{NTvCZ#Qi)u0?g5@1S3@WF#eAOsQ=XGs z$IoVpjd8x^*E}aLmj}yVaPn5<)4<6qV}F|c%`$ZIw$i^@@01+Z(LKYuu7`4b^b5GN zo-=O&Kg#QYGw&dG;CkrfUnqlqtjxdimGOp${PlKW-1@)YCU>pIJm0@}$!+=Xx5;ru zIE&7&v(A(o?a!@n?9Z)qq{sB_&#iD4Ki89ZdV73tuq}4$!m7K9s-CKRhBw;oxaaOC VI2ADOGTEEh7At>ydtuDU{|6dm5cvQA delta 43062 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 diff --git a/sandbox/models/staging/schema.yml b/sandbox/models/staging/schema.yml index 0502f984..4de3caa5 100644 --- a/sandbox/models/staging/schema.yml +++ b/sandbox/models/staging/schema.yml @@ -1,5 +1,10 @@ version: 2 +sources: + - name: inventory + tables: + - name: skus + models: - name: stg_customers meta: @@ -21,9 +26,15 @@ models: - name: status data_tests: - accepted_values: - values: ['placed', 'shipped', 'completed', 'return_pending', 'returned'] + values: ["placed", "shipped", "completed", "return_pending", "returned"] - name: order_date - name: customer_id + - name: sku_id + data_tests: + - not_null + - relationships: + to: source('inventory', 'skus') + field: sku_id - name: stg_payments columns: @@ -34,6 +45,6 @@ models: - name: payment_method data_tests: - accepted_values: - values: ['credit_card', 'coupon', 'bank_transfer', 'gift_card'] + values: ["credit_card", "coupon", "bank_transfer", "gift_card"] - name: order_id - name: amount diff --git a/sandbox/models/staging/stg_orders.sql b/sandbox/models/staging/stg_orders.sql index a654dcb9..e6696968 100644 --- a/sandbox/models/staging/stg_orders.sql +++ b/sandbox/models/staging/stg_orders.sql @@ -14,7 +14,8 @@ renamed as ( id as order_id, user_id as customer_id, order_date, - status + status, + 1 as sku_id from source diff --git a/sandbox/postgres-initdb/init.sql b/sandbox/postgres-initdb/init.sql new file mode 100644 index 00000000..abcc8e09 --- /dev/null +++ b/sandbox/postgres-initdb/init.sql @@ -0,0 +1,4 @@ +CREATE SCHEMA IF NOT EXISTS inventory; +DROP TABLE IF EXISTS inventory.skus; +CREATE TABLE inventory.skus (sku_id INT PRIMARY KEY, product VARCHAR(50) NOT NULL); +INSERT INTO inventory.skus (sku_id, product) VALUES (1, 'jaffle'); diff --git a/tests/fixtures/api/card/27.json b/tests/fixtures/api/card/27.json index 28e60450..5ddcd060 100644 --- a/tests/fixtures/api/card/27.json +++ b/tests/fixtures/api/card/27.json @@ -2,7 +2,7 @@ "cache_invalidated_at": null, "description": "Orders and customers", "archived": false, - "view_count": 430, + "view_count": 446, "collection_position": null, "table_id": 10, "can_run_adhoc_query": true, @@ -561,7 +561,7 @@ "creator": { "email": "dbtmetabase@example.com", "first_name": "dbtmetabase", - "last_login": "2024-10-12T03:43:50.753203Z", + "last_login": "2024-11-02T04:41:42.402168Z", "is_qbnewb": false, "is_superuser": true, "id": 1, diff --git a/tests/fixtures/api/card/28.json b/tests/fixtures/api/card/28.json index c6582fd6..e9c5ef9d 100644 --- a/tests/fixtures/api/card/28.json +++ b/tests/fixtures/api/card/28.json @@ -2,7 +2,7 @@ "cache_invalidated_at": null, "description": null, "archived": false, - "view_count": 215, + "view_count": 223, "collection_position": null, "table_id": 10, "can_run_adhoc_query": true, @@ -549,7 +549,7 @@ "creator": { "email": "dbtmetabase@example.com", "first_name": "dbtmetabase", - "last_login": "2024-10-12T03:43:50.753203Z", + "last_login": "2024-11-02T04:41:42.402168Z", "is_qbnewb": false, "is_superuser": true, "id": 1, diff --git a/tests/fixtures/api/card/29.json b/tests/fixtures/api/card/29.json index af2552a8..6da1b8fc 100644 --- a/tests/fixtures/api/card/29.json +++ b/tests/fixtures/api/card/29.json @@ -2,7 +2,7 @@ "cache_invalidated_at": null, "description": null, "archived": false, - "view_count": 214, + "view_count": 222, "collection_position": null, "table_id": null, "can_run_adhoc_query": true, @@ -41,7 +41,7 @@ "creator": { "email": "dbtmetabase@example.com", "first_name": "dbtmetabase", - "last_login": "2024-10-12T03:43:50.753203Z", + "last_login": "2024-11-02T04:41:42.402168Z", "is_qbnewb": false, "is_superuser": true, "id": 1, diff --git a/tests/fixtures/api/card/30.json b/tests/fixtures/api/card/30.json index 92cbfd31..f9e5d52e 100644 --- a/tests/fixtures/api/card/30.json +++ b/tests/fixtures/api/card/30.json @@ -2,7 +2,7 @@ "cache_invalidated_at": null, "description": "Dummy 1", "archived": false, - "view_count": 39, + "view_count": 43, "collection_position": null, "table_id": null, "can_run_adhoc_query": true, @@ -41,7 +41,7 @@ "creator": { "email": "dbtmetabase@example.com", "first_name": "dbtmetabase", - "last_login": "2024-10-12T03:43:50.753203Z", + "last_login": "2024-11-02T04:41:42.402168Z", "is_qbnewb": false, "is_superuser": true, "id": 1, diff --git a/tests/fixtures/api/card/31.json b/tests/fixtures/api/card/31.json index 2aea3665..1ace592c 100644 --- a/tests/fixtures/api/card/31.json +++ b/tests/fixtures/api/card/31.json @@ -2,7 +2,7 @@ "cache_invalidated_at": null, "description": "Dummy 2", "archived": false, - "view_count": 39, + "view_count": 43, "collection_position": null, "table_id": null, "can_run_adhoc_query": true, @@ -41,7 +41,7 @@ "creator": { "email": "dbtmetabase@example.com", "first_name": "dbtmetabase", - "last_login": "2024-10-12T03:43:50.753203Z", + "last_login": "2024-11-02T04:41:42.402168Z", "is_qbnewb": false, "is_superuser": true, "id": 1, diff --git a/tests/fixtures/api/card/32.json b/tests/fixtures/api/card/32.json index 1b1916fe..44da566b 100644 --- a/tests/fixtures/api/card/32.json +++ b/tests/fixtures/api/card/32.json @@ -2,7 +2,7 @@ "cache_invalidated_at": null, "description": "CTE SQL", "archived": false, - "view_count": 30, + "view_count": 34, "collection_position": null, "table_id": null, "can_run_adhoc_query": true, @@ -276,7 +276,7 @@ "creator": { "email": "dbtmetabase@example.com", "first_name": "dbtmetabase", - "last_login": "2024-10-12T03:43:50.753203Z", + "last_login": "2024-11-02T04:41:42.402168Z", "is_qbnewb": false, "is_superuser": true, "id": 1, diff --git a/tests/fixtures/api/card/33.json b/tests/fixtures/api/card/33.json index d17e7d12..fcdf7663 100644 --- a/tests/fixtures/api/card/33.json +++ b/tests/fixtures/api/card/33.json @@ -2,7 +2,7 @@ "cache_invalidated_at": null, "description": null, "archived": false, - "view_count": 11, + "view_count": 15, "collection_position": null, "table_id": 18, "can_run_adhoc_query": true, @@ -146,7 +146,7 @@ "creator": { "email": "dbtmetabase@example.com", "first_name": "dbtmetabase", - "last_login": "2024-10-12T03:43:50.753203Z", + "last_login": "2024-11-02T04:41:42.402168Z", "is_qbnewb": false, "is_superuser": true, "id": 1, @@ -161,11 +161,11 @@ "collection_id": null, "query_type": "query", "name": "Transactions", - "last_query_start": "2024-10-12T01:52:30.557471Z", + "last_query_start": "2024-10-12T03:53:32.250619Z", "dashboard_count": 0, "last_used_at": "2024-10-12T03:43:09.869884Z", "type": "question", - "average_query_time": 58.0, + "average_query_time": 114.5, "creator_id": 1, "moderation_reviews": [], "updated_at": "2024-10-12T01:52:30.606845Z", diff --git a/tests/fixtures/api/dashboard/2.json b/tests/fixtures/api/dashboard/2.json index b65c5599..faa2f8e9 100644 --- a/tests/fixtures/api/dashboard/2.json +++ b/tests/fixtures/api/dashboard/2.json @@ -1,7 +1,7 @@ { "description": "Dashboard is a dashboard is a dashboard", "archived": false, - "view_count": 114, + "view_count": 118, "collection_position": null, "dashcards": [ { @@ -14,7 +14,7 @@ "cache_invalidated_at": null, "description": "Orders and customers", "archived": false, - "view_count": 430, + "view_count": 446, "collection_position": null, "table_id": 10, "result_metadata": [ @@ -653,7 +653,7 @@ "cache_invalidated_at": null, "description": null, "archived": false, - "view_count": 215, + "view_count": 223, "collection_position": null, "table_id": 10, "result_metadata": [ @@ -1266,7 +1266,7 @@ "cache_invalidated_at": null, "description": null, "archived": false, - "view_count": 214, + "view_count": 222, "collection_position": null, "table_id": null, "result_metadata": [ diff --git a/tests/fixtures/api/database.json b/tests/fixtures/api/database.json index fa0a6bf1..fd87b826 100644 --- a/tests/fixtures/api/database.json +++ b/tests/fixtures/api/database.json @@ -55,7 +55,7 @@ "caveats": null, "creator_id": 1, "is_full_sync": true, - "updated_at": "2024-10-12T03:43:24.194904Z", + "updated_at": "2024-11-02T04:30:07.348325Z", "native_permissions": "write", "cache_ttl": null, "details": { diff --git a/tests/fixtures/api/database/2/metadata.json b/tests/fixtures/api/database/2/metadata.json index 8ef52382..f475e7c8 100644 --- a/tests/fixtures/api/database/2/metadata.json +++ b/tests/fixtures/api/database/2/metadata.json @@ -412,7 +412,7 @@ ], "caveats": null, "segments": [], - "updated_at": "2024-10-12T03:43:30.101325Z", + "updated_at": "2024-11-02T04:33:23.804648Z", "active": true, "id": 12, "db_id": 2, @@ -941,7 +941,7 @@ ], "caveats": "Some facts are derived from payments", "segments": [], - "updated_at": "2024-10-12T03:43:30.101325Z", + "updated_at": "2024-11-02T04:33:23.804648Z", "active": true, "id": 10, "db_id": 2, @@ -1103,7 +1103,7 @@ ], "caveats": null, "segments": [], - "updated_at": "2024-10-12T03:43:30.101325Z", + "updated_at": "2024-11-02T04:33:23.804648Z", "active": true, "id": 13, "db_id": 2, @@ -1313,7 +1313,7 @@ ], "caveats": null, "segments": [], - "updated_at": "2024-10-12T03:43:30.101325Z", + "updated_at": "2024-11-02T04:33:23.804648Z", "active": true, "id": 14, "db_id": 2, @@ -1527,7 +1527,7 @@ ], "caveats": null, "segments": [], - "updated_at": "2024-10-12T03:43:30.101325Z", + "updated_at": "2024-11-02T04:33:23.804648Z", "active": true, "id": 11, "db_id": 2, @@ -1541,6 +1541,118 @@ "estimated_row_count": 113, "points_of_interest": null }, + { + "description": null, + "entity_type": "entity/GenericTable", + "view_count": 0, + "schema": "inventory", + "database_require_filter": null, + "show_in_getting_started": false, + "name": "skus", + "fields": [ + { + "description": null, + "database_type": "int4", + "semantic_type": "type/PK", + "table_id": 19, + "coercion_strategy": null, + "database_indexed": true, + "name": "sku_id", + "fingerprint_version": 0, + "has_field_values": "none", + "settings": null, + "caveats": null, + "fk_target_field_id": null, + "updated_at": "2024-11-02T04:30:08.702508Z", + "custom_position": 0, + "effective_type": "type/Integer", + "active": true, + "nfc_path": null, + "parent_id": null, + "id": 116, + "last_analyzed": null, + "database_partitioned": null, + "database_is_auto_increment": false, + "json_unfolding": false, + "position": 0, + "visibility_type": "normal", + "target": null, + "preview_display": true, + "display_name": "Sku ID", + "database_position": 0, + "database_required": true, + "fingerprint": null, + "created_at": "2024-11-02T04:30:08.23637Z", + "base_type": "type/Integer", + "points_of_interest": null + }, + { + "description": null, + "database_type": "varchar", + "semantic_type": "type/Category", + "table_id": 19, + "coercion_strategy": null, + "database_indexed": false, + "name": "product", + "fingerprint_version": 5, + "has_field_values": "list", + "settings": null, + "caveats": null, + "fk_target_field_id": null, + "updated_at": "2024-11-02T04:30:09.231926Z", + "custom_position": 0, + "effective_type": "type/Text", + "active": true, + "nfc_path": null, + "parent_id": null, + "id": 117, + "last_analyzed": "2024-11-02T04:30:09.231926Z", + "database_partitioned": null, + "database_is_auto_increment": false, + "json_unfolding": false, + "position": 1, + "visibility_type": "normal", + "target": null, + "preview_display": true, + "display_name": "Product", + "database_position": 1, + "database_required": true, + "fingerprint": { + "global": { + "distinct-count": 1, + "nil%": 0.0 + }, + "type": { + "type/Text": { + "percent-json": 0.0, + "percent-url": 0.0, + "percent-email": 0.0, + "percent-state": 0.0, + "average-length": 6.0 + } + } + }, + "created_at": "2024-11-02T04:30:08.23637Z", + "base_type": "type/Text", + "points_of_interest": null + } + ], + "caveats": null, + "segments": [], + "updated_at": "2024-11-02T04:33:23.804648Z", + "active": true, + "id": 19, + "db_id": 2, + "visibility_type": null, + "field_order": "database", + "is_upload": false, + "initial_sync_status": "complete", + "display_name": "Skus", + "metrics": [], + "created_at": "2024-11-02T04:30:07.998718Z", + "estimated_row_count": 1, + "points_of_interest": null + }, { "description": null, "entity_type": "entity/GenericTable", @@ -1925,11 +2037,96 @@ "created_at": "2024-06-19T11:49:38.865141Z", "base_type": "type/Integer", "points_of_interest": null + }, + { + "description": null, + "database_type": "int4", + "semantic_type": "type/FK", + "table_id": 15, + "coercion_strategy": null, + "database_indexed": null, + "name": "sku_id", + "fingerprint_version": 5, + "has_field_values": "list", + "settings": null, + "caveats": null, + "fk_target_field_id": 116, + "updated_at": "2024-11-02T04:30:28.446371Z", + "custom_position": 0, + "effective_type": "type/Integer", + "active": true, + "nfc_path": null, + "parent_id": null, + "id": 115, + "last_analyzed": "2024-11-02T04:26:37.882187Z", + "database_partitioned": null, + "database_is_auto_increment": false, + "json_unfolding": false, + "position": 4, + "visibility_type": "normal", + "target": { + "description": null, + "database_type": "int4", + "semantic_type": "type/PK", + "table_id": 19, + "coercion_strategy": null, + "database_indexed": true, + "name": "sku_id", + "fingerprint_version": 0, + "has_field_values": "none", + "settings": null, + "caveats": null, + "fk_target_field_id": null, + "updated_at": "2024-11-02T04:30:08.702508Z", + "custom_position": 0, + "effective_type": "type/Integer", + "active": true, + "nfc_path": null, + "parent_id": null, + "id": 116, + "last_analyzed": null, + "database_partitioned": null, + "database_is_auto_increment": false, + "json_unfolding": false, + "position": 0, + "visibility_type": "normal", + "preview_display": true, + "display_name": "Sku ID", + "database_position": 0, + "database_required": true, + "fingerprint": null, + "created_at": "2024-11-02T04:30:08.23637Z", + "base_type": "type/Integer", + "points_of_interest": null + }, + "preview_display": true, + "display_name": "Sku ID", + "database_position": 4, + "database_required": false, + "fingerprint": { + "global": { + "distinct-count": 1, + "nil%": 0.0 + }, + "type": { + "type/Number": { + "min": 1.0, + "q1": 1.0, + "q3": 1.0, + "max": 1.0, + "sd": 0.0, + "avg": 1.0 + } + } + }, + "created_at": "2024-11-02T04:26:37.239015Z", + "base_type": "type/Integer", + "points_of_interest": null } ], "caveats": null, "segments": [], - "updated_at": "2024-10-12T03:43:30.101325Z", + "updated_at": "2024-11-02T04:33:23.804648Z", "active": true, "id": 15, "db_id": 2, @@ -2158,7 +2355,7 @@ ], "caveats": null, "segments": [], - "updated_at": "2024-10-12T03:43:30.101325Z", + "updated_at": "2024-11-02T04:33:23.804648Z", "active": true, "id": 9, "db_id": 2, @@ -2436,7 +2633,7 @@ ], "caveats": null, "segments": [], - "updated_at": "2024-10-12T03:43:30.101325Z", + "updated_at": "2024-11-02T04:33:23.804648Z", "active": true, "id": 18, "db_id": 2, @@ -2453,7 +2650,7 @@ ], "creator_id": 1, "is_full_sync": true, - "updated_at": "2024-10-12T03:43:24.194904Z", + "updated_at": "2024-11-02T04:30:07.348325Z", "cache_ttl": null, "details": { "ssl": false, diff --git a/tests/fixtures/api/table.json b/tests/fixtures/api/table.json index 41edf4f6..72894d01 100644 --- a/tests/fixtures/api/table.json +++ b/tests/fixtures/api/table.json @@ -61,7 +61,7 @@ "caveats": null, "creator_id": 1, "is_full_sync": true, - "updated_at": "2024-10-12T03:43:24.194904Z", + "updated_at": "2024-11-02T04:30:07.348325Z", "cache_ttl": null, "details": { "ssl": false, @@ -96,7 +96,7 @@ "show_in_getting_started": false, "name": "customers", "caveats": null, - "updated_at": "2024-10-12T03:43:30.101325Z", + "updated_at": "2024-11-02T04:33:23.804648Z", "active": true, "id": 12, "db_id": 2, @@ -171,7 +171,7 @@ "caveats": null, "creator_id": 1, "is_full_sync": true, - "updated_at": "2024-10-12T03:43:24.194904Z", + "updated_at": "2024-11-02T04:30:07.348325Z", "cache_ttl": null, "details": { "ssl": false, @@ -206,7 +206,7 @@ "show_in_getting_started": false, "name": "orders", "caveats": "Some facts are derived from payments", - "updated_at": "2024-10-12T03:43:30.101325Z", + "updated_at": "2024-11-02T04:33:23.804648Z", "active": true, "id": 10, "db_id": 2, @@ -281,7 +281,7 @@ "caveats": null, "creator_id": 1, "is_full_sync": true, - "updated_at": "2024-10-12T03:43:24.194904Z", + "updated_at": "2024-11-02T04:30:07.348325Z", "cache_ttl": null, "details": { "ssl": false, @@ -316,7 +316,7 @@ "show_in_getting_started": false, "name": "raw_customers", "caveats": null, - "updated_at": "2024-10-12T03:43:30.101325Z", + "updated_at": "2024-11-02T04:33:23.804648Z", "active": true, "id": 13, "db_id": 2, @@ -391,7 +391,7 @@ "caveats": null, "creator_id": 1, "is_full_sync": true, - "updated_at": "2024-10-12T03:43:24.194904Z", + "updated_at": "2024-11-02T04:30:07.348325Z", "cache_ttl": null, "details": { "ssl": false, @@ -426,7 +426,7 @@ "show_in_getting_started": false, "name": "raw_orders", "caveats": null, - "updated_at": "2024-10-12T03:43:30.101325Z", + "updated_at": "2024-11-02T04:33:23.804648Z", "active": true, "id": 14, "db_id": 2, @@ -501,7 +501,7 @@ "caveats": null, "creator_id": 1, "is_full_sync": true, - "updated_at": "2024-10-12T03:43:24.194904Z", + "updated_at": "2024-11-02T04:30:07.348325Z", "cache_ttl": null, "details": { "ssl": false, @@ -536,7 +536,7 @@ "show_in_getting_started": false, "name": "raw_payments", "caveats": null, - "updated_at": "2024-10-12T03:43:30.101325Z", + "updated_at": "2024-11-02T04:33:23.804648Z", "active": true, "id": 11, "db_id": 2, @@ -549,6 +549,116 @@ "estimated_row_count": 113, "points_of_interest": null }, + { + "description": null, + "entity_type": "entity/GenericTable", + "view_count": 0, + "schema": "inventory", + "database_require_filter": null, + "db": { + "uploads_schema_name": null, + "description": null, + "features": [ + "index-info", + "full-join", + "window-functions/cumulative", + "basic-aggregations", + "temporal-extract", + "identifiers-with-spaces", + "actions/custom", + "window-functions/offset", + "now", + "convert-timezone", + "nested-field-columns", + "standard-deviation-aggregations", + "test/jvm-timezone-setting", + "date-arithmetics", + "persist-models", + "actions", + "expression-aggregations", + "percentile-aggregations", + "connection-impersonation", + "foreign-keys", + "table-privileges", + "right-join", + "left-join", + "native-parameters", + "uuid-type", + "schemas", + "nested-queries", + "expressions", + "uploads", + "set-timezone", + "regex", + "case-sensitivity-string-filter-options", + "binning", + "metadata/key-constraints", + "datetime-diff", + "upload-with-auto-pk", + "inner-join", + "advanced-math-expressions", + "fingerprint", + "native-parameter-card-reference" + ], + "uploads_table_prefix": null, + "cache_field_values_schedule": "0 0 5 * * ? *", + "timezone": "GMT", + "is_attached_dwh": false, + "auto_run_queries": true, + "metadata_sync_schedule": "0 11 * * * ? *", + "name": "dbtmetabase", + "settings": null, + "caveats": null, + "creator_id": 1, + "is_full_sync": true, + "updated_at": "2024-11-02T04:30:07.348325Z", + "cache_ttl": null, + "details": { + "ssl": false, + "password": "**MetabasePass**", + "port": 5432, + "advanced-options": false, + "schema-filters-type": "all", + "dbname": "dbtmetabase", + "host": "postgres", + "tunnel-enabled": false, + "user": "dbtmetabase" + }, + "is_sample": false, + "id": 2, + "is_on_demand": false, + "engine": "postgres", + "initial_sync_status": "complete", + "is_audit": false, + "dbms_version": { + "flavor": "PostgreSQL", + "version": "16.4 (Debian 16.4-1.pgdg120+2)", + "semantic-version": [ + 16, + 4 + ] + }, + "uploads_enabled": false, + "refingerprint": false, + "created_at": "2024-06-19T11:49:38.313316Z", + "points_of_interest": null + }, + "show_in_getting_started": false, + "name": "skus", + "caveats": null, + "updated_at": "2024-11-02T04:33:23.804648Z", + "active": true, + "id": 19, + "db_id": 2, + "visibility_type": null, + "field_order": "database", + "is_upload": false, + "initial_sync_status": "complete", + "display_name": "Skus", + "created_at": "2024-11-02T04:30:07.998718Z", + "estimated_row_count": 1, + "points_of_interest": null + }, { "description": null, "entity_type": "entity/GenericTable", @@ -611,7 +721,7 @@ "caveats": null, "creator_id": 1, "is_full_sync": true, - "updated_at": "2024-10-12T03:43:24.194904Z", + "updated_at": "2024-11-02T04:30:07.348325Z", "cache_ttl": null, "details": { "ssl": false, @@ -721,7 +831,7 @@ "caveats": null, "creator_id": 1, "is_full_sync": true, - "updated_at": "2024-10-12T03:43:24.194904Z", + "updated_at": "2024-11-02T04:30:07.348325Z", "cache_ttl": null, "details": { "ssl": false, @@ -756,7 +866,7 @@ "show_in_getting_started": false, "name": "stg_orders", "caveats": null, - "updated_at": "2024-10-12T03:43:30.101325Z", + "updated_at": "2024-11-02T04:33:23.804648Z", "active": true, "id": 15, "db_id": 2, @@ -831,7 +941,7 @@ "caveats": null, "creator_id": 1, "is_full_sync": true, - "updated_at": "2024-10-12T03:43:24.194904Z", + "updated_at": "2024-11-02T04:30:07.348325Z", "cache_ttl": null, "details": { "ssl": false, @@ -866,7 +976,7 @@ "show_in_getting_started": false, "name": "stg_payments", "caveats": null, - "updated_at": "2024-10-12T03:43:30.101325Z", + "updated_at": "2024-11-02T04:33:23.804648Z", "active": true, "id": 9, "db_id": 2, @@ -941,7 +1051,7 @@ "caveats": null, "creator_id": 1, "is_full_sync": true, - "updated_at": "2024-10-12T03:43:24.194904Z", + "updated_at": "2024-11-02T04:30:07.348325Z", "cache_ttl": null, "details": { "ssl": false, @@ -976,7 +1086,7 @@ "show_in_getting_started": false, "name": "transactions", "caveats": null, - "updated_at": "2024-10-12T03:43:30.101325Z", + "updated_at": "2024-11-02T04:33:23.804648Z", "active": true, "id": 18, "db_id": 2, diff --git a/tests/fixtures/api/user/1.json b/tests/fixtures/api/user/1.json index 88be00ec..50f7f8df 100644 --- a/tests/fixtures/api/user/1.json +++ b/tests/fixtures/api/user/1.json @@ -2,7 +2,7 @@ "email": "dbtmetabase@example.com", "first_name": "dbtmetabase", "locale": null, - "last_login": "2024-10-12T03:43:50.753203Z", + "last_login": "2024-11-02T04:41:42.402168Z", "is_active": true, "user_group_memberships": [ { @@ -13,7 +13,7 @@ } ], "is_qbnewb": false, - "updated_at": "2024-10-12T03:43:50.753203Z", + "updated_at": "2024-11-02T04:41:42.402168Z", "is_superuser": true, "login_attributes": null, "id": 1, diff --git a/tests/fixtures/exposure/collection/our_analytics.yml b/tests/fixtures/exposure/collection/our_analytics.yml index b9faecf5..11d1926d 100644 --- a/tests/fixtures/exposure/collection/our_analytics.yml +++ b/tests/fixtures/exposure/collection/our_analytics.yml @@ -208,5 +208,5 @@ exposures: depends_on: - ref('payments') meta: - average_query_time: '0:00.058' + average_query_time: '0:00.115' last_used_at: '2024-10-12T03:43:09.869884Z' diff --git a/tests/fixtures/exposure/default/exposures.yml b/tests/fixtures/exposure/default/exposures.yml index 5375c517..2dca3392 100644 --- a/tests/fixtures/exposure/default/exposures.yml +++ b/tests/fixtures/exposure/default/exposures.yml @@ -222,7 +222,7 @@ exposures: depends_on: - ref('payments') meta: - average_query_time: '0:00.058' + average_query_time: '0:00.115' last_used_at: '2024-10-12T03:43:09.869884Z' tags: - metabase diff --git a/tests/fixtures/exposure/type/card/33.yml b/tests/fixtures/exposure/type/card/33.yml index 6605c3c1..2c037a86 100644 --- a/tests/fixtures/exposure/type/card/33.yml +++ b/tests/fixtures/exposure/type/card/33.yml @@ -24,5 +24,5 @@ exposures: depends_on: - ref('payments') meta: - average_query_time: '0:00.058' + average_query_time: '0:00.115' last_used_at: '2024-10-12T03:43:09.869884Z' diff --git a/tests/fixtures/manifest-v12.json b/tests/fixtures/manifest-v12.json index 6af18f97..c93bcbfa 100644 --- a/tests/fixtures/manifest-v12.json +++ b/tests/fixtures/manifest-v12.json @@ -2,8 +2,8 @@ "metadata": { "dbt_schema_version": "https://schemas.getdbt.com/dbt/manifest/v12.json", "dbt_version": "1.8.6", - "generated_at": "2024-10-12T01:52:52.428226Z", - "invocation_id": "ab874d8f-6667-44f9-bfd7-ebbc8221d2ce", + "generated_at": "2024-11-02T04:30:04.614989Z", + "invocation_id": "0e7bbbfc-b3b3-43c4-9348-e9159fe8ebec", "env": {}, "project_name": "sandbox", "project_id": "93bc63e0b4f48fbbff568d9fc0dc3def", @@ -128,12 +128,12 @@ "node_color": null }, "patch_path": "sandbox://models/schema.yml", - "build_path": null, + "build_path": "target/run/sandbox/models/payments.sql", "unrendered_config": { "materialized": "table", "alias": "transactions" }, - "created_at": 1728697972.849706, + "created_at": 1730458997.3885305, "relation_name": "\"dbtmetabase\".\"public\".\"transactions\"", "raw_code": "{{ config(alias='transactions') }}\n\nselect * from {{ ref('stg_payments') }}", "language": "sql", @@ -298,14 +298,14 @@ "node_color": null }, "patch_path": "sandbox://models/schema.yml", - "build_path": null, + "build_path": "target/run/sandbox/models/customers.sql", "unrendered_config": { "materialized": "table", "meta": { "metabase.display_name": "clients" } }, - "created_at": 1728697972.846699, + "created_at": 1730458997.3858223, "relation_name": "\"dbtmetabase\".\"public\".\"customers\"", "raw_code": "with customers as (\n\n select * from {{ ref('stg_customers') }}\n\n),\n\norders as (\n\n select * from {{ ref('stg_orders') }}\n\n),\n\npayments as (\n\n select * from {{ ref('stg_payments') }}\n\n),\n\ncustomer_orders as (\n\n select\n customer_id,\n\n min(order_date) as first_order,\n max(order_date) as most_recent_order,\n count(order_id) as number_of_orders\n from orders\n\n group by 1\n\n),\n\ncustomer_payments as (\n\n select\n orders.customer_id,\n sum(amount) as total_amount\n\n from payments\n\n left join orders using (order_id)\n\n group by 1\n\n),\n\nfinal as (\n\n select\n customers.customer_id,\n customers.first_name,\n customers.last_name,\n customer_orders.first_order,\n customer_orders.most_recent_order,\n customer_orders.number_of_orders,\n customer_payments.total_amount as customer_lifetime_value\n\n from customers\n\n left join customer_orders using (customer_id)\n\n left join customer_payments using (customer_id)\n\n)\n\nselect * from final", "language": "sql", @@ -519,7 +519,7 @@ "node_color": null }, "patch_path": "sandbox://models/schema.yml", - "build_path": null, + "build_path": "target/run/sandbox/models/orders.sql", "unrendered_config": { "materialized": "table", "meta": { @@ -527,7 +527,7 @@ "metabase.caveats": "Some facts are derived from payments" } }, - "created_at": 1728697972.8491452, + "created_at": 1730458997.3879502, "relation_name": "\"dbtmetabase\".\"public\".\"orders\"", "raw_code": "{% set payment_methods = ['credit_card', 'coupon', 'bank_transfer', 'gift_card'] %}\n\nwith orders as (\n\n select * from {{ ref('stg_orders') }}\n\n),\n\npayments as (\n\n select * from {{ ref('stg_payments') }}\n\n),\n\norder_payments as (\n\n select\n order_id,\n\n {% for payment_method in payment_methods -%}\n sum(case when payment_method = '{{ payment_method }}' then amount else 0 end) as {{ payment_method }}_amount,\n {% endfor -%}\n\n sum(amount) as total_amount\n\n from payments\n\n group by 1\n\n),\n\nfinal as (\n\n select\n orders.order_id,\n orders.customer_id,\n orders.order_date,\n orders.status,\n\n {% for payment_method in payment_methods -%}\n\n order_payments.{{ payment_method }}_amount,\n\n {% endfor -%}\n\n order_payments.total_amount as amount\n\n from orders\n\n left join order_payments using (order_id)\n\n)\n\nselect * from final", "language": "sql", @@ -660,14 +660,14 @@ "node_color": null }, "patch_path": "sandbox://models/staging/schema.yml", - "build_path": null, + "build_path": "target/run/sandbox/models/staging/stg_customers.sql", "unrendered_config": { "materialized": "view", "meta": { "metabase.visibility_type": "hidden" } }, - "created_at": 1728697972.895749, + "created_at": 1730458997.432469, "relation_name": "\"dbtmetabase\".\"public\".\"stg_customers\"", "raw_code": "with source as (\n\n {#-\n Normally we would select from the table here, but we are using seeds to load\n our data in this project\n #}\n select * from {{ ref('raw_customers') }}\n\n),\n\nrenamed as (\n\n select\n id as customer_id,\n first_name,\n last_name\n\n from source\n\n)\n\nselect * from renamed", "language": "sql", @@ -799,11 +799,11 @@ "node_color": null }, "patch_path": "sandbox://models/staging/schema.yml", - "build_path": null, + "build_path": "target/run/sandbox/models/staging/stg_payments.sql", "unrendered_config": { "materialized": "view" }, - "created_at": 1728697972.8962188, + "created_at": 1730458997.433059, "relation_name": "\"dbtmetabase\".\"public\".\"stg_payments\"", "raw_code": "with source as (\n \n {#-\n Normally we would select from the table here, but we are using seeds to load\n our data in this project\n #}\n select * from {{ ref('raw_payments') }}\n\n),\n\nrenamed as (\n\n select\n id as payment_id,\n order_id,\n payment_method,\n\n --`amount` is currently stored in cents, so we convert it to dollars\n amount / 100 as amount\n\n from source\n\n)\n\nselect * from renamed", "language": "sql", @@ -838,142 +838,6 @@ "latest_version": null, "deprecation_date": null }, - "model.sandbox.stg_orders": { - "database": "dbtmetabase", - "schema": "public", - "name": "stg_orders", - "resource_type": "model", - "package_name": "sandbox", - "path": "staging/stg_orders.sql", - "original_file_path": "models/staging/stg_orders.sql", - "unique_id": "model.sandbox.stg_orders", - "fqn": [ - "sandbox", - "staging", - "stg_orders" - ], - "alias": "stg_orders", - "checksum": { - "name": "sha256", - "checksum": "f4f881cb09d2c4162200fc331d7401df6d1abd4fed492554a7db70dede347108" - }, - "config": { - "enabled": true, - "alias": null, - "schema": null, - "database": null, - "tags": [], - "meta": {}, - "group": null, - "materialized": "view", - "incremental_strategy": null, - "persist_docs": {}, - "post-hook": [], - "pre-hook": [], - "quoting": {}, - "column_types": {}, - "full_refresh": null, - "unique_key": null, - "on_schema_change": "ignore", - "on_configuration_change": "apply", - "grants": {}, - "packages": [], - "docs": { - "show": true, - "node_color": null - }, - "contract": { - "enforced": false, - "alias_types": true - }, - "access": "protected" - }, - "tags": [], - "description": "", - "columns": { - "order_id": { - "name": "order_id", - "description": "", - "meta": {}, - "data_type": null, - "constraints": [], - "quote": null, - "tags": [] - }, - "status": { - "name": "status", - "description": "", - "meta": {}, - "data_type": null, - "constraints": [], - "quote": null, - "tags": [] - }, - "order_date": { - "name": "order_date", - "description": "", - "meta": {}, - "data_type": null, - "constraints": [], - "quote": null, - "tags": [] - }, - "customer_id": { - "name": "customer_id", - "description": "", - "meta": {}, - "data_type": null, - "constraints": [], - "quote": null, - "tags": [] - } - }, - "meta": {}, - "group": null, - "docs": { - "show": true, - "node_color": null - }, - "patch_path": "sandbox://models/staging/schema.yml", - "build_path": null, - "unrendered_config": { - "materialized": "view" - }, - "created_at": 1728697972.895993, - "relation_name": "\"dbtmetabase\".\"public\".\"stg_orders\"", - "raw_code": "with source as (\n\n {#-\n Normally we would select from the table here, but we are using seeds to load\n our data in this project\n #}\n select * from {{ ref('raw_orders') }}\n\n),\n\nrenamed as (\n\n select\n id as order_id,\n user_id as customer_id,\n order_date,\n status\n\n from source\n\n)\n\nselect * from renamed", - "language": "sql", - "refs": [ - { - "name": "raw_orders", - "package": null, - "version": null - } - ], - "sources": [], - "metrics": [], - "depends_on": { - "macros": [], - "nodes": [ - "seed.sandbox.raw_orders" - ] - }, - "compiled_path": "target/compiled/sandbox/models/staging/stg_orders.sql", - "compiled": true, - "compiled_code": "with source as (\n select * from \"dbtmetabase\".\"public\".\"raw_orders\"\n\n),\n\nrenamed as (\n\n select\n id as order_id,\n user_id as customer_id,\n order_date,\n status\n\n from source\n\n)\n\nselect * from renamed", - "extra_ctes_injected": true, - "extra_ctes": [], - "contract": { - "enforced": false, - "alias_types": true, - "checksum": null - }, - "access": "protected", - "constraints": [], - "version": null, - "latest_version": null, - "deprecation_date": null - }, "seed.sandbox.raw_customers": { "database": "dbtmetabase", "schema": "public", @@ -1036,10 +900,10 @@ "patch_path": null, "build_path": null, "unrendered_config": {}, - "created_at": 1728697972.819583, + "created_at": 1730458997.3576694, "relation_name": "\"dbtmetabase\".\"public\".\"raw_customers\"", "raw_code": "", - "root_path": "/Users/mike/workspace/dbt-metabase/sandbox", + "root_path": "/app/sandbox", "depends_on": { "macros": [] } @@ -1106,10 +970,10 @@ "patch_path": null, "build_path": null, "unrendered_config": {}, - "created_at": 1728697972.820433, + "created_at": 1730458997.3585072, "relation_name": "\"dbtmetabase\".\"public\".\"raw_orders\"", "raw_code": "", - "root_path": "/Users/mike/workspace/dbt-metabase/sandbox", + "root_path": "/app/sandbox", "depends_on": { "macros": [] } @@ -1176,10 +1040,10 @@ "patch_path": null, "build_path": null, "unrendered_config": {}, - "created_at": 1728697972.821171, + "created_at": 1730458997.3592165, "relation_name": "\"dbtmetabase\".\"public\".\"raw_payments\"", "raw_code": "", - "root_path": "/Users/mike/workspace/dbt-metabase/sandbox", + "root_path": "/app/sandbox", "depends_on": { "macros": [] } @@ -1232,7 +1096,7 @@ "patch_path": null, "build_path": null, "unrendered_config": {}, - "created_at": 1728697972.8767738, + "created_at": 1730458997.415395, "relation_name": null, "raw_code": "{{ test_unique(**_dbt_generic_test_kwargs) }}", "language": "sql", @@ -1247,18 +1111,13 @@ "metrics": [], "depends_on": { "macros": [ - "macro.dbt.test_unique", - "macro.dbt.get_where_subquery" + "macro.dbt.test_unique" ], "nodes": [ "model.sandbox.customers" ] }, - "compiled_path": "target/compiled/sandbox/models/schema.yml/unique_customers_customer_id.sql", - "compiled": true, - "compiled_code": "\n \n \n\nselect\n customer_id as unique_field,\n count(*) as n_records\n\nfrom \"dbtmetabase\".\"public\".\"customers\"\nwhere customer_id is not null\ngroup by customer_id\nhaving count(*) > 1\n\n\n", - "extra_ctes_injected": true, - "extra_ctes": [], + "compiled_path": null, "contract": { "enforced": false, "alias_types": true, @@ -1324,7 +1183,7 @@ "patch_path": null, "build_path": null, "unrendered_config": {}, - "created_at": 1728697972.8776078, + "created_at": 1730458997.4160776, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", @@ -1339,18 +1198,13 @@ "metrics": [], "depends_on": { "macros": [ - "macro.dbt.test_not_null", - "macro.dbt.get_where_subquery" + "macro.dbt.test_not_null" ], "nodes": [ "model.sandbox.customers" ] }, - "compiled_path": "target/compiled/sandbox/models/schema.yml/not_null_customers_customer_id.sql", - "compiled": true, - "compiled_code": "\n \n \n\n\n\nselect customer_id\nfrom \"dbtmetabase\".\"public\".\"customers\"\nwhere customer_id is null\n\n\n", - "extra_ctes_injected": true, - "extra_ctes": [], + "compiled_path": null, "contract": { "enforced": false, "alias_types": true, @@ -1416,7 +1270,7 @@ "patch_path": null, "build_path": null, "unrendered_config": {}, - "created_at": 1728697972.878282, + "created_at": 1730458997.4166734, "relation_name": null, "raw_code": "{{ test_unique(**_dbt_generic_test_kwargs) }}", "language": "sql", @@ -1431,18 +1285,13 @@ "metrics": [], "depends_on": { "macros": [ - "macro.dbt.test_unique", - "macro.dbt.get_where_subquery" + "macro.dbt.test_unique" ], "nodes": [ "model.sandbox.orders" ] }, - "compiled_path": "target/compiled/sandbox/models/schema.yml/unique_orders_order_id.sql", - "compiled": true, - "compiled_code": "\n \n \n\nselect\n order_id as unique_field,\n count(*) as n_records\n\nfrom \"dbtmetabase\".\"public\".\"orders\"\nwhere order_id is not null\ngroup by order_id\nhaving count(*) > 1\n\n\n", - "extra_ctes_injected": true, - "extra_ctes": [], + "compiled_path": null, "contract": { "enforced": false, "alias_types": true, @@ -1508,7 +1357,7 @@ "patch_path": null, "build_path": null, "unrendered_config": {}, - "created_at": 1728697972.878919, + "created_at": 1730458997.417242, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", @@ -1523,18 +1372,13 @@ "metrics": [], "depends_on": { "macros": [ - "macro.dbt.test_not_null", - "macro.dbt.get_where_subquery" + "macro.dbt.test_not_null" ], "nodes": [ "model.sandbox.orders" ] }, - "compiled_path": "target/compiled/sandbox/models/schema.yml/not_null_orders_order_id.sql", - "compiled": true, - "compiled_code": "\n \n \n\n\n\nselect order_id\nfrom \"dbtmetabase\".\"public\".\"orders\"\nwhere order_id is null\n\n\n", - "extra_ctes_injected": true, - "extra_ctes": [], + "compiled_path": null, "contract": { "enforced": false, "alias_types": true, @@ -1600,7 +1444,7 @@ "patch_path": null, "build_path": null, "unrendered_config": {}, - "created_at": 1728697972.879531, + "created_at": 1730458997.417776, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", @@ -1615,18 +1459,13 @@ "metrics": [], "depends_on": { "macros": [ - "macro.dbt.test_not_null", - "macro.dbt.get_where_subquery" + "macro.dbt.test_not_null" ], "nodes": [ "model.sandbox.orders" ] }, - "compiled_path": "target/compiled/sandbox/models/schema.yml/not_null_orders_customer_id.sql", - "compiled": true, - "compiled_code": "\n \n \n\n\n\nselect customer_id\nfrom \"dbtmetabase\".\"public\".\"orders\"\nwhere customer_id is null\n\n\n", - "extra_ctes_injected": true, - "extra_ctes": [], + "compiled_path": null, "contract": { "enforced": false, "alias_types": true, @@ -1694,7 +1533,7 @@ "unrendered_config": { "alias": "accepted_values_orders_1ce6ab157c285f7cd2ac656013faf758" }, - "created_at": 1728697972.880168, + "created_at": 1730458997.4183276, "relation_name": null, "raw_code": "{{ test_accepted_values(**_dbt_generic_test_kwargs) }}{{ config(alias=\"accepted_values_orders_1ce6ab157c285f7cd2ac656013faf758\") }}", "language": "sql", @@ -1716,11 +1555,7 @@ "model.sandbox.orders" ] }, - "compiled_path": "target/compiled/sandbox/models/schema.yml/accepted_values_orders_1ce6ab157c285f7cd2ac656013faf758.sql", - "compiled": true, - "compiled_code": "\n \n \n\nwith all_values as (\n\n select\n status as value_field,\n count(*) as n_records\n\n from \"dbtmetabase\".\"public\".\"orders\"\n group by status\n\n)\n\nselect *\nfrom all_values\nwhere value_field not in (\n 'placed','shipped','completed','return_pending','returned'\n)\n\n\n", - "extra_ctes_injected": true, - "extra_ctes": [], + "compiled_path": null, "contract": { "enforced": false, "alias_types": true, @@ -1793,7 +1628,7 @@ "patch_path": null, "build_path": null, "unrendered_config": {}, - "created_at": 1728697972.8879502, + "created_at": 1730458997.4257019, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", @@ -1808,18 +1643,13 @@ "metrics": [], "depends_on": { "macros": [ - "macro.dbt.test_not_null", - "macro.dbt.get_where_subquery" + "macro.dbt.test_not_null" ], "nodes": [ "model.sandbox.orders" ] }, - "compiled_path": "target/compiled/sandbox/models/schema.yml/not_null_orders_amount.sql", - "compiled": true, - "compiled_code": "\n \n \n\n\n\nselect amount\nfrom \"dbtmetabase\".\"public\".\"orders\"\nwhere amount is null\n\n\n", - "extra_ctes_injected": true, - "extra_ctes": [], + "compiled_path": null, "contract": { "enforced": false, "alias_types": true, @@ -1885,7 +1715,7 @@ "patch_path": null, "build_path": null, "unrendered_config": {}, - "created_at": 1728697972.8885949, + "created_at": 1730458997.426263, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", @@ -1900,18 +1730,13 @@ "metrics": [], "depends_on": { "macros": [ - "macro.dbt.test_not_null", - "macro.dbt.get_where_subquery" + "macro.dbt.test_not_null" ], "nodes": [ "model.sandbox.orders" ] }, - "compiled_path": "target/compiled/sandbox/models/schema.yml/not_null_orders_credit_card_amount.sql", - "compiled": true, - "compiled_code": "\n \n \n\n\n\nselect credit_card_amount\nfrom \"dbtmetabase\".\"public\".\"orders\"\nwhere credit_card_amount is null\n\n\n", - "extra_ctes_injected": true, - "extra_ctes": [], + "compiled_path": null, "contract": { "enforced": false, "alias_types": true, @@ -1977,7 +1802,7 @@ "patch_path": null, "build_path": null, "unrendered_config": {}, - "created_at": 1728697972.889214, + "created_at": 1730458997.426792, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", @@ -1992,18 +1817,13 @@ "metrics": [], "depends_on": { "macros": [ - "macro.dbt.test_not_null", - "macro.dbt.get_where_subquery" + "macro.dbt.test_not_null" ], "nodes": [ "model.sandbox.orders" ] }, - "compiled_path": "target/compiled/sandbox/models/schema.yml/not_null_orders_coupon_amount.sql", - "compiled": true, - "compiled_code": "\n \n \n\n\n\nselect coupon_amount\nfrom \"dbtmetabase\".\"public\".\"orders\"\nwhere coupon_amount is null\n\n\n", - "extra_ctes_injected": true, - "extra_ctes": [], + "compiled_path": null, "contract": { "enforced": false, "alias_types": true, @@ -2069,7 +1889,7 @@ "patch_path": null, "build_path": null, "unrendered_config": {}, - "created_at": 1728697972.889819, + "created_at": 1730458997.4273221, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", @@ -2084,18 +1904,13 @@ "metrics": [], "depends_on": { "macros": [ - "macro.dbt.test_not_null", - "macro.dbt.get_where_subquery" + "macro.dbt.test_not_null" ], "nodes": [ "model.sandbox.orders" ] }, - "compiled_path": "target/compiled/sandbox/models/schema.yml/not_null_orders_bank_transfer_amount.sql", - "compiled": true, - "compiled_code": "\n \n \n\n\n\nselect bank_transfer_amount\nfrom \"dbtmetabase\".\"public\".\"orders\"\nwhere bank_transfer_amount is null\n\n\n", - "extra_ctes_injected": true, - "extra_ctes": [], + "compiled_path": null, "contract": { "enforced": false, "alias_types": true, @@ -2161,7 +1976,7 @@ "patch_path": null, "build_path": null, "unrendered_config": {}, - "created_at": 1728697972.8904269, + "created_at": 1730458997.4278572, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", @@ -2176,18 +1991,13 @@ "metrics": [], "depends_on": { "macros": [ - "macro.dbt.test_not_null", - "macro.dbt.get_where_subquery" + "macro.dbt.test_not_null" ], "nodes": [ "model.sandbox.orders" ] }, - "compiled_path": "target/compiled/sandbox/models/schema.yml/not_null_orders_gift_card_amount.sql", - "compiled": true, - "compiled_code": "\n \n \n\n\n\nselect gift_card_amount\nfrom \"dbtmetabase\".\"public\".\"orders\"\nwhere gift_card_amount is null\n\n\n", - "extra_ctes_injected": true, - "extra_ctes": [], + "compiled_path": null, "contract": { "enforced": false, "alias_types": true, @@ -2253,7 +2063,7 @@ "patch_path": null, "build_path": null, "unrendered_config": {}, - "created_at": 1728697972.8911061, + "created_at": 1730458997.4284313, "relation_name": null, "raw_code": "{{ test_unique(**_dbt_generic_test_kwargs) }}", "language": "sql", @@ -2268,18 +2078,13 @@ "metrics": [], "depends_on": { "macros": [ - "macro.dbt.test_unique", - "macro.dbt.get_where_subquery" + "macro.dbt.test_unique" ], "nodes": [ "model.sandbox.payments" ] }, - "compiled_path": "target/compiled/sandbox/models/schema.yml/unique_payments_payment_id.sql", - "compiled": true, - "compiled_code": "\n \n \n\nselect\n payment_id as unique_field,\n count(*) as n_records\n\nfrom \"dbtmetabase\".\"public\".\"transactions\"\nwhere payment_id is not null\ngroup by payment_id\nhaving count(*) > 1\n\n\n", - "extra_ctes_injected": true, - "extra_ctes": [], + "compiled_path": null, "contract": { "enforced": false, "alias_types": true, @@ -2345,7 +2150,7 @@ "patch_path": null, "build_path": null, "unrendered_config": {}, - "created_at": 1728697972.8917298, + "created_at": 1730458997.4289184, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", @@ -2360,18 +2165,13 @@ "metrics": [], "depends_on": { "macros": [ - "macro.dbt.test_not_null", - "macro.dbt.get_where_subquery" + "macro.dbt.test_not_null" ], "nodes": [ "model.sandbox.payments" ] }, - "compiled_path": "target/compiled/sandbox/models/schema.yml/not_null_payments_payment_id.sql", - "compiled": true, - "compiled_code": "\n \n \n\n\n\nselect payment_id\nfrom \"dbtmetabase\".\"public\".\"transactions\"\nwhere payment_id is null\n\n\n", - "extra_ctes_injected": true, - "extra_ctes": [], + "compiled_path": null, "contract": { "enforced": false, "alias_types": true, @@ -2439,7 +2239,7 @@ "unrendered_config": { "alias": "accepted_values_payments_ac873789575b592cd7506fd5911f7dc8" }, - "created_at": 1728697972.89236, + "created_at": 1730458997.429424, "relation_name": null, "raw_code": "{{ test_accepted_values(**_dbt_generic_test_kwargs) }}{{ config(alias=\"accepted_values_payments_ac873789575b592cd7506fd5911f7dc8\") }}", "language": "sql", @@ -2461,11 +2261,7 @@ "model.sandbox.payments" ] }, - "compiled_path": "target/compiled/sandbox/models/schema.yml/accepted_values_payments_ac873789575b592cd7506fd5911f7dc8.sql", - "compiled": true, - "compiled_code": "\n \n \n\nwith all_values as (\n\n select\n payment_method as value_field,\n count(*) as n_records\n\n from \"dbtmetabase\".\"public\".\"transactions\"\n group by payment_method\n\n)\n\nselect *\nfrom all_values\nwhere value_field not in (\n 'credit_card','coupon','bank_transfer','gift_card'\n)\n\n\n", - "extra_ctes_injected": true, - "extra_ctes": [], + "compiled_path": null, "contract": { "enforced": false, "alias_types": true, @@ -2537,7 +2333,7 @@ "patch_path": null, "build_path": null, "unrendered_config": {}, - "created_at": 1728697972.894464, + "created_at": 1730458997.4313543, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", @@ -2552,18 +2348,13 @@ "metrics": [], "depends_on": { "macros": [ - "macro.dbt.test_not_null", - "macro.dbt.get_where_subquery" + "macro.dbt.test_not_null" ], "nodes": [ "model.sandbox.payments" ] }, - "compiled_path": "target/compiled/sandbox/models/schema.yml/not_null_payments_order_id.sql", - "compiled": true, - "compiled_code": "\n \n \n\n\n\nselect order_id\nfrom \"dbtmetabase\".\"public\".\"transactions\"\nwhere order_id is null\n\n\n", - "extra_ctes_injected": true, - "extra_ctes": [], + "compiled_path": null, "contract": { "enforced": false, "alias_types": true, @@ -2630,7 +2421,7 @@ "patch_path": null, "build_path": null, "unrendered_config": {}, - "created_at": 1728697972.896523, + "created_at": 1730458997.4333599, "relation_name": null, "raw_code": "{{ test_unique(**_dbt_generic_test_kwargs) }}", "language": "sql", @@ -2645,18 +2436,13 @@ "metrics": [], "depends_on": { "macros": [ - "macro.dbt.test_unique", - "macro.dbt.get_where_subquery" + "macro.dbt.test_unique" ], "nodes": [ "model.sandbox.stg_customers" ] }, - "compiled_path": "target/compiled/sandbox/models/staging/schema.yml/unique_stg_customers_customer_id.sql", - "compiled": true, - "compiled_code": "\n \n \n\nselect\n customer_id as unique_field,\n count(*) as n_records\n\nfrom \"dbtmetabase\".\"public\".\"stg_customers\"\nwhere customer_id is not null\ngroup by customer_id\nhaving count(*) > 1\n\n\n", - "extra_ctes_injected": true, - "extra_ctes": [], + "compiled_path": null, "contract": { "enforced": false, "alias_types": true, @@ -2723,7 +2509,7 @@ "patch_path": null, "build_path": null, "unrendered_config": {}, - "created_at": 1728697972.897233, + "created_at": 1730458997.4338734, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", @@ -2738,18 +2524,13 @@ "metrics": [], "depends_on": { "macros": [ - "macro.dbt.test_not_null", - "macro.dbt.get_where_subquery" + "macro.dbt.test_not_null" ], "nodes": [ "model.sandbox.stg_customers" ] }, - "compiled_path": "target/compiled/sandbox/models/staging/schema.yml/not_null_stg_customers_customer_id.sql", - "compiled": true, - "compiled_code": "\n \n \n\n\n\nselect customer_id\nfrom \"dbtmetabase\".\"public\".\"stg_customers\"\nwhere customer_id is null\n\n\n", - "extra_ctes_injected": true, - "extra_ctes": [], + "compiled_path": null, "contract": { "enforced": false, "alias_types": true, @@ -2767,21 +2548,21 @@ "namespace": null } }, - "test.sandbox.unique_stg_orders_order_id.e3b841c71a": { + "test.sandbox.unique_stg_payments_payment_id.3744510712": { "database": "dbtmetabase", "schema": "public_dbt_test__audit", - "name": "unique_stg_orders_order_id", + "name": "unique_stg_payments_payment_id", "resource_type": "test", "package_name": "sandbox", - "path": "unique_stg_orders_order_id.sql", + "path": "unique_stg_payments_payment_id.sql", "original_file_path": "models/staging/schema.yml", - "unique_id": "test.sandbox.unique_stg_orders_order_id.e3b841c71a", + "unique_id": "test.sandbox.unique_stg_payments_payment_id.3744510712", "fqn": [ "sandbox", "staging", - "unique_stg_orders_order_id" + "unique_stg_payments_payment_id" ], - "alias": "unique_stg_orders_order_id", + "alias": "unique_stg_payments_payment_id", "checksum": { "name": "none", "checksum": "" @@ -2816,13 +2597,13 @@ "patch_path": null, "build_path": null, "unrendered_config": {}, - "created_at": 1728697972.8980212, + "created_at": 1730458997.4394667, "relation_name": null, "raw_code": "{{ test_unique(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [ { - "name": "stg_orders", + "name": "stg_payments", "package": null, "version": null } @@ -2831,50 +2612,45 @@ "metrics": [], "depends_on": { "macros": [ - "macro.dbt.test_unique", - "macro.dbt.get_where_subquery" + "macro.dbt.test_unique" ], "nodes": [ - "model.sandbox.stg_orders" + "model.sandbox.stg_payments" ] }, - "compiled_path": "target/compiled/sandbox/models/staging/schema.yml/unique_stg_orders_order_id.sql", - "compiled": true, - "compiled_code": "\n \n \n\nselect\n order_id as unique_field,\n count(*) as n_records\n\nfrom \"dbtmetabase\".\"public\".\"stg_orders\"\nwhere order_id is not null\ngroup by order_id\nhaving count(*) > 1\n\n\n", - "extra_ctes_injected": true, - "extra_ctes": [], + "compiled_path": null, "contract": { "enforced": false, "alias_types": true, "checksum": null }, - "column_name": "order_id", - "file_key_name": "models.stg_orders", - "attached_node": "model.sandbox.stg_orders", + "column_name": "payment_id", + "file_key_name": "models.stg_payments", + "attached_node": "model.sandbox.stg_payments", "test_metadata": { "name": "unique", "kwargs": { - "column_name": "order_id", - "model": "{{ get_where_subquery(ref('stg_orders')) }}" + "column_name": "payment_id", + "model": "{{ get_where_subquery(ref('stg_payments')) }}" }, "namespace": null } }, - "test.sandbox.not_null_stg_orders_order_id.81cfe2fe64": { + "test.sandbox.not_null_stg_payments_payment_id.c19cc50075": { "database": "dbtmetabase", "schema": "public_dbt_test__audit", - "name": "not_null_stg_orders_order_id", + "name": "not_null_stg_payments_payment_id", "resource_type": "test", "package_name": "sandbox", - "path": "not_null_stg_orders_order_id.sql", + "path": "not_null_stg_payments_payment_id.sql", "original_file_path": "models/staging/schema.yml", - "unique_id": "test.sandbox.not_null_stg_orders_order_id.81cfe2fe64", + "unique_id": "test.sandbox.not_null_stg_payments_payment_id.c19cc50075", "fqn": [ "sandbox", "staging", - "not_null_stg_orders_order_id" + "not_null_stg_payments_payment_id" ], - "alias": "not_null_stg_orders_order_id", + "alias": "not_null_stg_payments_payment_id", "checksum": { "name": "none", "checksum": "" @@ -2909,13 +2685,13 @@ "patch_path": null, "build_path": null, "unrendered_config": {}, - "created_at": 1728697972.8986309, + "created_at": 1730458997.44005, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [ { - "name": "stg_orders", + "name": "stg_payments", "package": null, "version": null } @@ -2924,57 +2700,52 @@ "metrics": [], "depends_on": { "macros": [ - "macro.dbt.test_not_null", - "macro.dbt.get_where_subquery" + "macro.dbt.test_not_null" ], "nodes": [ - "model.sandbox.stg_orders" + "model.sandbox.stg_payments" ] }, - "compiled_path": "target/compiled/sandbox/models/staging/schema.yml/not_null_stg_orders_order_id.sql", - "compiled": true, - "compiled_code": "\n \n \n\n\n\nselect order_id\nfrom \"dbtmetabase\".\"public\".\"stg_orders\"\nwhere order_id is null\n\n\n", - "extra_ctes_injected": true, - "extra_ctes": [], + "compiled_path": null, "contract": { "enforced": false, "alias_types": true, "checksum": null }, - "column_name": "order_id", - "file_key_name": "models.stg_orders", - "attached_node": "model.sandbox.stg_orders", + "column_name": "payment_id", + "file_key_name": "models.stg_payments", + "attached_node": "model.sandbox.stg_payments", "test_metadata": { "name": "not_null", "kwargs": { - "column_name": "order_id", - "model": "{{ get_where_subquery(ref('stg_orders')) }}" + "column_name": "payment_id", + "model": "{{ get_where_subquery(ref('stg_payments')) }}" }, "namespace": null } }, - "test.sandbox.accepted_values_stg_orders_status__placed__shipped__completed__return_pending__returned.080fb20aad": { + "test.sandbox.accepted_values_stg_payments_payment_method__credit_card__coupon__bank_transfer__gift_card.3c3820f278": { "database": "dbtmetabase", "schema": "public_dbt_test__audit", - "name": "accepted_values_stg_orders_status__placed__shipped__completed__return_pending__returned", + "name": "accepted_values_stg_payments_payment_method__credit_card__coupon__bank_transfer__gift_card", "resource_type": "test", "package_name": "sandbox", - "path": "accepted_values_stg_orders_4f514bf94b77b7ea437830eec4421c58.sql", + "path": "accepted_values_stg_payments_c7909fb19b1f0177c2bf99c7912f06ef.sql", "original_file_path": "models/staging/schema.yml", - "unique_id": "test.sandbox.accepted_values_stg_orders_status__placed__shipped__completed__return_pending__returned.080fb20aad", + "unique_id": "test.sandbox.accepted_values_stg_payments_payment_method__credit_card__coupon__bank_transfer__gift_card.3c3820f278", "fqn": [ "sandbox", "staging", - "accepted_values_stg_orders_status__placed__shipped__completed__return_pending__returned" + "accepted_values_stg_payments_payment_method__credit_card__coupon__bank_transfer__gift_card" ], - "alias": "accepted_values_stg_orders_4f514bf94b77b7ea437830eec4421c58", + "alias": "accepted_values_stg_payments_c7909fb19b1f0177c2bf99c7912f06ef", "checksum": { "name": "none", "checksum": "" }, "config": { "enabled": true, - "alias": "accepted_values_stg_orders_4f514bf94b77b7ea437830eec4421c58", + "alias": "accepted_values_stg_payments_c7909fb19b1f0177c2bf99c7912f06ef", "schema": "dbt_test__audit", "database": null, "tags": [], @@ -3002,15 +2773,15 @@ "patch_path": null, "build_path": null, "unrendered_config": { - "alias": "accepted_values_stg_orders_4f514bf94b77b7ea437830eec4421c58" + "alias": "accepted_values_stg_payments_c7909fb19b1f0177c2bf99c7912f06ef" }, - "created_at": 1728697972.899276, + "created_at": 1730458997.4405925, "relation_name": null, - "raw_code": "{{ test_accepted_values(**_dbt_generic_test_kwargs) }}{{ config(alias=\"accepted_values_stg_orders_4f514bf94b77b7ea437830eec4421c58\") }}", + "raw_code": "{{ test_accepted_values(**_dbt_generic_test_kwargs) }}{{ config(alias=\"accepted_values_stg_payments_c7909fb19b1f0177c2bf99c7912f06ef\") }}", "language": "sql", "refs": [ { - "name": "stg_orders", + "name": "stg_payments", "package": null, "version": null } @@ -3023,94 +2794,150 @@ "macro.dbt.get_where_subquery" ], "nodes": [ - "model.sandbox.stg_orders" + "model.sandbox.stg_payments" ] }, - "compiled_path": "target/compiled/sandbox/models/staging/schema.yml/accepted_values_stg_orders_4f514bf94b77b7ea437830eec4421c58.sql", - "compiled": true, - "compiled_code": "\n \n \n\nwith all_values as (\n\n select\n status as value_field,\n count(*) as n_records\n\n from \"dbtmetabase\".\"public\".\"stg_orders\"\n group by status\n\n)\n\nselect *\nfrom all_values\nwhere value_field not in (\n 'placed','shipped','completed','return_pending','returned'\n)\n\n\n", - "extra_ctes_injected": true, - "extra_ctes": [], + "compiled_path": null, "contract": { "enforced": false, "alias_types": true, "checksum": null }, - "column_name": "status", - "file_key_name": "models.stg_orders", - "attached_node": "model.sandbox.stg_orders", + "column_name": "payment_method", + "file_key_name": "models.stg_payments", + "attached_node": "model.sandbox.stg_payments", "test_metadata": { "name": "accepted_values", "kwargs": { "values": [ - "placed", - "shipped", - "completed", - "return_pending", - "returned" + "credit_card", + "coupon", + "bank_transfer", + "gift_card" ], - "column_name": "status", - "model": "{{ get_where_subquery(ref('stg_orders')) }}" + "column_name": "payment_method", + "model": "{{ get_where_subquery(ref('stg_payments')) }}" }, "namespace": null } }, - "test.sandbox.unique_stg_payments_payment_id.3744510712": { + "model.sandbox.stg_orders": { "database": "dbtmetabase", - "schema": "public_dbt_test__audit", - "name": "unique_stg_payments_payment_id", - "resource_type": "test", + "schema": "public", + "name": "stg_orders", + "resource_type": "model", "package_name": "sandbox", - "path": "unique_stg_payments_payment_id.sql", - "original_file_path": "models/staging/schema.yml", - "unique_id": "test.sandbox.unique_stg_payments_payment_id.3744510712", + "path": "staging/stg_orders.sql", + "original_file_path": "models/staging/stg_orders.sql", + "unique_id": "model.sandbox.stg_orders", "fqn": [ "sandbox", "staging", - "unique_stg_payments_payment_id" + "stg_orders" ], - "alias": "unique_stg_payments_payment_id", + "alias": "stg_orders", "checksum": { - "name": "none", - "checksum": "" + "name": "sha256", + "checksum": "19f81708be0e42ecddd1caa35b73f7b5b9e3102f3f05b03058824658c563d50a" }, "config": { "enabled": true, "alias": null, - "schema": "dbt_test__audit", + "schema": null, "database": null, "tags": [], "meta": {}, "group": null, - "materialized": "test", - "severity": "ERROR", - "store_failures": null, - "store_failures_as": null, - "where": null, - "limit": null, - "fail_calc": "count(*)", - "warn_if": "!= 0", - "error_if": "!= 0" + "materialized": "view", + "incremental_strategy": null, + "persist_docs": {}, + "post-hook": [], + "pre-hook": [], + "quoting": {}, + "column_types": {}, + "full_refresh": null, + "unique_key": null, + "on_schema_change": "ignore", + "on_configuration_change": "apply", + "grants": {}, + "packages": [], + "docs": { + "show": true, + "node_color": null + }, + "contract": { + "enforced": false, + "alias_types": true + }, + "access": "protected" }, "tags": [], "description": "", - "columns": {}, + "columns": { + "order_id": { + "name": "order_id", + "description": "", + "meta": {}, + "data_type": null, + "constraints": [], + "quote": null, + "tags": [] + }, + "status": { + "name": "status", + "description": "", + "meta": {}, + "data_type": null, + "constraints": [], + "quote": null, + "tags": [] + }, + "order_date": { + "name": "order_date", + "description": "", + "meta": {}, + "data_type": null, + "constraints": [], + "quote": null, + "tags": [] + }, + "customer_id": { + "name": "customer_id", + "description": "", + "meta": {}, + "data_type": null, + "constraints": [], + "quote": null, + "tags": [] + }, + "sku_id": { + "name": "sku_id", + "description": "", + "meta": {}, + "data_type": null, + "constraints": [], + "quote": null, + "tags": [] + } + }, "meta": {}, "group": null, "docs": { "show": true, "node_color": null }, - "patch_path": null, - "build_path": null, - "unrendered_config": {}, - "created_at": 1728697972.9008808, - "relation_name": null, - "raw_code": "{{ test_unique(**_dbt_generic_test_kwargs) }}", + "patch_path": "sandbox://models/staging/schema.yml", + "build_path": "target/run/sandbox/models/staging/stg_orders.sql", + "unrendered_config": { + "materialized": "view" + }, + "created_at": 1730521591.043875, + "relation_name": "\"dbtmetabase\".\"public\".\"stg_orders\"", + "raw_code": "with source as (\n\n {#-\n Normally we would select from the table here, but we are using seeds to load\n our data in this project\n #}\n select * from {{ ref('raw_orders') }}\n\n),\n\nrenamed as (\n\n select\n id as order_id,\n user_id as customer_id,\n order_date,\n status,\n 1 as sku_id\n\n from source\n\n)\n\nselect * from renamed", "language": "sql", "refs": [ { - "name": "stg_payments", + "name": "raw_orders", "package": null, "version": null } @@ -3118,17 +2945,14 @@ "sources": [], "metrics": [], "depends_on": { - "macros": [ - "macro.dbt.test_unique", - "macro.dbt.get_where_subquery" - ], + "macros": [], "nodes": [ - "model.sandbox.stg_payments" + "seed.sandbox.raw_orders" ] }, - "compiled_path": "target/compiled/sandbox/models/staging/schema.yml/unique_stg_payments_payment_id.sql", + "compiled_path": "target/compiled/sandbox/models/staging/stg_orders.sql", "compiled": true, - "compiled_code": "\n \n \n\nselect\n payment_id as unique_field,\n count(*) as n_records\n\nfrom \"dbtmetabase\".\"public\".\"stg_payments\"\nwhere payment_id is not null\ngroup by payment_id\nhaving count(*) > 1\n\n\n", + "compiled_code": "with source as (\n select * from \"dbtmetabase\".\"public\".\"raw_orders\"\n\n),\n\nrenamed as (\n\n select\n id as order_id,\n user_id as customer_id,\n order_date,\n status,\n 1 as sku_id\n\n from source\n\n)\n\nselect * from renamed", "extra_ctes_injected": true, "extra_ctes": [], "contract": { @@ -3136,33 +2960,27 @@ "alias_types": true, "checksum": null }, - "column_name": "payment_id", - "file_key_name": "models.stg_payments", - "attached_node": "model.sandbox.stg_payments", - "test_metadata": { - "name": "unique", - "kwargs": { - "column_name": "payment_id", - "model": "{{ get_where_subquery(ref('stg_payments')) }}" - }, - "namespace": null - } + "access": "protected", + "constraints": [], + "version": null, + "latest_version": null, + "deprecation_date": null }, - "test.sandbox.not_null_stg_payments_payment_id.c19cc50075": { + "test.sandbox.unique_stg_orders_order_id.e3b841c71a": { "database": "dbtmetabase", "schema": "public_dbt_test__audit", - "name": "not_null_stg_payments_payment_id", + "name": "unique_stg_orders_order_id", "resource_type": "test", "package_name": "sandbox", - "path": "not_null_stg_payments_payment_id.sql", + "path": "unique_stg_orders_order_id.sql", "original_file_path": "models/staging/schema.yml", - "unique_id": "test.sandbox.not_null_stg_payments_payment_id.c19cc50075", + "unique_id": "test.sandbox.unique_stg_orders_order_id.e3b841c71a", "fqn": [ "sandbox", "staging", - "not_null_stg_payments_payment_id" + "unique_stg_orders_order_id" ], - "alias": "not_null_stg_payments_payment_id", + "alias": "unique_stg_orders_order_id", "checksum": { "name": "none", "checksum": "" @@ -3197,13 +3015,13 @@ "patch_path": null, "build_path": null, "unrendered_config": {}, - "created_at": 1728697972.901458, + "created_at": 1730521591.0720882, "relation_name": null, - "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", + "raw_code": "{{ test_unique(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [ { - "name": "stg_payments", + "name": "stg_orders", "package": null, "version": null } @@ -3212,57 +3030,52 @@ "metrics": [], "depends_on": { "macros": [ - "macro.dbt.test_not_null", - "macro.dbt.get_where_subquery" + "macro.dbt.test_unique" ], "nodes": [ - "model.sandbox.stg_payments" + "model.sandbox.stg_orders" ] }, - "compiled_path": "target/compiled/sandbox/models/staging/schema.yml/not_null_stg_payments_payment_id.sql", - "compiled": true, - "compiled_code": "\n \n \n\n\n\nselect payment_id\nfrom \"dbtmetabase\".\"public\".\"stg_payments\"\nwhere payment_id is null\n\n\n", - "extra_ctes_injected": true, - "extra_ctes": [], + "compiled_path": null, "contract": { "enforced": false, "alias_types": true, "checksum": null }, - "column_name": "payment_id", - "file_key_name": "models.stg_payments", - "attached_node": "model.sandbox.stg_payments", + "column_name": "order_id", + "file_key_name": "models.stg_orders", + "attached_node": "model.sandbox.stg_orders", "test_metadata": { - "name": "not_null", + "name": "unique", "kwargs": { - "column_name": "payment_id", - "model": "{{ get_where_subquery(ref('stg_payments')) }}" + "column_name": "order_id", + "model": "{{ get_where_subquery(ref('stg_orders')) }}" }, "namespace": null } }, - "test.sandbox.accepted_values_stg_payments_payment_method__credit_card__coupon__bank_transfer__gift_card.3c3820f278": { + "test.sandbox.not_null_stg_orders_order_id.81cfe2fe64": { "database": "dbtmetabase", "schema": "public_dbt_test__audit", - "name": "accepted_values_stg_payments_payment_method__credit_card__coupon__bank_transfer__gift_card", + "name": "not_null_stg_orders_order_id", "resource_type": "test", "package_name": "sandbox", - "path": "accepted_values_stg_payments_c7909fb19b1f0177c2bf99c7912f06ef.sql", + "path": "not_null_stg_orders_order_id.sql", "original_file_path": "models/staging/schema.yml", - "unique_id": "test.sandbox.accepted_values_stg_payments_payment_method__credit_card__coupon__bank_transfer__gift_card.3c3820f278", + "unique_id": "test.sandbox.not_null_stg_orders_order_id.81cfe2fe64", "fqn": [ "sandbox", "staging", - "accepted_values_stg_payments_payment_method__credit_card__coupon__bank_transfer__gift_card" + "not_null_stg_orders_order_id" ], - "alias": "accepted_values_stg_payments_c7909fb19b1f0177c2bf99c7912f06ef", + "alias": "not_null_stg_orders_order_id", "checksum": { "name": "none", "checksum": "" }, "config": { "enabled": true, - "alias": "accepted_values_stg_payments_c7909fb19b1f0177c2bf99c7912f06ef", + "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], @@ -3289,16 +3102,14 @@ }, "patch_path": null, "build_path": null, - "unrendered_config": { - "alias": "accepted_values_stg_payments_c7909fb19b1f0177c2bf99c7912f06ef" - }, - "created_at": 1728697972.902038, + "unrendered_config": {}, + "created_at": 1730521591.0728092, "relation_name": null, - "raw_code": "{{ test_accepted_values(**_dbt_generic_test_kwargs) }}{{ config(alias=\"accepted_values_stg_payments_c7909fb19b1f0177c2bf99c7912f06ef\") }}", + "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [ { - "name": "stg_payments", + "name": "stg_orders", "package": null, "version": null } @@ -3307,256 +3118,368 @@ "metrics": [], "depends_on": { "macros": [ - "macro.dbt.test_accepted_values", - "macro.dbt.get_where_subquery" + "macro.dbt.test_not_null" ], "nodes": [ - "model.sandbox.stg_payments" + "model.sandbox.stg_orders" ] }, - "compiled_path": "target/compiled/sandbox/models/staging/schema.yml/accepted_values_stg_payments_c7909fb19b1f0177c2bf99c7912f06ef.sql", - "compiled": true, - "compiled_code": "\n \n \n\nwith all_values as (\n\n select\n payment_method as value_field,\n count(*) as n_records\n\n from \"dbtmetabase\".\"public\".\"stg_payments\"\n group by payment_method\n\n)\n\nselect *\nfrom all_values\nwhere value_field not in (\n 'credit_card','coupon','bank_transfer','gift_card'\n)\n\n\n", - "extra_ctes_injected": true, - "extra_ctes": [], + "compiled_path": null, "contract": { "enforced": false, "alias_types": true, "checksum": null }, - "column_name": "payment_method", - "file_key_name": "models.stg_payments", - "attached_node": "model.sandbox.stg_payments", + "column_name": "order_id", + "file_key_name": "models.stg_orders", + "attached_node": "model.sandbox.stg_orders", "test_metadata": { - "name": "accepted_values", + "name": "not_null", "kwargs": { - "values": [ - "credit_card", - "coupon", - "bank_transfer", - "gift_card" - ], - "column_name": "payment_method", - "model": "{{ get_where_subquery(ref('stg_payments')) }}" + "column_name": "order_id", + "model": "{{ get_where_subquery(ref('stg_orders')) }}" }, "namespace": null } - } - }, - "sources": {}, - "macros": { - "macro.dbt_postgres.postgres__current_timestamp": { - "name": "postgres__current_timestamp", - "resource_type": "macro", - "package_name": "dbt_postgres", - "path": "macros/timestamps.sql", - "original_file_path": "macros/timestamps.sql", - "unique_id": "macro.dbt_postgres.postgres__current_timestamp", - "macro_sql": "{% macro postgres__current_timestamp() -%}\n now()\n{%- endmacro %}", - "depends_on": { - "macros": [] - }, - "description": "", - "meta": {}, - "docs": { - "show": true, - "node_color": null - }, - "patch_path": null, - "arguments": [], - "created_at": 1728697972.4873111, - "supported_languages": null }, - "macro.dbt_postgres.postgres__snapshot_string_as_time": { - "name": "postgres__snapshot_string_as_time", - "resource_type": "macro", - "package_name": "dbt_postgres", - "path": "macros/timestamps.sql", - "original_file_path": "macros/timestamps.sql", - "unique_id": "macro.dbt_postgres.postgres__snapshot_string_as_time", - "macro_sql": "{% macro postgres__snapshot_string_as_time(timestamp) -%}\n {%- set result = \"'\" ~ timestamp ~ \"'::timestamp without time zone\" -%}\n {{ return(result) }}\n{%- endmacro %}", - "depends_on": { - "macros": [] - }, - "description": "", - "meta": {}, - "docs": { - "show": true, - "node_color": null + "test.sandbox.accepted_values_stg_orders_status__placed__shipped__completed__return_pending__returned.080fb20aad": { + "database": "dbtmetabase", + "schema": "public_dbt_test__audit", + "name": "accepted_values_stg_orders_status__placed__shipped__completed__return_pending__returned", + "resource_type": "test", + "package_name": "sandbox", + "path": "accepted_values_stg_orders_4f514bf94b77b7ea437830eec4421c58.sql", + "original_file_path": "models/staging/schema.yml", + "unique_id": "test.sandbox.accepted_values_stg_orders_status__placed__shipped__completed__return_pending__returned.080fb20aad", + "fqn": [ + "sandbox", + "staging", + "accepted_values_stg_orders_status__placed__shipped__completed__return_pending__returned" + ], + "alias": "accepted_values_stg_orders_4f514bf94b77b7ea437830eec4421c58", + "checksum": { + "name": "none", + "checksum": "" }, - "patch_path": null, - "arguments": [], - "created_at": 1728697972.487473, - "supported_languages": null - }, - "macro.dbt_postgres.postgres__snapshot_get_time": { - "name": "postgres__snapshot_get_time", - "resource_type": "macro", - "package_name": "dbt_postgres", - "path": "macros/timestamps.sql", - "original_file_path": "macros/timestamps.sql", - "unique_id": "macro.dbt_postgres.postgres__snapshot_get_time", - "macro_sql": "{% macro postgres__snapshot_get_time() -%}\n {{ current_timestamp() }}::timestamp without time zone\n{%- endmacro %}", - "depends_on": { - "macros": [ - "macro.dbt.current_timestamp" - ] + "config": { + "enabled": true, + "alias": "accepted_values_stg_orders_4f514bf94b77b7ea437830eec4421c58", + "schema": "dbt_test__audit", + "database": null, + "tags": [], + "meta": {}, + "group": null, + "materialized": "test", + "severity": "ERROR", + "store_failures": null, + "store_failures_as": null, + "where": null, + "limit": null, + "fail_calc": "count(*)", + "warn_if": "!= 0", + "error_if": "!= 0" }, + "tags": [], "description": "", + "columns": {}, "meta": {}, + "group": null, "docs": { "show": true, "node_color": null }, "patch_path": null, - "arguments": [], - "created_at": 1728697972.487547, - "supported_languages": null - }, - "macro.dbt_postgres.postgres__current_timestamp_backcompat": { - "name": "postgres__current_timestamp_backcompat", - "resource_type": "macro", - "package_name": "dbt_postgres", - "path": "macros/timestamps.sql", - "original_file_path": "macros/timestamps.sql", - "unique_id": "macro.dbt_postgres.postgres__current_timestamp_backcompat", - "macro_sql": "{% macro postgres__current_timestamp_backcompat() %}\n current_timestamp::{{ type_timestamp() }}\n{% endmacro %}", - "depends_on": { - "macros": [ - "macro.dbt.type_timestamp" - ] - }, - "description": "", - "meta": {}, - "docs": { - "show": true, - "node_color": null + "build_path": null, + "unrendered_config": { + "alias": "accepted_values_stg_orders_4f514bf94b77b7ea437830eec4421c58" }, - "patch_path": null, - "arguments": [], - "created_at": 1728697972.487625, - "supported_languages": null - }, - "macro.dbt_postgres.postgres__current_timestamp_in_utc_backcompat": { - "name": "postgres__current_timestamp_in_utc_backcompat", - "resource_type": "macro", - "package_name": "dbt_postgres", - "path": "macros/timestamps.sql", - "original_file_path": "macros/timestamps.sql", - "unique_id": "macro.dbt_postgres.postgres__current_timestamp_in_utc_backcompat", - "macro_sql": "{% macro postgres__current_timestamp_in_utc_backcompat() %}\n (current_timestamp at time zone 'utc')::{{ type_timestamp() }}\n{% endmacro %}", + "created_at": 1730521591.073428, + "relation_name": null, + "raw_code": "{{ test_accepted_values(**_dbt_generic_test_kwargs) }}{{ config(alias=\"accepted_values_stg_orders_4f514bf94b77b7ea437830eec4421c58\") }}", + "language": "sql", + "refs": [ + { + "name": "stg_orders", + "package": null, + "version": null + } + ], + "sources": [], + "metrics": [], "depends_on": { "macros": [ - "macro.dbt.type_timestamp" + "macro.dbt.test_accepted_values", + "macro.dbt.get_where_subquery" + ], + "nodes": [ + "model.sandbox.stg_orders" ] }, - "description": "", - "meta": {}, - "docs": { - "show": true, - "node_color": null + "compiled_path": null, + "contract": { + "enforced": false, + "alias_types": true, + "checksum": null }, - "patch_path": null, - "arguments": [], - "created_at": 1728697972.487694, - "supported_languages": null + "column_name": "status", + "file_key_name": "models.stg_orders", + "attached_node": "model.sandbox.stg_orders", + "test_metadata": { + "name": "accepted_values", + "kwargs": { + "values": [ + "placed", + "shipped", + "completed", + "return_pending", + "returned" + ], + "column_name": "status", + "model": "{{ get_where_subquery(ref('stg_orders')) }}" + }, + "namespace": null + } }, - "macro.dbt_postgres.postgres__get_catalog_relations": { - "name": "postgres__get_catalog_relations", - "resource_type": "macro", - "package_name": "dbt_postgres", - "path": "macros/catalog.sql", - "original_file_path": "macros/catalog.sql", - "unique_id": "macro.dbt_postgres.postgres__get_catalog_relations", - "macro_sql": "{% macro postgres__get_catalog_relations(information_schema, relations) -%}\n {%- call statement('catalog', fetch_result=True) -%}\n\n {#\n If the user has multiple databases set and the first one is wrong, this will fail.\n But we won't fail in the case where there are multiple quoting-difference-only dbs, which is better.\n #}\n {% set database = information_schema.database %}\n {{ adapter.verify_database(database) }}\n\n select\n '{{ database }}' as table_database,\n sch.nspname as table_schema,\n tbl.relname as table_name,\n case tbl.relkind\n when 'v' then 'VIEW'\n when 'm' then 'MATERIALIZED VIEW'\n else 'BASE TABLE'\n end as table_type,\n tbl_desc.description as table_comment,\n col.attname as column_name,\n col.attnum as column_index,\n pg_catalog.format_type(col.atttypid, col.atttypmod) as column_type,\n col_desc.description as column_comment,\n pg_get_userbyid(tbl.relowner) as table_owner\n\n from pg_catalog.pg_namespace sch\n join pg_catalog.pg_class tbl on tbl.relnamespace = sch.oid\n join pg_catalog.pg_attribute col on col.attrelid = tbl.oid\n left outer join pg_catalog.pg_description tbl_desc on (tbl_desc.objoid = tbl.oid and tbl_desc.objsubid = 0)\n left outer join pg_catalog.pg_description col_desc on (col_desc.objoid = tbl.oid and col_desc.objsubid = col.attnum)\n where (\n {%- for relation in relations -%}\n {%- if relation.identifier -%}\n (upper(sch.nspname) = upper('{{ relation.schema }}') and\n upper(tbl.relname) = upper('{{ relation.identifier }}'))\n {%- else-%}\n upper(sch.nspname) = upper('{{ relation.schema }}')\n {%- endif -%}\n {%- if not loop.last %} or {% endif -%}\n {%- endfor -%}\n )\n and not pg_is_other_temp_schema(sch.oid) -- not a temporary schema belonging to another session\n and tbl.relpersistence in ('p', 'u') -- [p]ermanent table or [u]nlogged table. Exclude [t]emporary tables\n and tbl.relkind in ('r', 'v', 'f', 'p', 'm') -- o[r]dinary table, [v]iew, [f]oreign table, [p]artitioned table, [m]aterialized view. Other values are [i]ndex, [S]equence, [c]omposite type, [t]OAST table\n and col.attnum > 0 -- negative numbers are used for system columns such as oid\n and not col.attisdropped -- column as not been dropped\n\n order by\n sch.nspname,\n tbl.relname,\n col.attnum\n\n {%- endcall -%}\n\n {{ return(load_result('catalog').table) }}\n{%- endmacro %}", - "depends_on": { - "macros": [ - "macro.dbt.statement" - ] + "test.sandbox.not_null_stg_orders_sku_id.71aa9c46d3": { + "database": "dbtmetabase", + "schema": "public_dbt_test__audit", + "name": "not_null_stg_orders_sku_id", + "resource_type": "test", + "package_name": "sandbox", + "path": "not_null_stg_orders_sku_id.sql", + "original_file_path": "models/staging/schema.yml", + "unique_id": "test.sandbox.not_null_stg_orders_sku_id.71aa9c46d3", + "fqn": [ + "sandbox", + "staging", + "not_null_stg_orders_sku_id" + ], + "alias": "not_null_stg_orders_sku_id", + "checksum": { + "name": "none", + "checksum": "" + }, + "config": { + "enabled": true, + "alias": null, + "schema": "dbt_test__audit", + "database": null, + "tags": [], + "meta": {}, + "group": null, + "materialized": "test", + "severity": "ERROR", + "store_failures": null, + "store_failures_as": null, + "where": null, + "limit": null, + "fail_calc": "count(*)", + "warn_if": "!= 0", + "error_if": "!= 0" }, + "tags": [], "description": "", + "columns": {}, "meta": {}, + "group": null, "docs": { "show": true, "node_color": null }, "patch_path": null, - "arguments": [], - "created_at": 1728697972.488611, - "supported_languages": null - }, - "macro.dbt_postgres.postgres__get_catalog": { - "name": "postgres__get_catalog", - "resource_type": "macro", - "package_name": "dbt_postgres", - "path": "macros/catalog.sql", - "original_file_path": "macros/catalog.sql", - "unique_id": "macro.dbt_postgres.postgres__get_catalog", - "macro_sql": "{% macro postgres__get_catalog(information_schema, schemas) -%}\n {%- set relations = [] -%}\n {%- for schema in schemas -%}\n {%- set dummy = relations.append({'schema': schema}) -%}\n {%- endfor -%}\n {{ return(postgres__get_catalog_relations(information_schema, relations)) }}\n{%- endmacro %}", + "build_path": null, + "unrendered_config": {}, + "created_at": 1730521591.0816486, + "relation_name": null, + "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", + "language": "sql", + "refs": [ + { + "name": "stg_orders", + "package": null, + "version": null + } + ], + "sources": [], + "metrics": [], "depends_on": { "macros": [ - "macro.dbt_postgres.postgres__get_catalog_relations" + "macro.dbt.test_not_null" + ], + "nodes": [ + "model.sandbox.stg_orders" ] }, - "description": "", - "meta": {}, - "docs": { - "show": true, - "node_color": null + "compiled_path": null, + "contract": { + "enforced": false, + "alias_types": true, + "checksum": null }, - "patch_path": null, - "arguments": [], - "created_at": 1728697972.488807, - "supported_languages": null + "column_name": "sku_id", + "file_key_name": "models.stg_orders", + "attached_node": "model.sandbox.stg_orders", + "test_metadata": { + "name": "not_null", + "kwargs": { + "column_name": "sku_id", + "model": "{{ get_where_subquery(ref('stg_orders')) }}" + }, + "namespace": null + } }, - "macro.dbt_postgres.postgres__get_relations": { - "name": "postgres__get_relations", - "resource_type": "macro", - "package_name": "dbt_postgres", - "path": "macros/relations.sql", - "original_file_path": "macros/relations.sql", - "unique_id": "macro.dbt_postgres.postgres__get_relations", - "macro_sql": "{% macro postgres__get_relations() -%}\n\n {#\n -- in pg_depend, objid is the dependent, refobjid is the referenced object\n -- > a pg_depend entry indicates that the referenced object cannot be\n -- > dropped without also dropping the dependent object.\n #}\n\n {%- call statement('relations', fetch_result=True) -%}\n with relation as (\n select\n pg_rewrite.ev_class as class,\n pg_rewrite.oid as id\n from pg_rewrite\n ),\n class as (\n select\n oid as id,\n relname as name,\n relnamespace as schema,\n relkind as kind\n from pg_class\n ),\n dependency as (\n select distinct\n pg_depend.objid as id,\n pg_depend.refobjid as ref\n from pg_depend\n ),\n schema as (\n select\n pg_namespace.oid as id,\n pg_namespace.nspname as name\n from pg_namespace\n where nspname != 'information_schema' and nspname not like 'pg\\_%'\n ),\n referenced as (\n select\n relation.id AS id,\n referenced_class.name ,\n referenced_class.schema ,\n referenced_class.kind\n from relation\n join class as referenced_class on relation.class=referenced_class.id\n where referenced_class.kind in ('r', 'v', 'm')\n ),\n relationships as (\n select\n referenced.name as referenced_name,\n referenced.schema as referenced_schema_id,\n dependent_class.name as dependent_name,\n dependent_class.schema as dependent_schema_id,\n referenced.kind as kind\n from referenced\n join dependency on referenced.id=dependency.id\n join class as dependent_class on dependency.ref=dependent_class.id\n where\n (referenced.name != dependent_class.name or\n referenced.schema != dependent_class.schema)\n )\n\n select\n referenced_schema.name as referenced_schema,\n relationships.referenced_name as referenced_name,\n dependent_schema.name as dependent_schema,\n relationships.dependent_name as dependent_name\n from relationships\n join schema as dependent_schema on relationships.dependent_schema_id=dependent_schema.id\n join schema as referenced_schema on relationships.referenced_schema_id=referenced_schema.id\n group by referenced_schema, referenced_name, dependent_schema, dependent_name\n order by referenced_schema, referenced_name, dependent_schema, dependent_name;\n\n {%- endcall -%}\n\n {{ return(load_result('relations').table) }}\n{% endmacro %}", - "depends_on": { - "macros": [ - "macro.dbt.statement" - ] + "test.sandbox.relationships_stg_orders_sku_id__sku_id__source_inventory_skus_.68f111a4fe": { + "database": "dbtmetabase", + "schema": "public_dbt_test__audit", + "name": "relationships_stg_orders_sku_id__sku_id__source_inventory_skus_", + "resource_type": "test", + "package_name": "sandbox", + "path": "relationships_stg_orders_sku_id__sku_id__source_inventory_skus_.sql", + "original_file_path": "models/staging/schema.yml", + "unique_id": "test.sandbox.relationships_stg_orders_sku_id__sku_id__source_inventory_skus_.68f111a4fe", + "fqn": [ + "sandbox", + "staging", + "relationships_stg_orders_sku_id__sku_id__source_inventory_skus_" + ], + "alias": "relationships_stg_orders_sku_id__sku_id__source_inventory_skus_", + "checksum": { + "name": "none", + "checksum": "" + }, + "config": { + "enabled": true, + "alias": null, + "schema": "dbt_test__audit", + "database": null, + "tags": [], + "meta": {}, + "group": null, + "materialized": "test", + "severity": "ERROR", + "store_failures": null, + "store_failures_as": null, + "where": null, + "limit": null, + "fail_calc": "count(*)", + "warn_if": "!= 0", + "error_if": "!= 0" }, + "tags": [], "description": "", + "columns": {}, "meta": {}, + "group": null, "docs": { "show": true, "node_color": null }, "patch_path": null, - "arguments": [], - "created_at": 1728697972.4892192, - "supported_languages": null - }, - "macro.dbt_postgres.postgres_get_relations": { - "name": "postgres_get_relations", - "resource_type": "macro", - "package_name": "dbt_postgres", - "path": "macros/relations.sql", - "original_file_path": "macros/relations.sql", - "unique_id": "macro.dbt_postgres.postgres_get_relations", - "macro_sql": "{% macro postgres_get_relations() %}\n {{ return(postgres__get_relations()) }}\n{% endmacro %}", + "build_path": null, + "unrendered_config": {}, + "created_at": 1730521591.0822318, + "relation_name": null, + "raw_code": "{{ test_relationships(**_dbt_generic_test_kwargs) }}", + "language": "sql", + "refs": [ + { + "name": "stg_orders", + "package": null, + "version": null + } + ], + "sources": [ + [ + "inventory", + "skus" + ] + ], + "metrics": [], "depends_on": { "macros": [ - "macro.dbt_postgres.postgres__get_relations" + "macro.dbt.test_relationships", + "macro.dbt.get_where_subquery" + ], + "nodes": [ + "source.sandbox.inventory.skus", + "model.sandbox.stg_orders" ] }, + "compiled_path": null, + "contract": { + "enforced": false, + "alias_types": true, + "checksum": null + }, + "column_name": "sku_id", + "file_key_name": "models.stg_orders", + "attached_node": "model.sandbox.stg_orders", + "test_metadata": { + "name": "relationships", + "kwargs": { + "to": "source('inventory', 'skus')", + "field": "sku_id", + "column_name": "sku_id", + "model": "{{ get_where_subquery(ref('stg_orders')) }}" + }, + "namespace": null + } + } + }, + "sources": { + "source.sandbox.inventory.skus": { + "database": "dbtmetabase", + "schema": "inventory", + "name": "skus", + "resource_type": "source", + "package_name": "sandbox", + "path": "models/staging/schema.yml", + "original_file_path": "models/staging/schema.yml", + "unique_id": "source.sandbox.inventory.skus", + "fqn": [ + "sandbox", + "staging", + "inventory", + "skus" + ], + "source_name": "inventory", + "source_description": "", + "loader": "", + "identifier": "skus", + "quoting": { + "database": null, + "schema": null, + "identifier": null, + "column": null + }, + "loaded_at_field": null, + "freshness": { + "warn_after": { + "count": null, + "period": null + }, + "error_after": { + "count": null, + "period": null + }, + "filter": null + }, + "external": null, "description": "", + "columns": {}, "meta": {}, - "docs": { - "show": true, - "node_color": null + "source_meta": {}, + "tags": [], + "config": { + "enabled": true }, "patch_path": null, - "arguments": [], - "created_at": 1728697972.489287, - "supported_languages": null - }, + "unrendered_config": {}, + "relation_name": "\"dbtmetabase\".\"inventory\".\"skus\"", + "created_at": 1730521591.1114457 + } + }, + "macros": { "macro.dbt_postgres.postgres__create_table_as": { "name": "postgres__create_table_as", "resource_type": "macro", @@ -3581,7 +3504,7 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.4949372, + "created_at": 1730458997.0472758, "supported_languages": null }, "macro.dbt_postgres.postgres__get_create_index_sql": { @@ -3603,7 +3526,7 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.495283, + "created_at": 1730458997.0475516, "supported_languages": null }, "macro.dbt_postgres.postgres__create_schema": { @@ -3627,7 +3550,7 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.4954722, + "created_at": 1730458997.0477302, "supported_languages": null }, "macro.dbt_postgres.postgres__drop_schema": { @@ -3651,7 +3574,7 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.495651, + "created_at": 1730458997.0478969, "supported_languages": null }, "macro.dbt_postgres.postgres__get_columns_in_relation": { @@ -3676,7 +3599,7 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.495915, + "created_at": 1730458997.0481606, "supported_languages": null }, "macro.dbt_postgres.postgres__list_relations_without_caching": { @@ -3700,7 +3623,7 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.4961438, + "created_at": 1730458997.0483937, "supported_languages": null }, "macro.dbt_postgres.postgres__information_schema_name": { @@ -3722,7 +3645,7 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.496236, + "created_at": 1730458997.0484848, "supported_languages": null }, "macro.dbt_postgres.postgres__list_schemas": { @@ -3746,7 +3669,7 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.496414, + "created_at": 1730458997.0486605, "supported_languages": null }, "macro.dbt_postgres.postgres__check_schema_exists": { @@ -3770,7 +3693,7 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.496613, + "created_at": 1730458997.0488613, "supported_languages": null }, "macro.dbt_postgres.postgres__make_relation_with_suffix": { @@ -3792,7 +3715,7 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.497076, + "created_at": 1730458997.0493045, "supported_languages": null }, "macro.dbt_postgres.postgres__make_intermediate_relation": { @@ -3816,7 +3739,7 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.497238, + "created_at": 1730458997.049409, "supported_languages": null }, "macro.dbt_postgres.postgres__make_temp_relation": { @@ -3840,7 +3763,7 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.497503, + "created_at": 1730458997.049582, "supported_languages": null }, "macro.dbt_postgres.postgres__make_backup_relation": { @@ -3864,7 +3787,7 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.4976609, + "created_at": 1730458997.049731, "supported_languages": null }, "macro.dbt_postgres.postgres_escape_comment": { @@ -3886,7 +3809,7 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.497921, + "created_at": 1730458997.0500338, "supported_languages": null }, "macro.dbt_postgres.postgres__alter_relation_comment": { @@ -3910,7 +3833,7 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.498045, + "created_at": 1730458997.0501635, "supported_languages": null }, "macro.dbt_postgres.postgres__alter_column_comment": { @@ -3934,7 +3857,7 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.498358, + "created_at": 1730458997.0505183, "supported_languages": null }, "macro.dbt_postgres.postgres__get_show_grant_sql": { @@ -3956,7 +3879,7 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.498471, + "created_at": 1730458997.0506396, "supported_languages": null }, "macro.dbt_postgres.postgres__copy_grants": { @@ -3978,7 +3901,7 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.498537, + "created_at": 1730458997.0507078, "supported_languages": null }, "macro.dbt_postgres.postgres__get_show_indexes_sql": { @@ -4000,7 +3923,7 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.498639, + "created_at": 1730458997.050827, "supported_languages": null }, "macro.dbt_postgres.postgres__get_drop_index_sql": { @@ -4022,21 +3945,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.498715, + "created_at": 1730458997.0509064, "supported_languages": null }, - "macro.dbt_postgres.postgres__get_incremental_default_sql": { - "name": "postgres__get_incremental_default_sql", + "macro.dbt_postgres.postgres__get_catalog_relations": { + "name": "postgres__get_catalog_relations", "resource_type": "macro", "package_name": "dbt_postgres", - "path": "macros/materializations/incremental_strategies.sql", - "original_file_path": "macros/materializations/incremental_strategies.sql", - "unique_id": "macro.dbt_postgres.postgres__get_incremental_default_sql", - "macro_sql": "{% macro postgres__get_incremental_default_sql(arg_dict) %}\n\n {% if arg_dict[\"unique_key\"] %}\n {% do return(get_incremental_delete_insert_sql(arg_dict)) %}\n {% else %}\n {% do return(get_incremental_append_sql(arg_dict)) %}\n {% endif %}\n\n{% endmacro %}", + "path": "macros/catalog.sql", + "original_file_path": "macros/catalog.sql", + "unique_id": "macro.dbt_postgres.postgres__get_catalog_relations", + "macro_sql": "{% macro postgres__get_catalog_relations(information_schema, relations) -%}\n {%- call statement('catalog', fetch_result=True) -%}\n\n {#\n If the user has multiple databases set and the first one is wrong, this will fail.\n But we won't fail in the case where there are multiple quoting-difference-only dbs, which is better.\n #}\n {% set database = information_schema.database %}\n {{ adapter.verify_database(database) }}\n\n select\n '{{ database }}' as table_database,\n sch.nspname as table_schema,\n tbl.relname as table_name,\n case tbl.relkind\n when 'v' then 'VIEW'\n when 'm' then 'MATERIALIZED VIEW'\n else 'BASE TABLE'\n end as table_type,\n tbl_desc.description as table_comment,\n col.attname as column_name,\n col.attnum as column_index,\n pg_catalog.format_type(col.atttypid, col.atttypmod) as column_type,\n col_desc.description as column_comment,\n pg_get_userbyid(tbl.relowner) as table_owner\n\n from pg_catalog.pg_namespace sch\n join pg_catalog.pg_class tbl on tbl.relnamespace = sch.oid\n join pg_catalog.pg_attribute col on col.attrelid = tbl.oid\n left outer join pg_catalog.pg_description tbl_desc on (tbl_desc.objoid = tbl.oid and tbl_desc.objsubid = 0)\n left outer join pg_catalog.pg_description col_desc on (col_desc.objoid = tbl.oid and col_desc.objsubid = col.attnum)\n where (\n {%- for relation in relations -%}\n {%- if relation.identifier -%}\n (upper(sch.nspname) = upper('{{ relation.schema }}') and\n upper(tbl.relname) = upper('{{ relation.identifier }}'))\n {%- else-%}\n upper(sch.nspname) = upper('{{ relation.schema }}')\n {%- endif -%}\n {%- if not loop.last %} or {% endif -%}\n {%- endfor -%}\n )\n and not pg_is_other_temp_schema(sch.oid) -- not a temporary schema belonging to another session\n and tbl.relpersistence in ('p', 'u') -- [p]ermanent table or [u]nlogged table. Exclude [t]emporary tables\n and tbl.relkind in ('r', 'v', 'f', 'p', 'm') -- o[r]dinary table, [v]iew, [f]oreign table, [p]artitioned table, [m]aterialized view. Other values are [i]ndex, [S]equence, [c]omposite type, [t]OAST table\n and col.attnum > 0 -- negative numbers are used for system columns such as oid\n and not col.attisdropped -- column as not been dropped\n\n order by\n sch.nspname,\n tbl.relname,\n col.attnum\n\n {%- endcall -%}\n\n {{ return(load_result('catalog').table) }}\n{%- endmacro %}", "depends_on": { "macros": [ - "macro.dbt.get_incremental_delete_insert_sql", - "macro.dbt.get_incremental_append_sql" + "macro.dbt.statement" ] }, "description": "", @@ -4047,17 +3969,41 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.4989178, + "created_at": 1730458997.0517716, "supported_languages": null }, - "macro.dbt_postgres.postgres__snapshot_merge_sql": { - "name": "postgres__snapshot_merge_sql", + "macro.dbt_postgres.postgres__get_catalog": { + "name": "postgres__get_catalog", "resource_type": "macro", "package_name": "dbt_postgres", - "path": "macros/materializations/snapshot_merge.sql", - "original_file_path": "macros/materializations/snapshot_merge.sql", - "unique_id": "macro.dbt_postgres.postgres__snapshot_merge_sql", - "macro_sql": "{% macro postgres__snapshot_merge_sql(target, source, insert_cols) -%}\n {%- set insert_cols_csv = insert_cols | join(', ') -%}\n\n update {{ target }}\n set dbt_valid_to = DBT_INTERNAL_SOURCE.dbt_valid_to\n from {{ source }} as DBT_INTERNAL_SOURCE\n where DBT_INTERNAL_SOURCE.dbt_scd_id::text = {{ target }}.dbt_scd_id::text\n and DBT_INTERNAL_SOURCE.dbt_change_type::text in ('update'::text, 'delete'::text)\n and {{ target }}.dbt_valid_to is null;\n\n insert into {{ target }} ({{ insert_cols_csv }})\n select {% for column in insert_cols -%}\n DBT_INTERNAL_SOURCE.{{ column }} {%- if not loop.last %}, {%- endif %}\n {%- endfor %}\n from {{ source }} as DBT_INTERNAL_SOURCE\n where DBT_INTERNAL_SOURCE.dbt_change_type::text = 'insert'::text;\n{% endmacro %}", + "path": "macros/catalog.sql", + "original_file_path": "macros/catalog.sql", + "unique_id": "macro.dbt_postgres.postgres__get_catalog", + "macro_sql": "{% macro postgres__get_catalog(information_schema, schemas) -%}\n {%- set relations = [] -%}\n {%- for schema in schemas -%}\n {%- set dummy = relations.append({'schema': schema}) -%}\n {%- endfor -%}\n {{ return(postgres__get_catalog_relations(information_schema, relations)) }}\n{%- endmacro %}", + "depends_on": { + "macros": [ + "macro.dbt_postgres.postgres__get_catalog_relations" + ] + }, + "description": "", + "meta": {}, + "docs": { + "show": true, + "node_color": null + }, + "patch_path": null, + "arguments": [], + "created_at": 1730458997.0519652, + "supported_languages": null + }, + "macro.dbt_postgres.postgres__current_timestamp": { + "name": "postgres__current_timestamp", + "resource_type": "macro", + "package_name": "dbt_postgres", + "path": "macros/timestamps.sql", + "original_file_path": "macros/timestamps.sql", + "unique_id": "macro.dbt_postgres.postgres__current_timestamp", + "macro_sql": "{% macro postgres__current_timestamp() -%}\n now()\n{%- endmacro %}", "depends_on": { "macros": [] }, @@ -4069,17 +4015,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.499317, + "created_at": 1730458997.0521345, "supported_languages": null }, - "macro.dbt_postgres.postgres__drop_materialized_view": { - "name": "postgres__drop_materialized_view", + "macro.dbt_postgres.postgres__snapshot_string_as_time": { + "name": "postgres__snapshot_string_as_time", "resource_type": "macro", "package_name": "dbt_postgres", - "path": "macros/relations/materialized_view/drop.sql", - "original_file_path": "macros/relations/materialized_view/drop.sql", - "unique_id": "macro.dbt_postgres.postgres__drop_materialized_view", - "macro_sql": "{% macro postgres__drop_materialized_view(relation) -%}\n drop materialized view if exists {{ relation }} cascade\n{%- endmacro %}", + "path": "macros/timestamps.sql", + "original_file_path": "macros/timestamps.sql", + "unique_id": "macro.dbt_postgres.postgres__snapshot_string_as_time", + "macro_sql": "{% macro postgres__snapshot_string_as_time(timestamp) -%}\n {%- set result = \"'\" ~ timestamp ~ \"'::timestamp without time zone\" -%}\n {{ return(result) }}\n{%- endmacro %}", "depends_on": { "macros": [] }, @@ -4091,21 +4037,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.499397, + "created_at": 1730458997.0522304, "supported_languages": null }, - "macro.dbt_postgres.postgres__describe_materialized_view": { - "name": "postgres__describe_materialized_view", + "macro.dbt_postgres.postgres__snapshot_get_time": { + "name": "postgres__snapshot_get_time", "resource_type": "macro", "package_name": "dbt_postgres", - "path": "macros/relations/materialized_view/describe.sql", - "original_file_path": "macros/relations/materialized_view/describe.sql", - "unique_id": "macro.dbt_postgres.postgres__describe_materialized_view", - "macro_sql": "{% macro postgres__describe_materialized_view(relation) %}\n -- for now just get the indexes, we don't need the name or the query yet\n {% set _indexes = run_query(get_show_indexes_sql(relation)) %}\n {% do return({'indexes': _indexes}) %}\n{% endmacro %}", + "path": "macros/timestamps.sql", + "original_file_path": "macros/timestamps.sql", + "unique_id": "macro.dbt_postgres.postgres__snapshot_get_time", + "macro_sql": "{% macro postgres__snapshot_get_time() -%}\n {{ current_timestamp() }}::timestamp without time zone\n{%- endmacro %}", "depends_on": { "macros": [ - "macro.dbt.run_query", - "macro.dbt.get_show_indexes_sql" + "macro.dbt.current_timestamp" ] }, "description": "", @@ -4116,17 +4061,160 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.4995542, + "created_at": 1730458997.0522866, "supported_languages": null }, - "macro.dbt_postgres.postgres__refresh_materialized_view": { - "name": "postgres__refresh_materialized_view", + "macro.dbt_postgres.postgres__current_timestamp_backcompat": { + "name": "postgres__current_timestamp_backcompat", + "resource_type": "macro", + "package_name": "dbt_postgres", + "path": "macros/timestamps.sql", + "original_file_path": "macros/timestamps.sql", + "unique_id": "macro.dbt_postgres.postgres__current_timestamp_backcompat", + "macro_sql": "{% macro postgres__current_timestamp_backcompat() %}\n current_timestamp::{{ type_timestamp() }}\n{% endmacro %}", + "depends_on": { + "macros": [ + "macro.dbt.type_timestamp" + ] + }, + "description": "", + "meta": {}, + "docs": { + "show": true, + "node_color": null + }, + "patch_path": null, + "arguments": [], + "created_at": 1730458997.0523477, + "supported_languages": null + }, + "macro.dbt_postgres.postgres__current_timestamp_in_utc_backcompat": { + "name": "postgres__current_timestamp_in_utc_backcompat", + "resource_type": "macro", + "package_name": "dbt_postgres", + "path": "macros/timestamps.sql", + "original_file_path": "macros/timestamps.sql", + "unique_id": "macro.dbt_postgres.postgres__current_timestamp_in_utc_backcompat", + "macro_sql": "{% macro postgres__current_timestamp_in_utc_backcompat() %}\n (current_timestamp at time zone 'utc')::{{ type_timestamp() }}\n{% endmacro %}", + "depends_on": { + "macros": [ + "macro.dbt.type_timestamp" + ] + }, + "description": "", + "meta": {}, + "docs": { + "show": true, + "node_color": null + }, + "patch_path": null, + "arguments": [], + "created_at": 1730458997.0524054, + "supported_languages": null + }, + "macro.dbt_postgres.postgres__get_relations": { + "name": "postgres__get_relations", + "resource_type": "macro", + "package_name": "dbt_postgres", + "path": "macros/relations.sql", + "original_file_path": "macros/relations.sql", + "unique_id": "macro.dbt_postgres.postgres__get_relations", + "macro_sql": "{% macro postgres__get_relations() -%}\n\n {#\n -- in pg_depend, objid is the dependent, refobjid is the referenced object\n -- > a pg_depend entry indicates that the referenced object cannot be\n -- > dropped without also dropping the dependent object.\n #}\n\n {%- call statement('relations', fetch_result=True) -%}\n with relation as (\n select\n pg_rewrite.ev_class as class,\n pg_rewrite.oid as id\n from pg_rewrite\n ),\n class as (\n select\n oid as id,\n relname as name,\n relnamespace as schema,\n relkind as kind\n from pg_class\n ),\n dependency as (\n select distinct\n pg_depend.objid as id,\n pg_depend.refobjid as ref\n from pg_depend\n ),\n schema as (\n select\n pg_namespace.oid as id,\n pg_namespace.nspname as name\n from pg_namespace\n where nspname != 'information_schema' and nspname not like 'pg\\_%'\n ),\n referenced as (\n select\n relation.id AS id,\n referenced_class.name ,\n referenced_class.schema ,\n referenced_class.kind\n from relation\n join class as referenced_class on relation.class=referenced_class.id\n where referenced_class.kind in ('r', 'v', 'm')\n ),\n relationships as (\n select\n referenced.name as referenced_name,\n referenced.schema as referenced_schema_id,\n dependent_class.name as dependent_name,\n dependent_class.schema as dependent_schema_id,\n referenced.kind as kind\n from referenced\n join dependency on referenced.id=dependency.id\n join class as dependent_class on dependency.ref=dependent_class.id\n where\n (referenced.name != dependent_class.name or\n referenced.schema != dependent_class.schema)\n )\n\n select\n referenced_schema.name as referenced_schema,\n relationships.referenced_name as referenced_name,\n dependent_schema.name as dependent_schema,\n relationships.dependent_name as dependent_name\n from relationships\n join schema as dependent_schema on relationships.dependent_schema_id=dependent_schema.id\n join schema as referenced_schema on relationships.referenced_schema_id=referenced_schema.id\n group by referenced_schema, referenced_name, dependent_schema, dependent_name\n order by referenced_schema, referenced_name, dependent_schema, dependent_name;\n\n {%- endcall -%}\n\n {{ return(load_result('relations').table) }}\n{% endmacro %}", + "depends_on": { + "macros": [ + "macro.dbt.statement" + ] + }, + "description": "", + "meta": {}, + "docs": { + "show": true, + "node_color": null + }, + "patch_path": null, + "arguments": [], + "created_at": 1730458997.0527806, + "supported_languages": null + }, + "macro.dbt_postgres.postgres_get_relations": { + "name": "postgres_get_relations", + "resource_type": "macro", + "package_name": "dbt_postgres", + "path": "macros/relations.sql", + "original_file_path": "macros/relations.sql", + "unique_id": "macro.dbt_postgres.postgres_get_relations", + "macro_sql": "{% macro postgres_get_relations() %}\n {{ return(postgres__get_relations()) }}\n{% endmacro %}", + "depends_on": { + "macros": [ + "macro.dbt_postgres.postgres__get_relations" + ] + }, + "description": "", + "meta": {}, + "docs": { + "show": true, + "node_color": null + }, + "patch_path": null, + "arguments": [], + "created_at": 1730458997.052848, + "supported_languages": null + }, + "macro.dbt_postgres.postgres__snapshot_merge_sql": { + "name": "postgres__snapshot_merge_sql", + "resource_type": "macro", + "package_name": "dbt_postgres", + "path": "macros/materializations/snapshot_merge.sql", + "original_file_path": "macros/materializations/snapshot_merge.sql", + "unique_id": "macro.dbt_postgres.postgres__snapshot_merge_sql", + "macro_sql": "{% macro postgres__snapshot_merge_sql(target, source, insert_cols) -%}\n {%- set insert_cols_csv = insert_cols | join(', ') -%}\n\n update {{ target }}\n set dbt_valid_to = DBT_INTERNAL_SOURCE.dbt_valid_to\n from {{ source }} as DBT_INTERNAL_SOURCE\n where DBT_INTERNAL_SOURCE.dbt_scd_id::text = {{ target }}.dbt_scd_id::text\n and DBT_INTERNAL_SOURCE.dbt_change_type::text in ('update'::text, 'delete'::text)\n and {{ target }}.dbt_valid_to is null;\n\n insert into {{ target }} ({{ insert_cols_csv }})\n select {% for column in insert_cols -%}\n DBT_INTERNAL_SOURCE.{{ column }} {%- if not loop.last %}, {%- endif %}\n {%- endfor %}\n from {{ source }} as DBT_INTERNAL_SOURCE\n where DBT_INTERNAL_SOURCE.dbt_change_type::text = 'insert'::text;\n{% endmacro %}", + "depends_on": { + "macros": [] + }, + "description": "", + "meta": {}, + "docs": { + "show": true, + "node_color": null + }, + "patch_path": null, + "arguments": [], + "created_at": 1730458997.0532463, + "supported_languages": null + }, + "macro.dbt_postgres.postgres__get_incremental_default_sql": { + "name": "postgres__get_incremental_default_sql", + "resource_type": "macro", + "package_name": "dbt_postgres", + "path": "macros/materializations/incremental_strategies.sql", + "original_file_path": "macros/materializations/incremental_strategies.sql", + "unique_id": "macro.dbt_postgres.postgres__get_incremental_default_sql", + "macro_sql": "{% macro postgres__get_incremental_default_sql(arg_dict) %}\n\n {% if arg_dict[\"unique_key\"] %}\n {% do return(get_incremental_delete_insert_sql(arg_dict)) %}\n {% else %}\n {% do return(get_incremental_append_sql(arg_dict)) %}\n {% endif %}\n\n{% endmacro %}", + "depends_on": { + "macros": [ + "macro.dbt.get_incremental_delete_insert_sql", + "macro.dbt.get_incremental_append_sql" + ] + }, + "description": "", + "meta": {}, + "docs": { + "show": true, + "node_color": null + }, + "patch_path": null, + "arguments": [], + "created_at": 1730458997.0534434, + "supported_languages": null + }, + "macro.dbt_postgres.postgres__listagg": { + "name": "postgres__listagg", "resource_type": "macro", "package_name": "dbt_postgres", - "path": "macros/relations/materialized_view/refresh.sql", - "original_file_path": "macros/relations/materialized_view/refresh.sql", - "unique_id": "macro.dbt_postgres.postgres__refresh_materialized_view", - "macro_sql": "{% macro postgres__refresh_materialized_view(relation) %}\n refresh materialized view {{ relation }}\n{% endmacro %}", + "path": "macros/utils/listagg.sql", + "original_file_path": "macros/utils/listagg.sql", + "unique_id": "macro.dbt_postgres.postgres__listagg", + "macro_sql": "{% macro postgres__listagg(measure, delimiter_text, order_by_clause, limit_num) -%}\n\n {% if limit_num -%}\n array_to_string(\n (array_agg(\n {{ measure }}\n {% if order_by_clause -%}\n {{ order_by_clause }}\n {%- endif %}\n ))[1:{{ limit_num }}],\n {{ delimiter_text }}\n )\n {%- else %}\n string_agg(\n {{ measure }},\n {{ delimiter_text }}\n {% if order_by_clause -%}\n {{ order_by_clause }}\n {%- endif %}\n )\n {%- endif %}\n\n{%- endmacro %}", "depends_on": { "macros": [] }, @@ -4138,17 +4226,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.4996312, + "created_at": 1730458997.0537744, "supported_languages": null }, - "macro.dbt_postgres.postgres__get_rename_materialized_view_sql": { - "name": "postgres__get_rename_materialized_view_sql", + "macro.dbt_postgres.postgres__dateadd": { + "name": "postgres__dateadd", "resource_type": "macro", "package_name": "dbt_postgres", - "path": "macros/relations/materialized_view/rename.sql", - "original_file_path": "macros/relations/materialized_view/rename.sql", - "unique_id": "macro.dbt_postgres.postgres__get_rename_materialized_view_sql", - "macro_sql": "{% macro postgres__get_rename_materialized_view_sql(relation, new_name) %}\n alter materialized view {{ relation }} rename to {{ new_name }}\n{% endmacro %}", + "path": "macros/utils/dateadd.sql", + "original_file_path": "macros/utils/dateadd.sql", + "unique_id": "macro.dbt_postgres.postgres__dateadd", + "macro_sql": "{% macro postgres__dateadd(datepart, interval, from_date_or_timestamp) %}\n\n {{ from_date_or_timestamp }} + ((interval '1 {{ datepart }}') * ({{ interval }}))\n\n{% endmacro %}", "depends_on": { "macros": [] }, @@ -4160,21 +4248,22 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.499727, + "created_at": 1730458997.0538902, "supported_languages": null }, - "macro.dbt_postgres.postgres__get_alter_materialized_view_as_sql": { - "name": "postgres__get_alter_materialized_view_as_sql", + "macro.dbt_postgres.postgres__last_day": { + "name": "postgres__last_day", "resource_type": "macro", "package_name": "dbt_postgres", - "path": "macros/relations/materialized_view/alter.sql", - "original_file_path": "macros/relations/materialized_view/alter.sql", - "unique_id": "macro.dbt_postgres.postgres__get_alter_materialized_view_as_sql", - "macro_sql": "{% macro postgres__get_alter_materialized_view_as_sql(\n relation,\n configuration_changes,\n sql,\n existing_relation,\n backup_relation,\n intermediate_relation\n) %}\n\n -- apply a full refresh immediately if needed\n {% if configuration_changes.requires_full_refresh %}\n\n {{ get_replace_sql(existing_relation, relation, sql) }}\n\n -- otherwise apply individual changes as needed\n {% else %}\n\n {{ postgres__update_indexes_on_materialized_view(relation, configuration_changes.indexes) }}\n\n {%- endif -%}\n\n{% endmacro %}", + "path": "macros/utils/last_day.sql", + "original_file_path": "macros/utils/last_day.sql", + "unique_id": "macro.dbt_postgres.postgres__last_day", + "macro_sql": "{% macro postgres__last_day(date, datepart) -%}\n\n {%- if datepart == 'quarter' -%}\n -- postgres dateadd does not support quarter interval.\n cast(\n {{dbt.dateadd('day', '-1',\n dbt.dateadd('month', '3', dbt.date_trunc(datepart, date))\n )}}\n as date)\n {%- else -%}\n {{dbt.default_last_day(date, datepart)}}\n {%- endif -%}\n\n{%- endmacro %}", "depends_on": { "macros": [ - "macro.dbt.get_replace_sql", - "macro.dbt_postgres.postgres__update_indexes_on_materialized_view" + "macro.dbt.dateadd", + "macro.dbt.date_trunc", + "macro.dbt.default_last_day" ] }, "description": "", @@ -4185,21 +4274,21 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.500275, + "created_at": 1730458997.0541606, "supported_languages": null }, - "macro.dbt_postgres.postgres__update_indexes_on_materialized_view": { - "name": "postgres__update_indexes_on_materialized_view", + "macro.dbt_postgres.postgres__split_part": { + "name": "postgres__split_part", "resource_type": "macro", "package_name": "dbt_postgres", - "path": "macros/relations/materialized_view/alter.sql", - "original_file_path": "macros/relations/materialized_view/alter.sql", - "unique_id": "macro.dbt_postgres.postgres__update_indexes_on_materialized_view", - "macro_sql": "\n\n\n{%- macro postgres__update_indexes_on_materialized_view(relation, index_changes) -%}\n {{- log(\"Applying UPDATE INDEXES to: \" ~ relation) -}}\n\n {%- for _index_change in index_changes -%}\n {%- set _index = _index_change.context -%}\n\n {%- if _index_change.action == \"drop\" -%}\n\n {{ postgres__get_drop_index_sql(relation, _index.name) }}\n\n {%- elif _index_change.action == \"create\" -%}\n\n {{ postgres__get_create_index_sql(relation, _index.as_node_config) }}\n\n {%- endif -%}\n\t{{ ';' if not loop.last else \"\" }}\n\n {%- endfor -%}\n\n{%- endmacro -%}\n\n\n", + "path": "macros/utils/split_part.sql", + "original_file_path": "macros/utils/split_part.sql", + "unique_id": "macro.dbt_postgres.postgres__split_part", + "macro_sql": "{% macro postgres__split_part(string_text, delimiter_text, part_number) %}\n\n {% if part_number >= 0 %}\n {{ dbt.default__split_part(string_text, delimiter_text, part_number) }}\n {% else %}\n {{ dbt._split_part_negative(string_text, delimiter_text, part_number) }}\n {% endif %}\n\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt_postgres.postgres__get_drop_index_sql", - "macro.dbt_postgres.postgres__get_create_index_sql" + "macro.dbt.default__split_part", + "macro.dbt._split_part_negative" ] }, "description": "", @@ -4210,20 +4299,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.500648, + "created_at": 1730458997.0543747, "supported_languages": null }, - "macro.dbt_postgres.postgres__get_materialized_view_configuration_changes": { - "name": "postgres__get_materialized_view_configuration_changes", + "macro.dbt_postgres.postgres__datediff": { + "name": "postgres__datediff", "resource_type": "macro", "package_name": "dbt_postgres", - "path": "macros/relations/materialized_view/alter.sql", - "original_file_path": "macros/relations/materialized_view/alter.sql", - "unique_id": "macro.dbt_postgres.postgres__get_materialized_view_configuration_changes", - "macro_sql": "{% macro postgres__get_materialized_view_configuration_changes(existing_relation, new_config) %}\n {% set _existing_materialized_view = postgres__describe_materialized_view(existing_relation) %}\n {% set _configuration_changes = existing_relation.get_materialized_view_config_change_collection(_existing_materialized_view, new_config.model) %}\n {% do return(_configuration_changes) %}\n{% endmacro %}", + "path": "macros/utils/datediff.sql", + "original_file_path": "macros/utils/datediff.sql", + "unique_id": "macro.dbt_postgres.postgres__datediff", + "macro_sql": "{% macro postgres__datediff(first_date, second_date, datepart) -%}\n\n {% if datepart == 'year' %}\n (date_part('year', ({{second_date}})::date) - date_part('year', ({{first_date}})::date))\n {% elif datepart == 'quarter' %}\n ({{ datediff(first_date, second_date, 'year') }} * 4 + date_part('quarter', ({{second_date}})::date) - date_part('quarter', ({{first_date}})::date))\n {% elif datepart == 'month' %}\n ({{ datediff(first_date, second_date, 'year') }} * 12 + date_part('month', ({{second_date}})::date) - date_part('month', ({{first_date}})::date))\n {% elif datepart == 'day' %}\n (({{second_date}})::date - ({{first_date}})::date)\n {% elif datepart == 'week' %}\n ({{ datediff(first_date, second_date, 'day') }} / 7 + case\n when date_part('dow', ({{first_date}})::timestamp) <= date_part('dow', ({{second_date}})::timestamp) then\n case when {{first_date}} <= {{second_date}} then 0 else -1 end\n else\n case when {{first_date}} <= {{second_date}} then 1 else 0 end\n end)\n {% elif datepart == 'hour' %}\n ({{ datediff(first_date, second_date, 'day') }} * 24 + date_part('hour', ({{second_date}})::timestamp) - date_part('hour', ({{first_date}})::timestamp))\n {% elif datepart == 'minute' %}\n ({{ datediff(first_date, second_date, 'hour') }} * 60 + date_part('minute', ({{second_date}})::timestamp) - date_part('minute', ({{first_date}})::timestamp))\n {% elif datepart == 'second' %}\n ({{ datediff(first_date, second_date, 'minute') }} * 60 + floor(date_part('second', ({{second_date}})::timestamp)) - floor(date_part('second', ({{first_date}})::timestamp)))\n {% elif datepart == 'millisecond' %}\n ({{ datediff(first_date, second_date, 'minute') }} * 60000 + floor(date_part('millisecond', ({{second_date}})::timestamp)) - floor(date_part('millisecond', ({{first_date}})::timestamp)))\n {% elif datepart == 'microsecond' %}\n ({{ datediff(first_date, second_date, 'minute') }} * 60000000 + floor(date_part('microsecond', ({{second_date}})::timestamp)) - floor(date_part('microsecond', ({{first_date}})::timestamp)))\n {% else %}\n {{ exceptions.raise_compiler_error(\"Unsupported datepart for macro datediff in postgres: {!r}\".format(datepart)) }}\n {% endif %}\n\n{%- endmacro %}", "depends_on": { "macros": [ - "macro.dbt_postgres.postgres__describe_materialized_view" + "macro.dbt.datediff" ] }, "description": "", @@ -4234,21 +4323,19 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5008159, + "created_at": 1730458997.056239, "supported_languages": null }, - "macro.dbt_postgres.postgres__get_create_materialized_view_as_sql": { - "name": "postgres__get_create_materialized_view_as_sql", + "macro.dbt_postgres.postgres__any_value": { + "name": "postgres__any_value", "resource_type": "macro", "package_name": "dbt_postgres", - "path": "macros/relations/materialized_view/create.sql", - "original_file_path": "macros/relations/materialized_view/create.sql", - "unique_id": "macro.dbt_postgres.postgres__get_create_materialized_view_as_sql", - "macro_sql": "{% macro postgres__get_create_materialized_view_as_sql(relation, sql) %}\n create materialized view if not exists {{ relation }} as {{ sql }};\n\n {% for _index_dict in config.get('indexes', []) -%}\n {{- get_create_index_sql(relation, _index_dict) -}}{{ ';' if not loop.last else \"\" }}\n {%- endfor -%}\n\n{% endmacro %}", + "path": "macros/utils/any_value.sql", + "original_file_path": "macros/utils/any_value.sql", + "unique_id": "macro.dbt_postgres.postgres__any_value", + "macro_sql": "{% macro postgres__any_value(expression) -%}\n\n min({{ expression }})\n\n{%- endmacro %}", "depends_on": { - "macros": [ - "macro.dbt.get_create_index_sql" - ] + "macros": [] }, "description": "", "meta": {}, @@ -4258,17 +4345,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.501068, + "created_at": 1730458997.0563388, "supported_languages": null }, - "macro.dbt_postgres.postgres__drop_table": { - "name": "postgres__drop_table", + "macro.dbt_postgres.postgres__get_rename_table_sql": { + "name": "postgres__get_rename_table_sql", "resource_type": "macro", "package_name": "dbt_postgres", - "path": "macros/relations/table/drop.sql", - "original_file_path": "macros/relations/table/drop.sql", - "unique_id": "macro.dbt_postgres.postgres__drop_table", - "macro_sql": "{% macro postgres__drop_table(relation) -%}\n drop table if exists {{ relation }} cascade\n{%- endmacro %}", + "path": "macros/relations/table/rename.sql", + "original_file_path": "macros/relations/table/rename.sql", + "unique_id": "macro.dbt_postgres.postgres__get_rename_table_sql", + "macro_sql": "{% macro postgres__get_rename_table_sql(relation, new_name) %}\n alter table {{ relation }} rename to {{ new_name }}\n{% endmacro %}", "depends_on": { "macros": [] }, @@ -4280,7 +4367,7 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.501149, + "created_at": 1730458997.0564358, "supported_languages": null }, "macro.dbt_postgres.postgres__get_replace_table_sql": { @@ -4306,17 +4393,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5015419, + "created_at": 1730458997.0568256, "supported_languages": null }, - "macro.dbt_postgres.postgres__get_rename_table_sql": { - "name": "postgres__get_rename_table_sql", + "macro.dbt_postgres.postgres__drop_table": { + "name": "postgres__drop_table", "resource_type": "macro", "package_name": "dbt_postgres", - "path": "macros/relations/table/rename.sql", - "original_file_path": "macros/relations/table/rename.sql", - "unique_id": "macro.dbt_postgres.postgres__get_rename_table_sql", - "macro_sql": "{% macro postgres__get_rename_table_sql(relation, new_name) %}\n alter table {{ relation }} rename to {{ new_name }}\n{% endmacro %}", + "path": "macros/relations/table/drop.sql", + "original_file_path": "macros/relations/table/drop.sql", + "unique_id": "macro.dbt_postgres.postgres__drop_table", + "macro_sql": "{% macro postgres__drop_table(relation) -%}\n drop table if exists {{ relation }} cascade\n{%- endmacro %}", "depends_on": { "macros": [] }, @@ -4328,17 +4415,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5016441, + "created_at": 1730458997.056907, "supported_languages": null }, - "macro.dbt_postgres.postgres__drop_view": { - "name": "postgres__drop_view", + "macro.dbt_postgres.postgres__get_rename_view_sql": { + "name": "postgres__get_rename_view_sql", "resource_type": "macro", "package_name": "dbt_postgres", - "path": "macros/relations/view/drop.sql", - "original_file_path": "macros/relations/view/drop.sql", - "unique_id": "macro.dbt_postgres.postgres__drop_view", - "macro_sql": "{% macro postgres__drop_view(relation) -%}\n drop view if exists {{ relation }} cascade\n{%- endmacro %}", + "path": "macros/relations/view/rename.sql", + "original_file_path": "macros/relations/view/rename.sql", + "unique_id": "macro.dbt_postgres.postgres__get_rename_view_sql", + "macro_sql": "{% macro postgres__get_rename_view_sql(relation, new_name) %}\n alter view {{ relation }} rename to {{ new_name }}\n{% endmacro %}", "depends_on": { "macros": [] }, @@ -4350,7 +4437,7 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5017211, + "created_at": 1730458997.0570102, "supported_languages": null }, "macro.dbt_postgres.postgres__get_replace_view_sql": { @@ -4374,17 +4461,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.502031, + "created_at": 1730458997.0573094, "supported_languages": null }, - "macro.dbt_postgres.postgres__get_rename_view_sql": { - "name": "postgres__get_rename_view_sql", + "macro.dbt_postgres.postgres__drop_view": { + "name": "postgres__drop_view", "resource_type": "macro", "package_name": "dbt_postgres", - "path": "macros/relations/view/rename.sql", - "original_file_path": "macros/relations/view/rename.sql", - "unique_id": "macro.dbt_postgres.postgres__get_rename_view_sql", - "macro_sql": "{% macro postgres__get_rename_view_sql(relation, new_name) %}\n alter view {{ relation }} rename to {{ new_name }}\n{% endmacro %}", + "path": "macros/relations/view/drop.sql", + "original_file_path": "macros/relations/view/drop.sql", + "unique_id": "macro.dbt_postgres.postgres__drop_view", + "macro_sql": "{% macro postgres__drop_view(relation) -%}\n drop view if exists {{ relation }} cascade\n{%- endmacro %}", "depends_on": { "macros": [] }, @@ -4396,17 +4483,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.502134, + "created_at": 1730458997.057386, "supported_languages": null }, - "macro.dbt_postgres.postgres__dateadd": { - "name": "postgres__dateadd", + "macro.dbt_postgres.postgres__refresh_materialized_view": { + "name": "postgres__refresh_materialized_view", "resource_type": "macro", "package_name": "dbt_postgres", - "path": "macros/utils/dateadd.sql", - "original_file_path": "macros/utils/dateadd.sql", - "unique_id": "macro.dbt_postgres.postgres__dateadd", - "macro_sql": "{% macro postgres__dateadd(datepart, interval, from_date_or_timestamp) %}\n\n {{ from_date_or_timestamp }} + ((interval '1 {{ datepart }}') * ({{ interval }}))\n\n{% endmacro %}", + "path": "macros/relations/materialized_view/refresh.sql", + "original_file_path": "macros/relations/materialized_view/refresh.sql", + "unique_id": "macro.dbt_postgres.postgres__refresh_materialized_view", + "macro_sql": "{% macro postgres__refresh_materialized_view(relation) %}\n refresh materialized view {{ relation }}\n{% endmacro %}", "depends_on": { "macros": [] }, @@ -4418,19 +4505,22 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.502254, + "created_at": 1730458997.0574656, "supported_languages": null }, - "macro.dbt_postgres.postgres__listagg": { - "name": "postgres__listagg", + "macro.dbt_postgres.postgres__get_alter_materialized_view_as_sql": { + "name": "postgres__get_alter_materialized_view_as_sql", "resource_type": "macro", "package_name": "dbt_postgres", - "path": "macros/utils/listagg.sql", - "original_file_path": "macros/utils/listagg.sql", - "unique_id": "macro.dbt_postgres.postgres__listagg", - "macro_sql": "{% macro postgres__listagg(measure, delimiter_text, order_by_clause, limit_num) -%}\n\n {% if limit_num -%}\n array_to_string(\n (array_agg(\n {{ measure }}\n {% if order_by_clause -%}\n {{ order_by_clause }}\n {%- endif %}\n ))[1:{{ limit_num }}],\n {{ delimiter_text }}\n )\n {%- else %}\n string_agg(\n {{ measure }},\n {{ delimiter_text }}\n {% if order_by_clause -%}\n {{ order_by_clause }}\n {%- endif %}\n )\n {%- endif %}\n\n{%- endmacro %}", + "path": "macros/relations/materialized_view/alter.sql", + "original_file_path": "macros/relations/materialized_view/alter.sql", + "unique_id": "macro.dbt_postgres.postgres__get_alter_materialized_view_as_sql", + "macro_sql": "{% macro postgres__get_alter_materialized_view_as_sql(\n relation,\n configuration_changes,\n sql,\n existing_relation,\n backup_relation,\n intermediate_relation\n) %}\n\n -- apply a full refresh immediately if needed\n {% if configuration_changes.requires_full_refresh %}\n\n {{ get_replace_sql(existing_relation, relation, sql) }}\n\n -- otherwise apply individual changes as needed\n {% else %}\n\n {{ postgres__update_indexes_on_materialized_view(relation, configuration_changes.indexes) }}\n\n {%- endif -%}\n\n{% endmacro %}", "depends_on": { - "macros": [] + "macros": [ + "macro.dbt.get_replace_sql", + "macro.dbt_postgres.postgres__update_indexes_on_materialized_view" + ] }, "description": "", "meta": {}, @@ -4440,20 +4530,21 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.502623, + "created_at": 1730458997.0579536, "supported_languages": null }, - "macro.dbt_postgres.postgres__datediff": { - "name": "postgres__datediff", + "macro.dbt_postgres.postgres__update_indexes_on_materialized_view": { + "name": "postgres__update_indexes_on_materialized_view", "resource_type": "macro", "package_name": "dbt_postgres", - "path": "macros/utils/datediff.sql", - "original_file_path": "macros/utils/datediff.sql", - "unique_id": "macro.dbt_postgres.postgres__datediff", - "macro_sql": "{% macro postgres__datediff(first_date, second_date, datepart) -%}\n\n {% if datepart == 'year' %}\n (date_part('year', ({{second_date}})::date) - date_part('year', ({{first_date}})::date))\n {% elif datepart == 'quarter' %}\n ({{ datediff(first_date, second_date, 'year') }} * 4 + date_part('quarter', ({{second_date}})::date) - date_part('quarter', ({{first_date}})::date))\n {% elif datepart == 'month' %}\n ({{ datediff(first_date, second_date, 'year') }} * 12 + date_part('month', ({{second_date}})::date) - date_part('month', ({{first_date}})::date))\n {% elif datepart == 'day' %}\n (({{second_date}})::date - ({{first_date}})::date)\n {% elif datepart == 'week' %}\n ({{ datediff(first_date, second_date, 'day') }} / 7 + case\n when date_part('dow', ({{first_date}})::timestamp) <= date_part('dow', ({{second_date}})::timestamp) then\n case when {{first_date}} <= {{second_date}} then 0 else -1 end\n else\n case when {{first_date}} <= {{second_date}} then 1 else 0 end\n end)\n {% elif datepart == 'hour' %}\n ({{ datediff(first_date, second_date, 'day') }} * 24 + date_part('hour', ({{second_date}})::timestamp) - date_part('hour', ({{first_date}})::timestamp))\n {% elif datepart == 'minute' %}\n ({{ datediff(first_date, second_date, 'hour') }} * 60 + date_part('minute', ({{second_date}})::timestamp) - date_part('minute', ({{first_date}})::timestamp))\n {% elif datepart == 'second' %}\n ({{ datediff(first_date, second_date, 'minute') }} * 60 + floor(date_part('second', ({{second_date}})::timestamp)) - floor(date_part('second', ({{first_date}})::timestamp)))\n {% elif datepart == 'millisecond' %}\n ({{ datediff(first_date, second_date, 'minute') }} * 60000 + floor(date_part('millisecond', ({{second_date}})::timestamp)) - floor(date_part('millisecond', ({{first_date}})::timestamp)))\n {% elif datepart == 'microsecond' %}\n ({{ datediff(first_date, second_date, 'minute') }} * 60000000 + floor(date_part('microsecond', ({{second_date}})::timestamp)) - floor(date_part('microsecond', ({{first_date}})::timestamp)))\n {% else %}\n {{ exceptions.raise_compiler_error(\"Unsupported datepart for macro datediff in postgres: {!r}\".format(datepart)) }}\n {% endif %}\n\n{%- endmacro %}", + "path": "macros/relations/materialized_view/alter.sql", + "original_file_path": "macros/relations/materialized_view/alter.sql", + "unique_id": "macro.dbt_postgres.postgres__update_indexes_on_materialized_view", + "macro_sql": "\n\n\n{%- macro postgres__update_indexes_on_materialized_view(relation, index_changes) -%}\n {{- log(\"Applying UPDATE INDEXES to: \" ~ relation) -}}\n\n {%- for _index_change in index_changes -%}\n {%- set _index = _index_change.context -%}\n\n {%- if _index_change.action == \"drop\" -%}\n\n {{ postgres__get_drop_index_sql(relation, _index.name) }}\n\n {%- elif _index_change.action == \"create\" -%}\n\n {{ postgres__get_create_index_sql(relation, _index.as_node_config) }}\n\n {%- endif -%}\n\t{{ ';' if not loop.last else \"\" }}\n\n {%- endfor -%}\n\n{%- endmacro -%}\n\n\n", "depends_on": { "macros": [ - "macro.dbt.datediff" + "macro.dbt_postgres.postgres__get_drop_index_sql", + "macro.dbt_postgres.postgres__get_create_index_sql" ] }, "description": "", @@ -4464,17 +4555,41 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.504535, + "created_at": 1730458997.0582325, "supported_languages": null }, - "macro.dbt_postgres.postgres__any_value": { - "name": "postgres__any_value", + "macro.dbt_postgres.postgres__get_materialized_view_configuration_changes": { + "name": "postgres__get_materialized_view_configuration_changes", "resource_type": "macro", "package_name": "dbt_postgres", - "path": "macros/utils/any_value.sql", - "original_file_path": "macros/utils/any_value.sql", - "unique_id": "macro.dbt_postgres.postgres__any_value", - "macro_sql": "{% macro postgres__any_value(expression) -%}\n\n min({{ expression }})\n\n{%- endmacro %}", + "path": "macros/relations/materialized_view/alter.sql", + "original_file_path": "macros/relations/materialized_view/alter.sql", + "unique_id": "macro.dbt_postgres.postgres__get_materialized_view_configuration_changes", + "macro_sql": "{% macro postgres__get_materialized_view_configuration_changes(existing_relation, new_config) %}\n {% set _existing_materialized_view = postgres__describe_materialized_view(existing_relation) %}\n {% set _configuration_changes = existing_relation.get_materialized_view_config_change_collection(_existing_materialized_view, new_config.model) %}\n {% do return(_configuration_changes) %}\n{% endmacro %}", + "depends_on": { + "macros": [ + "macro.dbt_postgres.postgres__describe_materialized_view" + ] + }, + "description": "", + "meta": {}, + "docs": { + "show": true, + "node_color": null + }, + "patch_path": null, + "arguments": [], + "created_at": 1730458997.05839, + "supported_languages": null + }, + "macro.dbt_postgres.postgres__get_rename_materialized_view_sql": { + "name": "postgres__get_rename_materialized_view_sql", + "resource_type": "macro", + "package_name": "dbt_postgres", + "path": "macros/relations/materialized_view/rename.sql", + "original_file_path": "macros/relations/materialized_view/rename.sql", + "unique_id": "macro.dbt_postgres.postgres__get_rename_materialized_view_sql", + "macro_sql": "{% macro postgres__get_rename_materialized_view_sql(relation, new_name) %}\n alter materialized view {{ relation }} rename to {{ new_name }}\n{% endmacro %}", "depends_on": { "macros": [] }, @@ -4486,22 +4601,21 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.504628, + "created_at": 1730458997.0584862, "supported_languages": null }, - "macro.dbt_postgres.postgres__last_day": { - "name": "postgres__last_day", + "macro.dbt_postgres.postgres__describe_materialized_view": { + "name": "postgres__describe_materialized_view", "resource_type": "macro", "package_name": "dbt_postgres", - "path": "macros/utils/last_day.sql", - "original_file_path": "macros/utils/last_day.sql", - "unique_id": "macro.dbt_postgres.postgres__last_day", - "macro_sql": "{% macro postgres__last_day(date, datepart) -%}\n\n {%- if datepart == 'quarter' -%}\n -- postgres dateadd does not support quarter interval.\n cast(\n {{dbt.dateadd('day', '-1',\n dbt.dateadd('month', '3', dbt.date_trunc(datepart, date))\n )}}\n as date)\n {%- else -%}\n {{dbt.default_last_day(date, datepart)}}\n {%- endif -%}\n\n{%- endmacro %}", + "path": "macros/relations/materialized_view/describe.sql", + "original_file_path": "macros/relations/materialized_view/describe.sql", + "unique_id": "macro.dbt_postgres.postgres__describe_materialized_view", + "macro_sql": "{% macro postgres__describe_materialized_view(relation) %}\n -- for now just get the indexes, we don't need the name or the query yet\n {% set _indexes = run_query(get_show_indexes_sql(relation)) %}\n {% do return({'indexes': _indexes}) %}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.dateadd", - "macro.dbt.date_trunc", - "macro.dbt.default_last_day" + "macro.dbt.run_query", + "macro.dbt.get_show_indexes_sql" ] }, "description": "", @@ -4512,21 +4626,42 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.50491, + "created_at": 1730458997.0586421, "supported_languages": null }, - "macro.dbt_postgres.postgres__split_part": { - "name": "postgres__split_part", + "macro.dbt_postgres.postgres__drop_materialized_view": { + "name": "postgres__drop_materialized_view", "resource_type": "macro", "package_name": "dbt_postgres", - "path": "macros/utils/split_part.sql", - "original_file_path": "macros/utils/split_part.sql", - "unique_id": "macro.dbt_postgres.postgres__split_part", - "macro_sql": "{% macro postgres__split_part(string_text, delimiter_text, part_number) %}\n\n {% if part_number >= 0 %}\n {{ dbt.default__split_part(string_text, delimiter_text, part_number) }}\n {% else %}\n {{ dbt._split_part_negative(string_text, delimiter_text, part_number) }}\n {% endif %}\n\n{% endmacro %}", + "path": "macros/relations/materialized_view/drop.sql", + "original_file_path": "macros/relations/materialized_view/drop.sql", + "unique_id": "macro.dbt_postgres.postgres__drop_materialized_view", + "macro_sql": "{% macro postgres__drop_materialized_view(relation) -%}\n drop materialized view if exists {{ relation }} cascade\n{%- endmacro %}", + "depends_on": { + "macros": [] + }, + "description": "", + "meta": {}, + "docs": { + "show": true, + "node_color": null + }, + "patch_path": null, + "arguments": [], + "created_at": 1730458997.0587173, + "supported_languages": null + }, + "macro.dbt_postgres.postgres__get_create_materialized_view_as_sql": { + "name": "postgres__get_create_materialized_view_as_sql", + "resource_type": "macro", + "package_name": "dbt_postgres", + "path": "macros/relations/materialized_view/create.sql", + "original_file_path": "macros/relations/materialized_view/create.sql", + "unique_id": "macro.dbt_postgres.postgres__get_create_materialized_view_as_sql", + "macro_sql": "{% macro postgres__get_create_materialized_view_as_sql(relation, sql) %}\n create materialized view if not exists {{ relation }} as {{ sql }};\n\n {% for _index_dict in config.get('indexes', []) -%}\n {{- get_create_index_sql(relation, _index_dict) -}}{{ ';' if not loop.last else \"\" }}\n {%- endfor -%}\n\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__split_part", - "macro.dbt._split_part_negative" + "macro.dbt.get_create_index_sql" ] }, "description": "", @@ -4537,20 +4672,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5051389, + "created_at": 1730458997.0589533, "supported_languages": null }, - "macro.dbt.run_hooks": { - "name": "run_hooks", + "macro.dbt.generate_database_name": { + "name": "generate_database_name", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/hooks.sql", - "original_file_path": "macros/materializations/hooks.sql", - "unique_id": "macro.dbt.run_hooks", - "macro_sql": "{% macro run_hooks(hooks, inside_transaction=True) %}\n {% for hook in hooks | selectattr('transaction', 'equalto', inside_transaction) %}\n {% if not inside_transaction and loop.first %}\n {% call statement(auto_begin=inside_transaction) %}\n commit;\n {% endcall %}\n {% endif %}\n {% set rendered = render(hook.get('sql')) | trim %}\n {% if (rendered | length) > 0 %}\n {% call statement(auto_begin=inside_transaction) %}\n {{ rendered }}\n {% endcall %}\n {% endif %}\n {% endfor %}\n{% endmacro %}", + "path": "macros/get_custom_name/get_custom_database.sql", + "original_file_path": "macros/get_custom_name/get_custom_database.sql", + "unique_id": "macro.dbt.generate_database_name", + "macro_sql": "{% macro generate_database_name(custom_database_name=none, node=none) -%}\n {% do return(adapter.dispatch('generate_database_name', 'dbt')(custom_database_name, node)) %}\n{%- endmacro %}", "depends_on": { "macros": [ - "macro.dbt.statement" + "macro.dbt.default__generate_database_name" ] }, "description": "", @@ -4561,17 +4696,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.505784, + "created_at": 1730458997.0591645, "supported_languages": null }, - "macro.dbt.make_hook_config": { - "name": "make_hook_config", + "macro.dbt.default__generate_database_name": { + "name": "default__generate_database_name", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/hooks.sql", - "original_file_path": "macros/materializations/hooks.sql", - "unique_id": "macro.dbt.make_hook_config", - "macro_sql": "{% macro make_hook_config(sql, inside_transaction) %}\n {{ tojson({\"sql\": sql, \"transaction\": inside_transaction}) }}\n{% endmacro %}", + "path": "macros/get_custom_name/get_custom_database.sql", + "original_file_path": "macros/get_custom_name/get_custom_database.sql", + "unique_id": "macro.dbt.default__generate_database_name", + "macro_sql": "{% macro default__generate_database_name(custom_database_name=none, node=none) -%}\n {%- set default_database = target.database -%}\n {%- if custom_database_name is none -%}\n\n {{ default_database }}\n\n {%- else -%}\n\n {{ custom_database_name }}\n\n {%- endif -%}\n\n{%- endmacro %}", "depends_on": { "macros": [] }, @@ -4583,20 +4718,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.505899, + "created_at": 1730458997.059301, "supported_languages": null }, - "macro.dbt.before_begin": { - "name": "before_begin", + "macro.dbt.generate_schema_name": { + "name": "generate_schema_name", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/hooks.sql", - "original_file_path": "macros/materializations/hooks.sql", - "unique_id": "macro.dbt.before_begin", - "macro_sql": "{% macro before_begin(sql) %}\n {{ make_hook_config(sql, inside_transaction=False) }}\n{% endmacro %}", + "path": "macros/get_custom_name/get_custom_schema.sql", + "original_file_path": "macros/get_custom_name/get_custom_schema.sql", + "unique_id": "macro.dbt.generate_schema_name", + "macro_sql": "{% macro generate_schema_name(custom_schema_name=none, node=none) -%}\n {{ return(adapter.dispatch('generate_schema_name', 'dbt')(custom_schema_name, node)) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.make_hook_config" + "macro.dbt.default__generate_schema_name" ] }, "description": "", @@ -4607,21 +4742,19 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.505981, + "created_at": 1730458997.0595834, "supported_languages": null }, - "macro.dbt.in_transaction": { - "name": "in_transaction", + "macro.dbt.default__generate_schema_name": { + "name": "default__generate_schema_name", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/hooks.sql", - "original_file_path": "macros/materializations/hooks.sql", - "unique_id": "macro.dbt.in_transaction", - "macro_sql": "{% macro in_transaction(sql) %}\n {{ make_hook_config(sql, inside_transaction=True) }}\n{% endmacro %}", + "path": "macros/get_custom_name/get_custom_schema.sql", + "original_file_path": "macros/get_custom_name/get_custom_schema.sql", + "unique_id": "macro.dbt.default__generate_schema_name", + "macro_sql": "{% macro default__generate_schema_name(custom_schema_name, node) -%}\n\n {%- set default_schema = target.schema -%}\n {%- if custom_schema_name is none -%}\n\n {{ default_schema }}\n\n {%- else -%}\n\n {{ default_schema }}_{{ custom_schema_name | trim }}\n\n {%- endif -%}\n\n{%- endmacro %}", "depends_on": { - "macros": [ - "macro.dbt.make_hook_config" - ] + "macros": [] }, "description": "", "meta": {}, @@ -4631,21 +4764,19 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.506061, + "created_at": 1730458997.0597253, "supported_languages": null }, - "macro.dbt.after_commit": { - "name": "after_commit", + "macro.dbt.generate_schema_name_for_env": { + "name": "generate_schema_name_for_env", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/hooks.sql", - "original_file_path": "macros/materializations/hooks.sql", - "unique_id": "macro.dbt.after_commit", - "macro_sql": "{% macro after_commit(sql) %}\n {{ make_hook_config(sql, inside_transaction=False) }}\n{% endmacro %}", + "path": "macros/get_custom_name/get_custom_schema.sql", + "original_file_path": "macros/get_custom_name/get_custom_schema.sql", + "unique_id": "macro.dbt.generate_schema_name_for_env", + "macro_sql": "{% macro generate_schema_name_for_env(custom_schema_name, node) -%}\n\n {%- set default_schema = target.schema -%}\n {%- if target.name == 'prod' and custom_schema_name is not none -%}\n\n {{ custom_schema_name | trim }}\n\n {%- else -%}\n\n {{ default_schema }}\n\n {%- endif -%}\n\n{%- endmacro %}", "depends_on": { - "macros": [ - "macro.dbt.make_hook_config" - ] + "macros": [] }, "description": "", "meta": {}, @@ -4655,19 +4786,21 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.506143, + "created_at": 1730458997.059883, "supported_languages": null }, - "macro.dbt.set_sql_header": { - "name": "set_sql_header", + "macro.dbt.generate_alias_name": { + "name": "generate_alias_name", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/configs.sql", - "original_file_path": "macros/materializations/configs.sql", - "unique_id": "macro.dbt.set_sql_header", - "macro_sql": "{% macro set_sql_header(config) -%}\n {{ config.set('sql_header', caller()) }}\n{%- endmacro %}", + "path": "macros/get_custom_name/get_custom_alias.sql", + "original_file_path": "macros/get_custom_name/get_custom_alias.sql", + "unique_id": "macro.dbt.generate_alias_name", + "macro_sql": "{% macro generate_alias_name(custom_alias_name=none, node=none) -%}\n {% do return(adapter.dispatch('generate_alias_name', 'dbt')(custom_alias_name, node)) %}\n{%- endmacro %}", "depends_on": { - "macros": [] + "macros": [ + "macro.dbt.default__generate_alias_name" + ] }, "description": "", "meta": {}, @@ -4677,17 +4810,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5063748, + "created_at": 1730458997.0601325, "supported_languages": null }, - "macro.dbt.should_full_refresh": { - "name": "should_full_refresh", + "macro.dbt.default__generate_alias_name": { + "name": "default__generate_alias_name", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/configs.sql", - "original_file_path": "macros/materializations/configs.sql", - "unique_id": "macro.dbt.should_full_refresh", - "macro_sql": "{% macro should_full_refresh() %}\n {% set config_full_refresh = config.get('full_refresh') %}\n {% if config_full_refresh is none %}\n {% set config_full_refresh = flags.FULL_REFRESH %}\n {% endif %}\n {% do return(config_full_refresh) %}\n{% endmacro %}", + "path": "macros/get_custom_name/get_custom_alias.sql", + "original_file_path": "macros/get_custom_name/get_custom_alias.sql", + "unique_id": "macro.dbt.default__generate_alias_name", + "macro_sql": "{% macro default__generate_alias_name(custom_alias_name=none, node=none) -%}\n\n {%- if custom_alias_name -%}\n\n {{ custom_alias_name | trim }}\n\n {%- elif node.version -%}\n\n {{ return(node.name ~ \"_v\" ~ (node.version | replace(\".\", \"_\"))) }}\n\n {%- else -%}\n\n {{ node.name }}\n\n {%- endif -%}\n\n{%- endmacro %}", "depends_on": { "macros": [] }, @@ -4699,19 +4832,21 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.506544, + "created_at": 1730458997.0603318, "supported_languages": null }, - "macro.dbt.should_store_failures": { - "name": "should_store_failures", + "macro.dbt.get_columns_in_relation": { + "name": "get_columns_in_relation", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/configs.sql", - "original_file_path": "macros/materializations/configs.sql", - "unique_id": "macro.dbt.should_store_failures", - "macro_sql": "{% macro should_store_failures() %}\n {% set config_store_failures = config.get('store_failures') %}\n {% if config_store_failures is none %}\n {% set config_store_failures = flags.STORE_FAILURES %}\n {% endif %}\n {% do return(config_store_failures) %}\n{% endmacro %}", + "path": "macros/adapters/columns.sql", + "original_file_path": "macros/adapters/columns.sql", + "unique_id": "macro.dbt.get_columns_in_relation", + "macro_sql": "{% macro get_columns_in_relation(relation) -%}\n {{ return(adapter.dispatch('get_columns_in_relation', 'dbt')(relation)) }}\n{% endmacro %}", "depends_on": { - "macros": [] + "macros": [ + "macro.dbt_postgres.postgres__get_columns_in_relation" + ] }, "description": "", "meta": {}, @@ -4721,21 +4856,19 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.506714, + "created_at": 1730458997.061622, "supported_languages": null }, - "macro.dbt.snapshot_merge_sql": { - "name": "snapshot_merge_sql", + "macro.dbt.default__get_columns_in_relation": { + "name": "default__get_columns_in_relation", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/snapshots/snapshot_merge.sql", - "original_file_path": "macros/materializations/snapshots/snapshot_merge.sql", - "unique_id": "macro.dbt.snapshot_merge_sql", - "macro_sql": "{% macro snapshot_merge_sql(target, source, insert_cols) -%}\n {{ adapter.dispatch('snapshot_merge_sql', 'dbt')(target, source, insert_cols) }}\n{%- endmacro %}", + "path": "macros/adapters/columns.sql", + "original_file_path": "macros/adapters/columns.sql", + "unique_id": "macro.dbt.default__get_columns_in_relation", + "macro_sql": "{% macro default__get_columns_in_relation(relation) -%}\n {{ exceptions.raise_not_implemented(\n 'get_columns_in_relation macro not implemented for adapter '+adapter.type()) }}\n{% endmacro %}", "depends_on": { - "macros": [ - "macro.dbt_postgres.postgres__snapshot_merge_sql" - ] + "macros": [] }, "description": "", "meta": {}, @@ -4745,17 +4878,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.506986, + "created_at": 1730458997.0617168, "supported_languages": null }, - "macro.dbt.default__snapshot_merge_sql": { - "name": "default__snapshot_merge_sql", + "macro.dbt.sql_convert_columns_in_relation": { + "name": "sql_convert_columns_in_relation", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/snapshots/snapshot_merge.sql", - "original_file_path": "macros/materializations/snapshots/snapshot_merge.sql", - "unique_id": "macro.dbt.default__snapshot_merge_sql", - "macro_sql": "{% macro default__snapshot_merge_sql(target, source, insert_cols) -%}\n {%- set insert_cols_csv = insert_cols | join(', ') -%}\n\n merge into {{ target.render() }} as DBT_INTERNAL_DEST\n using {{ source }} as DBT_INTERNAL_SOURCE\n on DBT_INTERNAL_SOURCE.dbt_scd_id = DBT_INTERNAL_DEST.dbt_scd_id\n\n when matched\n and DBT_INTERNAL_DEST.dbt_valid_to is null\n and DBT_INTERNAL_SOURCE.dbt_change_type in ('update', 'delete')\n then update\n set dbt_valid_to = DBT_INTERNAL_SOURCE.dbt_valid_to\n\n when not matched\n and DBT_INTERNAL_SOURCE.dbt_change_type = 'insert'\n then insert ({{ insert_cols_csv }})\n values ({{ insert_cols_csv }})\n\n{% endmacro %}", + "path": "macros/adapters/columns.sql", + "original_file_path": "macros/adapters/columns.sql", + "unique_id": "macro.dbt.sql_convert_columns_in_relation", + "macro_sql": "{% macro sql_convert_columns_in_relation(table) -%}\n {% set columns = [] %}\n {% for row in table %}\n {% do columns.append(api.Column(*row)) %}\n {% endfor %}\n {{ return(columns) }}\n{% endmacro %}", "depends_on": { "macros": [] }, @@ -4767,19 +4900,21 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.507165, + "created_at": 1730458997.0619547, "supported_languages": null }, - "macro.dbt.strategy_dispatch": { - "name": "strategy_dispatch", + "macro.dbt.get_empty_subquery_sql": { + "name": "get_empty_subquery_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/snapshots/strategies.sql", - "original_file_path": "macros/materializations/snapshots/strategies.sql", - "unique_id": "macro.dbt.strategy_dispatch", - "macro_sql": "{% macro strategy_dispatch(name) -%}\n{% set original_name = name %}\n {% if '.' in name %}\n {% set package_name, name = name.split(\".\", 1) %}\n {% else %}\n {% set package_name = none %}\n {% endif %}\n\n {% if package_name is none %}\n {% set package_context = context %}\n {% elif package_name in context %}\n {% set package_context = context[package_name] %}\n {% else %}\n {% set error_msg %}\n Could not find package '{{package_name}}', called with '{{original_name}}'\n {% endset %}\n {{ exceptions.raise_compiler_error(error_msg | trim) }}\n {% endif %}\n\n {%- set search_name = 'snapshot_' ~ name ~ '_strategy' -%}\n\n {% if search_name not in package_context %}\n {% set error_msg %}\n The specified strategy macro '{{name}}' was not found in package '{{ package_name }}'\n {% endset %}\n {{ exceptions.raise_compiler_error(error_msg | trim) }}\n {% endif %}\n {{ return(package_context[search_name]) }}\n{%- endmacro %}", + "path": "macros/adapters/columns.sql", + "original_file_path": "macros/adapters/columns.sql", + "unique_id": "macro.dbt.get_empty_subquery_sql", + "macro_sql": "{% macro get_empty_subquery_sql(select_sql, select_sql_header=none) -%}\n {{ return(adapter.dispatch('get_empty_subquery_sql', 'dbt')(select_sql, select_sql_header)) }}\n{% endmacro %}", "depends_on": { - "macros": [] + "macros": [ + "macro.dbt.default__get_empty_subquery_sql" + ] }, "description": "", "meta": {}, @@ -4789,21 +4924,19 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.50944, + "created_at": 1730458997.0620732, "supported_languages": null }, - "macro.dbt.snapshot_hash_arguments": { - "name": "snapshot_hash_arguments", + "macro.dbt.default__get_empty_subquery_sql": { + "name": "default__get_empty_subquery_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/snapshots/strategies.sql", - "original_file_path": "macros/materializations/snapshots/strategies.sql", - "unique_id": "macro.dbt.snapshot_hash_arguments", - "macro_sql": "{% macro snapshot_hash_arguments(args) -%}\n {{ adapter.dispatch('snapshot_hash_arguments', 'dbt')(args) }}\n{%- endmacro %}", + "path": "macros/adapters/columns.sql", + "original_file_path": "macros/adapters/columns.sql", + "unique_id": "macro.dbt.default__get_empty_subquery_sql", + "macro_sql": "{% macro default__get_empty_subquery_sql(select_sql, select_sql_header=none) %}\n {%- if select_sql_header is not none -%}\n {{ select_sql_header }}\n {%- endif -%}\n select * from (\n {{ select_sql }}\n ) as __dbt_sbq\n where false\n limit 0\n{% endmacro %}", "depends_on": { - "macros": [ - "macro.dbt.default__snapshot_hash_arguments" - ] + "macros": [] }, "description": "", "meta": {}, @@ -4813,19 +4946,21 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.509538, + "created_at": 1730458997.0621922, "supported_languages": null }, - "macro.dbt.default__snapshot_hash_arguments": { - "name": "default__snapshot_hash_arguments", + "macro.dbt.get_empty_schema_sql": { + "name": "get_empty_schema_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/snapshots/strategies.sql", - "original_file_path": "macros/materializations/snapshots/strategies.sql", - "unique_id": "macro.dbt.default__snapshot_hash_arguments", - "macro_sql": "{% macro default__snapshot_hash_arguments(args) -%}\n md5({%- for arg in args -%}\n coalesce(cast({{ arg }} as varchar ), '')\n {% if not loop.last %} || '|' || {% endif %}\n {%- endfor -%})\n{%- endmacro %}", + "path": "macros/adapters/columns.sql", + "original_file_path": "macros/adapters/columns.sql", + "unique_id": "macro.dbt.get_empty_schema_sql", + "macro_sql": "{% macro get_empty_schema_sql(columns) -%}\n {{ return(adapter.dispatch('get_empty_schema_sql', 'dbt')(columns)) }}\n{% endmacro %}", "depends_on": { - "macros": [] + "macros": [ + "macro.dbt.default__get_empty_schema_sql" + ] }, "description": "", "meta": {}, @@ -4835,20 +4970,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5096629, + "created_at": 1730458997.0622945, "supported_languages": null }, - "macro.dbt.snapshot_timestamp_strategy": { - "name": "snapshot_timestamp_strategy", + "macro.dbt.default__get_empty_schema_sql": { + "name": "default__get_empty_schema_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/snapshots/strategies.sql", - "original_file_path": "macros/materializations/snapshots/strategies.sql", - "unique_id": "macro.dbt.snapshot_timestamp_strategy", - "macro_sql": "{% macro snapshot_timestamp_strategy(node, snapshotted_rel, current_rel, config, target_exists) %}\n {% set primary_key = config['unique_key'] %}\n {% set updated_at = config['updated_at'] %}\n {% set invalidate_hard_deletes = config.get('invalidate_hard_deletes', false) %}\n\n {#/*\n The snapshot relation might not have an {{ updated_at }} value if the\n snapshot strategy is changed from `check` to `timestamp`. We\n should use a dbt-created column for the comparison in the snapshot\n table instead of assuming that the user-supplied {{ updated_at }}\n will be present in the historical data.\n\n See https://github.com/dbt-labs/dbt-core/issues/2350\n */ #}\n {% set row_changed_expr -%}\n ({{ snapshotted_rel }}.dbt_valid_from < {{ current_rel }}.{{ updated_at }})\n {%- endset %}\n\n {% set scd_id_expr = snapshot_hash_arguments([primary_key, updated_at]) %}\n\n {% do return({\n \"unique_key\": primary_key,\n \"updated_at\": updated_at,\n \"row_changed\": row_changed_expr,\n \"scd_id\": scd_id_expr,\n \"invalidate_hard_deletes\": invalidate_hard_deletes\n }) %}\n{% endmacro %}", + "path": "macros/adapters/columns.sql", + "original_file_path": "macros/adapters/columns.sql", + "unique_id": "macro.dbt.default__get_empty_schema_sql", + "macro_sql": "{% macro default__get_empty_schema_sql(columns) %}\n {%- set col_err = [] -%}\n {%- set col_naked_numeric = [] -%}\n select\n {% for i in columns %}\n {%- set col = columns[i] -%}\n {%- if col['data_type'] is not defined -%}\n {%- do col_err.append(col['name']) -%}\n {#-- If this column's type is just 'numeric' then it is missing precision/scale, raise a warning --#}\n {%- elif col['data_type'].strip().lower() in ('numeric', 'decimal', 'number') -%}\n {%- do col_naked_numeric.append(col['name']) -%}\n {%- endif -%}\n {% set col_name = adapter.quote(col['name']) if col.get('quote') else col['name'] %}\n {{ cast('null', col['data_type']) }} as {{ col_name }}{{ \", \" if not loop.last }}\n {%- endfor -%}\n {%- if (col_err | length) > 0 -%}\n {{ exceptions.column_type_missing(column_names=col_err) }}\n {%- elif (col_naked_numeric | length) > 0 -%}\n {{ exceptions.warn(\"Detected columns with numeric type and unspecified precision/scale, this can lead to unintended rounding: \" ~ col_naked_numeric ~ \"`\") }}\n {%- endif -%}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.snapshot_hash_arguments" + "macro.dbt.cast" ] }, "description": "", @@ -4859,20 +4994,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.510057, + "created_at": 1730458997.0629492, "supported_languages": null }, - "macro.dbt.snapshot_string_as_time": { - "name": "snapshot_string_as_time", + "macro.dbt.get_column_schema_from_query": { + "name": "get_column_schema_from_query", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/snapshots/strategies.sql", - "original_file_path": "macros/materializations/snapshots/strategies.sql", - "unique_id": "macro.dbt.snapshot_string_as_time", - "macro_sql": "{% macro snapshot_string_as_time(timestamp) -%}\n {{ adapter.dispatch('snapshot_string_as_time', 'dbt')(timestamp) }}\n{%- endmacro %}", + "path": "macros/adapters/columns.sql", + "original_file_path": "macros/adapters/columns.sql", + "unique_id": "macro.dbt.get_column_schema_from_query", + "macro_sql": "{% macro get_column_schema_from_query(select_sql, select_sql_header=none) -%}\n {% set columns = [] %}\n {# -- Using an 'empty subquery' here to get the same schema as the given select_sql statement, without necessitating a data scan.#}\n {% set sql = get_empty_subquery_sql(select_sql, select_sql_header) %}\n {% set column_schema = adapter.get_column_schema_from_query(sql) %}\n {{ return(column_schema) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt_postgres.postgres__snapshot_string_as_time" + "macro.dbt.get_empty_subquery_sql" ] }, "description": "", @@ -4883,19 +5018,21 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.510154, + "created_at": 1730458997.0631459, "supported_languages": null }, - "macro.dbt.default__snapshot_string_as_time": { - "name": "default__snapshot_string_as_time", + "macro.dbt.get_columns_in_query": { + "name": "get_columns_in_query", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/snapshots/strategies.sql", - "original_file_path": "macros/materializations/snapshots/strategies.sql", - "unique_id": "macro.dbt.default__snapshot_string_as_time", - "macro_sql": "{% macro default__snapshot_string_as_time(timestamp) %}\n {% do exceptions.raise_not_implemented(\n 'snapshot_string_as_time macro not implemented for adapter '+adapter.type()\n ) %}\n{% endmacro %}", + "path": "macros/adapters/columns.sql", + "original_file_path": "macros/adapters/columns.sql", + "unique_id": "macro.dbt.get_columns_in_query", + "macro_sql": "{% macro get_columns_in_query(select_sql) -%}\n {{ return(adapter.dispatch('get_columns_in_query', 'dbt')(select_sql)) }}\n{% endmacro %}", "depends_on": { - "macros": [] + "macros": [ + "macro.dbt.default__get_columns_in_query" + ] }, "description": "", "meta": {}, @@ -4905,20 +5042,21 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.510255, + "created_at": 1730458997.0632432, "supported_languages": null }, - "macro.dbt.snapshot_check_all_get_existing_columns": { - "name": "snapshot_check_all_get_existing_columns", + "macro.dbt.default__get_columns_in_query": { + "name": "default__get_columns_in_query", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/snapshots/strategies.sql", - "original_file_path": "macros/materializations/snapshots/strategies.sql", - "unique_id": "macro.dbt.snapshot_check_all_get_existing_columns", - "macro_sql": "{% macro snapshot_check_all_get_existing_columns(node, target_exists, check_cols_config) -%}\n {%- if not target_exists -%}\n {#-- no table yet -> return whatever the query does --#}\n {{ return((false, query_columns)) }}\n {%- endif -%}\n\n {#-- handle any schema changes --#}\n {%- set target_relation = adapter.get_relation(database=node.database, schema=node.schema, identifier=node.alias) -%}\n\n {% if check_cols_config == 'all' %}\n {%- set query_columns = get_columns_in_query(node['compiled_code']) -%}\n\n {% elif check_cols_config is iterable and (check_cols_config | length) > 0 %}\n {#-- query for proper casing/quoting, to support comparison below --#}\n {%- set select_check_cols_from_target -%}\n {#-- N.B. The whitespace below is necessary to avoid edge case issue with comments --#}\n {#-- See: https://github.com/dbt-labs/dbt-core/issues/6781 --#}\n select {{ check_cols_config | join(', ') }} from (\n {{ node['compiled_code'] }}\n ) subq\n {%- endset -%}\n {% set query_columns = get_columns_in_query(select_check_cols_from_target) %}\n\n {% else %}\n {% do exceptions.raise_compiler_error(\"Invalid value for 'check_cols': \" ~ check_cols_config) %}\n {% endif %}\n\n {%- set existing_cols = adapter.get_columns_in_relation(target_relation) | map(attribute = 'name') | list -%}\n {%- set ns = namespace() -%} {#-- handle for-loop scoping with a namespace --#}\n {%- set ns.column_added = false -%}\n\n {%- set intersection = [] -%}\n {%- for col in query_columns -%}\n {%- if col in existing_cols -%}\n {%- do intersection.append(adapter.quote(col)) -%}\n {%- else -%}\n {% set ns.column_added = true %}\n {%- endif -%}\n {%- endfor -%}\n {{ return((ns.column_added, intersection)) }}\n{%- endmacro %}", + "path": "macros/adapters/columns.sql", + "original_file_path": "macros/adapters/columns.sql", + "unique_id": "macro.dbt.default__get_columns_in_query", + "macro_sql": "{% macro default__get_columns_in_query(select_sql) %}\n {% call statement('get_columns_in_query', fetch_result=True, auto_begin=False) -%}\n {{ get_empty_subquery_sql(select_sql) }}\n {% endcall %}\n {{ return(load_result('get_columns_in_query').table.columns | map(attribute='name') | list) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.get_columns_in_query" + "macro.dbt.statement", + "macro.dbt.get_empty_subquery_sql" ] }, "description": "", @@ -4929,23 +5067,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.511041, + "created_at": 1730458997.0634215, "supported_languages": null }, - "macro.dbt.snapshot_check_strategy": { - "name": "snapshot_check_strategy", + "macro.dbt.alter_column_type": { + "name": "alter_column_type", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/snapshots/strategies.sql", - "original_file_path": "macros/materializations/snapshots/strategies.sql", - "unique_id": "macro.dbt.snapshot_check_strategy", - "macro_sql": "{% macro snapshot_check_strategy(node, snapshotted_rel, current_rel, config, target_exists) %}\n {% set check_cols_config = config['check_cols'] %}\n {% set primary_key = config['unique_key'] %}\n {% set invalidate_hard_deletes = config.get('invalidate_hard_deletes', false) %}\n {% set updated_at = config.get('updated_at', snapshot_get_time()) %}\n\n {% set column_added = false %}\n\n {% set column_added, check_cols = snapshot_check_all_get_existing_columns(node, target_exists, check_cols_config) %}\n\n {%- set row_changed_expr -%}\n (\n {%- if column_added -%}\n {{ get_true_sql() }}\n {%- else -%}\n {%- for col in check_cols -%}\n {{ snapshotted_rel }}.{{ col }} != {{ current_rel }}.{{ col }}\n or\n (\n (({{ snapshotted_rel }}.{{ col }} is null) and not ({{ current_rel }}.{{ col }} is null))\n or\n ((not {{ snapshotted_rel }}.{{ col }} is null) and ({{ current_rel }}.{{ col }} is null))\n )\n {%- if not loop.last %} or {% endif -%}\n {%- endfor -%}\n {%- endif -%}\n )\n {%- endset %}\n\n {% set scd_id_expr = snapshot_hash_arguments([primary_key, updated_at]) %}\n\n {% do return({\n \"unique_key\": primary_key,\n \"updated_at\": updated_at,\n \"row_changed\": row_changed_expr,\n \"scd_id\": scd_id_expr,\n \"invalidate_hard_deletes\": invalidate_hard_deletes\n }) %}\n{% endmacro %}", + "path": "macros/adapters/columns.sql", + "original_file_path": "macros/adapters/columns.sql", + "unique_id": "macro.dbt.alter_column_type", + "macro_sql": "{% macro alter_column_type(relation, column_name, new_column_type) -%}\n {{ return(adapter.dispatch('alter_column_type', 'dbt')(relation, column_name, new_column_type)) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.snapshot_get_time", - "macro.dbt.snapshot_check_all_get_existing_columns", - "macro.dbt.get_true_sql", - "macro.dbt.snapshot_hash_arguments" + "macro.dbt.default__alter_column_type" ] }, "description": "", @@ -4956,20 +5091,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.511777, + "created_at": 1730458997.0635383, "supported_languages": null }, - "macro.dbt.create_columns": { - "name": "create_columns", + "macro.dbt.default__alter_column_type": { + "name": "default__alter_column_type", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/snapshots/helpers.sql", - "original_file_path": "macros/materializations/snapshots/helpers.sql", - "unique_id": "macro.dbt.create_columns", - "macro_sql": "{% macro create_columns(relation, columns) %}\n {{ adapter.dispatch('create_columns', 'dbt')(relation, columns) }}\n{% endmacro %}", + "path": "macros/adapters/columns.sql", + "original_file_path": "macros/adapters/columns.sql", + "unique_id": "macro.dbt.default__alter_column_type", + "macro_sql": "{% macro default__alter_column_type(relation, column_name, new_column_type) -%}\n {#\n 1. Create a new column (w/ temp name and correct type)\n 2. Copy data over to it\n 3. Drop the existing column (cascade!)\n 4. Rename the new column to existing column\n #}\n {%- set tmp_column = column_name + \"__dbt_alter\" -%}\n\n {% call statement('alter_column_type') %}\n alter table {{ relation.render() }} add column {{ adapter.quote(tmp_column) }} {{ new_column_type }};\n update {{ relation.render() }} set {{ adapter.quote(tmp_column) }} = {{ adapter.quote(column_name) }};\n alter table {{ relation.render() }} drop column {{ adapter.quote(column_name) }} cascade;\n alter table {{ relation.render() }} rename column {{ adapter.quote(tmp_column) }} to {{ adapter.quote(column_name) }}\n {% endcall %}\n\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__create_columns" + "macro.dbt.statement" ] }, "description": "", @@ -4980,20 +5115,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5144188, + "created_at": 1730458997.0638742, "supported_languages": null }, - "macro.dbt.default__create_columns": { - "name": "default__create_columns", + "macro.dbt.alter_relation_add_remove_columns": { + "name": "alter_relation_add_remove_columns", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/snapshots/helpers.sql", - "original_file_path": "macros/materializations/snapshots/helpers.sql", - "unique_id": "macro.dbt.default__create_columns", - "macro_sql": "{% macro default__create_columns(relation, columns) %}\n {% for column in columns %}\n {% call statement() %}\n alter table {{ relation.render() }} add column \"{{ column.name }}\" {{ column.data_type }};\n {% endcall %}\n {% endfor %}\n{% endmacro %}", + "path": "macros/adapters/columns.sql", + "original_file_path": "macros/adapters/columns.sql", + "unique_id": "macro.dbt.alter_relation_add_remove_columns", + "macro_sql": "{% macro alter_relation_add_remove_columns(relation, add_columns = none, remove_columns = none) -%}\n {{ return(adapter.dispatch('alter_relation_add_remove_columns', 'dbt')(relation, add_columns, remove_columns)) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.statement" + "macro.dbt.default__alter_relation_add_remove_columns" ] }, "description": "", @@ -5004,20 +5139,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.514581, + "created_at": 1730458997.064013, "supported_languages": null }, - "macro.dbt.post_snapshot": { - "name": "post_snapshot", + "macro.dbt.default__alter_relation_add_remove_columns": { + "name": "default__alter_relation_add_remove_columns", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/snapshots/helpers.sql", - "original_file_path": "macros/materializations/snapshots/helpers.sql", - "unique_id": "macro.dbt.post_snapshot", - "macro_sql": "{% macro post_snapshot(staging_relation) %}\n {{ adapter.dispatch('post_snapshot', 'dbt')(staging_relation) }}\n{% endmacro %}", + "path": "macros/adapters/columns.sql", + "original_file_path": "macros/adapters/columns.sql", + "unique_id": "macro.dbt.default__alter_relation_add_remove_columns", + "macro_sql": "{% macro default__alter_relation_add_remove_columns(relation, add_columns, remove_columns) %}\n\n {% if add_columns is none %}\n {% set add_columns = [] %}\n {% endif %}\n {% if remove_columns is none %}\n {% set remove_columns = [] %}\n {% endif %}\n\n {% set sql -%}\n\n alter {{ relation.type }} {{ relation.render() }}\n\n {% for column in add_columns %}\n add column {{ column.name }} {{ column.data_type }}{{ ',' if not loop.last }}\n {% endfor %}{{ ',' if add_columns and remove_columns }}\n\n {% for column in remove_columns %}\n drop column {{ column.name }}{{ ',' if not loop.last }}\n {% endfor %}\n\n {%- endset -%}\n\n {% do run_query(sql) %}\n\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__post_snapshot" + "macro.dbt.run_query" ] }, "description": "", @@ -5028,19 +5163,21 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.514673, + "created_at": 1730458997.0644305, "supported_languages": null }, - "macro.dbt.default__post_snapshot": { - "name": "default__post_snapshot", + "macro.dbt.validate_sql": { + "name": "validate_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/snapshots/helpers.sql", - "original_file_path": "macros/materializations/snapshots/helpers.sql", - "unique_id": "macro.dbt.default__post_snapshot", - "macro_sql": "{% macro default__post_snapshot(staging_relation) %}\n {# no-op #}\n{% endmacro %}", + "path": "macros/adapters/validate_sql.sql", + "original_file_path": "macros/adapters/validate_sql.sql", + "unique_id": "macro.dbt.validate_sql", + "macro_sql": "{% macro validate_sql(sql) -%}\n {{ return(adapter.dispatch('validate_sql', 'dbt')(sql)) }}\n{% endmacro %}", "depends_on": { - "macros": [] + "macros": [ + "macro.dbt.default__validate_sql" + ] }, "description": "", "meta": {}, @@ -5050,20 +5187,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5147252, + "created_at": 1730458997.0645964, "supported_languages": null }, - "macro.dbt.get_true_sql": { - "name": "get_true_sql", + "macro.dbt.default__validate_sql": { + "name": "default__validate_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/snapshots/helpers.sql", - "original_file_path": "macros/materializations/snapshots/helpers.sql", - "unique_id": "macro.dbt.get_true_sql", - "macro_sql": "{% macro get_true_sql() %}\n {{ adapter.dispatch('get_true_sql', 'dbt')() }}\n{% endmacro %}", + "path": "macros/adapters/validate_sql.sql", + "original_file_path": "macros/adapters/validate_sql.sql", + "unique_id": "macro.dbt.default__validate_sql", + "macro_sql": "{% macro default__validate_sql(sql) -%}\n {% call statement('validate_sql') -%}\n explain {{ sql }}\n {% endcall %}\n {{ return(load_result('validate_sql')) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__get_true_sql" + "macro.dbt.statement" ] }, "description": "", @@ -5074,19 +5211,21 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.514807, + "created_at": 1730458997.0647109, "supported_languages": null }, - "macro.dbt.default__get_true_sql": { - "name": "default__get_true_sql", + "macro.dbt.make_intermediate_relation": { + "name": "make_intermediate_relation", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/snapshots/helpers.sql", - "original_file_path": "macros/materializations/snapshots/helpers.sql", - "unique_id": "macro.dbt.default__get_true_sql", - "macro_sql": "{% macro default__get_true_sql() %}\n {{ return('TRUE') }}\n{% endmacro %}", + "path": "macros/adapters/relation.sql", + "original_file_path": "macros/adapters/relation.sql", + "unique_id": "macro.dbt.make_intermediate_relation", + "macro_sql": "{% macro make_intermediate_relation(base_relation, suffix='__dbt_tmp') %}\n {{ return(adapter.dispatch('make_intermediate_relation', 'dbt')(base_relation, suffix)) }}\n{% endmacro %}", "depends_on": { - "macros": [] + "macros": [ + "macro.dbt_postgres.postgres__make_intermediate_relation" + ] }, "description": "", "meta": {}, @@ -5096,20 +5235,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.514869, + "created_at": 1730458997.0658422, "supported_languages": null }, - "macro.dbt.snapshot_staging_table": { - "name": "snapshot_staging_table", + "macro.dbt.default__make_intermediate_relation": { + "name": "default__make_intermediate_relation", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/snapshots/helpers.sql", - "original_file_path": "macros/materializations/snapshots/helpers.sql", - "unique_id": "macro.dbt.snapshot_staging_table", - "macro_sql": "{% macro snapshot_staging_table(strategy, source_sql, target_relation) -%}\n {{ adapter.dispatch('snapshot_staging_table', 'dbt')(strategy, source_sql, target_relation) }}\n{% endmacro %}", + "path": "macros/adapters/relation.sql", + "original_file_path": "macros/adapters/relation.sql", + "unique_id": "macro.dbt.default__make_intermediate_relation", + "macro_sql": "{% macro default__make_intermediate_relation(base_relation, suffix) %}\n {{ return(default__make_temp_relation(base_relation, suffix)) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__snapshot_staging_table" + "macro.dbt.default__make_temp_relation" ] }, "description": "", @@ -5120,20 +5259,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.514982, + "created_at": 1730458997.0659313, "supported_languages": null }, - "macro.dbt.default__snapshot_staging_table": { - "name": "default__snapshot_staging_table", + "macro.dbt.make_temp_relation": { + "name": "make_temp_relation", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/snapshots/helpers.sql", - "original_file_path": "macros/materializations/snapshots/helpers.sql", - "unique_id": "macro.dbt.default__snapshot_staging_table", - "macro_sql": "{% macro default__snapshot_staging_table(strategy, source_sql, target_relation) -%}\n\n with snapshot_query as (\n\n {{ source_sql }}\n\n ),\n\n snapshotted_data as (\n\n select *,\n {{ strategy.unique_key }} as dbt_unique_key\n\n from {{ target_relation }}\n where dbt_valid_to is null\n\n ),\n\n insertions_source_data as (\n\n select\n *,\n {{ strategy.unique_key }} as dbt_unique_key,\n {{ strategy.updated_at }} as dbt_updated_at,\n {{ strategy.updated_at }} as dbt_valid_from,\n nullif({{ strategy.updated_at }}, {{ strategy.updated_at }}) as dbt_valid_to,\n {{ strategy.scd_id }} as dbt_scd_id\n\n from snapshot_query\n ),\n\n updates_source_data as (\n\n select\n *,\n {{ strategy.unique_key }} as dbt_unique_key,\n {{ strategy.updated_at }} as dbt_updated_at,\n {{ strategy.updated_at }} as dbt_valid_from,\n {{ strategy.updated_at }} as dbt_valid_to\n\n from snapshot_query\n ),\n\n {%- if strategy.invalidate_hard_deletes %}\n\n deletes_source_data as (\n\n select\n *,\n {{ strategy.unique_key }} as dbt_unique_key\n from snapshot_query\n ),\n {% endif %}\n\n insertions as (\n\n select\n 'insert' as dbt_change_type,\n source_data.*\n\n from insertions_source_data as source_data\n left outer join snapshotted_data on snapshotted_data.dbt_unique_key = source_data.dbt_unique_key\n where snapshotted_data.dbt_unique_key is null\n or (\n snapshotted_data.dbt_unique_key is not null\n and (\n {{ strategy.row_changed }}\n )\n )\n\n ),\n\n updates as (\n\n select\n 'update' as dbt_change_type,\n source_data.*,\n snapshotted_data.dbt_scd_id\n\n from updates_source_data as source_data\n join snapshotted_data on snapshotted_data.dbt_unique_key = source_data.dbt_unique_key\n where (\n {{ strategy.row_changed }}\n )\n )\n\n {%- if strategy.invalidate_hard_deletes -%}\n ,\n\n deletes as (\n\n select\n 'delete' as dbt_change_type,\n source_data.*,\n {{ snapshot_get_time() }} as dbt_valid_from,\n {{ snapshot_get_time() }} as dbt_updated_at,\n {{ snapshot_get_time() }} as dbt_valid_to,\n snapshotted_data.dbt_scd_id\n\n from snapshotted_data\n left join deletes_source_data as source_data on snapshotted_data.dbt_unique_key = source_data.dbt_unique_key\n where source_data.dbt_unique_key is null\n )\n {%- endif %}\n\n select * from insertions\n union all\n select * from updates\n {%- if strategy.invalidate_hard_deletes %}\n union all\n select * from deletes\n {%- endif %}\n\n{%- endmacro %}", + "path": "macros/adapters/relation.sql", + "original_file_path": "macros/adapters/relation.sql", + "unique_id": "macro.dbt.make_temp_relation", + "macro_sql": "{% macro make_temp_relation(base_relation, suffix='__dbt_tmp') %}\n {{ return(adapter.dispatch('make_temp_relation', 'dbt')(base_relation, suffix)) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.snapshot_get_time" + "macro.dbt_postgres.postgres__make_temp_relation" ] }, "description": "", @@ -5144,21 +5283,19 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5154848, + "created_at": 1730458997.066053, "supported_languages": null }, - "macro.dbt.build_snapshot_table": { - "name": "build_snapshot_table", + "macro.dbt.default__make_temp_relation": { + "name": "default__make_temp_relation", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/snapshots/helpers.sql", - "original_file_path": "macros/materializations/snapshots/helpers.sql", - "unique_id": "macro.dbt.build_snapshot_table", - "macro_sql": "{% macro build_snapshot_table(strategy, sql) -%}\n {{ adapter.dispatch('build_snapshot_table', 'dbt')(strategy, sql) }}\n{% endmacro %}", + "path": "macros/adapters/relation.sql", + "original_file_path": "macros/adapters/relation.sql", + "unique_id": "macro.dbt.default__make_temp_relation", + "macro_sql": "{% macro default__make_temp_relation(base_relation, suffix) %}\n {%- set temp_identifier = base_relation.identifier ~ suffix -%}\n {%- set temp_relation = base_relation.incorporate(\n path={\"identifier\": temp_identifier}) -%}\n\n {{ return(temp_relation) }}\n{% endmacro %}", "depends_on": { - "macros": [ - "macro.dbt.default__build_snapshot_table" - ] + "macros": [] }, "description": "", "meta": {}, @@ -5168,19 +5305,21 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.515593, + "created_at": 1730458997.0662072, "supported_languages": null }, - "macro.dbt.default__build_snapshot_table": { - "name": "default__build_snapshot_table", + "macro.dbt.make_backup_relation": { + "name": "make_backup_relation", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/snapshots/helpers.sql", - "original_file_path": "macros/materializations/snapshots/helpers.sql", - "unique_id": "macro.dbt.default__build_snapshot_table", - "macro_sql": "{% macro default__build_snapshot_table(strategy, sql) %}\n\n select *,\n {{ strategy.scd_id }} as dbt_scd_id,\n {{ strategy.updated_at }} as dbt_updated_at,\n {{ strategy.updated_at }} as dbt_valid_from,\n nullif({{ strategy.updated_at }}, {{ strategy.updated_at }}) as dbt_valid_to\n from (\n {{ sql }}\n ) sbq\n\n{% endmacro %}", + "path": "macros/adapters/relation.sql", + "original_file_path": "macros/adapters/relation.sql", + "unique_id": "macro.dbt.make_backup_relation", + "macro_sql": "{% macro make_backup_relation(base_relation, backup_relation_type, suffix='__dbt_backup') %}\n {{ return(adapter.dispatch('make_backup_relation', 'dbt')(base_relation, backup_relation_type, suffix)) }}\n{% endmacro %}", "depends_on": { - "macros": [] + "macros": [ + "macro.dbt_postgres.postgres__make_backup_relation" + ] }, "description": "", "meta": {}, @@ -5190,24 +5329,19 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5157309, + "created_at": 1730458997.0663373, "supported_languages": null }, - "macro.dbt.build_snapshot_staging_table": { - "name": "build_snapshot_staging_table", + "macro.dbt.default__make_backup_relation": { + "name": "default__make_backup_relation", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/snapshots/helpers.sql", - "original_file_path": "macros/materializations/snapshots/helpers.sql", - "unique_id": "macro.dbt.build_snapshot_staging_table", - "macro_sql": "{% macro build_snapshot_staging_table(strategy, sql, target_relation) %}\n {% set temp_relation = make_temp_relation(target_relation) %}\n\n {% set select = snapshot_staging_table(strategy, sql, target_relation) %}\n\n {% call statement('build_snapshot_staging_relation') %}\n {{ create_table_as(True, temp_relation, select) }}\n {% endcall %}\n\n {% do return(temp_relation) %}\n{% endmacro %}", + "path": "macros/adapters/relation.sql", + "original_file_path": "macros/adapters/relation.sql", + "unique_id": "macro.dbt.default__make_backup_relation", + "macro_sql": "{% macro default__make_backup_relation(base_relation, backup_relation_type, suffix) %}\n {%- set backup_identifier = base_relation.identifier ~ suffix -%}\n {%- set backup_relation = base_relation.incorporate(\n path={\"identifier\": backup_identifier},\n type=backup_relation_type\n ) -%}\n {{ return(backup_relation) }}\n{% endmacro %}", "depends_on": { - "macros": [ - "macro.dbt.make_temp_relation", - "macro.dbt.snapshot_staging_table", - "macro.dbt.statement", - "macro.dbt.create_table_as" - ] + "macros": [] }, "description": "", "meta": {}, @@ -5217,33 +5351,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5159612, + "created_at": 1730458997.0665123, "supported_languages": null }, - "macro.dbt.materialization_snapshot_default": { - "name": "materialization_snapshot_default", + "macro.dbt.truncate_relation": { + "name": "truncate_relation", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/snapshots/snapshot.sql", - "original_file_path": "macros/materializations/snapshots/snapshot.sql", - "unique_id": "macro.dbt.materialization_snapshot_default", - "macro_sql": "{% materialization snapshot, default %}\n {%- set config = model['config'] -%}\n\n {%- set target_table = model.get('alias', model.get('name')) -%}\n\n {%- set strategy_name = config.get('strategy') -%}\n {%- set unique_key = config.get('unique_key') %}\n -- grab current tables grants config for comparision later on\n {%- set grant_config = config.get('grants') -%}\n\n {% set target_relation_exists, target_relation = get_or_create_relation(\n database=model.database,\n schema=model.schema,\n identifier=target_table,\n type='table') -%}\n\n {%- if not target_relation.is_table -%}\n {% do exceptions.relation_wrong_type(target_relation, 'table') %}\n {%- endif -%}\n\n\n {{ run_hooks(pre_hooks, inside_transaction=False) }}\n\n {{ run_hooks(pre_hooks, inside_transaction=True) }}\n\n {% set strategy_macro = strategy_dispatch(strategy_name) %}\n {% set strategy = strategy_macro(model, \"snapshotted_data\", \"source_data\", config, target_relation_exists) %}\n\n {% if not target_relation_exists %}\n\n {% set build_sql = build_snapshot_table(strategy, model['compiled_code']) %}\n {% set final_sql = create_table_as(False, target_relation, build_sql) %}\n\n {% else %}\n\n {{ adapter.valid_snapshot_target(target_relation) }}\n\n {% set staging_table = build_snapshot_staging_table(strategy, sql, target_relation) %}\n\n -- this may no-op if the database does not require column expansion\n {% do adapter.expand_target_column_types(from_relation=staging_table,\n to_relation=target_relation) %}\n\n {% set missing_columns = adapter.get_missing_columns(staging_table, target_relation)\n | rejectattr('name', 'equalto', 'dbt_change_type')\n | rejectattr('name', 'equalto', 'DBT_CHANGE_TYPE')\n | rejectattr('name', 'equalto', 'dbt_unique_key')\n | rejectattr('name', 'equalto', 'DBT_UNIQUE_KEY')\n | list %}\n\n {% do create_columns(target_relation, missing_columns) %}\n\n {% set source_columns = adapter.get_columns_in_relation(staging_table)\n | rejectattr('name', 'equalto', 'dbt_change_type')\n | rejectattr('name', 'equalto', 'DBT_CHANGE_TYPE')\n | rejectattr('name', 'equalto', 'dbt_unique_key')\n | rejectattr('name', 'equalto', 'DBT_UNIQUE_KEY')\n | list %}\n\n {% set quoted_source_columns = [] %}\n {% for column in source_columns %}\n {% do quoted_source_columns.append(adapter.quote(column.name)) %}\n {% endfor %}\n\n {% set final_sql = snapshot_merge_sql(\n target = target_relation,\n source = staging_table,\n insert_cols = quoted_source_columns\n )\n %}\n\n {% endif %}\n\n {% call statement('main') %}\n {{ final_sql }}\n {% endcall %}\n\n {% set should_revoke = should_revoke(target_relation_exists, full_refresh_mode=False) %}\n {% do apply_grants(target_relation, grant_config, should_revoke=should_revoke) %}\n\n {% do persist_docs(target_relation, model) %}\n\n {% if not target_relation_exists %}\n {% do create_indexes(target_relation) %}\n {% endif %}\n\n {{ run_hooks(post_hooks, inside_transaction=True) }}\n\n {{ adapter.commit() }}\n\n {% if staging_table is defined %}\n {% do post_snapshot(staging_table) %}\n {% endif %}\n\n {{ run_hooks(post_hooks, inside_transaction=False) }}\n\n {{ return({'relations': [target_relation]}) }}\n\n{% endmaterialization %}", + "path": "macros/adapters/relation.sql", + "original_file_path": "macros/adapters/relation.sql", + "unique_id": "macro.dbt.truncate_relation", + "macro_sql": "{% macro truncate_relation(relation) -%}\n {{ return(adapter.dispatch('truncate_relation', 'dbt')(relation)) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.get_or_create_relation", - "macro.dbt.run_hooks", - "macro.dbt.strategy_dispatch", - "macro.dbt.build_snapshot_table", - "macro.dbt.create_table_as", - "macro.dbt.build_snapshot_staging_table", - "macro.dbt.create_columns", - "macro.dbt.snapshot_merge_sql", - "macro.dbt.statement", - "macro.dbt.should_revoke", - "macro.dbt.apply_grants", - "macro.dbt.persist_docs", - "macro.dbt.create_indexes", - "macro.dbt.post_snapshot" + "macro.dbt.default__truncate_relation" ] }, "description": "", @@ -5254,25 +5375,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.519595, - "supported_languages": [ - "sql" - ] + "created_at": 1730458997.0666084, + "supported_languages": null }, - "macro.dbt.materialization_test_default": { - "name": "materialization_test_default", + "macro.dbt.default__truncate_relation": { + "name": "default__truncate_relation", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/tests/test.sql", - "original_file_path": "macros/materializations/tests/test.sql", - "unique_id": "macro.dbt.materialization_test_default", - "macro_sql": "{%- materialization test, default -%}\n\n {% set relations = [] %}\n\n {% if should_store_failures() %}\n\n {% set identifier = model['alias'] %}\n {% set old_relation = adapter.get_relation(database=database, schema=schema, identifier=identifier) %}\n\n {% set store_failures_as = config.get('store_failures_as') %}\n -- if `--store-failures` is invoked via command line and `store_failures_as` is not set,\n -- config.get('store_failures_as', 'table') returns None, not 'table'\n {% if store_failures_as == none %}{% set store_failures_as = 'table' %}{% endif %}\n {% if store_failures_as not in ['table', 'view'] %}\n {{ exceptions.raise_compiler_error(\n \"'\" ~ store_failures_as ~ \"' is not a valid value for `store_failures_as`. \"\n \"Accepted values are: ['ephemeral', 'table', 'view']\"\n ) }}\n {% endif %}\n\n {% set target_relation = api.Relation.create(\n identifier=identifier, schema=schema, database=database, type=store_failures_as) -%} %}\n\n {% if old_relation %}\n {% do adapter.drop_relation(old_relation) %}\n {% endif %}\n\n {% call statement(auto_begin=True) %}\n {{ get_create_sql(target_relation, sql) }}\n {% endcall %}\n\n {% do relations.append(target_relation) %}\n\n {% set main_sql %}\n select *\n from {{ target_relation }}\n {% endset %}\n\n {{ adapter.commit() }}\n\n {% else %}\n\n {% set main_sql = sql %}\n\n {% endif %}\n\n {% set limit = config.get('limit') %}\n {% set fail_calc = config.get('fail_calc') %}\n {% set warn_if = config.get('warn_if') %}\n {% set error_if = config.get('error_if') %}\n\n {% call statement('main', fetch_result=True) -%}\n\n {{ get_test_sql(main_sql, fail_calc, warn_if, error_if, limit)}}\n\n {%- endcall %}\n\n {{ return({'relations': relations}) }}\n\n{%- endmaterialization -%}", + "path": "macros/adapters/relation.sql", + "original_file_path": "macros/adapters/relation.sql", + "unique_id": "macro.dbt.default__truncate_relation", + "macro_sql": "{% macro default__truncate_relation(relation) -%}\n {% call statement('truncate_relation') -%}\n truncate table {{ relation.render() }}\n {%- endcall %}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.should_store_failures", - "macro.dbt.statement", - "macro.dbt.get_create_sql", - "macro.dbt.get_test_sql" + "macro.dbt.statement" ] }, "description": "", @@ -5283,22 +5399,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5211678, - "supported_languages": [ - "sql" - ] + "created_at": 1730458997.0667076, + "supported_languages": null }, - "macro.dbt.get_test_sql": { - "name": "get_test_sql", + "macro.dbt.get_or_create_relation": { + "name": "get_or_create_relation", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/tests/helpers.sql", - "original_file_path": "macros/materializations/tests/helpers.sql", - "unique_id": "macro.dbt.get_test_sql", - "macro_sql": "{% macro get_test_sql(main_sql, fail_calc, warn_if, error_if, limit) -%}\n {{ adapter.dispatch('get_test_sql', 'dbt')(main_sql, fail_calc, warn_if, error_if, limit) }}\n{%- endmacro %}", + "path": "macros/adapters/relation.sql", + "original_file_path": "macros/adapters/relation.sql", + "unique_id": "macro.dbt.get_or_create_relation", + "macro_sql": "{% macro get_or_create_relation(database, schema, identifier, type) -%}\n {{ return(adapter.dispatch('get_or_create_relation', 'dbt')(database, schema, identifier, type)) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__get_test_sql" + "macro.dbt.default__get_or_create_relation" ] }, "description": "", @@ -5309,17 +5423,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.521891, + "created_at": 1730458997.0668402, "supported_languages": null }, - "macro.dbt.default__get_test_sql": { - "name": "default__get_test_sql", + "macro.dbt.default__get_or_create_relation": { + "name": "default__get_or_create_relation", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/tests/helpers.sql", - "original_file_path": "macros/materializations/tests/helpers.sql", - "unique_id": "macro.dbt.default__get_test_sql", - "macro_sql": "{% macro default__get_test_sql(main_sql, fail_calc, warn_if, error_if, limit) -%}\n select\n {{ fail_calc }} as failures,\n {{ fail_calc }} {{ warn_if }} as should_warn,\n {{ fail_calc }} {{ error_if }} as should_error\n from (\n {{ main_sql }}\n {{ \"limit \" ~ limit if limit != none }}\n ) dbt_internal_test\n{%- endmacro %}", + "path": "macros/adapters/relation.sql", + "original_file_path": "macros/adapters/relation.sql", + "unique_id": "macro.dbt.default__get_or_create_relation", + "macro_sql": "{% macro default__get_or_create_relation(database, schema, identifier, type) %}\n {%- set target_relation = adapter.get_relation(database=database, schema=schema, identifier=identifier) %}\n\n {% if target_relation %}\n {% do return([true, target_relation]) %}\n {% endif %}\n\n {%- set new_relation = api.Relation.create(\n database=database,\n schema=schema,\n identifier=identifier,\n type=type\n ) -%}\n {% do return([false, new_relation]) %}\n{% endmacro %}", "depends_on": { "macros": [] }, @@ -5331,21 +5445,19 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.52206, + "created_at": 1730458997.0671692, "supported_languages": null }, - "macro.dbt.get_unit_test_sql": { - "name": "get_unit_test_sql", + "macro.dbt.load_cached_relation": { + "name": "load_cached_relation", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/tests/helpers.sql", - "original_file_path": "macros/materializations/tests/helpers.sql", - "unique_id": "macro.dbt.get_unit_test_sql", - "macro_sql": "{% macro get_unit_test_sql(main_sql, expected_fixture_sql, expected_column_names) -%}\n {{ adapter.dispatch('get_unit_test_sql', 'dbt')(main_sql, expected_fixture_sql, expected_column_names) }}\n{%- endmacro %}", + "path": "macros/adapters/relation.sql", + "original_file_path": "macros/adapters/relation.sql", + "unique_id": "macro.dbt.load_cached_relation", + "macro_sql": "{% macro load_cached_relation(relation) %}\n {% do return(adapter.get_relation(\n database=relation.database,\n schema=relation.schema,\n identifier=relation.identifier\n )) -%}\n{% endmacro %}", "depends_on": { - "macros": [ - "macro.dbt.default__get_unit_test_sql" - ] + "macros": [] }, "description": "", "meta": {}, @@ -5355,20 +5467,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.522174, + "created_at": 1730458997.0672965, "supported_languages": null }, - "macro.dbt.default__get_unit_test_sql": { - "name": "default__get_unit_test_sql", + "macro.dbt.load_relation": { + "name": "load_relation", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/tests/helpers.sql", - "original_file_path": "macros/materializations/tests/helpers.sql", - "unique_id": "macro.dbt.default__get_unit_test_sql", - "macro_sql": "{% macro default__get_unit_test_sql(main_sql, expected_fixture_sql, expected_column_names) -%}\n-- Build actual result given inputs\nwith dbt_internal_unit_test_actual as (\n select\n {% for expected_column_name in expected_column_names %}{{expected_column_name}}{% if not loop.last -%},{% endif %}{%- endfor -%}, {{ dbt.string_literal(\"actual\") }} as {{ adapter.quote(\"actual_or_expected\") }}\n from (\n {{ main_sql }}\n ) _dbt_internal_unit_test_actual\n),\n-- Build expected result\ndbt_internal_unit_test_expected as (\n select\n {% for expected_column_name in expected_column_names %}{{expected_column_name}}{% if not loop.last -%}, {% endif %}{%- endfor -%}, {{ dbt.string_literal(\"expected\") }} as {{ adapter.quote(\"actual_or_expected\") }}\n from (\n {{ expected_fixture_sql }}\n ) _dbt_internal_unit_test_expected\n)\n-- Union actual and expected results\nselect * from dbt_internal_unit_test_actual\nunion all\nselect * from dbt_internal_unit_test_expected\n{%- endmacro %}", + "path": "macros/adapters/relation.sql", + "original_file_path": "macros/adapters/relation.sql", + "unique_id": "macro.dbt.load_relation", + "macro_sql": "{% macro load_relation(relation) %}\n {{ return(load_cached_relation(relation)) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.string_literal" + "macro.dbt.load_cached_relation" ] }, "description": "", @@ -5379,20 +5491,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5225248, + "created_at": 1730458997.0673733, "supported_languages": null }, - "macro.dbt.get_where_subquery": { - "name": "get_where_subquery", + "macro.dbt.get_create_index_sql": { + "name": "get_create_index_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/tests/where_subquery.sql", - "original_file_path": "macros/materializations/tests/where_subquery.sql", - "unique_id": "macro.dbt.get_where_subquery", - "macro_sql": "{% macro get_where_subquery(relation) -%}\n {% do return(adapter.dispatch('get_where_subquery', 'dbt')(relation)) %}\n{%- endmacro %}", + "path": "macros/adapters/indexes.sql", + "original_file_path": "macros/adapters/indexes.sql", + "unique_id": "macro.dbt.get_create_index_sql", + "macro_sql": "{% macro get_create_index_sql(relation, index_dict) -%}\n {{ return(adapter.dispatch('get_create_index_sql', 'dbt')(relation, index_dict)) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__get_where_subquery" + "macro.dbt_postgres.postgres__get_create_index_sql" ] }, "description": "", @@ -5403,17 +5515,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5227652, + "created_at": 1730458997.067836, "supported_languages": null }, - "macro.dbt.default__get_where_subquery": { - "name": "default__get_where_subquery", + "macro.dbt.default__get_create_index_sql": { + "name": "default__get_create_index_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/tests/where_subquery.sql", - "original_file_path": "macros/materializations/tests/where_subquery.sql", - "unique_id": "macro.dbt.default__get_where_subquery", - "macro_sql": "{% macro default__get_where_subquery(relation) -%}\n {% set where = config.get('where', '') %}\n {% if where %}\n {%- set filtered -%}\n (select * from {{ relation }} where {{ where }}) dbt_subquery\n {%- endset -%}\n {% do return(filtered) %}\n {%- else -%}\n {% do return(relation) %}\n {%- endif -%}\n{%- endmacro %}", + "path": "macros/adapters/indexes.sql", + "original_file_path": "macros/adapters/indexes.sql", + "unique_id": "macro.dbt.default__get_create_index_sql", + "macro_sql": "{% macro default__get_create_index_sql(relation, index_dict) -%}\n {% do return(None) %}\n{% endmacro %}", "depends_on": { "macros": [] }, @@ -5425,27 +5537,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.522985, + "created_at": 1730458997.0679095, "supported_languages": null }, - "macro.dbt.materialization_unit_default": { - "name": "materialization_unit_default", + "macro.dbt.create_indexes": { + "name": "create_indexes", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/tests/unit.sql", - "original_file_path": "macros/materializations/tests/unit.sql", - "unique_id": "macro.dbt.materialization_unit_default", - "macro_sql": "{%- materialization unit, default -%}\n\n {% set relations = [] %}\n\n {% set expected_rows = config.get('expected_rows') %}\n {% set expected_sql = config.get('expected_sql') %}\n {% set tested_expected_column_names = expected_rows[0].keys() if (expected_rows | length ) > 0 else get_columns_in_query(sql) %} %}\n\n {%- set target_relation = this.incorporate(type='table') -%}\n {%- set temp_relation = make_temp_relation(target_relation)-%}\n {% do run_query(get_create_table_as_sql(True, temp_relation, get_empty_subquery_sql(sql))) %}\n {%- set columns_in_relation = adapter.get_columns_in_relation(temp_relation) -%}\n {%- set column_name_to_data_types = {} -%}\n {%- for column in columns_in_relation -%}\n {%- do column_name_to_data_types.update({column.name|lower: column.data_type}) -%}\n {%- endfor -%}\n\n {% if not expected_sql %}\n {% set expected_sql = get_expected_sql(expected_rows, column_name_to_data_types) %}\n {% endif %}\n {% set unit_test_sql = get_unit_test_sql(sql, expected_sql, tested_expected_column_names) %}\n\n {% call statement('main', fetch_result=True) -%}\n\n {{ unit_test_sql }}\n\n {%- endcall %}\n\n {% do adapter.drop_relation(temp_relation) %}\n\n {{ return({'relations': relations}) }}\n\n{%- endmaterialization -%}", + "path": "macros/adapters/indexes.sql", + "original_file_path": "macros/adapters/indexes.sql", + "unique_id": "macro.dbt.create_indexes", + "macro_sql": "{% macro create_indexes(relation) -%}\n {{ adapter.dispatch('create_indexes', 'dbt')(relation) }}\n{%- endmacro %}", "depends_on": { "macros": [ - "macro.dbt.get_columns_in_query", - "macro.dbt.make_temp_relation", - "macro.dbt.run_query", - "macro.dbt.get_create_table_as_sql", - "macro.dbt.get_empty_subquery_sql", - "macro.dbt.get_expected_sql", - "macro.dbt.get_unit_test_sql", - "macro.dbt.statement" + "macro.dbt.default__create_indexes" ] }, "description": "", @@ -5456,29 +5561,21 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5240169, - "supported_languages": [ - "sql" - ] + "created_at": 1730458997.0680547, + "supported_languages": null }, - "macro.dbt.materialization_materialized_view_default": { - "name": "materialization_materialized_view_default", + "macro.dbt.default__create_indexes": { + "name": "default__create_indexes", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/models/materialized_view.sql", - "original_file_path": "macros/materializations/models/materialized_view.sql", - "unique_id": "macro.dbt.materialization_materialized_view_default", - "macro_sql": "{% materialization materialized_view, default %}\n {% set existing_relation = load_cached_relation(this) %}\n {% set target_relation = this.incorporate(type=this.MaterializedView) %}\n {% set intermediate_relation = make_intermediate_relation(target_relation) %}\n {% set backup_relation_type = target_relation.MaterializedView if existing_relation is none else existing_relation.type %}\n {% set backup_relation = make_backup_relation(target_relation, backup_relation_type) %}\n\n {{ materialized_view_setup(backup_relation, intermediate_relation, pre_hooks) }}\n\n {% set build_sql = materialized_view_get_build_sql(existing_relation, target_relation, backup_relation, intermediate_relation) %}\n\n {% if build_sql == '' %}\n {{ materialized_view_execute_no_op(target_relation) }}\n {% else %}\n {{ materialized_view_execute_build_sql(build_sql, existing_relation, target_relation, post_hooks) }}\n {% endif %}\n\n {{ materialized_view_teardown(backup_relation, intermediate_relation, post_hooks) }}\n\n {{ return({'relations': [target_relation]}) }}\n\n{% endmaterialization %}", + "path": "macros/adapters/indexes.sql", + "original_file_path": "macros/adapters/indexes.sql", + "unique_id": "macro.dbt.default__create_indexes", + "macro_sql": "{% macro default__create_indexes(relation) -%}\n {%- set _indexes = config.get('indexes', default=[]) -%}\n\n {% for _index_dict in _indexes %}\n {% set create_index_sql = get_create_index_sql(relation, _index_dict) %}\n {% if create_index_sql %}\n {% do run_query(create_index_sql) %}\n {% endif %}\n {% endfor %}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.load_cached_relation", - "macro.dbt.make_intermediate_relation", - "macro.dbt.make_backup_relation", - "macro.dbt.materialized_view_setup", - "macro.dbt.materialized_view_get_build_sql", - "macro.dbt.materialized_view_execute_no_op", - "macro.dbt.materialized_view_execute_build_sql", - "macro.dbt.materialized_view_teardown" + "macro.dbt.get_create_index_sql", + "macro.dbt.run_query" ] }, "description": "", @@ -5489,24 +5586,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.527294, - "supported_languages": [ - "sql" - ] + "created_at": 1730458997.0682619, + "supported_languages": null }, - "macro.dbt.materialized_view_setup": { - "name": "materialized_view_setup", + "macro.dbt.get_drop_index_sql": { + "name": "get_drop_index_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/models/materialized_view.sql", - "original_file_path": "macros/materializations/models/materialized_view.sql", - "unique_id": "macro.dbt.materialized_view_setup", - "macro_sql": "{% macro materialized_view_setup(backup_relation, intermediate_relation, pre_hooks) %}\n\n -- backup_relation and intermediate_relation should not already exist in the database\n -- it's possible these exist because of a previous run that exited unexpectedly\n {% set preexisting_backup_relation = load_cached_relation(backup_relation) %}\n {% set preexisting_intermediate_relation = load_cached_relation(intermediate_relation) %}\n\n -- drop the temp relations if they exist already in the database\n {{ drop_relation_if_exists(preexisting_backup_relation) }}\n {{ drop_relation_if_exists(preexisting_intermediate_relation) }}\n\n {{ run_hooks(pre_hooks, inside_transaction=False) }}\n\n{% endmacro %}", + "path": "macros/adapters/indexes.sql", + "original_file_path": "macros/adapters/indexes.sql", + "unique_id": "macro.dbt.get_drop_index_sql", + "macro_sql": "{% macro get_drop_index_sql(relation, index_name) -%}\n {{ adapter.dispatch('get_drop_index_sql', 'dbt')(relation, index_name) }}\n{%- endmacro %}", "depends_on": { "macros": [ - "macro.dbt.load_cached_relation", - "macro.dbt.drop_relation_if_exists", - "macro.dbt.run_hooks" + "macro.dbt_postgres.postgres__get_drop_index_sql" ] }, "description": "", @@ -5517,22 +5610,19 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.527562, + "created_at": 1730458997.0683594, "supported_languages": null }, - "macro.dbt.materialized_view_teardown": { - "name": "materialized_view_teardown", + "macro.dbt.default__get_drop_index_sql": { + "name": "default__get_drop_index_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/models/materialized_view.sql", - "original_file_path": "macros/materializations/models/materialized_view.sql", - "unique_id": "macro.dbt.materialized_view_teardown", - "macro_sql": "{% macro materialized_view_teardown(backup_relation, intermediate_relation, post_hooks) %}\n\n -- drop the temp relations if they exist to leave the database clean for the next run\n {{ drop_relation_if_exists(backup_relation) }}\n {{ drop_relation_if_exists(intermediate_relation) }}\n\n {{ run_hooks(post_hooks, inside_transaction=False) }}\n\n{% endmacro %}", + "path": "macros/adapters/indexes.sql", + "original_file_path": "macros/adapters/indexes.sql", + "unique_id": "macro.dbt.default__get_drop_index_sql", + "macro_sql": "{% macro default__get_drop_index_sql(relation, index_name) -%}\n {{ exceptions.raise_compiler_error(\"`get_drop_index_sql has not been implemented for this adapter.\") }}\n{%- endmacro %}", "depends_on": { - "macros": [ - "macro.dbt.drop_relation_if_exists", - "macro.dbt.run_hooks" - ] + "macros": [] }, "description": "", "meta": {}, @@ -5542,25 +5632,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.527712, + "created_at": 1730458997.0684307, "supported_languages": null }, - "macro.dbt.materialized_view_get_build_sql": { - "name": "materialized_view_get_build_sql", + "macro.dbt.get_show_indexes_sql": { + "name": "get_show_indexes_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/models/materialized_view.sql", - "original_file_path": "macros/materializations/models/materialized_view.sql", - "unique_id": "macro.dbt.materialized_view_get_build_sql", - "macro_sql": "{% macro materialized_view_get_build_sql(existing_relation, target_relation, backup_relation, intermediate_relation) %}\n\n {% set full_refresh_mode = should_full_refresh() %}\n\n -- determine the scenario we're in: create, full_refresh, alter, refresh data\n {% if existing_relation is none %}\n {% set build_sql = get_create_materialized_view_as_sql(target_relation, sql) %}\n {% elif full_refresh_mode or not existing_relation.is_materialized_view %}\n {% set build_sql = get_replace_sql(existing_relation, target_relation, sql) %}\n {% else %}\n\n -- get config options\n {% set on_configuration_change = config.get('on_configuration_change') %}\n {% set configuration_changes = get_materialized_view_configuration_changes(existing_relation, config) %}\n\n {% if configuration_changes is none %}\n {% set build_sql = refresh_materialized_view(target_relation) %}\n\n {% elif on_configuration_change == 'apply' %}\n {% set build_sql = get_alter_materialized_view_as_sql(target_relation, configuration_changes, sql, existing_relation, backup_relation, intermediate_relation) %}\n {% elif on_configuration_change == 'continue' %}\n {% set build_sql = '' %}\n {{ exceptions.warn(\"Configuration changes were identified and `on_configuration_change` was set to `continue` for `\" ~ target_relation.render() ~ \"`\") }}\n {% elif on_configuration_change == 'fail' %}\n {{ exceptions.raise_fail_fast_error(\"Configuration changes were identified and `on_configuration_change` was set to `fail` for `\" ~ target_relation.render() ~ \"`\") }}\n\n {% else %}\n -- this only happens if the user provides a value other than `apply`, 'skip', 'fail'\n {{ exceptions.raise_compiler_error(\"Unexpected configuration scenario\") }}\n\n {% endif %}\n\n {% endif %}\n\n {% do return(build_sql) %}\n\n{% endmacro %}", + "path": "macros/adapters/indexes.sql", + "original_file_path": "macros/adapters/indexes.sql", + "unique_id": "macro.dbt.get_show_indexes_sql", + "macro_sql": "{% macro get_show_indexes_sql(relation) -%}\n {{ adapter.dispatch('get_show_indexes_sql', 'dbt')(relation) }}\n{%- endmacro %}", "depends_on": { "macros": [ - "macro.dbt.should_full_refresh", - "macro.dbt.get_create_materialized_view_as_sql", - "macro.dbt.get_replace_sql", - "macro.dbt.get_materialized_view_configuration_changes", - "macro.dbt.refresh_materialized_view", - "macro.dbt.get_alter_materialized_view_as_sql" + "macro.dbt_postgres.postgres__get_show_indexes_sql" ] }, "description": "", @@ -5571,17 +5656,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.528456, + "created_at": 1730458997.0685124, "supported_languages": null }, - "macro.dbt.materialized_view_execute_no_op": { - "name": "materialized_view_execute_no_op", + "macro.dbt.default__get_show_indexes_sql": { + "name": "default__get_show_indexes_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/models/materialized_view.sql", - "original_file_path": "macros/materializations/models/materialized_view.sql", - "unique_id": "macro.dbt.materialized_view_execute_no_op", - "macro_sql": "{% macro materialized_view_execute_no_op(target_relation) %}\n {% do store_raw_result(\n name=\"main\",\n message=\"skip \" ~ target_relation,\n code=\"skip\",\n rows_affected=\"-1\"\n ) %}\n{% endmacro %}", + "path": "macros/adapters/indexes.sql", + "original_file_path": "macros/adapters/indexes.sql", + "unique_id": "macro.dbt.default__get_show_indexes_sql", + "macro_sql": "{% macro default__get_show_indexes_sql(relation) -%}\n {{ exceptions.raise_compiler_error(\"`get_show_indexes_sql has not been implemented for this adapter.\") }}\n{%- endmacro %}", "depends_on": { "macros": [] }, @@ -5593,24 +5678,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5286, + "created_at": 1730458997.0685797, "supported_languages": null }, - "macro.dbt.materialized_view_execute_build_sql": { - "name": "materialized_view_execute_build_sql", + "macro.dbt.collect_freshness": { + "name": "collect_freshness", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/models/materialized_view.sql", - "original_file_path": "macros/materializations/models/materialized_view.sql", - "unique_id": "macro.dbt.materialized_view_execute_build_sql", - "macro_sql": "{% macro materialized_view_execute_build_sql(build_sql, existing_relation, target_relation, post_hooks) %}\n\n -- `BEGIN` happens here:\n {{ run_hooks(pre_hooks, inside_transaction=True) }}\n\n {% set grant_config = config.get('grants') %}\n\n {% call statement(name=\"main\") %}\n {{ build_sql }}\n {% endcall %}\n\n {% set should_revoke = should_revoke(existing_relation, full_refresh_mode=True) %}\n {% do apply_grants(target_relation, grant_config, should_revoke=should_revoke) %}\n\n {% do persist_docs(target_relation, model) %}\n\n {{ run_hooks(post_hooks, inside_transaction=True) }}\n\n {{ adapter.commit() }}\n\n{% endmacro %}", + "path": "macros/adapters/freshness.sql", + "original_file_path": "macros/adapters/freshness.sql", + "unique_id": "macro.dbt.collect_freshness", + "macro_sql": "{% macro collect_freshness(source, loaded_at_field, filter) %}\n {{ return(adapter.dispatch('collect_freshness', 'dbt')(source, loaded_at_field, filter))}}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.run_hooks", - "macro.dbt.statement", - "macro.dbt.should_revoke", - "macro.dbt.apply_grants", - "macro.dbt.persist_docs" + "macro.dbt.default__collect_freshness" ] }, "description": "", @@ -5621,29 +5702,21 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.528961, + "created_at": 1730458997.0687969, "supported_languages": null }, - "macro.dbt.materialization_view_default": { - "name": "materialization_view_default", + "macro.dbt.default__collect_freshness": { + "name": "default__collect_freshness", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/models/view.sql", - "original_file_path": "macros/materializations/models/view.sql", - "unique_id": "macro.dbt.materialization_view_default", - "macro_sql": "{%- materialization view, default -%}\n\n {%- set existing_relation = load_cached_relation(this) -%}\n {%- set target_relation = this.incorporate(type='view') -%}\n {%- set intermediate_relation = make_intermediate_relation(target_relation) -%}\n\n -- the intermediate_relation should not already exist in the database; get_relation\n -- will return None in that case. Otherwise, we get a relation that we can drop\n -- later, before we try to use this name for the current operation\n {%- set preexisting_intermediate_relation = load_cached_relation(intermediate_relation) -%}\n /*\n This relation (probably) doesn't exist yet. If it does exist, it's a leftover from\n a previous run, and we're going to try to drop it immediately. At the end of this\n materialization, we're going to rename the \"existing_relation\" to this identifier,\n and then we're going to drop it. In order to make sure we run the correct one of:\n - drop view ...\n - drop table ...\n\n We need to set the type of this relation to be the type of the existing_relation, if it exists,\n or else \"view\" as a sane default if it does not. Note that if the existing_relation does not\n exist, then there is nothing to move out of the way and subsequentally drop. In that case,\n this relation will be effectively unused.\n */\n {%- set backup_relation_type = 'view' if existing_relation is none else existing_relation.type -%}\n {%- set backup_relation = make_backup_relation(target_relation, backup_relation_type) -%}\n -- as above, the backup_relation should not already exist\n {%- set preexisting_backup_relation = load_cached_relation(backup_relation) -%}\n -- grab current tables grants config for comparision later on\n {% set grant_config = config.get('grants') %}\n\n {{ run_hooks(pre_hooks, inside_transaction=False) }}\n\n -- drop the temp relations if they exist already in the database\n {{ drop_relation_if_exists(preexisting_intermediate_relation) }}\n {{ drop_relation_if_exists(preexisting_backup_relation) }}\n\n -- `BEGIN` happens here:\n {{ run_hooks(pre_hooks, inside_transaction=True) }}\n\n -- build model\n {% call statement('main') -%}\n {{ get_create_view_as_sql(intermediate_relation, sql) }}\n {%- endcall %}\n\n -- cleanup\n -- move the existing view out of the way\n {% if existing_relation is not none %}\n /* Do the equivalent of rename_if_exists. 'existing_relation' could have been dropped\n since the variable was first set. */\n {% set existing_relation = load_cached_relation(existing_relation) %}\n {% if existing_relation is not none %}\n {{ adapter.rename_relation(existing_relation, backup_relation) }}\n {% endif %}\n {% endif %}\n {{ adapter.rename_relation(intermediate_relation, target_relation) }}\n\n {% set should_revoke = should_revoke(existing_relation, full_refresh_mode=True) %}\n {% do apply_grants(target_relation, grant_config, should_revoke=should_revoke) %}\n\n {% do persist_docs(target_relation, model) %}\n\n {{ run_hooks(post_hooks, inside_transaction=True) }}\n\n {{ adapter.commit() }}\n\n {{ drop_relation_if_exists(backup_relation) }}\n\n {{ run_hooks(post_hooks, inside_transaction=False) }}\n\n {{ return({'relations': [target_relation]}) }}\n\n{%- endmaterialization -%}", + "path": "macros/adapters/freshness.sql", + "original_file_path": "macros/adapters/freshness.sql", + "unique_id": "macro.dbt.default__collect_freshness", + "macro_sql": "{% macro default__collect_freshness(source, loaded_at_field, filter) %}\n {% call statement('collect_freshness', fetch_result=True, auto_begin=False) -%}\n select\n max({{ loaded_at_field }}) as max_loaded_at,\n {{ current_timestamp() }} as snapshotted_at\n from {{ source }}\n {% if filter %}\n where {{ filter }}\n {% endif %}\n {% endcall %}\n {{ return(load_result('collect_freshness')) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.load_cached_relation", - "macro.dbt.make_intermediate_relation", - "macro.dbt.make_backup_relation", - "macro.dbt.run_hooks", - "macro.dbt.drop_relation_if_exists", "macro.dbt.statement", - "macro.dbt.get_create_view_as_sql", - "macro.dbt.should_revoke", - "macro.dbt.apply_grants", - "macro.dbt.persist_docs" + "macro.dbt.current_timestamp" ] }, "description": "", @@ -5654,32 +5727,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.530999, - "supported_languages": [ - "sql" - ] + "created_at": 1730458997.0690103, + "supported_languages": null }, - "macro.dbt.materialization_table_default": { - "name": "materialization_table_default", + "macro.dbt.current_timestamp": { + "name": "current_timestamp", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/models/table.sql", - "original_file_path": "macros/materializations/models/table.sql", - "unique_id": "macro.dbt.materialization_table_default", - "macro_sql": "{% materialization table, default %}\n\n {%- set existing_relation = load_cached_relation(this) -%}\n {%- set target_relation = this.incorporate(type='table') %}\n {%- set intermediate_relation = make_intermediate_relation(target_relation) -%}\n -- the intermediate_relation should not already exist in the database; get_relation\n -- will return None in that case. Otherwise, we get a relation that we can drop\n -- later, before we try to use this name for the current operation\n {%- set preexisting_intermediate_relation = load_cached_relation(intermediate_relation) -%}\n /*\n See ../view/view.sql for more information about this relation.\n */\n {%- set backup_relation_type = 'table' if existing_relation is none else existing_relation.type -%}\n {%- set backup_relation = make_backup_relation(target_relation, backup_relation_type) -%}\n -- as above, the backup_relation should not already exist\n {%- set preexisting_backup_relation = load_cached_relation(backup_relation) -%}\n -- grab current tables grants config for comparision later on\n {% set grant_config = config.get('grants') %}\n\n -- drop the temp relations if they exist already in the database\n {{ drop_relation_if_exists(preexisting_intermediate_relation) }}\n {{ drop_relation_if_exists(preexisting_backup_relation) }}\n\n {{ run_hooks(pre_hooks, inside_transaction=False) }}\n\n -- `BEGIN` happens here:\n {{ run_hooks(pre_hooks, inside_transaction=True) }}\n\n -- build model\n {% call statement('main') -%}\n {{ get_create_table_as_sql(False, intermediate_relation, sql) }}\n {%- endcall %}\n\n -- cleanup\n {% if existing_relation is not none %}\n /* Do the equivalent of rename_if_exists. 'existing_relation' could have been dropped\n since the variable was first set. */\n {% set existing_relation = load_cached_relation(existing_relation) %}\n {% if existing_relation is not none %}\n {{ adapter.rename_relation(existing_relation, backup_relation) }}\n {% endif %}\n {% endif %}\n\n {{ adapter.rename_relation(intermediate_relation, target_relation) }}\n\n {% do create_indexes(target_relation) %}\n\n {{ run_hooks(post_hooks, inside_transaction=True) }}\n\n {% set should_revoke = should_revoke(existing_relation, full_refresh_mode=True) %}\n {% do apply_grants(target_relation, grant_config, should_revoke=should_revoke) %}\n\n {% do persist_docs(target_relation, model) %}\n\n -- `COMMIT` happens here\n {{ adapter.commit() }}\n\n -- finally, drop the existing/backup relation after the commit\n {{ drop_relation_if_exists(backup_relation) }}\n\n {{ run_hooks(post_hooks, inside_transaction=False) }}\n\n {{ return({'relations': [target_relation]}) }}\n{% endmaterialization %}", + "path": "macros/adapters/timestamps.sql", + "original_file_path": "macros/adapters/timestamps.sql", + "unique_id": "macro.dbt.current_timestamp", + "macro_sql": "{%- macro current_timestamp() -%}\n {{ adapter.dispatch('current_timestamp', 'dbt')() }}\n{%- endmacro -%}\n\n", "depends_on": { "macros": [ - "macro.dbt.load_cached_relation", - "macro.dbt.make_intermediate_relation", - "macro.dbt.make_backup_relation", - "macro.dbt.drop_relation_if_exists", - "macro.dbt.run_hooks", - "macro.dbt.statement", - "macro.dbt.get_create_table_as_sql", - "macro.dbt.create_indexes", - "macro.dbt.should_revoke", - "macro.dbt.apply_grants", - "macro.dbt.persist_docs" + "macro.dbt_postgres.postgres__current_timestamp" ] }, "description": "", @@ -5690,19 +5751,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.532898, - "supported_languages": [ - "sql" - ] + "created_at": 1730458997.0692775, + "supported_languages": null }, - "macro.dbt.get_quoted_csv": { - "name": "get_quoted_csv", + "macro.dbt.default__current_timestamp": { + "name": "default__current_timestamp", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/models/incremental/column_helpers.sql", - "original_file_path": "macros/materializations/models/incremental/column_helpers.sql", - "unique_id": "macro.dbt.get_quoted_csv", - "macro_sql": "{% macro get_quoted_csv(column_names) %}\n\n {% set quoted = [] %}\n {% for col in column_names -%}\n {%- do quoted.append(adapter.quote(col)) -%}\n {%- endfor %}\n\n {%- set dest_cols_csv = quoted | join(', ') -%}\n {{ return(dest_cols_csv) }}\n\n{% endmacro %}", + "path": "macros/adapters/timestamps.sql", + "original_file_path": "macros/adapters/timestamps.sql", + "unique_id": "macro.dbt.default__current_timestamp", + "macro_sql": "{% macro default__current_timestamp() -%}\n {{ exceptions.raise_not_implemented(\n 'current_timestamp macro not implemented for adapter ' + adapter.type()) }}\n{%- endmacro %}", "depends_on": { "macros": [] }, @@ -5714,19 +5773,21 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.533914, + "created_at": 1730458997.0693552, "supported_languages": null }, - "macro.dbt.diff_columns": { - "name": "diff_columns", + "macro.dbt.snapshot_get_time": { + "name": "snapshot_get_time", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/models/incremental/column_helpers.sql", - "original_file_path": "macros/materializations/models/incremental/column_helpers.sql", - "unique_id": "macro.dbt.diff_columns", - "macro_sql": "{% macro diff_columns(source_columns, target_columns) %}\n\n {% set result = [] %}\n {% set source_names = source_columns | map(attribute = 'column') | list %}\n {% set target_names = target_columns | map(attribute = 'column') | list %}\n\n {# --check whether the name attribute exists in the target - this does not perform a data type check #}\n {% for sc in source_columns %}\n {% if sc.name not in target_names %}\n {{ result.append(sc) }}\n {% endif %}\n {% endfor %}\n\n {{ return(result) }}\n\n{% endmacro %}", + "path": "macros/adapters/timestamps.sql", + "original_file_path": "macros/adapters/timestamps.sql", + "unique_id": "macro.dbt.snapshot_get_time", + "macro_sql": "\n\n{%- macro snapshot_get_time() -%}\n {{ adapter.dispatch('snapshot_get_time', 'dbt')() }}\n{%- endmacro -%}\n\n", "depends_on": { - "macros": [] + "macros": [ + "macro.dbt_postgres.postgres__snapshot_get_time" + ] }, "description": "", "meta": {}, @@ -5736,19 +5797,21 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5342112, + "created_at": 1730458997.0694306, "supported_languages": null }, - "macro.dbt.diff_column_data_types": { - "name": "diff_column_data_types", + "macro.dbt.default__snapshot_get_time": { + "name": "default__snapshot_get_time", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/models/incremental/column_helpers.sql", - "original_file_path": "macros/materializations/models/incremental/column_helpers.sql", - "unique_id": "macro.dbt.diff_column_data_types", - "macro_sql": "{% macro diff_column_data_types(source_columns, target_columns) %}\n\n {% set result = [] %}\n {% for sc in source_columns %}\n {% set tc = target_columns | selectattr(\"name\", \"equalto\", sc.name) | list | first %}\n {% if tc %}\n {% if sc.data_type != tc.data_type and not sc.can_expand_to(other_column=tc) %}\n {{ result.append( { 'column_name': tc.name, 'new_type': sc.data_type } ) }}\n {% endif %}\n {% endif %}\n {% endfor %}\n\n {{ return(result) }}\n\n{% endmacro %}", + "path": "macros/adapters/timestamps.sql", + "original_file_path": "macros/adapters/timestamps.sql", + "unique_id": "macro.dbt.default__snapshot_get_time", + "macro_sql": "{% macro default__snapshot_get_time() %}\n {{ current_timestamp() }}\n{% endmacro %}", "depends_on": { - "macros": [] + "macros": [ + "macro.dbt.current_timestamp" + ] }, "description": "", "meta": {}, @@ -5758,20 +5821,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5345669, + "created_at": 1730458997.0694861, "supported_languages": null }, - "macro.dbt.get_merge_update_columns": { - "name": "get_merge_update_columns", + "macro.dbt.current_timestamp_backcompat": { + "name": "current_timestamp_backcompat", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/models/incremental/column_helpers.sql", - "original_file_path": "macros/materializations/models/incremental/column_helpers.sql", - "unique_id": "macro.dbt.get_merge_update_columns", - "macro_sql": "{% macro get_merge_update_columns(merge_update_columns, merge_exclude_columns, dest_columns) %}\n {{ return(adapter.dispatch('get_merge_update_columns', 'dbt')(merge_update_columns, merge_exclude_columns, dest_columns)) }}\n{% endmacro %}", + "path": "macros/adapters/timestamps.sql", + "original_file_path": "macros/adapters/timestamps.sql", + "unique_id": "macro.dbt.current_timestamp_backcompat", + "macro_sql": "{% macro current_timestamp_backcompat() %}\n {{ return(adapter.dispatch('current_timestamp_backcompat', 'dbt')()) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__get_merge_update_columns" + "macro.dbt_postgres.postgres__current_timestamp_backcompat" ] }, "description": "", @@ -5782,17 +5845,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.534693, + "created_at": 1730458997.069569, "supported_languages": null }, - "macro.dbt.default__get_merge_update_columns": { - "name": "default__get_merge_update_columns", + "macro.dbt.default__current_timestamp_backcompat": { + "name": "default__current_timestamp_backcompat", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/models/incremental/column_helpers.sql", - "original_file_path": "macros/materializations/models/incremental/column_helpers.sql", - "unique_id": "macro.dbt.default__get_merge_update_columns", - "macro_sql": "{% macro default__get_merge_update_columns(merge_update_columns, merge_exclude_columns, dest_columns) %}\n {%- set default_cols = dest_columns | map(attribute=\"quoted\") | list -%}\n\n {%- if merge_update_columns and merge_exclude_columns -%}\n {{ exceptions.raise_compiler_error(\n 'Model cannot specify merge_update_columns and merge_exclude_columns. Please update model to use only one config'\n )}}\n {%- elif merge_update_columns -%}\n {%- set update_columns = merge_update_columns -%}\n {%- elif merge_exclude_columns -%}\n {%- set update_columns = [] -%}\n {%- for column in dest_columns -%}\n {% if column.column | lower not in merge_exclude_columns | map(\"lower\") | list %}\n {%- do update_columns.append(column.quoted) -%}\n {% endif %}\n {%- endfor -%}\n {%- else -%}\n {%- set update_columns = default_cols -%}\n {%- endif -%}\n\n {{ return(update_columns) }}\n\n{% endmacro %}", + "path": "macros/adapters/timestamps.sql", + "original_file_path": "macros/adapters/timestamps.sql", + "unique_id": "macro.dbt.default__current_timestamp_backcompat", + "macro_sql": "{% macro default__current_timestamp_backcompat() %}\n current_timestamp::timestamp\n{% endmacro %}", "depends_on": { "macros": [] }, @@ -5804,20 +5867,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5350919, + "created_at": 1730458997.0696104, "supported_languages": null }, - "macro.dbt.get_merge_sql": { - "name": "get_merge_sql", + "macro.dbt.current_timestamp_in_utc_backcompat": { + "name": "current_timestamp_in_utc_backcompat", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/models/incremental/merge.sql", - "original_file_path": "macros/materializations/models/incremental/merge.sql", - "unique_id": "macro.dbt.get_merge_sql", - "macro_sql": "{% macro get_merge_sql(target, source, unique_key, dest_columns, incremental_predicates=none) -%}\n -- back compat for old kwarg name\n {% set incremental_predicates = kwargs.get('predicates', incremental_predicates) %}\n {{ adapter.dispatch('get_merge_sql', 'dbt')(target, source, unique_key, dest_columns, incremental_predicates) }}\n{%- endmacro %}", + "path": "macros/adapters/timestamps.sql", + "original_file_path": "macros/adapters/timestamps.sql", + "unique_id": "macro.dbt.current_timestamp_in_utc_backcompat", + "macro_sql": "{% macro current_timestamp_in_utc_backcompat() %}\n {{ return(adapter.dispatch('current_timestamp_in_utc_backcompat', 'dbt')()) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__get_merge_sql" + "macro.dbt_postgres.postgres__current_timestamp_in_utc_backcompat" ] }, "description": "", @@ -5828,21 +5891,21 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.538962, + "created_at": 1730458997.0696998, "supported_languages": null }, - "macro.dbt.default__get_merge_sql": { - "name": "default__get_merge_sql", + "macro.dbt.default__current_timestamp_in_utc_backcompat": { + "name": "default__current_timestamp_in_utc_backcompat", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/models/incremental/merge.sql", - "original_file_path": "macros/materializations/models/incremental/merge.sql", - "unique_id": "macro.dbt.default__get_merge_sql", - "macro_sql": "{% macro default__get_merge_sql(target, source, unique_key, dest_columns, incremental_predicates=none) -%}\n {%- set predicates = [] if incremental_predicates is none else [] + incremental_predicates -%}\n {%- set dest_cols_csv = get_quoted_csv(dest_columns | map(attribute=\"name\")) -%}\n {%- set merge_update_columns = config.get('merge_update_columns') -%}\n {%- set merge_exclude_columns = config.get('merge_exclude_columns') -%}\n {%- set update_columns = get_merge_update_columns(merge_update_columns, merge_exclude_columns, dest_columns) -%}\n {%- set sql_header = config.get('sql_header', none) -%}\n\n {% if unique_key %}\n {% if unique_key is sequence and unique_key is not mapping and unique_key is not string %}\n {% for key in unique_key %}\n {% set this_key_match %}\n DBT_INTERNAL_SOURCE.{{ key }} = DBT_INTERNAL_DEST.{{ key }}\n {% endset %}\n {% do predicates.append(this_key_match) %}\n {% endfor %}\n {% else %}\n {% set unique_key_match %}\n DBT_INTERNAL_SOURCE.{{ unique_key }} = DBT_INTERNAL_DEST.{{ unique_key }}\n {% endset %}\n {% do predicates.append(unique_key_match) %}\n {% endif %}\n {% else %}\n {% do predicates.append('FALSE') %}\n {% endif %}\n\n {{ sql_header if sql_header is not none }}\n\n merge into {{ target }} as DBT_INTERNAL_DEST\n using {{ source }} as DBT_INTERNAL_SOURCE\n on {{\"(\" ~ predicates | join(\") and (\") ~ \")\"}}\n\n {% if unique_key %}\n when matched then update set\n {% for column_name in update_columns -%}\n {{ column_name }} = DBT_INTERNAL_SOURCE.{{ column_name }}\n {%- if not loop.last %}, {%- endif %}\n {%- endfor %}\n {% endif %}\n\n when not matched then insert\n ({{ dest_cols_csv }})\n values\n ({{ dest_cols_csv }})\n\n{% endmacro %}", + "path": "macros/adapters/timestamps.sql", + "original_file_path": "macros/adapters/timestamps.sql", + "unique_id": "macro.dbt.default__current_timestamp_in_utc_backcompat", + "macro_sql": "{% macro default__current_timestamp_in_utc_backcompat() %}\n {{ return(adapter.dispatch('current_timestamp_backcompat', 'dbt')()) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.get_quoted_csv", - "macro.dbt.get_merge_update_columns" + "macro.dbt.current_timestamp_backcompat", + "macro.dbt_postgres.postgres__current_timestamp_backcompat" ] }, "description": "", @@ -5853,20 +5916,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5399082, + "created_at": 1730458997.0697885, "supported_languages": null }, - "macro.dbt.get_delete_insert_merge_sql": { - "name": "get_delete_insert_merge_sql", + "macro.dbt.copy_grants": { + "name": "copy_grants", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/models/incremental/merge.sql", - "original_file_path": "macros/materializations/models/incremental/merge.sql", - "unique_id": "macro.dbt.get_delete_insert_merge_sql", - "macro_sql": "{% macro get_delete_insert_merge_sql(target, source, unique_key, dest_columns, incremental_predicates) -%}\n {{ adapter.dispatch('get_delete_insert_merge_sql', 'dbt')(target, source, unique_key, dest_columns, incremental_predicates) }}\n{%- endmacro %}", + "path": "macros/adapters/apply_grants.sql", + "original_file_path": "macros/adapters/apply_grants.sql", + "unique_id": "macro.dbt.copy_grants", + "macro_sql": "{% macro copy_grants() %}\n {{ return(adapter.dispatch('copy_grants', 'dbt')()) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__get_delete_insert_merge_sql" + "macro.dbt_postgres.postgres__copy_grants" ] }, "description": "", @@ -5877,21 +5940,19 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.540055, + "created_at": 1730458997.070777, "supported_languages": null }, - "macro.dbt.default__get_delete_insert_merge_sql": { - "name": "default__get_delete_insert_merge_sql", + "macro.dbt.default__copy_grants": { + "name": "default__copy_grants", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/models/incremental/merge.sql", - "original_file_path": "macros/materializations/models/incremental/merge.sql", - "unique_id": "macro.dbt.default__get_delete_insert_merge_sql", - "macro_sql": "{% macro default__get_delete_insert_merge_sql(target, source, unique_key, dest_columns, incremental_predicates) -%}\n\n {%- set dest_cols_csv = get_quoted_csv(dest_columns | map(attribute=\"name\")) -%}\n\n {% if unique_key %}\n {% if unique_key is sequence and unique_key is not string %}\n delete from {{target }}\n using {{ source }}\n where (\n {% for key in unique_key %}\n {{ source }}.{{ key }} = {{ target }}.{{ key }}\n {{ \"and \" if not loop.last}}\n {% endfor %}\n {% if incremental_predicates %}\n {% for predicate in incremental_predicates %}\n and {{ predicate }}\n {% endfor %}\n {% endif %}\n );\n {% else %}\n delete from {{ target }}\n where (\n {{ unique_key }}) in (\n select ({{ unique_key }})\n from {{ source }}\n )\n {%- if incremental_predicates %}\n {% for predicate in incremental_predicates %}\n and {{ predicate }}\n {% endfor %}\n {%- endif -%};\n\n {% endif %}\n {% endif %}\n\n insert into {{ target }} ({{ dest_cols_csv }})\n (\n select {{ dest_cols_csv }}\n from {{ source }}\n )\n\n{%- endmacro %}", + "path": "macros/adapters/apply_grants.sql", + "original_file_path": "macros/adapters/apply_grants.sql", + "unique_id": "macro.dbt.default__copy_grants", + "macro_sql": "{% macro default__copy_grants() %}\n {{ return(True) }}\n{% endmacro %}", "depends_on": { - "macros": [ - "macro.dbt.get_quoted_csv" - ] + "macros": [] }, "description": "", "meta": {}, @@ -5901,20 +5962,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5406, + "created_at": 1730458997.0708408, "supported_languages": null }, - "macro.dbt.get_insert_overwrite_merge_sql": { - "name": "get_insert_overwrite_merge_sql", + "macro.dbt.support_multiple_grantees_per_dcl_statement": { + "name": "support_multiple_grantees_per_dcl_statement", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/models/incremental/merge.sql", - "original_file_path": "macros/materializations/models/incremental/merge.sql", - "unique_id": "macro.dbt.get_insert_overwrite_merge_sql", - "macro_sql": "{% macro get_insert_overwrite_merge_sql(target, source, dest_columns, predicates, include_sql_header=false) -%}\n {{ adapter.dispatch('get_insert_overwrite_merge_sql', 'dbt')(target, source, dest_columns, predicates, include_sql_header) }}\n{%- endmacro %}", + "path": "macros/adapters/apply_grants.sql", + "original_file_path": "macros/adapters/apply_grants.sql", + "unique_id": "macro.dbt.support_multiple_grantees_per_dcl_statement", + "macro_sql": "{% macro support_multiple_grantees_per_dcl_statement() %}\n {{ return(adapter.dispatch('support_multiple_grantees_per_dcl_statement', 'dbt')()) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__get_insert_overwrite_merge_sql" + "macro.dbt.default__support_multiple_grantees_per_dcl_statement" ] }, "description": "", @@ -5925,21 +5986,19 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.540749, + "created_at": 1730458997.0709302, "supported_languages": null }, - "macro.dbt.default__get_insert_overwrite_merge_sql": { - "name": "default__get_insert_overwrite_merge_sql", + "macro.dbt.default__support_multiple_grantees_per_dcl_statement": { + "name": "default__support_multiple_grantees_per_dcl_statement", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/models/incremental/merge.sql", - "original_file_path": "macros/materializations/models/incremental/merge.sql", - "unique_id": "macro.dbt.default__get_insert_overwrite_merge_sql", - "macro_sql": "{% macro default__get_insert_overwrite_merge_sql(target, source, dest_columns, predicates, include_sql_header) -%}\n {#-- The only time include_sql_header is True: --#}\n {#-- BigQuery + insert_overwrite strategy + \"static\" partitions config --#}\n {#-- We should consider including the sql header at the materialization level instead --#}\n\n {%- set predicates = [] if predicates is none else [] + predicates -%}\n {%- set dest_cols_csv = get_quoted_csv(dest_columns | map(attribute=\"name\")) -%}\n {%- set sql_header = config.get('sql_header', none) -%}\n\n {{ sql_header if sql_header is not none and include_sql_header }}\n\n merge into {{ target }} as DBT_INTERNAL_DEST\n using {{ source }} as DBT_INTERNAL_SOURCE\n on FALSE\n\n when not matched by source\n {% if predicates %} and {{ predicates | join(' and ') }} {% endif %}\n then delete\n\n when not matched then insert\n ({{ dest_cols_csv }})\n values\n ({{ dest_cols_csv }})\n\n{% endmacro %}", + "path": "macros/adapters/apply_grants.sql", + "original_file_path": "macros/adapters/apply_grants.sql", + "unique_id": "macro.dbt.default__support_multiple_grantees_per_dcl_statement", + "macro_sql": "\n\n{%- macro default__support_multiple_grantees_per_dcl_statement() -%}\n {{ return(True) }}\n{%- endmacro -%}\n\n\n", "depends_on": { - "macros": [ - "macro.dbt.get_quoted_csv" - ] + "macros": [] }, "description": "", "meta": {}, @@ -5949,20 +6008,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5410979, + "created_at": 1730458997.071, "supported_languages": null }, - "macro.dbt.is_incremental": { - "name": "is_incremental", + "macro.dbt.should_revoke": { + "name": "should_revoke", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/models/incremental/is_incremental.sql", - "original_file_path": "macros/materializations/models/incremental/is_incremental.sql", - "unique_id": "macro.dbt.is_incremental", - "macro_sql": "{% macro is_incremental() %}\n {#-- do not run introspective queries in parsing #}\n {% if not execute %}\n {{ return(False) }}\n {% else %}\n {% set relation = adapter.get_relation(this.database, this.schema, this.table) %}\n {{ return(relation is not none\n and relation.type == 'table'\n and model.config.materialized == 'incremental'\n and not should_full_refresh()) }}\n {% endif %}\n{% endmacro %}", + "path": "macros/adapters/apply_grants.sql", + "original_file_path": "macros/adapters/apply_grants.sql", + "unique_id": "macro.dbt.should_revoke", + "macro_sql": "{% macro should_revoke(existing_relation, full_refresh_mode=True) %}\n\n {% if not existing_relation %}\n {#-- The table doesn't already exist, so no grants to copy over --#}\n {{ return(False) }}\n {% elif full_refresh_mode %}\n {#-- The object is being REPLACED -- whether grants are copied over depends on the value of user config --#}\n {{ return(copy_grants()) }}\n {% else %}\n {#-- The table is being merged/upserted/inserted -- grants will be carried over --#}\n {{ return(True) }}\n {% endif %}\n\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.should_full_refresh" + "macro.dbt.copy_grants" ] }, "description": "", @@ -5973,20 +6032,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.541456, + "created_at": 1730458997.0711977, "supported_languages": null }, - "macro.dbt.get_incremental_append_sql": { - "name": "get_incremental_append_sql", + "macro.dbt.get_show_grant_sql": { + "name": "get_show_grant_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/models/incremental/strategies.sql", - "original_file_path": "macros/materializations/models/incremental/strategies.sql", - "unique_id": "macro.dbt.get_incremental_append_sql", - "macro_sql": "{% macro get_incremental_append_sql(arg_dict) %}\n\n {{ return(adapter.dispatch('get_incremental_append_sql', 'dbt')(arg_dict)) }}\n\n{% endmacro %}", + "path": "macros/adapters/apply_grants.sql", + "original_file_path": "macros/adapters/apply_grants.sql", + "unique_id": "macro.dbt.get_show_grant_sql", + "macro_sql": "{% macro get_show_grant_sql(relation) %}\n {{ return(adapter.dispatch(\"get_show_grant_sql\", \"dbt\")(relation)) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__get_incremental_append_sql" + "macro.dbt_postgres.postgres__get_show_grant_sql" ] }, "description": "", @@ -5997,21 +6056,19 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5420318, + "created_at": 1730458997.071307, "supported_languages": null }, - "macro.dbt.default__get_incremental_append_sql": { - "name": "default__get_incremental_append_sql", + "macro.dbt.default__get_show_grant_sql": { + "name": "default__get_show_grant_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/models/incremental/strategies.sql", - "original_file_path": "macros/materializations/models/incremental/strategies.sql", - "unique_id": "macro.dbt.default__get_incremental_append_sql", - "macro_sql": "{% macro default__get_incremental_append_sql(arg_dict) %}\n\n {% do return(get_insert_into_sql(arg_dict[\"target_relation\"], arg_dict[\"temp_relation\"], arg_dict[\"dest_columns\"])) %}\n\n{% endmacro %}", + "path": "macros/adapters/apply_grants.sql", + "original_file_path": "macros/adapters/apply_grants.sql", + "unique_id": "macro.dbt.default__get_show_grant_sql", + "macro_sql": "{% macro default__get_show_grant_sql(relation) %}\n show grants on {{ relation.render() }}\n{% endmacro %}", "depends_on": { - "macros": [ - "macro.dbt.get_insert_into_sql" - ] + "macros": [] }, "description": "", "meta": {}, @@ -6021,20 +6078,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.542163, + "created_at": 1730458997.0713787, "supported_languages": null }, - "macro.dbt.get_incremental_delete_insert_sql": { - "name": "get_incremental_delete_insert_sql", + "macro.dbt.get_grant_sql": { + "name": "get_grant_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/models/incremental/strategies.sql", - "original_file_path": "macros/materializations/models/incremental/strategies.sql", - "unique_id": "macro.dbt.get_incremental_delete_insert_sql", - "macro_sql": "{% macro get_incremental_delete_insert_sql(arg_dict) %}\n\n {{ return(adapter.dispatch('get_incremental_delete_insert_sql', 'dbt')(arg_dict)) }}\n\n{% endmacro %}", + "path": "macros/adapters/apply_grants.sql", + "original_file_path": "macros/adapters/apply_grants.sql", + "unique_id": "macro.dbt.get_grant_sql", + "macro_sql": "{% macro get_grant_sql(relation, privilege, grantees) %}\n {{ return(adapter.dispatch('get_grant_sql', 'dbt')(relation, privilege, grantees)) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__get_incremental_delete_insert_sql" + "macro.dbt.default__get_grant_sql" ] }, "description": "", @@ -6045,21 +6102,19 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.542273, + "created_at": 1730458997.071505, "supported_languages": null }, - "macro.dbt.default__get_incremental_delete_insert_sql": { - "name": "default__get_incremental_delete_insert_sql", + "macro.dbt.default__get_grant_sql": { + "name": "default__get_grant_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/models/incremental/strategies.sql", - "original_file_path": "macros/materializations/models/incremental/strategies.sql", - "unique_id": "macro.dbt.default__get_incremental_delete_insert_sql", - "macro_sql": "{% macro default__get_incremental_delete_insert_sql(arg_dict) %}\n\n {% do return(get_delete_insert_merge_sql(arg_dict[\"target_relation\"], arg_dict[\"temp_relation\"], arg_dict[\"unique_key\"], arg_dict[\"dest_columns\"], arg_dict[\"incremental_predicates\"])) %}\n\n{% endmacro %}", + "path": "macros/adapters/apply_grants.sql", + "original_file_path": "macros/adapters/apply_grants.sql", + "unique_id": "macro.dbt.default__get_grant_sql", + "macro_sql": "\n\n{%- macro default__get_grant_sql(relation, privilege, grantees) -%}\n grant {{ privilege }} on {{ relation.render() }} to {{ grantees | join(', ') }}\n{%- endmacro -%}\n\n\n", "depends_on": { - "macros": [ - "macro.dbt.get_delete_insert_merge_sql" - ] + "macros": [] }, "description": "", "meta": {}, @@ -6069,20 +6124,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.542432, + "created_at": 1730458997.0716243, "supported_languages": null }, - "macro.dbt.get_incremental_merge_sql": { - "name": "get_incremental_merge_sql", + "macro.dbt.get_revoke_sql": { + "name": "get_revoke_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/models/incremental/strategies.sql", - "original_file_path": "macros/materializations/models/incremental/strategies.sql", - "unique_id": "macro.dbt.get_incremental_merge_sql", - "macro_sql": "{% macro get_incremental_merge_sql(arg_dict) %}\n\n {{ return(adapter.dispatch('get_incremental_merge_sql', 'dbt')(arg_dict)) }}\n\n{% endmacro %}", + "path": "macros/adapters/apply_grants.sql", + "original_file_path": "macros/adapters/apply_grants.sql", + "unique_id": "macro.dbt.get_revoke_sql", + "macro_sql": "{% macro get_revoke_sql(relation, privilege, grantees) %}\n {{ return(adapter.dispatch('get_revoke_sql', 'dbt')(relation, privilege, grantees)) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__get_incremental_merge_sql" + "macro.dbt.default__get_revoke_sql" ] }, "description": "", @@ -6093,21 +6148,19 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.542537, + "created_at": 1730458997.071753, "supported_languages": null }, - "macro.dbt.default__get_incremental_merge_sql": { - "name": "default__get_incremental_merge_sql", + "macro.dbt.default__get_revoke_sql": { + "name": "default__get_revoke_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/models/incremental/strategies.sql", - "original_file_path": "macros/materializations/models/incremental/strategies.sql", - "unique_id": "macro.dbt.default__get_incremental_merge_sql", - "macro_sql": "{% macro default__get_incremental_merge_sql(arg_dict) %}\n\n {% do return(get_merge_sql(arg_dict[\"target_relation\"], arg_dict[\"temp_relation\"], arg_dict[\"unique_key\"], arg_dict[\"dest_columns\"], arg_dict[\"incremental_predicates\"])) %}\n\n{% endmacro %}", + "path": "macros/adapters/apply_grants.sql", + "original_file_path": "macros/adapters/apply_grants.sql", + "unique_id": "macro.dbt.default__get_revoke_sql", + "macro_sql": "\n\n{%- macro default__get_revoke_sql(relation, privilege, grantees) -%}\n revoke {{ privilege }} on {{ relation.render() }} from {{ grantees | join(', ') }}\n{%- endmacro -%}\n\n\n", "depends_on": { - "macros": [ - "macro.dbt.get_merge_sql" - ] + "macros": [] }, "description": "", "meta": {}, @@ -6117,20 +6170,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5427022, + "created_at": 1730458997.071927, "supported_languages": null }, - "macro.dbt.get_incremental_insert_overwrite_sql": { - "name": "get_incremental_insert_overwrite_sql", + "macro.dbt.get_dcl_statement_list": { + "name": "get_dcl_statement_list", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/models/incremental/strategies.sql", - "original_file_path": "macros/materializations/models/incremental/strategies.sql", - "unique_id": "macro.dbt.get_incremental_insert_overwrite_sql", - "macro_sql": "{% macro get_incremental_insert_overwrite_sql(arg_dict) %}\n\n {{ return(adapter.dispatch('get_incremental_insert_overwrite_sql', 'dbt')(arg_dict)) }}\n\n{% endmacro %}", + "path": "macros/adapters/apply_grants.sql", + "original_file_path": "macros/adapters/apply_grants.sql", + "unique_id": "macro.dbt.get_dcl_statement_list", + "macro_sql": "{% macro get_dcl_statement_list(relation, grant_config, get_dcl_macro) %}\n {{ return(adapter.dispatch('get_dcl_statement_list', 'dbt')(relation, grant_config, get_dcl_macro)) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__get_incremental_insert_overwrite_sql" + "macro.dbt.default__get_dcl_statement_list" ] }, "description": "", @@ -6141,20 +6194,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.542805, + "created_at": 1730458997.072059, "supported_languages": null }, - "macro.dbt.default__get_incremental_insert_overwrite_sql": { - "name": "default__get_incremental_insert_overwrite_sql", + "macro.dbt.default__get_dcl_statement_list": { + "name": "default__get_dcl_statement_list", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/models/incremental/strategies.sql", - "original_file_path": "macros/materializations/models/incremental/strategies.sql", - "unique_id": "macro.dbt.default__get_incremental_insert_overwrite_sql", - "macro_sql": "{% macro default__get_incremental_insert_overwrite_sql(arg_dict) %}\n\n {% do return(get_insert_overwrite_merge_sql(arg_dict[\"target_relation\"], arg_dict[\"temp_relation\"], arg_dict[\"dest_columns\"], arg_dict[\"incremental_predicates\"])) %}\n\n{% endmacro %}", + "path": "macros/adapters/apply_grants.sql", + "original_file_path": "macros/adapters/apply_grants.sql", + "unique_id": "macro.dbt.default__get_dcl_statement_list", + "macro_sql": "\n\n{%- macro default__get_dcl_statement_list(relation, grant_config, get_dcl_macro) -%}\n {#\n -- Unpack grant_config into specific privileges and the set of users who need them granted/revoked.\n -- Depending on whether this database supports multiple grantees per statement, pass in the list of\n -- all grantees per privilege, or (if not) template one statement per privilege-grantee pair.\n -- `get_dcl_macro` will be either `get_grant_sql` or `get_revoke_sql`\n #}\n {%- set dcl_statements = [] -%}\n {%- for privilege, grantees in grant_config.items() %}\n {%- if support_multiple_grantees_per_dcl_statement() and grantees -%}\n {%- set dcl = get_dcl_macro(relation, privilege, grantees) -%}\n {%- do dcl_statements.append(dcl) -%}\n {%- else -%}\n {%- for grantee in grantees -%}\n {% set dcl = get_dcl_macro(relation, privilege, [grantee]) %}\n {%- do dcl_statements.append(dcl) -%}\n {% endfor -%}\n {%- endif -%}\n {%- endfor -%}\n {{ return(dcl_statements) }}\n{%- endmacro %}", "depends_on": { "macros": [ - "macro.dbt.get_insert_overwrite_merge_sql" + "macro.dbt.support_multiple_grantees_per_dcl_statement" ] }, "description": "", @@ -6165,20 +6218,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.542945, + "created_at": 1730458997.0724096, "supported_languages": null }, - "macro.dbt.get_incremental_default_sql": { - "name": "get_incremental_default_sql", + "macro.dbt.call_dcl_statements": { + "name": "call_dcl_statements", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/models/incremental/strategies.sql", - "original_file_path": "macros/materializations/models/incremental/strategies.sql", - "unique_id": "macro.dbt.get_incremental_default_sql", - "macro_sql": "{% macro get_incremental_default_sql(arg_dict) %}\n\n {{ return(adapter.dispatch('get_incremental_default_sql', 'dbt')(arg_dict)) }}\n\n{% endmacro %}", + "path": "macros/adapters/apply_grants.sql", + "original_file_path": "macros/adapters/apply_grants.sql", + "unique_id": "macro.dbt.call_dcl_statements", + "macro_sql": "{% macro call_dcl_statements(dcl_statement_list) %}\n {{ return(adapter.dispatch(\"call_dcl_statements\", \"dbt\")(dcl_statement_list)) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt_postgres.postgres__get_incremental_default_sql" + "macro.dbt.default__call_dcl_statements" ] }, "description": "", @@ -6189,20 +6242,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.543048, + "created_at": 1730458997.0725064, "supported_languages": null }, - "macro.dbt.default__get_incremental_default_sql": { - "name": "default__get_incremental_default_sql", + "macro.dbt.default__call_dcl_statements": { + "name": "default__call_dcl_statements", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/models/incremental/strategies.sql", - "original_file_path": "macros/materializations/models/incremental/strategies.sql", - "unique_id": "macro.dbt.default__get_incremental_default_sql", - "macro_sql": "{% macro default__get_incremental_default_sql(arg_dict) %}\n\n {% do return(get_incremental_append_sql(arg_dict)) %}\n\n{% endmacro %}", + "path": "macros/adapters/apply_grants.sql", + "original_file_path": "macros/adapters/apply_grants.sql", + "unique_id": "macro.dbt.default__call_dcl_statements", + "macro_sql": "{% macro default__call_dcl_statements(dcl_statement_list) %}\n {#\n -- By default, supply all grant + revoke statements in a single semicolon-separated block,\n -- so that they're all processed together.\n\n -- Some databases do not support this. Those adapters will need to override this macro\n -- to run each statement individually.\n #}\n {% call statement('grants') %}\n {% for dcl_statement in dcl_statement_list %}\n {{ dcl_statement }};\n {% endfor %}\n {% endcall %}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.get_incremental_append_sql" + "macro.dbt.statement" ] }, "description": "", @@ -6213,20 +6266,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.543133, + "created_at": 1730458997.072637, "supported_languages": null }, - "macro.dbt.get_insert_into_sql": { - "name": "get_insert_into_sql", + "macro.dbt.apply_grants": { + "name": "apply_grants", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/models/incremental/strategies.sql", - "original_file_path": "macros/materializations/models/incremental/strategies.sql", - "unique_id": "macro.dbt.get_insert_into_sql", - "macro_sql": "{% macro get_insert_into_sql(target_relation, temp_relation, dest_columns) %}\n\n {%- set dest_cols_csv = get_quoted_csv(dest_columns | map(attribute=\"name\")) -%}\n\n insert into {{ target_relation }} ({{ dest_cols_csv }})\n (\n select {{ dest_cols_csv }}\n from {{ temp_relation }}\n )\n\n{% endmacro %}", + "path": "macros/adapters/apply_grants.sql", + "original_file_path": "macros/adapters/apply_grants.sql", + "unique_id": "macro.dbt.apply_grants", + "macro_sql": "{% macro apply_grants(relation, grant_config, should_revoke) %}\n {{ return(adapter.dispatch(\"apply_grants\", \"dbt\")(relation, grant_config, should_revoke)) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.get_quoted_csv" + "macro.dbt.default__apply_grants" ] }, "description": "", @@ -6237,35 +6290,23 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5432901, + "created_at": 1730458997.0727541, "supported_languages": null }, - "macro.dbt.materialization_incremental_default": { - "name": "materialization_incremental_default", + "macro.dbt.default__apply_grants": { + "name": "default__apply_grants", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/models/incremental/incremental.sql", - "original_file_path": "macros/materializations/models/incremental/incremental.sql", - "unique_id": "macro.dbt.materialization_incremental_default", - "macro_sql": "{% materialization incremental, default -%}\n\n -- relations\n {%- set existing_relation = load_cached_relation(this) -%}\n {%- set target_relation = this.incorporate(type='table') -%}\n {%- set temp_relation = make_temp_relation(target_relation)-%}\n {%- set intermediate_relation = make_intermediate_relation(target_relation)-%}\n {%- set backup_relation_type = 'table' if existing_relation is none else existing_relation.type -%}\n {%- set backup_relation = make_backup_relation(target_relation, backup_relation_type) -%}\n\n -- configs\n {%- set unique_key = config.get('unique_key') -%}\n {%- set full_refresh_mode = (should_full_refresh() or existing_relation.is_view) -%}\n {%- set on_schema_change = incremental_validate_on_schema_change(config.get('on_schema_change'), default='ignore') -%}\n\n -- the temp_ and backup_ relations should not already exist in the database; get_relation\n -- will return None in that case. Otherwise, we get a relation that we can drop\n -- later, before we try to use this name for the current operation. This has to happen before\n -- BEGIN, in a separate transaction\n {%- set preexisting_intermediate_relation = load_cached_relation(intermediate_relation)-%}\n {%- set preexisting_backup_relation = load_cached_relation(backup_relation) -%}\n -- grab current tables grants config for comparision later on\n {% set grant_config = config.get('grants') %}\n {{ drop_relation_if_exists(preexisting_intermediate_relation) }}\n {{ drop_relation_if_exists(preexisting_backup_relation) }}\n\n {{ run_hooks(pre_hooks, inside_transaction=False) }}\n\n -- `BEGIN` happens here:\n {{ run_hooks(pre_hooks, inside_transaction=True) }}\n\n {% set to_drop = [] %}\n\n {% if existing_relation is none %}\n {% set build_sql = get_create_table_as_sql(False, target_relation, sql) %}\n {% elif full_refresh_mode %}\n {% set build_sql = get_create_table_as_sql(False, intermediate_relation, sql) %}\n {% set need_swap = true %}\n {% else %}\n {% do run_query(get_create_table_as_sql(True, temp_relation, sql)) %}\n {% set contract_config = config.get('contract') %}\n {% if not contract_config or not contract_config.enforced %}\n {% do adapter.expand_target_column_types(\n from_relation=temp_relation,\n to_relation=target_relation) %}\n {% endif %}\n {#-- Process schema changes. Returns dict of changes if successful. Use source columns for upserting/merging --#}\n {% set dest_columns = process_schema_changes(on_schema_change, temp_relation, existing_relation) %}\n {% if not dest_columns %}\n {% set dest_columns = adapter.get_columns_in_relation(existing_relation) %}\n {% endif %}\n\n {#-- Get the incremental_strategy, the macro to use for the strategy, and build the sql --#}\n {% set incremental_strategy = config.get('incremental_strategy') or 'default' %}\n {% set incremental_predicates = config.get('predicates', none) or config.get('incremental_predicates', none) %}\n {% set strategy_sql_macro_func = adapter.get_incremental_strategy_macro(context, incremental_strategy) %}\n {% set strategy_arg_dict = ({'target_relation': target_relation, 'temp_relation': temp_relation, 'unique_key': unique_key, 'dest_columns': dest_columns, 'incremental_predicates': incremental_predicates }) %}\n {% set build_sql = strategy_sql_macro_func(strategy_arg_dict) %}\n\n {% endif %}\n\n {% call statement(\"main\") %}\n {{ build_sql }}\n {% endcall %}\n\n {% if need_swap %}\n {% do adapter.rename_relation(target_relation, backup_relation) %}\n {% do adapter.rename_relation(intermediate_relation, target_relation) %}\n {% do to_drop.append(backup_relation) %}\n {% endif %}\n\n {% set should_revoke = should_revoke(existing_relation, full_refresh_mode) %}\n {% do apply_grants(target_relation, grant_config, should_revoke=should_revoke) %}\n\n {% do persist_docs(target_relation, model) %}\n\n {% if existing_relation is none or existing_relation.is_view or should_full_refresh() %}\n {% do create_indexes(target_relation) %}\n {% endif %}\n\n {{ run_hooks(post_hooks, inside_transaction=True) }}\n\n -- `COMMIT` happens here\n {% do adapter.commit() %}\n\n {% for rel in to_drop %}\n {% do adapter.drop_relation(rel) %}\n {% endfor %}\n\n {{ run_hooks(post_hooks, inside_transaction=False) }}\n\n {{ return({'relations': [target_relation]}) }}\n\n{%- endmaterialization %}", + "path": "macros/adapters/apply_grants.sql", + "original_file_path": "macros/adapters/apply_grants.sql", + "unique_id": "macro.dbt.default__apply_grants", + "macro_sql": "{% macro default__apply_grants(relation, grant_config, should_revoke=True) %}\n {#-- If grant_config is {} or None, this is a no-op --#}\n {% if grant_config %}\n {% if should_revoke %}\n {#-- We think previous grants may have carried over --#}\n {#-- Show current grants and calculate diffs --#}\n {% set current_grants_table = run_query(get_show_grant_sql(relation)) %}\n {% set current_grants_dict = adapter.standardize_grants_dict(current_grants_table) %}\n {% set needs_granting = diff_of_two_dicts(grant_config, current_grants_dict) %}\n {% set needs_revoking = diff_of_two_dicts(current_grants_dict, grant_config) %}\n {% if not (needs_granting or needs_revoking) %}\n {{ log('On ' ~ relation.render() ~': All grants are in place, no revocation or granting needed.')}}\n {% endif %}\n {% else %}\n {#-- We don't think there's any chance of previous grants having carried over. --#}\n {#-- Jump straight to granting what the user has configured. --#}\n {% set needs_revoking = {} %}\n {% set needs_granting = grant_config %}\n {% endif %}\n {% if needs_granting or needs_revoking %}\n {% set revoke_statement_list = get_dcl_statement_list(relation, needs_revoking, get_revoke_sql) %}\n {% set grant_statement_list = get_dcl_statement_list(relation, needs_granting, get_grant_sql) %}\n {% set dcl_statement_list = revoke_statement_list + grant_statement_list %}\n {% if dcl_statement_list %}\n {{ call_dcl_statements(dcl_statement_list) }}\n {% endif %}\n {% endif %}\n {% endif %}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.load_cached_relation", - "macro.dbt.make_temp_relation", - "macro.dbt.make_intermediate_relation", - "macro.dbt.make_backup_relation", - "macro.dbt.should_full_refresh", - "macro.dbt.incremental_validate_on_schema_change", - "macro.dbt.drop_relation_if_exists", - "macro.dbt.run_hooks", - "macro.dbt.get_create_table_as_sql", "macro.dbt.run_query", - "macro.dbt.process_schema_changes", - "macro.dbt.statement", - "macro.dbt.should_revoke", - "macro.dbt.apply_grants", - "macro.dbt.persist_docs", - "macro.dbt.create_indexes" + "macro.dbt.get_show_grant_sql", + "macro.dbt.get_dcl_statement_list", + "macro.dbt.call_dcl_statements" ] }, "description": "", @@ -6276,21 +6317,21 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5464342, - "supported_languages": [ - "sql" - ] + "created_at": 1730458997.0733538, + "supported_languages": null }, - "macro.dbt.incremental_validate_on_schema_change": { - "name": "incremental_validate_on_schema_change", + "macro.dbt.create_schema": { + "name": "create_schema", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/models/incremental/on_schema_change.sql", - "original_file_path": "macros/materializations/models/incremental/on_schema_change.sql", - "unique_id": "macro.dbt.incremental_validate_on_schema_change", - "macro_sql": "{% macro incremental_validate_on_schema_change(on_schema_change, default='ignore') %}\n\n {% if on_schema_change not in ['sync_all_columns', 'append_new_columns', 'fail', 'ignore'] %}\n\n {% set log_message = 'Invalid value for on_schema_change (%s) specified. Setting default value of %s.' % (on_schema_change, default) %}\n {% do log(log_message) %}\n\n {{ return(default) }}\n\n {% else %}\n\n {{ return(on_schema_change) }}\n\n {% endif %}\n\n{% endmacro %}", + "path": "macros/adapters/schema.sql", + "original_file_path": "macros/adapters/schema.sql", + "unique_id": "macro.dbt.create_schema", + "macro_sql": "{% macro create_schema(relation) -%}\n {{ adapter.dispatch('create_schema', 'dbt')(relation) }}\n{% endmacro %}", "depends_on": { - "macros": [] + "macros": [ + "macro.dbt_postgres.postgres__create_schema" + ] }, "description": "", "meta": {}, @@ -6300,21 +6341,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.550059, + "created_at": 1730458997.0735621, "supported_languages": null }, - "macro.dbt.check_for_schema_changes": { - "name": "check_for_schema_changes", + "macro.dbt.default__create_schema": { + "name": "default__create_schema", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/models/incremental/on_schema_change.sql", - "original_file_path": "macros/materializations/models/incremental/on_schema_change.sql", - "unique_id": "macro.dbt.check_for_schema_changes", - "macro_sql": "{% macro check_for_schema_changes(source_relation, target_relation) %}\n\n {% set schema_changed = False %}\n\n {%- set source_columns = adapter.get_columns_in_relation(source_relation) -%}\n {%- set target_columns = adapter.get_columns_in_relation(target_relation) -%}\n {%- set source_not_in_target = diff_columns(source_columns, target_columns) -%}\n {%- set target_not_in_source = diff_columns(target_columns, source_columns) -%}\n\n {% set new_target_types = diff_column_data_types(source_columns, target_columns) %}\n\n {% if source_not_in_target != [] %}\n {% set schema_changed = True %}\n {% elif target_not_in_source != [] or new_target_types != [] %}\n {% set schema_changed = True %}\n {% elif new_target_types != [] %}\n {% set schema_changed = True %}\n {% endif %}\n\n {% set changes_dict = {\n 'schema_changed': schema_changed,\n 'source_not_in_target': source_not_in_target,\n 'target_not_in_source': target_not_in_source,\n 'source_columns': source_columns,\n 'target_columns': target_columns,\n 'new_target_types': new_target_types\n } %}\n\n {% set msg %}\n In {{ target_relation }}:\n Schema changed: {{ schema_changed }}\n Source columns not in target: {{ source_not_in_target }}\n Target columns not in source: {{ target_not_in_source }}\n New column types: {{ new_target_types }}\n {% endset %}\n\n {% do log(msg) %}\n\n {{ return(changes_dict) }}\n\n{% endmacro %}", + "path": "macros/adapters/schema.sql", + "original_file_path": "macros/adapters/schema.sql", + "unique_id": "macro.dbt.default__create_schema", + "macro_sql": "{% macro default__create_schema(relation) -%}\n {%- call statement('create_schema') -%}\n create schema if not exists {{ relation.without_identifier() }}\n {% endcall %}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.diff_columns", - "macro.dbt.diff_column_data_types" + "macro.dbt.statement" ] }, "description": "", @@ -6325,21 +6365,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.550721, + "created_at": 1730458997.0736578, "supported_languages": null }, - "macro.dbt.sync_column_schemas": { - "name": "sync_column_schemas", + "macro.dbt.drop_schema": { + "name": "drop_schema", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/models/incremental/on_schema_change.sql", - "original_file_path": "macros/materializations/models/incremental/on_schema_change.sql", - "unique_id": "macro.dbt.sync_column_schemas", - "macro_sql": "{% macro sync_column_schemas(on_schema_change, target_relation, schema_changes_dict) %}\n\n {%- set add_to_target_arr = schema_changes_dict['source_not_in_target'] -%}\n\n {%- if on_schema_change == 'append_new_columns'-%}\n {%- if add_to_target_arr | length > 0 -%}\n {%- do alter_relation_add_remove_columns(target_relation, add_to_target_arr, none) -%}\n {%- endif -%}\n\n {% elif on_schema_change == 'sync_all_columns' %}\n {%- set remove_from_target_arr = schema_changes_dict['target_not_in_source'] -%}\n {%- set new_target_types = schema_changes_dict['new_target_types'] -%}\n\n {% if add_to_target_arr | length > 0 or remove_from_target_arr | length > 0 %}\n {%- do alter_relation_add_remove_columns(target_relation, add_to_target_arr, remove_from_target_arr) -%}\n {% endif %}\n\n {% if new_target_types != [] %}\n {% for ntt in new_target_types %}\n {% set column_name = ntt['column_name'] %}\n {% set new_type = ntt['new_type'] %}\n {% do alter_column_type(target_relation, column_name, new_type) %}\n {% endfor %}\n {% endif %}\n\n {% endif %}\n\n {% set schema_change_message %}\n In {{ target_relation }}:\n Schema change approach: {{ on_schema_change }}\n Columns added: {{ add_to_target_arr }}\n Columns removed: {{ remove_from_target_arr }}\n Data types changed: {{ new_target_types }}\n {% endset %}\n\n {% do log(schema_change_message) %}\n\n{% endmacro %}", + "path": "macros/adapters/schema.sql", + "original_file_path": "macros/adapters/schema.sql", + "unique_id": "macro.dbt.drop_schema", + "macro_sql": "{% macro drop_schema(relation) -%}\n {{ adapter.dispatch('drop_schema', 'dbt')(relation) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.alter_relation_add_remove_columns", - "macro.dbt.alter_column_type" + "macro.dbt_postgres.postgres__drop_schema" ] }, "description": "", @@ -6350,21 +6389,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.551391, + "created_at": 1730458997.0737383, "supported_languages": null }, - "macro.dbt.process_schema_changes": { - "name": "process_schema_changes", + "macro.dbt.default__drop_schema": { + "name": "default__drop_schema", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/models/incremental/on_schema_change.sql", - "original_file_path": "macros/materializations/models/incremental/on_schema_change.sql", - "unique_id": "macro.dbt.process_schema_changes", - "macro_sql": "{% macro process_schema_changes(on_schema_change, source_relation, target_relation) %}\n\n {% if on_schema_change == 'ignore' %}\n\n {{ return({}) }}\n\n {% else %}\n\n {% set schema_changes_dict = check_for_schema_changes(source_relation, target_relation) %}\n\n {% if schema_changes_dict['schema_changed'] %}\n\n {% if on_schema_change == 'fail' %}\n\n {% set fail_msg %}\n The source and target schemas on this incremental model are out of sync!\n They can be reconciled in several ways:\n - set the `on_schema_change` config to either append_new_columns or sync_all_columns, depending on your situation.\n - Re-run the incremental model with `full_refresh: True` to update the target schema.\n - update the schema manually and re-run the process.\n\n Additional troubleshooting context:\n Source columns not in target: {{ schema_changes_dict['source_not_in_target'] }}\n Target columns not in source: {{ schema_changes_dict['target_not_in_source'] }}\n New column types: {{ schema_changes_dict['new_target_types'] }}\n {% endset %}\n\n {% do exceptions.raise_compiler_error(fail_msg) %}\n\n {# -- unless we ignore, run the sync operation per the config #}\n {% else %}\n\n {% do sync_column_schemas(on_schema_change, target_relation, schema_changes_dict) %}\n\n {% endif %}\n\n {% endif %}\n\n {{ return(schema_changes_dict['source_columns']) }}\n\n {% endif %}\n\n{% endmacro %}", + "path": "macros/adapters/schema.sql", + "original_file_path": "macros/adapters/schema.sql", + "unique_id": "macro.dbt.default__drop_schema", + "macro_sql": "{% macro default__drop_schema(relation) -%}\n {%- call statement('drop_schema') -%}\n drop schema if exists {{ relation.without_identifier() }} cascade\n {% endcall %}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.check_for_schema_changes", - "macro.dbt.sync_column_schemas" + "macro.dbt.statement" ] }, "description": "", @@ -6375,20 +6413,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.551887, + "created_at": 1730458997.0738328, "supported_languages": null }, - "macro.dbt.can_clone_table": { - "name": "can_clone_table", + "macro.dbt.alter_column_comment": { + "name": "alter_column_comment", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/models/clone/can_clone_table.sql", - "original_file_path": "macros/materializations/models/clone/can_clone_table.sql", - "unique_id": "macro.dbt.can_clone_table", - "macro_sql": "{% macro can_clone_table() %}\n {{ return(adapter.dispatch('can_clone_table', 'dbt')()) }}\n{% endmacro %}", + "path": "macros/adapters/persist_docs.sql", + "original_file_path": "macros/adapters/persist_docs.sql", + "unique_id": "macro.dbt.alter_column_comment", + "macro_sql": "{% macro alter_column_comment(relation, column_dict) -%}\n {{ return(adapter.dispatch('alter_column_comment', 'dbt')(relation, column_dict)) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__can_clone_table" + "macro.dbt_postgres.postgres__alter_column_comment" ] }, "description": "", @@ -6399,17 +6437,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.552036, + "created_at": 1730458997.0742137, "supported_languages": null }, - "macro.dbt.default__can_clone_table": { - "name": "default__can_clone_table", + "macro.dbt.default__alter_column_comment": { + "name": "default__alter_column_comment", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/models/clone/can_clone_table.sql", - "original_file_path": "macros/materializations/models/clone/can_clone_table.sql", - "unique_id": "macro.dbt.default__can_clone_table", - "macro_sql": "{% macro default__can_clone_table() %}\n {{ return(False) }}\n{% endmacro %}", + "path": "macros/adapters/persist_docs.sql", + "original_file_path": "macros/adapters/persist_docs.sql", + "unique_id": "macro.dbt.default__alter_column_comment", + "macro_sql": "{% macro default__alter_column_comment(relation, column_dict) -%}\n {{ exceptions.raise_not_implemented(\n 'alter_column_comment macro not implemented for adapter '+adapter.type()) }}\n{% endmacro %}", "depends_on": { "macros": [] }, @@ -6421,20 +6459,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5521028, + "created_at": 1730458997.0743093, "supported_languages": null }, - "macro.dbt.create_or_replace_clone": { - "name": "create_or_replace_clone", + "macro.dbt.alter_relation_comment": { + "name": "alter_relation_comment", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/models/clone/create_or_replace_clone.sql", - "original_file_path": "macros/materializations/models/clone/create_or_replace_clone.sql", - "unique_id": "macro.dbt.create_or_replace_clone", - "macro_sql": "{% macro create_or_replace_clone(this_relation, defer_relation) %}\n {{ return(adapter.dispatch('create_or_replace_clone', 'dbt')(this_relation, defer_relation)) }}\n{% endmacro %}", + "path": "macros/adapters/persist_docs.sql", + "original_file_path": "macros/adapters/persist_docs.sql", + "unique_id": "macro.dbt.alter_relation_comment", + "macro_sql": "{% macro alter_relation_comment(relation, relation_comment) -%}\n {{ return(adapter.dispatch('alter_relation_comment', 'dbt')(relation, relation_comment)) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__create_or_replace_clone" + "macro.dbt_postgres.postgres__alter_relation_comment" ] }, "description": "", @@ -6445,17 +6483,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.552277, + "created_at": 1730458997.0744224, "supported_languages": null }, - "macro.dbt.default__create_or_replace_clone": { - "name": "default__create_or_replace_clone", + "macro.dbt.default__alter_relation_comment": { + "name": "default__alter_relation_comment", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/models/clone/create_or_replace_clone.sql", - "original_file_path": "macros/materializations/models/clone/create_or_replace_clone.sql", - "unique_id": "macro.dbt.default__create_or_replace_clone", - "macro_sql": "{% macro default__create_or_replace_clone(this_relation, defer_relation) %}\n create or replace table {{ this_relation.render() }} clone {{ defer_relation.render() }}\n{% endmacro %}", + "path": "macros/adapters/persist_docs.sql", + "original_file_path": "macros/adapters/persist_docs.sql", + "unique_id": "macro.dbt.default__alter_relation_comment", + "macro_sql": "{% macro default__alter_relation_comment(relation, relation_comment) -%}\n {{ exceptions.raise_not_implemented(\n 'alter_relation_comment macro not implemented for adapter '+adapter.type()) }}\n{% endmacro %}", "depends_on": { "macros": [] }, @@ -6467,63 +6505,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.552373, + "created_at": 1730458997.0745153, "supported_languages": null - }, - "macro.dbt.materialization_clone_default": { - "name": "materialization_clone_default", - "resource_type": "macro", - "package_name": "dbt", - "path": "macros/materializations/models/clone/clone.sql", - "original_file_path": "macros/materializations/models/clone/clone.sql", - "unique_id": "macro.dbt.materialization_clone_default", - "macro_sql": "{%- materialization clone, default -%}\n\n {%- set relations = {'relations': []} -%}\n\n {%- if not defer_relation -%}\n -- nothing to do\n {{ log(\"No relation found in state manifest for \" ~ model.unique_id, info=True) }}\n {{ return(relations) }}\n {%- endif -%}\n\n {%- set existing_relation = load_cached_relation(this) -%}\n\n {%- if existing_relation and not flags.FULL_REFRESH -%}\n -- noop!\n {{ log(\"Relation \" ~ existing_relation ~ \" already exists\", info=True) }}\n {{ return(relations) }}\n {%- endif -%}\n\n {%- set other_existing_relation = load_cached_relation(defer_relation) -%}\n\n -- If this is a database that can do zero-copy cloning of tables, and the other relation is a table, then this will be a table\n -- Otherwise, this will be a view\n\n {% set can_clone_table = can_clone_table() %}\n\n {%- if other_existing_relation and other_existing_relation.type == 'table' and can_clone_table -%}\n\n {%- set target_relation = this.incorporate(type='table') -%}\n {% if existing_relation is not none and not existing_relation.is_table %}\n {{ log(\"Dropping relation \" ~ existing_relation.render() ~ \" because it is of type \" ~ existing_relation.type) }}\n {{ drop_relation_if_exists(existing_relation) }}\n {% endif %}\n\n -- as a general rule, data platforms that can clone tables can also do atomic 'create or replace'\n {% call statement('main') %}\n {% if target_relation and defer_relation and target_relation == defer_relation %}\n {{ log(\"Target relation and defer relation are the same, skipping clone for relation: \" ~ target_relation.render()) }}\n {% else %}\n {{ create_or_replace_clone(target_relation, defer_relation) }}\n {% endif %}\n\n {% endcall %}\n\n {% set should_revoke = should_revoke(existing_relation, full_refresh_mode=True) %}\n {% do apply_grants(target_relation, grant_config, should_revoke=should_revoke) %}\n {% do persist_docs(target_relation, model) %}\n\n {{ return({'relations': [target_relation]}) }}\n\n {%- else -%}\n\n {%- set target_relation = this.incorporate(type='view') -%}\n\n -- reuse the view materialization\n -- TODO: support actual dispatch for materialization macros\n -- Tracking ticket: https://github.com/dbt-labs/dbt-core/issues/7799\n {% set search_name = \"materialization_view_\" ~ adapter.type() %}\n {% if not search_name in context %}\n {% set search_name = \"materialization_view_default\" %}\n {% endif %}\n {% set materialization_macro = context[search_name] %}\n {% set relations = materialization_macro() %}\n {{ return(relations) }}\n\n {%- endif -%}\n\n{%- endmaterialization -%}", - "depends_on": { - "macros": [ - "macro.dbt.load_cached_relation", - "macro.dbt.can_clone_table", - "macro.dbt.drop_relation_if_exists", - "macro.dbt.statement", - "macro.dbt.create_or_replace_clone", - "macro.dbt.should_revoke", - "macro.dbt.apply_grants", - "macro.dbt.persist_docs" - ] - }, - "description": "", - "meta": {}, - "docs": { - "show": true, - "node_color": null - }, - "patch_path": null, - "arguments": [], - "created_at": 1728697972.554504, - "supported_languages": [ - "sql" - ] - }, - "macro.dbt.materialization_seed_default": { - "name": "materialization_seed_default", + }, + "macro.dbt.persist_docs": { + "name": "persist_docs", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/seeds/seed.sql", - "original_file_path": "macros/materializations/seeds/seed.sql", - "unique_id": "macro.dbt.materialization_seed_default", - "macro_sql": "{% materialization seed, default %}\n\n {%- set identifier = model['alias'] -%}\n {%- set full_refresh_mode = (should_full_refresh()) -%}\n\n {%- set old_relation = adapter.get_relation(database=database, schema=schema, identifier=identifier) -%}\n\n {%- set exists_as_table = (old_relation is not none and old_relation.is_table) -%}\n {%- set exists_as_view = (old_relation is not none and old_relation.is_view) -%}\n\n {%- set grant_config = config.get('grants') -%}\n {%- set agate_table = load_agate_table() -%}\n -- grab current tables grants config for comparison later on\n\n {%- do store_result('agate_table', response='OK', agate_table=agate_table) -%}\n\n {{ run_hooks(pre_hooks, inside_transaction=False) }}\n\n -- `BEGIN` happens here:\n {{ run_hooks(pre_hooks, inside_transaction=True) }}\n\n -- build model\n {% set create_table_sql = \"\" %}\n {% if exists_as_view %}\n {{ exceptions.raise_compiler_error(\"Cannot seed to '{}', it is a view\".format(old_relation.render())) }}\n {% elif exists_as_table %}\n {% set create_table_sql = reset_csv_table(model, full_refresh_mode, old_relation, agate_table) %}\n {% else %}\n {% set create_table_sql = create_csv_table(model, agate_table) %}\n {% endif %}\n\n {% set code = 'CREATE' if full_refresh_mode else 'INSERT' %}\n {% set rows_affected = (agate_table.rows | length) %}\n {% set sql = load_csv_rows(model, agate_table) %}\n\n {% call noop_statement('main', code ~ ' ' ~ rows_affected, code, rows_affected) %}\n {{ get_csv_sql(create_table_sql, sql) }};\n {% endcall %}\n\n {% set target_relation = this.incorporate(type='table') %}\n\n {% set should_revoke = should_revoke(old_relation, full_refresh_mode) %}\n {% do apply_grants(target_relation, grant_config, should_revoke=should_revoke) %}\n\n {% do persist_docs(target_relation, model) %}\n\n {% if full_refresh_mode or not exists_as_table %}\n {% do create_indexes(target_relation) %}\n {% endif %}\n\n {{ run_hooks(post_hooks, inside_transaction=True) }}\n\n -- `COMMIT` happens here\n {{ adapter.commit() }}\n\n {{ run_hooks(post_hooks, inside_transaction=False) }}\n\n {{ return({'relations': [target_relation]}) }}\n\n{% endmaterialization %}", + "path": "macros/adapters/persist_docs.sql", + "original_file_path": "macros/adapters/persist_docs.sql", + "unique_id": "macro.dbt.persist_docs", + "macro_sql": "{% macro persist_docs(relation, model, for_relation=true, for_columns=true) -%}\n {{ return(adapter.dispatch('persist_docs', 'dbt')(relation, model, for_relation, for_columns)) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.should_full_refresh", - "macro.dbt.run_hooks", - "macro.dbt.reset_csv_table", - "macro.dbt.create_csv_table", - "macro.dbt.load_csv_rows", - "macro.dbt.noop_statement", - "macro.dbt.get_csv_sql", - "macro.dbt.should_revoke", - "macro.dbt.apply_grants", - "macro.dbt.persist_docs", - "macro.dbt.create_indexes" + "macro.dbt.default__persist_docs" ] }, "description": "", @@ -6534,22 +6529,22 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5563571, - "supported_languages": [ - "sql" - ] + "created_at": 1730458997.0746586, + "supported_languages": null }, - "macro.dbt.create_csv_table": { - "name": "create_csv_table", + "macro.dbt.default__persist_docs": { + "name": "default__persist_docs", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/seeds/helpers.sql", - "original_file_path": "macros/materializations/seeds/helpers.sql", - "unique_id": "macro.dbt.create_csv_table", - "macro_sql": "{% macro create_csv_table(model, agate_table) -%}\n {{ adapter.dispatch('create_csv_table', 'dbt')(model, agate_table) }}\n{%- endmacro %}", + "path": "macros/adapters/persist_docs.sql", + "original_file_path": "macros/adapters/persist_docs.sql", + "unique_id": "macro.dbt.default__persist_docs", + "macro_sql": "{% macro default__persist_docs(relation, model, for_relation, for_columns) -%}\n {% if for_relation and config.persist_relation_docs() and model.description %}\n {% do run_query(alter_relation_comment(relation, model.description)) %}\n {% endif %}\n\n {% if for_columns and config.persist_column_docs() and model.columns %}\n {% do run_query(alter_column_comment(relation, model.columns)) %}\n {% endif %}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__create_csv_table" + "macro.dbt.run_query", + "macro.dbt.alter_relation_comment", + "macro.dbt.alter_column_comment" ] }, "description": "", @@ -6560,20 +6555,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.559569, + "created_at": 1730458997.0749168, "supported_languages": null }, - "macro.dbt.default__create_csv_table": { - "name": "default__create_csv_table", + "macro.dbt.get_show_sql": { + "name": "get_show_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/seeds/helpers.sql", - "original_file_path": "macros/materializations/seeds/helpers.sql", - "unique_id": "macro.dbt.default__create_csv_table", - "macro_sql": "{% macro default__create_csv_table(model, agate_table) %}\n {%- set column_override = model['config'].get('column_types', {}) -%}\n {%- set quote_seed_column = model['config'].get('quote_columns', None) -%}\n\n {% set sql %}\n create table {{ this.render() }} (\n {%- for col_name in agate_table.column_names -%}\n {%- set inferred_type = adapter.convert_type(agate_table, loop.index0) -%}\n {%- set type = column_override.get(col_name, inferred_type) -%}\n {%- set column_name = (col_name | string) -%}\n {{ adapter.quote_seed_column(column_name, quote_seed_column) }} {{ type }} {%- if not loop.last -%}, {%- endif -%}\n {%- endfor -%}\n )\n {% endset %}\n\n {% call statement('_') -%}\n {{ sql }}\n {%- endcall %}\n\n {{ return(sql) }}\n{% endmacro %}", + "path": "macros/adapters/show.sql", + "original_file_path": "macros/adapters/show.sql", + "unique_id": "macro.dbt.get_show_sql", + "macro_sql": "{% macro get_show_sql(compiled_code, sql_header, limit) -%}\n {%- if sql_header is not none -%}\n {{ sql_header }}\n {%- endif %}\n {{ get_limit_subquery_sql(compiled_code, limit) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.statement" + "macro.dbt.get_limit_subquery_sql" ] }, "description": "", @@ -6584,20 +6579,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5600781, + "created_at": 1730458997.0751524, "supported_languages": null }, - "macro.dbt.reset_csv_table": { - "name": "reset_csv_table", + "macro.dbt.get_limit_subquery_sql": { + "name": "get_limit_subquery_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/seeds/helpers.sql", - "original_file_path": "macros/materializations/seeds/helpers.sql", - "unique_id": "macro.dbt.reset_csv_table", - "macro_sql": "{% macro reset_csv_table(model, full_refresh, old_relation, agate_table) -%}\n {{ adapter.dispatch('reset_csv_table', 'dbt')(model, full_refresh, old_relation, agate_table) }}\n{%- endmacro %}", + "path": "macros/adapters/show.sql", + "original_file_path": "macros/adapters/show.sql", + "unique_id": "macro.dbt.get_limit_subquery_sql", + "macro_sql": "\n{%- macro get_limit_subquery_sql(sql, limit) -%}\n {{ adapter.dispatch('get_limit_sql', 'dbt')(sql, limit) }}\n{%- endmacro -%}\n\n", "depends_on": { "macros": [ - "macro.dbt.default__reset_csv_table" + "macro.dbt.default__get_limit_sql" ] }, "description": "", @@ -6608,21 +6603,19 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5602088, + "created_at": 1730458997.0752556, "supported_languages": null }, - "macro.dbt.default__reset_csv_table": { - "name": "default__reset_csv_table", + "macro.dbt.default__get_limit_sql": { + "name": "default__get_limit_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/seeds/helpers.sql", - "original_file_path": "macros/materializations/seeds/helpers.sql", - "unique_id": "macro.dbt.default__reset_csv_table", - "macro_sql": "{% macro default__reset_csv_table(model, full_refresh, old_relation, agate_table) %}\n {% set sql = \"\" %}\n {% if full_refresh %}\n {{ adapter.drop_relation(old_relation) }}\n {% set sql = create_csv_table(model, agate_table) %}\n {% else %}\n {{ adapter.truncate_relation(old_relation) }}\n {% set sql = \"truncate table \" ~ old_relation.render() %}\n {% endif %}\n\n {{ return(sql) }}\n{% endmacro %}", + "path": "macros/adapters/show.sql", + "original_file_path": "macros/adapters/show.sql", + "unique_id": "macro.dbt.default__get_limit_sql", + "macro_sql": "{% macro default__get_limit_sql(sql, limit) %}\n {{ compiled_code }}\n {% if limit is not none %}\n limit {{ limit }}\n {%- endif -%}\n{% endmacro %}", "depends_on": { - "macros": [ - "macro.dbt.create_csv_table" - ] + "macros": [] }, "description": "", "meta": {}, @@ -6632,20 +6625,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5604868, + "created_at": 1730458997.0753636, "supported_languages": null }, - "macro.dbt.get_csv_sql": { - "name": "get_csv_sql", + "macro.dbt.get_catalog_relations": { + "name": "get_catalog_relations", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/seeds/helpers.sql", - "original_file_path": "macros/materializations/seeds/helpers.sql", - "unique_id": "macro.dbt.get_csv_sql", - "macro_sql": "{% macro get_csv_sql(create_or_truncate_sql, insert_sql) %}\n {{ adapter.dispatch('get_csv_sql', 'dbt')(create_or_truncate_sql, insert_sql) }}\n{% endmacro %}", + "path": "macros/adapters/metadata.sql", + "original_file_path": "macros/adapters/metadata.sql", + "unique_id": "macro.dbt.get_catalog_relations", + "macro_sql": "{% macro get_catalog_relations(information_schema, relations) -%}\n {{ return(adapter.dispatch('get_catalog_relations', 'dbt')(information_schema, relations)) }}\n{%- endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__get_csv_sql" + "macro.dbt_postgres.postgres__get_catalog_relations" ] }, "description": "", @@ -6656,17 +6649,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.560599, + "created_at": 1730458997.077351, "supported_languages": null }, - "macro.dbt.default__get_csv_sql": { - "name": "default__get_csv_sql", + "macro.dbt.default__get_catalog_relations": { + "name": "default__get_catalog_relations", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/seeds/helpers.sql", - "original_file_path": "macros/materializations/seeds/helpers.sql", - "unique_id": "macro.dbt.default__get_csv_sql", - "macro_sql": "{% macro default__get_csv_sql(create_or_truncate_sql, insert_sql) %}\n {{ create_or_truncate_sql }};\n -- dbt seed --\n {{ insert_sql }}\n{% endmacro %}", + "path": "macros/adapters/metadata.sql", + "original_file_path": "macros/adapters/metadata.sql", + "unique_id": "macro.dbt.default__get_catalog_relations", + "macro_sql": "{% macro default__get_catalog_relations(information_schema, relations) -%}\n {% set typename = adapter.type() %}\n {% set msg -%}\n get_catalog_relations not implemented for {{ typename }}\n {%- endset %}\n\n {{ exceptions.raise_compiler_error(msg) }}\n{%- endmacro %}", "depends_on": { "macros": [] }, @@ -6678,20 +6671,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.560678, + "created_at": 1730458997.0774994, "supported_languages": null }, - "macro.dbt.get_binding_char": { - "name": "get_binding_char", + "macro.dbt.get_catalog": { + "name": "get_catalog", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/seeds/helpers.sql", - "original_file_path": "macros/materializations/seeds/helpers.sql", - "unique_id": "macro.dbt.get_binding_char", - "macro_sql": "{% macro get_binding_char() -%}\n {{ adapter.dispatch('get_binding_char', 'dbt')() }}\n{%- endmacro %}", + "path": "macros/adapters/metadata.sql", + "original_file_path": "macros/adapters/metadata.sql", + "unique_id": "macro.dbt.get_catalog", + "macro_sql": "{% macro get_catalog(information_schema, schemas) -%}\n {{ return(adapter.dispatch('get_catalog', 'dbt')(information_schema, schemas)) }}\n{%- endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__get_binding_char" + "macro.dbt_postgres.postgres__get_catalog" ] }, "description": "", @@ -6702,17 +6695,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.560759, + "created_at": 1730458997.077612, "supported_languages": null }, - "macro.dbt.default__get_binding_char": { - "name": "default__get_binding_char", + "macro.dbt.default__get_catalog": { + "name": "default__get_catalog", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/seeds/helpers.sql", - "original_file_path": "macros/materializations/seeds/helpers.sql", - "unique_id": "macro.dbt.default__get_binding_char", - "macro_sql": "{% macro default__get_binding_char() %}\n {{ return('%s') }}\n{% endmacro %}", + "path": "macros/adapters/metadata.sql", + "original_file_path": "macros/adapters/metadata.sql", + "unique_id": "macro.dbt.default__get_catalog", + "macro_sql": "{% macro default__get_catalog(information_schema, schemas) -%}\n\n {% set typename = adapter.type() %}\n {% set msg -%}\n get_catalog not implemented for {{ typename }}\n {%- endset %}\n\n {{ exceptions.raise_compiler_error(msg) }}\n{% endmacro %}", "depends_on": { "macros": [] }, @@ -6724,20 +6717,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5608242, + "created_at": 1730458997.077749, "supported_languages": null }, - "macro.dbt.get_batch_size": { - "name": "get_batch_size", + "macro.dbt.information_schema_name": { + "name": "information_schema_name", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/seeds/helpers.sql", - "original_file_path": "macros/materializations/seeds/helpers.sql", - "unique_id": "macro.dbt.get_batch_size", - "macro_sql": "{% macro get_batch_size() -%}\n {{ return(adapter.dispatch('get_batch_size', 'dbt')()) }}\n{%- endmacro %}", + "path": "macros/adapters/metadata.sql", + "original_file_path": "macros/adapters/metadata.sql", + "unique_id": "macro.dbt.information_schema_name", + "macro_sql": "{% macro information_schema_name(database) %}\n {{ return(adapter.dispatch('information_schema_name', 'dbt')(database)) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__get_batch_size" + "macro.dbt_postgres.postgres__information_schema_name" ] }, "description": "", @@ -6748,17 +6741,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5609138, + "created_at": 1730458997.0778456, "supported_languages": null }, - "macro.dbt.default__get_batch_size": { - "name": "default__get_batch_size", + "macro.dbt.default__information_schema_name": { + "name": "default__information_schema_name", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/seeds/helpers.sql", - "original_file_path": "macros/materializations/seeds/helpers.sql", - "unique_id": "macro.dbt.default__get_batch_size", - "macro_sql": "{% macro default__get_batch_size() %}\n {{ return(10000) }}\n{% endmacro %}", + "path": "macros/adapters/metadata.sql", + "original_file_path": "macros/adapters/metadata.sql", + "unique_id": "macro.dbt.default__information_schema_name", + "macro_sql": "{% macro default__information_schema_name(database) -%}\n {%- if database -%}\n {{ database }}.INFORMATION_SCHEMA\n {%- else -%}\n INFORMATION_SCHEMA\n {%- endif -%}\n{%- endmacro %}", "depends_on": { "macros": [] }, @@ -6770,19 +6763,21 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.560982, + "created_at": 1730458997.0779898, "supported_languages": null }, - "macro.dbt.get_seed_column_quoted_csv": { - "name": "get_seed_column_quoted_csv", + "macro.dbt.list_schemas": { + "name": "list_schemas", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/seeds/helpers.sql", - "original_file_path": "macros/materializations/seeds/helpers.sql", - "unique_id": "macro.dbt.get_seed_column_quoted_csv", - "macro_sql": "{% macro get_seed_column_quoted_csv(model, column_names) %}\n {%- set quote_seed_column = model['config'].get('quote_columns', None) -%}\n {% set quoted = [] %}\n {% for col in column_names -%}\n {%- do quoted.append(adapter.quote_seed_column(col, quote_seed_column)) -%}\n {%- endfor %}\n\n {%- set dest_cols_csv = quoted | join(', ') -%}\n {{ return(dest_cols_csv) }}\n{% endmacro %}", + "path": "macros/adapters/metadata.sql", + "original_file_path": "macros/adapters/metadata.sql", + "unique_id": "macro.dbt.list_schemas", + "macro_sql": "{% macro list_schemas(database) -%}\n {{ return(adapter.dispatch('list_schemas', 'dbt')(database)) }}\n{% endmacro %}", "depends_on": { - "macros": [] + "macros": [ + "macro.dbt_postgres.postgres__list_schemas" + ] }, "description": "", "meta": {}, @@ -6792,20 +6787,21 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.561244, + "created_at": 1730458997.0780935, "supported_languages": null }, - "macro.dbt.load_csv_rows": { - "name": "load_csv_rows", + "macro.dbt.default__list_schemas": { + "name": "default__list_schemas", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/seeds/helpers.sql", - "original_file_path": "macros/materializations/seeds/helpers.sql", - "unique_id": "macro.dbt.load_csv_rows", - "macro_sql": "{% macro load_csv_rows(model, agate_table) -%}\n {{ adapter.dispatch('load_csv_rows', 'dbt')(model, agate_table) }}\n{%- endmacro %}", + "path": "macros/adapters/metadata.sql", + "original_file_path": "macros/adapters/metadata.sql", + "unique_id": "macro.dbt.default__list_schemas", + "macro_sql": "{% macro default__list_schemas(database) -%}\n {% set sql %}\n select distinct schema_name\n from {{ information_schema_name(database) }}.SCHEMATA\n where catalog_name ilike '{{ database }}'\n {% endset %}\n {{ return(run_query(sql)) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__load_csv_rows" + "macro.dbt.information_schema_name", + "macro.dbt.run_query" ] }, "description": "", @@ -6816,22 +6812,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5613482, + "created_at": 1730458997.0782192, "supported_languages": null }, - "macro.dbt.default__load_csv_rows": { - "name": "default__load_csv_rows", + "macro.dbt.check_schema_exists": { + "name": "check_schema_exists", "resource_type": "macro", "package_name": "dbt", - "path": "macros/materializations/seeds/helpers.sql", - "original_file_path": "macros/materializations/seeds/helpers.sql", - "unique_id": "macro.dbt.default__load_csv_rows", - "macro_sql": "{% macro default__load_csv_rows(model, agate_table) %}\n\n {% set batch_size = get_batch_size() %}\n\n {% set cols_sql = get_seed_column_quoted_csv(model, agate_table.column_names) %}\n {% set bindings = [] %}\n\n {% set statements = [] %}\n\n {% for chunk in agate_table.rows | batch(batch_size) %}\n {% set bindings = [] %}\n\n {% for row in chunk %}\n {% do bindings.extend(row) %}\n {% endfor %}\n\n {% set sql %}\n insert into {{ this.render() }} ({{ cols_sql }}) values\n {% for row in chunk -%}\n ({%- for column in agate_table.column_names -%}\n {{ get_binding_char() }}\n {%- if not loop.last%},{%- endif %}\n {%- endfor -%})\n {%- if not loop.last%},{%- endif %}\n {%- endfor %}\n {% endset %}\n\n {% do adapter.add_query(sql, bindings=bindings, abridge_sql_log=True) %}\n\n {% if loop.index0 == 0 %}\n {% do statements.append(sql) %}\n {% endif %}\n {% endfor %}\n\n {# Return SQL so we can render it out into the compiled files #}\n {{ return(statements[0]) }}\n{% endmacro %}", + "path": "macros/adapters/metadata.sql", + "original_file_path": "macros/adapters/metadata.sql", + "unique_id": "macro.dbt.check_schema_exists", + "macro_sql": "{% macro check_schema_exists(information_schema, schema) -%}\n {{ return(adapter.dispatch('check_schema_exists', 'dbt')(information_schema, schema)) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.get_batch_size", - "macro.dbt.get_seed_column_quoted_csv", - "macro.dbt.get_binding_char" + "macro.dbt_postgres.postgres__check_schema_exists" ] }, "description": "", @@ -6842,20 +6836,21 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.562082, + "created_at": 1730458997.0783267, "supported_languages": null }, - "macro.dbt.generate_alias_name": { - "name": "generate_alias_name", + "macro.dbt.default__check_schema_exists": { + "name": "default__check_schema_exists", "resource_type": "macro", "package_name": "dbt", - "path": "macros/get_custom_name/get_custom_alias.sql", - "original_file_path": "macros/get_custom_name/get_custom_alias.sql", - "unique_id": "macro.dbt.generate_alias_name", - "macro_sql": "{% macro generate_alias_name(custom_alias_name=none, node=none) -%}\n {% do return(adapter.dispatch('generate_alias_name', 'dbt')(custom_alias_name, node)) %}\n{%- endmacro %}", + "path": "macros/adapters/metadata.sql", + "original_file_path": "macros/adapters/metadata.sql", + "unique_id": "macro.dbt.default__check_schema_exists", + "macro_sql": "{% macro default__check_schema_exists(information_schema, schema) -%}\n {% set sql -%}\n select count(*)\n from {{ information_schema.replace(information_schema_view='SCHEMATA') }}\n where catalog_name='{{ information_schema.database }}'\n and schema_name='{{ schema }}'\n {%- endset %}\n {{ return(run_query(sql)) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__generate_alias_name" + "macro.dbt.replace", + "macro.dbt.run_query" ] }, "description": "", @@ -6866,17 +6861,41 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.562339, + "created_at": 1730458997.0784826, "supported_languages": null }, - "macro.dbt.default__generate_alias_name": { - "name": "default__generate_alias_name", + "macro.dbt.list_relations_without_caching": { + "name": "list_relations_without_caching", "resource_type": "macro", "package_name": "dbt", - "path": "macros/get_custom_name/get_custom_alias.sql", - "original_file_path": "macros/get_custom_name/get_custom_alias.sql", - "unique_id": "macro.dbt.default__generate_alias_name", - "macro_sql": "{% macro default__generate_alias_name(custom_alias_name=none, node=none) -%}\n\n {%- if custom_alias_name -%}\n\n {{ custom_alias_name | trim }}\n\n {%- elif node.version -%}\n\n {{ return(node.name ~ \"_v\" ~ (node.version | replace(\".\", \"_\"))) }}\n\n {%- else -%}\n\n {{ node.name }}\n\n {%- endif -%}\n\n{%- endmacro %}", + "path": "macros/adapters/metadata.sql", + "original_file_path": "macros/adapters/metadata.sql", + "unique_id": "macro.dbt.list_relations_without_caching", + "macro_sql": "{% macro list_relations_without_caching(schema_relation) %}\n {{ return(adapter.dispatch('list_relations_without_caching', 'dbt')(schema_relation)) }}\n{% endmacro %}", + "depends_on": { + "macros": [ + "macro.dbt_postgres.postgres__list_relations_without_caching" + ] + }, + "description": "", + "meta": {}, + "docs": { + "show": true, + "node_color": null + }, + "patch_path": null, + "arguments": [], + "created_at": 1730458997.0785782, + "supported_languages": null + }, + "macro.dbt.default__list_relations_without_caching": { + "name": "default__list_relations_without_caching", + "resource_type": "macro", + "package_name": "dbt", + "path": "macros/adapters/metadata.sql", + "original_file_path": "macros/adapters/metadata.sql", + "unique_id": "macro.dbt.default__list_relations_without_caching", + "macro_sql": "{% macro default__list_relations_without_caching(schema_relation) %}\n {{ exceptions.raise_not_implemented(\n 'list_relations_without_caching macro not implemented for adapter '+adapter.type()) }}\n{% endmacro %}", "depends_on": { "macros": [] }, @@ -6888,20 +6907,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5625658, + "created_at": 1730458997.0786612, "supported_languages": null }, - "macro.dbt.generate_schema_name": { - "name": "generate_schema_name", + "macro.dbt.get_catalog_for_single_relation": { + "name": "get_catalog_for_single_relation", "resource_type": "macro", "package_name": "dbt", - "path": "macros/get_custom_name/get_custom_schema.sql", - "original_file_path": "macros/get_custom_name/get_custom_schema.sql", - "unique_id": "macro.dbt.generate_schema_name", - "macro_sql": "{% macro generate_schema_name(custom_schema_name=none, node=none) -%}\n {{ return(adapter.dispatch('generate_schema_name', 'dbt')(custom_schema_name, node)) }}\n{% endmacro %}", + "path": "macros/adapters/metadata.sql", + "original_file_path": "macros/adapters/metadata.sql", + "unique_id": "macro.dbt.get_catalog_for_single_relation", + "macro_sql": "{% macro get_catalog_for_single_relation(relation) %}\n {{ return(adapter.dispatch('get_catalog_for_single_relation', 'dbt')(relation)) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__generate_schema_name" + "macro.dbt.default__get_catalog_for_single_relation" ] }, "description": "", @@ -6912,17 +6931,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.562901, + "created_at": 1730458997.0787551, "supported_languages": null }, - "macro.dbt.default__generate_schema_name": { - "name": "default__generate_schema_name", + "macro.dbt.default__get_catalog_for_single_relation": { + "name": "default__get_catalog_for_single_relation", "resource_type": "macro", "package_name": "dbt", - "path": "macros/get_custom_name/get_custom_schema.sql", - "original_file_path": "macros/get_custom_name/get_custom_schema.sql", - "unique_id": "macro.dbt.default__generate_schema_name", - "macro_sql": "{% macro default__generate_schema_name(custom_schema_name, node) -%}\n\n {%- set default_schema = target.schema -%}\n {%- if custom_schema_name is none -%}\n\n {{ default_schema }}\n\n {%- else -%}\n\n {{ default_schema }}_{{ custom_schema_name | trim }}\n\n {%- endif -%}\n\n{%- endmacro %}", + "path": "macros/adapters/metadata.sql", + "original_file_path": "macros/adapters/metadata.sql", + "unique_id": "macro.dbt.default__get_catalog_for_single_relation", + "macro_sql": "{% macro default__get_catalog_for_single_relation(relation) %}\n {{ exceptions.raise_not_implemented(\n 'get_catalog_for_single_relation macro not implemented for adapter '+adapter.type()) }}\n{% endmacro %}", "depends_on": { "macros": [] }, @@ -6934,19 +6953,21 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.563048, + "created_at": 1730458997.0788398, "supported_languages": null }, - "macro.dbt.generate_schema_name_for_env": { - "name": "generate_schema_name_for_env", + "macro.dbt.get_relations": { + "name": "get_relations", "resource_type": "macro", "package_name": "dbt", - "path": "macros/get_custom_name/get_custom_schema.sql", - "original_file_path": "macros/get_custom_name/get_custom_schema.sql", - "unique_id": "macro.dbt.generate_schema_name_for_env", - "macro_sql": "{% macro generate_schema_name_for_env(custom_schema_name, node) -%}\n\n {%- set default_schema = target.schema -%}\n {%- if target.name == 'prod' and custom_schema_name is not none -%}\n\n {{ custom_schema_name | trim }}\n\n {%- else -%}\n\n {{ default_schema }}\n\n {%- endif -%}\n\n{%- endmacro %}", + "path": "macros/adapters/metadata.sql", + "original_file_path": "macros/adapters/metadata.sql", + "unique_id": "macro.dbt.get_relations", + "macro_sql": "{% macro get_relations() %}\n {{ return(adapter.dispatch('get_relations', 'dbt')()) }}\n{% endmacro %}", "depends_on": { - "macros": [] + "macros": [ + "macro.dbt_postgres.postgres__get_relations" + ] }, "description": "", "meta": {}, @@ -6956,21 +6977,19 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.563212, + "created_at": 1730458997.0789225, "supported_languages": null }, - "macro.dbt.generate_database_name": { - "name": "generate_database_name", + "macro.dbt.default__get_relations": { + "name": "default__get_relations", "resource_type": "macro", "package_name": "dbt", - "path": "macros/get_custom_name/get_custom_database.sql", - "original_file_path": "macros/get_custom_name/get_custom_database.sql", - "unique_id": "macro.dbt.generate_database_name", - "macro_sql": "{% macro generate_database_name(custom_database_name=none, node=none) -%}\n {% do return(adapter.dispatch('generate_database_name', 'dbt')(custom_database_name, node)) %}\n{%- endmacro %}", + "path": "macros/adapters/metadata.sql", + "original_file_path": "macros/adapters/metadata.sql", + "unique_id": "macro.dbt.default__get_relations", + "macro_sql": "{% macro default__get_relations() %}\n {{ exceptions.raise_not_implemented(\n 'get_relations macro not implemented for adapter '+adapter.type()) }}\n{% endmacro %}", "depends_on": { - "macros": [ - "macro.dbt.default__generate_database_name" - ] + "macros": [] }, "description": "", "meta": {}, @@ -6980,19 +6999,21 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5634549, + "created_at": 1730458997.0790052, "supported_languages": null }, - "macro.dbt.default__generate_database_name": { - "name": "default__generate_database_name", + "macro.dbt.get_relation_last_modified": { + "name": "get_relation_last_modified", "resource_type": "macro", "package_name": "dbt", - "path": "macros/get_custom_name/get_custom_database.sql", - "original_file_path": "macros/get_custom_name/get_custom_database.sql", - "unique_id": "macro.dbt.default__generate_database_name", - "macro_sql": "{% macro default__generate_database_name(custom_database_name=none, node=none) -%}\n {%- set default_database = target.database -%}\n {%- if custom_database_name is none -%}\n\n {{ default_database }}\n\n {%- else -%}\n\n {{ custom_database_name }}\n\n {%- endif -%}\n\n{%- endmacro %}", + "path": "macros/adapters/metadata.sql", + "original_file_path": "macros/adapters/metadata.sql", + "unique_id": "macro.dbt.get_relation_last_modified", + "macro_sql": "{% macro get_relation_last_modified(information_schema, relations) %}\n {{ return(adapter.dispatch('get_relation_last_modified', 'dbt')(information_schema, relations)) }}\n{% endmacro %}", "depends_on": { - "macros": [] + "macros": [ + "macro.dbt.default__get_relation_last_modified" + ] }, "description": "", "meta": {}, @@ -7002,21 +7023,19 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.56361, + "created_at": 1730458997.079108, "supported_languages": null }, - "macro.dbt.get_drop_sql": { - "name": "get_drop_sql", + "macro.dbt.default__get_relation_last_modified": { + "name": "default__get_relation_last_modified", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/drop.sql", - "original_file_path": "macros/relations/drop.sql", - "unique_id": "macro.dbt.get_drop_sql", - "macro_sql": "{%- macro get_drop_sql(relation) -%}\n {{- log('Applying DROP to: ' ~ relation) -}}\n {{- adapter.dispatch('get_drop_sql', 'dbt')(relation) -}}\n{%- endmacro -%}\n\n\n", + "path": "macros/adapters/metadata.sql", + "original_file_path": "macros/adapters/metadata.sql", + "unique_id": "macro.dbt.default__get_relation_last_modified", + "macro_sql": "{% macro default__get_relation_last_modified(information_schema, relations) %}\n {{ exceptions.raise_not_implemented(\n 'get_relation_last_modified macro not implemented for adapter ' + adapter.type()) }}\n{% endmacro %}", "depends_on": { - "macros": [ - "macro.dbt.default__get_drop_sql" - ] + "macros": [] }, "description": "", "meta": {}, @@ -7026,22 +7045,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.56412, + "created_at": 1730458997.0791962, "supported_languages": null }, - "macro.dbt.default__get_drop_sql": { - "name": "default__get_drop_sql", + "macro.dbt.run_hooks": { + "name": "run_hooks", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/drop.sql", - "original_file_path": "macros/relations/drop.sql", - "unique_id": "macro.dbt.default__get_drop_sql", - "macro_sql": "{%- macro default__get_drop_sql(relation) -%}\n\n {%- if relation.is_view -%}\n {{ drop_view(relation) }}\n\n {%- elif relation.is_table -%}\n {{ drop_table(relation) }}\n\n {%- elif relation.is_materialized_view -%}\n {{ drop_materialized_view(relation) }}\n\n {%- else -%}\n drop {{ relation.type }} if exists {{ relation.render() }} cascade\n\n {%- endif -%}\n\n{%- endmacro -%}\n\n\n", + "path": "macros/materializations/hooks.sql", + "original_file_path": "macros/materializations/hooks.sql", + "unique_id": "macro.dbt.run_hooks", + "macro_sql": "{% macro run_hooks(hooks, inside_transaction=True) %}\n {% for hook in hooks | selectattr('transaction', 'equalto', inside_transaction) %}\n {% if not inside_transaction and loop.first %}\n {% call statement(auto_begin=inside_transaction) %}\n commit;\n {% endcall %}\n {% endif %}\n {% set rendered = render(hook.get('sql')) | trim %}\n {% if (rendered | length) > 0 %}\n {% call statement(auto_begin=inside_transaction) %}\n {{ rendered }}\n {% endcall %}\n {% endif %}\n {% endfor %}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.drop_view", - "macro.dbt.drop_table", - "macro.dbt.drop_materialized_view" + "macro.dbt.statement" ] }, "description": "", @@ -7052,21 +7069,19 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.564332, + "created_at": 1730458997.079764, "supported_languages": null }, - "macro.dbt.drop_relation": { - "name": "drop_relation", + "macro.dbt.make_hook_config": { + "name": "make_hook_config", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/drop.sql", - "original_file_path": "macros/relations/drop.sql", - "unique_id": "macro.dbt.drop_relation", - "macro_sql": "{% macro drop_relation(relation) -%}\n {{ return(adapter.dispatch('drop_relation', 'dbt')(relation)) }}\n{% endmacro %}", + "path": "macros/materializations/hooks.sql", + "original_file_path": "macros/materializations/hooks.sql", + "unique_id": "macro.dbt.make_hook_config", + "macro_sql": "{% macro make_hook_config(sql, inside_transaction) %}\n {{ tojson({\"sql\": sql, \"transaction\": inside_transaction}) }}\n{% endmacro %}", "depends_on": { - "macros": [ - "macro.dbt.default__drop_relation" - ] + "macros": [] }, "description": "", "meta": {}, @@ -7076,21 +7091,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.564429, + "created_at": 1730458997.0798671, "supported_languages": null }, - "macro.dbt.default__drop_relation": { - "name": "default__drop_relation", + "macro.dbt.before_begin": { + "name": "before_begin", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/drop.sql", - "original_file_path": "macros/relations/drop.sql", - "unique_id": "macro.dbt.default__drop_relation", - "macro_sql": "{% macro default__drop_relation(relation) -%}\n {% call statement('drop_relation', auto_begin=False) -%}\n {{ get_drop_sql(relation) }}\n {%- endcall %}\n{% endmacro %}", + "path": "macros/materializations/hooks.sql", + "original_file_path": "macros/materializations/hooks.sql", + "unique_id": "macro.dbt.before_begin", + "macro_sql": "{% macro before_begin(sql) %}\n {{ make_hook_config(sql, inside_transaction=False) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.statement", - "macro.dbt.get_drop_sql" + "macro.dbt.make_hook_config" ] }, "description": "", @@ -7101,19 +7115,21 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.564536, + "created_at": 1730458997.0799463, "supported_languages": null }, - "macro.dbt.drop_relation_if_exists": { - "name": "drop_relation_if_exists", + "macro.dbt.in_transaction": { + "name": "in_transaction", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/drop.sql", - "original_file_path": "macros/relations/drop.sql", - "unique_id": "macro.dbt.drop_relation_if_exists", - "macro_sql": "{% macro drop_relation_if_exists(relation) %}\n {% if relation is not none %}\n {{ adapter.drop_relation(relation) }}\n {% endif %}\n{% endmacro %}", + "path": "macros/materializations/hooks.sql", + "original_file_path": "macros/materializations/hooks.sql", + "unique_id": "macro.dbt.in_transaction", + "macro_sql": "{% macro in_transaction(sql) %}\n {{ make_hook_config(sql, inside_transaction=True) }}\n{% endmacro %}", "depends_on": { - "macros": [] + "macros": [ + "macro.dbt.make_hook_config" + ] }, "description": "", "meta": {}, @@ -7123,20 +7139,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.564637, + "created_at": 1730458997.080022, "supported_languages": null }, - "macro.dbt.get_replace_sql": { - "name": "get_replace_sql", + "macro.dbt.after_commit": { + "name": "after_commit", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/replace.sql", - "original_file_path": "macros/relations/replace.sql", - "unique_id": "macro.dbt.get_replace_sql", - "macro_sql": "{% macro get_replace_sql(existing_relation, target_relation, sql) %}\n {{- log('Applying REPLACE to: ' ~ existing_relation) -}}\n {{- adapter.dispatch('get_replace_sql', 'dbt')(existing_relation, target_relation, sql) -}}\n{% endmacro %}", + "path": "macros/materializations/hooks.sql", + "original_file_path": "macros/materializations/hooks.sql", + "unique_id": "macro.dbt.after_commit", + "macro_sql": "{% macro after_commit(sql) %}\n {{ make_hook_config(sql, inside_transaction=False) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__get_replace_sql" + "macro.dbt.make_hook_config" ] }, "description": "", @@ -7147,29 +7163,19 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.565141, + "created_at": 1730458997.0800936, "supported_languages": null }, - "macro.dbt.default__get_replace_sql": { - "name": "default__get_replace_sql", + "macro.dbt.set_sql_header": { + "name": "set_sql_header", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/replace.sql", - "original_file_path": "macros/relations/replace.sql", - "unique_id": "macro.dbt.default__get_replace_sql", - "macro_sql": "{% macro default__get_replace_sql(existing_relation, target_relation, sql) %}\n\n {# /* use a create or replace statement if possible */ #}\n\n {% set is_replaceable = existing_relation.type == target_relation_type and existing_relation.can_be_replaced %}\n\n {% if is_replaceable and existing_relation.is_view %}\n {{ get_replace_view_sql(target_relation, sql) }}\n\n {% elif is_replaceable and existing_relation.is_table %}\n {{ get_replace_table_sql(target_relation, sql) }}\n\n {% elif is_replaceable and existing_relation.is_materialized_view %}\n {{ get_replace_materialized_view_sql(target_relation, sql) }}\n\n {# /* a create or replace statement is not possible, so try to stage and/or backup to be safe */ #}\n\n {# /* create target_relation as an intermediate relation, then swap it out with the existing one using a backup */ #}\n {%- elif target_relation.can_be_renamed and existing_relation.can_be_renamed -%}\n {{ get_create_intermediate_sql(target_relation, sql) }};\n {{ get_create_backup_sql(existing_relation) }};\n {{ get_rename_intermediate_sql(target_relation) }};\n {{ get_drop_backup_sql(existing_relation) }}\n\n {# /* create target_relation as an intermediate relation, then swap it out with the existing one without using a backup */ #}\n {%- elif target_relation.can_be_renamed -%}\n {{ get_create_intermediate_sql(target_relation, sql) }};\n {{ get_drop_sql(existing_relation) }};\n {{ get_rename_intermediate_sql(target_relation) }}\n\n {# /* create target_relation in place by first backing up the existing relation */ #}\n {%- elif existing_relation.can_be_renamed -%}\n {{ get_create_backup_sql(existing_relation) }};\n {{ get_create_sql(target_relation, sql) }};\n {{ get_drop_backup_sql(existing_relation) }}\n\n {# /* no renaming is allowed, so just drop and create */ #}\n {%- else -%}\n {{ get_drop_sql(existing_relation) }};\n {{ get_create_sql(target_relation, sql) }}\n\n {%- endif -%}\n\n{% endmacro %}", + "path": "macros/materializations/configs.sql", + "original_file_path": "macros/materializations/configs.sql", + "unique_id": "macro.dbt.set_sql_header", + "macro_sql": "{% macro set_sql_header(config) -%}\n {{ config.set('sql_header', caller()) }}\n{%- endmacro %}", "depends_on": { - "macros": [ - "macro.dbt.get_replace_view_sql", - "macro.dbt.get_replace_table_sql", - "macro.dbt.get_replace_materialized_view_sql", - "macro.dbt.get_create_intermediate_sql", - "macro.dbt.get_create_backup_sql", - "macro.dbt.get_rename_intermediate_sql", - "macro.dbt.get_drop_backup_sql", - "macro.dbt.get_drop_sql", - "macro.dbt.get_create_sql" - ] + "macros": [] }, "description": "", "meta": {}, @@ -7179,21 +7185,19 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.565762, + "created_at": 1730458997.0803077, "supported_languages": null }, - "macro.dbt.get_create_intermediate_sql": { - "name": "get_create_intermediate_sql", + "macro.dbt.should_full_refresh": { + "name": "should_full_refresh", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/create_intermediate.sql", - "original_file_path": "macros/relations/create_intermediate.sql", - "unique_id": "macro.dbt.get_create_intermediate_sql", - "macro_sql": "{%- macro get_create_intermediate_sql(relation, sql) -%}\n {{- log('Applying CREATE INTERMEDIATE to: ' ~ relation) -}}\n {{- adapter.dispatch('get_create_intermediate_sql', 'dbt')(relation, sql) -}}\n{%- endmacro -%}\n\n\n", + "path": "macros/materializations/configs.sql", + "original_file_path": "macros/materializations/configs.sql", + "unique_id": "macro.dbt.should_full_refresh", + "macro_sql": "{% macro should_full_refresh() %}\n {% set config_full_refresh = config.get('full_refresh') %}\n {% if config_full_refresh is none %}\n {% set config_full_refresh = flags.FULL_REFRESH %}\n {% endif %}\n {% do return(config_full_refresh) %}\n{% endmacro %}", "depends_on": { - "macros": [ - "macro.dbt.default__get_create_intermediate_sql" - ] + "macros": [] }, "description": "", "meta": {}, @@ -7203,23 +7207,19 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.565978, + "created_at": 1730458997.0804768, "supported_languages": null }, - "macro.dbt.default__get_create_intermediate_sql": { - "name": "default__get_create_intermediate_sql", + "macro.dbt.should_store_failures": { + "name": "should_store_failures", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/create_intermediate.sql", - "original_file_path": "macros/relations/create_intermediate.sql", - "unique_id": "macro.dbt.default__get_create_intermediate_sql", - "macro_sql": "{%- macro default__get_create_intermediate_sql(relation, sql) -%}\n\n -- get the standard intermediate name\n {% set intermediate_relation = make_intermediate_relation(relation) %}\n\n -- drop any pre-existing intermediate\n {{ get_drop_sql(intermediate_relation) }};\n\n {{ get_create_sql(intermediate_relation, sql) }}\n\n{%- endmacro -%}", + "path": "macros/materializations/configs.sql", + "original_file_path": "macros/materializations/configs.sql", + "unique_id": "macro.dbt.should_store_failures", + "macro_sql": "{% macro should_store_failures() %}\n {% set config_store_failures = config.get('store_failures') %}\n {% if config_store_failures is none %}\n {% set config_store_failures = flags.STORE_FAILURES %}\n {% endif %}\n {% do return(config_store_failures) %}\n{% endmacro %}", "depends_on": { - "macros": [ - "macro.dbt.make_intermediate_relation", - "macro.dbt.get_drop_sql", - "macro.dbt.get_create_sql" - ] + "macros": [] }, "description": "", "meta": {}, @@ -7229,20 +7229,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.566112, + "created_at": 1730458997.0806465, "supported_languages": null }, - "macro.dbt.drop_schema_named": { - "name": "drop_schema_named", + "macro.dbt.create_csv_table": { + "name": "create_csv_table", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/schema.sql", - "original_file_path": "macros/relations/schema.sql", - "unique_id": "macro.dbt.drop_schema_named", - "macro_sql": "{% macro drop_schema_named(schema_name) %}\n {{ return(adapter.dispatch('drop_schema_named', 'dbt') (schema_name)) }}\n{% endmacro %}", + "path": "macros/materializations/seeds/helpers.sql", + "original_file_path": "macros/materializations/seeds/helpers.sql", + "unique_id": "macro.dbt.create_csv_table", + "macro_sql": "{% macro create_csv_table(model, agate_table) -%}\n {{ adapter.dispatch('create_csv_table', 'dbt')(model, agate_table) }}\n{%- endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__drop_schema_named" + "macro.dbt.default__create_csv_table" ] }, "description": "", @@ -7253,19 +7253,21 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.566262, + "created_at": 1730458997.083524, "supported_languages": null }, - "macro.dbt.default__drop_schema_named": { - "name": "default__drop_schema_named", + "macro.dbt.default__create_csv_table": { + "name": "default__create_csv_table", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/schema.sql", - "original_file_path": "macros/relations/schema.sql", - "unique_id": "macro.dbt.default__drop_schema_named", - "macro_sql": "{% macro default__drop_schema_named(schema_name) %}\n {% set schema_relation = api.Relation.create(schema=schema_name) %}\n {{ adapter.drop_schema(schema_relation) }}\n{% endmacro %}", + "path": "macros/materializations/seeds/helpers.sql", + "original_file_path": "macros/materializations/seeds/helpers.sql", + "unique_id": "macro.dbt.default__create_csv_table", + "macro_sql": "{% macro default__create_csv_table(model, agate_table) %}\n {%- set column_override = model['config'].get('column_types', {}) -%}\n {%- set quote_seed_column = model['config'].get('quote_columns', None) -%}\n\n {% set sql %}\n create table {{ this.render() }} (\n {%- for col_name in agate_table.column_names -%}\n {%- set inferred_type = adapter.convert_type(agate_table, loop.index0) -%}\n {%- set type = column_override.get(col_name, inferred_type) -%}\n {%- set column_name = (col_name | string) -%}\n {{ adapter.quote_seed_column(column_name, quote_seed_column) }} {{ type }} {%- if not loop.last -%}, {%- endif -%}\n {%- endfor -%}\n )\n {% endset %}\n\n {% call statement('_') -%}\n {{ sql }}\n {%- endcall %}\n\n {{ return(sql) }}\n{% endmacro %}", "depends_on": { - "macros": [] + "macros": [ + "macro.dbt.statement" + ] }, "description": "", "meta": {}, @@ -7275,20 +7277,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.566371, + "created_at": 1730458997.0839913, "supported_languages": null }, - "macro.dbt.get_drop_backup_sql": { - "name": "get_drop_backup_sql", + "macro.dbt.reset_csv_table": { + "name": "reset_csv_table", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/drop_backup.sql", - "original_file_path": "macros/relations/drop_backup.sql", - "unique_id": "macro.dbt.get_drop_backup_sql", - "macro_sql": "{%- macro get_drop_backup_sql(relation) -%}\n {{- log('Applying DROP BACKUP to: ' ~ relation) -}}\n {{- adapter.dispatch('get_drop_backup_sql', 'dbt')(relation) -}}\n{%- endmacro -%}\n\n\n", + "path": "macros/materializations/seeds/helpers.sql", + "original_file_path": "macros/materializations/seeds/helpers.sql", + "unique_id": "macro.dbt.reset_csv_table", + "macro_sql": "{% macro reset_csv_table(model, full_refresh, old_relation, agate_table) -%}\n {{ adapter.dispatch('reset_csv_table', 'dbt')(model, full_refresh, old_relation, agate_table) }}\n{%- endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__get_drop_backup_sql" + "macro.dbt.default__reset_csv_table" ] }, "description": "", @@ -7299,21 +7301,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.566547, + "created_at": 1730458997.0841138, "supported_languages": null }, - "macro.dbt.default__get_drop_backup_sql": { - "name": "default__get_drop_backup_sql", + "macro.dbt.default__reset_csv_table": { + "name": "default__reset_csv_table", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/drop_backup.sql", - "original_file_path": "macros/relations/drop_backup.sql", - "unique_id": "macro.dbt.default__get_drop_backup_sql", - "macro_sql": "{%- macro default__get_drop_backup_sql(relation) -%}\n\n -- get the standard backup name\n {% set backup_relation = make_backup_relation(relation, relation.type) %}\n\n {{ get_drop_sql(backup_relation) }}\n\n{%- endmacro -%}", + "path": "macros/materializations/seeds/helpers.sql", + "original_file_path": "macros/materializations/seeds/helpers.sql", + "unique_id": "macro.dbt.default__reset_csv_table", + "macro_sql": "{% macro default__reset_csv_table(model, full_refresh, old_relation, agate_table) %}\n {% set sql = \"\" %}\n {% if full_refresh %}\n {{ adapter.drop_relation(old_relation) }}\n {% set sql = create_csv_table(model, agate_table) %}\n {% else %}\n {{ adapter.truncate_relation(old_relation) }}\n {% set sql = \"truncate table \" ~ old_relation.render() %}\n {% endif %}\n\n {{ return(sql) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.make_backup_relation", - "macro.dbt.get_drop_sql" + "macro.dbt.create_csv_table" ] }, "description": "", @@ -7324,20 +7325,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.566654, + "created_at": 1730458997.0843694, "supported_languages": null }, - "macro.dbt.get_rename_sql": { - "name": "get_rename_sql", + "macro.dbt.get_csv_sql": { + "name": "get_csv_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/rename.sql", - "original_file_path": "macros/relations/rename.sql", - "unique_id": "macro.dbt.get_rename_sql", - "macro_sql": "{%- macro get_rename_sql(relation, new_name) -%}\n {{- log('Applying RENAME to: ' ~ relation) -}}\n {{- adapter.dispatch('get_rename_sql', 'dbt')(relation, new_name) -}}\n{%- endmacro -%}\n\n\n", + "path": "macros/materializations/seeds/helpers.sql", + "original_file_path": "macros/materializations/seeds/helpers.sql", + "unique_id": "macro.dbt.get_csv_sql", + "macro_sql": "{% macro get_csv_sql(create_or_truncate_sql, insert_sql) %}\n {{ adapter.dispatch('get_csv_sql', 'dbt')(create_or_truncate_sql, insert_sql) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__get_rename_sql" + "macro.dbt.default__get_csv_sql" ] }, "description": "", @@ -7348,23 +7349,19 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.567064, + "created_at": 1730458997.0845253, "supported_languages": null }, - "macro.dbt.default__get_rename_sql": { - "name": "default__get_rename_sql", + "macro.dbt.default__get_csv_sql": { + "name": "default__get_csv_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/rename.sql", - "original_file_path": "macros/relations/rename.sql", - "unique_id": "macro.dbt.default__get_rename_sql", - "macro_sql": "{%- macro default__get_rename_sql(relation, new_name) -%}\n\n {%- if relation.is_view -%}\n {{ get_rename_view_sql(relation, new_name) }}\n\n {%- elif relation.is_table -%}\n {{ get_rename_table_sql(relation, new_name) }}\n\n {%- elif relation.is_materialized_view -%}\n {{ get_rename_materialized_view_sql(relation, new_name) }}\n\n {%- else -%}\n {{- exceptions.raise_compiler_error(\"`get_rename_sql` has not been implemented for: \" ~ relation.type ) -}}\n\n {%- endif -%}\n\n{%- endmacro -%}\n\n\n", + "path": "macros/materializations/seeds/helpers.sql", + "original_file_path": "macros/materializations/seeds/helpers.sql", + "unique_id": "macro.dbt.default__get_csv_sql", + "macro_sql": "{% macro default__get_csv_sql(create_or_truncate_sql, insert_sql) %}\n {{ create_or_truncate_sql }};\n -- dbt seed --\n {{ insert_sql }}\n{% endmacro %}", "depends_on": { - "macros": [ - "macro.dbt.get_rename_view_sql", - "macro.dbt.get_rename_table_sql", - "macro.dbt.get_rename_materialized_view_sql" - ] + "macros": [] }, "description": "", "meta": {}, @@ -7374,20 +7371,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5672882, + "created_at": 1730458997.0845964, "supported_languages": null }, - "macro.dbt.rename_relation": { - "name": "rename_relation", + "macro.dbt.get_binding_char": { + "name": "get_binding_char", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/rename.sql", - "original_file_path": "macros/relations/rename.sql", - "unique_id": "macro.dbt.rename_relation", - "macro_sql": "{% macro rename_relation(from_relation, to_relation) -%}\n {{ return(adapter.dispatch('rename_relation', 'dbt')(from_relation, to_relation)) }}\n{% endmacro %}", + "path": "macros/materializations/seeds/helpers.sql", + "original_file_path": "macros/materializations/seeds/helpers.sql", + "unique_id": "macro.dbt.get_binding_char", + "macro_sql": "{% macro get_binding_char() -%}\n {{ adapter.dispatch('get_binding_char', 'dbt')() }}\n{%- endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__rename_relation" + "macro.dbt.default__get_binding_char" ] }, "description": "", @@ -7398,21 +7395,19 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.567397, + "created_at": 1730458997.0846715, "supported_languages": null }, - "macro.dbt.default__rename_relation": { - "name": "default__rename_relation", + "macro.dbt.default__get_binding_char": { + "name": "default__get_binding_char", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/rename.sql", - "original_file_path": "macros/relations/rename.sql", - "unique_id": "macro.dbt.default__rename_relation", - "macro_sql": "{% macro default__rename_relation(from_relation, to_relation) -%}\n {% set target_name = adapter.quote_as_configured(to_relation.identifier, 'identifier') %}\n {% call statement('rename_relation') -%}\n alter table {{ from_relation.render() }} rename to {{ target_name }}\n {%- endcall %}\n{% endmacro %}", + "path": "macros/materializations/seeds/helpers.sql", + "original_file_path": "macros/materializations/seeds/helpers.sql", + "unique_id": "macro.dbt.default__get_binding_char", + "macro_sql": "{% macro default__get_binding_char() %}\n {{ return('%s') }}\n{% endmacro %}", "depends_on": { - "macros": [ - "macro.dbt.statement" - ] + "macros": [] }, "description": "", "meta": {}, @@ -7422,20 +7417,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.567552, + "created_at": 1730458997.084731, "supported_languages": null }, - "macro.dbt.get_create_backup_sql": { - "name": "get_create_backup_sql", + "macro.dbt.get_batch_size": { + "name": "get_batch_size", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/create_backup.sql", - "original_file_path": "macros/relations/create_backup.sql", - "unique_id": "macro.dbt.get_create_backup_sql", - "macro_sql": "{%- macro get_create_backup_sql(relation) -%}\n {{- log('Applying CREATE BACKUP to: ' ~ relation) -}}\n {{- adapter.dispatch('get_create_backup_sql', 'dbt')(relation) -}}\n{%- endmacro -%}\n\n\n", + "path": "macros/materializations/seeds/helpers.sql", + "original_file_path": "macros/materializations/seeds/helpers.sql", + "unique_id": "macro.dbt.get_batch_size", + "macro_sql": "{% macro get_batch_size() -%}\n {{ return(adapter.dispatch('get_batch_size', 'dbt')()) }}\n{%- endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__get_create_backup_sql" + "macro.dbt.default__get_batch_size" ] }, "description": "", @@ -7446,23 +7441,19 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5677629, + "created_at": 1730458997.0848117, "supported_languages": null }, - "macro.dbt.default__get_create_backup_sql": { - "name": "default__get_create_backup_sql", + "macro.dbt.default__get_batch_size": { + "name": "default__get_batch_size", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/create_backup.sql", - "original_file_path": "macros/relations/create_backup.sql", - "unique_id": "macro.dbt.default__get_create_backup_sql", - "macro_sql": "{%- macro default__get_create_backup_sql(relation) -%}\n\n -- get the standard backup name\n {% set backup_relation = make_backup_relation(relation, relation.type) %}\n\n -- drop any pre-existing backup\n {{ get_drop_sql(backup_relation) }};\n\n {{ get_rename_sql(relation, backup_relation.identifier) }}\n\n{%- endmacro -%}", + "path": "macros/materializations/seeds/helpers.sql", + "original_file_path": "macros/materializations/seeds/helpers.sql", + "unique_id": "macro.dbt.default__get_batch_size", + "macro_sql": "{% macro default__get_batch_size() %}\n {{ return(10000) }}\n{% endmacro %}", "depends_on": { - "macros": [ - "macro.dbt.make_backup_relation", - "macro.dbt.get_drop_sql", - "macro.dbt.get_rename_sql" - ] + "macros": [] }, "description": "", "meta": {}, @@ -7472,21 +7463,19 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.567992, + "created_at": 1730458997.084873, "supported_languages": null }, - "macro.dbt.get_create_sql": { - "name": "get_create_sql", + "macro.dbt.get_seed_column_quoted_csv": { + "name": "get_seed_column_quoted_csv", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/create.sql", - "original_file_path": "macros/relations/create.sql", - "unique_id": "macro.dbt.get_create_sql", - "macro_sql": "{%- macro get_create_sql(relation, sql) -%}\n {{- log('Applying CREATE to: ' ~ relation) -}}\n {{- adapter.dispatch('get_create_sql', 'dbt')(relation, sql) -}}\n{%- endmacro -%}\n\n\n", + "path": "macros/materializations/seeds/helpers.sql", + "original_file_path": "macros/materializations/seeds/helpers.sql", + "unique_id": "macro.dbt.get_seed_column_quoted_csv", + "macro_sql": "{% macro get_seed_column_quoted_csv(model, column_names) %}\n {%- set quote_seed_column = model['config'].get('quote_columns', None) -%}\n {% set quoted = [] %}\n {% for col in column_names -%}\n {%- do quoted.append(adapter.quote_seed_column(col, quote_seed_column)) -%}\n {%- endfor %}\n\n {%- set dest_cols_csv = quoted | join(', ') -%}\n {{ return(dest_cols_csv) }}\n{% endmacro %}", "depends_on": { - "macros": [ - "macro.dbt.default__get_create_sql" - ] + "macros": [] }, "description": "", "meta": {}, @@ -7496,22 +7485,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.568266, + "created_at": 1730458997.085141, "supported_languages": null }, - "macro.dbt.default__get_create_sql": { - "name": "default__get_create_sql", + "macro.dbt.load_csv_rows": { + "name": "load_csv_rows", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/create.sql", - "original_file_path": "macros/relations/create.sql", - "unique_id": "macro.dbt.default__get_create_sql", - "macro_sql": "{%- macro default__get_create_sql(relation, sql) -%}\n\n {%- if relation.is_view -%}\n {{ get_create_view_as_sql(relation, sql) }}\n\n {%- elif relation.is_table -%}\n {{ get_create_table_as_sql(False, relation, sql) }}\n\n {%- elif relation.is_materialized_view -%}\n {{ get_create_materialized_view_as_sql(relation, sql) }}\n\n {%- else -%}\n {{- exceptions.raise_compiler_error(\"`get_create_sql` has not been implemented for: \" ~ relation.type ) -}}\n\n {%- endif -%}\n\n{%- endmacro -%}", + "path": "macros/materializations/seeds/helpers.sql", + "original_file_path": "macros/materializations/seeds/helpers.sql", + "unique_id": "macro.dbt.load_csv_rows", + "macro_sql": "{% macro load_csv_rows(model, agate_table) -%}\n {{ adapter.dispatch('load_csv_rows', 'dbt')(model, agate_table) }}\n{%- endmacro %}", "depends_on": { "macros": [ - "macro.dbt.get_create_view_as_sql", - "macro.dbt.get_create_table_as_sql", - "macro.dbt.get_create_materialized_view_as_sql" + "macro.dbt.default__load_csv_rows" ] }, "description": "", @@ -7522,20 +7509,22 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.568498, + "created_at": 1730458997.0852396, "supported_languages": null }, - "macro.dbt.get_rename_intermediate_sql": { - "name": "get_rename_intermediate_sql", + "macro.dbt.default__load_csv_rows": { + "name": "default__load_csv_rows", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/rename_intermediate.sql", - "original_file_path": "macros/relations/rename_intermediate.sql", - "unique_id": "macro.dbt.get_rename_intermediate_sql", - "macro_sql": "{%- macro get_rename_intermediate_sql(relation) -%}\n {{- log('Applying RENAME INTERMEDIATE to: ' ~ relation) -}}\n {{- adapter.dispatch('get_rename_intermediate_sql', 'dbt')(relation) -}}\n{%- endmacro -%}\n\n\n", + "path": "macros/materializations/seeds/helpers.sql", + "original_file_path": "macros/materializations/seeds/helpers.sql", + "unique_id": "macro.dbt.default__load_csv_rows", + "macro_sql": "{% macro default__load_csv_rows(model, agate_table) %}\n\n {% set batch_size = get_batch_size() %}\n\n {% set cols_sql = get_seed_column_quoted_csv(model, agate_table.column_names) %}\n {% set bindings = [] %}\n\n {% set statements = [] %}\n\n {% for chunk in agate_table.rows | batch(batch_size) %}\n {% set bindings = [] %}\n\n {% for row in chunk %}\n {% do bindings.extend(row) %}\n {% endfor %}\n\n {% set sql %}\n insert into {{ this.render() }} ({{ cols_sql }}) values\n {% for row in chunk -%}\n ({%- for column in agate_table.column_names -%}\n {{ get_binding_char() }}\n {%- if not loop.last%},{%- endif %}\n {%- endfor -%})\n {%- if not loop.last%},{%- endif %}\n {%- endfor %}\n {% endset %}\n\n {% do adapter.add_query(sql, bindings=bindings, abridge_sql_log=True) %}\n\n {% if loop.index0 == 0 %}\n {% do statements.append(sql) %}\n {% endif %}\n {% endfor %}\n\n {# Return SQL so we can render it out into the compiled files #}\n {{ return(statements[0]) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__get_rename_intermediate_sql" + "macro.dbt.get_batch_size", + "macro.dbt.get_seed_column_quoted_csv", + "macro.dbt.get_binding_char" ] }, "description": "", @@ -7546,21 +7535,30 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5686789, + "created_at": 1730458997.085854, "supported_languages": null }, - "macro.dbt.default__get_rename_intermediate_sql": { - "name": "default__get_rename_intermediate_sql", + "macro.dbt.materialization_seed_default": { + "name": "materialization_seed_default", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/rename_intermediate.sql", - "original_file_path": "macros/relations/rename_intermediate.sql", - "unique_id": "macro.dbt.default__get_rename_intermediate_sql", - "macro_sql": "{%- macro default__get_rename_intermediate_sql(relation) -%}\n\n -- get the standard intermediate name\n {% set intermediate_relation = make_intermediate_relation(relation) %}\n\n {{ get_rename_sql(intermediate_relation, relation.identifier) }}\n\n{%- endmacro -%}", + "path": "macros/materializations/seeds/seed.sql", + "original_file_path": "macros/materializations/seeds/seed.sql", + "unique_id": "macro.dbt.materialization_seed_default", + "macro_sql": "{% materialization seed, default %}\n\n {%- set identifier = model['alias'] -%}\n {%- set full_refresh_mode = (should_full_refresh()) -%}\n\n {%- set old_relation = adapter.get_relation(database=database, schema=schema, identifier=identifier) -%}\n\n {%- set exists_as_table = (old_relation is not none and old_relation.is_table) -%}\n {%- set exists_as_view = (old_relation is not none and old_relation.is_view) -%}\n\n {%- set grant_config = config.get('grants') -%}\n {%- set agate_table = load_agate_table() -%}\n -- grab current tables grants config for comparison later on\n\n {%- do store_result('agate_table', response='OK', agate_table=agate_table) -%}\n\n {{ run_hooks(pre_hooks, inside_transaction=False) }}\n\n -- `BEGIN` happens here:\n {{ run_hooks(pre_hooks, inside_transaction=True) }}\n\n -- build model\n {% set create_table_sql = \"\" %}\n {% if exists_as_view %}\n {{ exceptions.raise_compiler_error(\"Cannot seed to '{}', it is a view\".format(old_relation.render())) }}\n {% elif exists_as_table %}\n {% set create_table_sql = reset_csv_table(model, full_refresh_mode, old_relation, agate_table) %}\n {% else %}\n {% set create_table_sql = create_csv_table(model, agate_table) %}\n {% endif %}\n\n {% set code = 'CREATE' if full_refresh_mode else 'INSERT' %}\n {% set rows_affected = (agate_table.rows | length) %}\n {% set sql = load_csv_rows(model, agate_table) %}\n\n {% call noop_statement('main', code ~ ' ' ~ rows_affected, code, rows_affected) %}\n {{ get_csv_sql(create_table_sql, sql) }};\n {% endcall %}\n\n {% set target_relation = this.incorporate(type='table') %}\n\n {% set should_revoke = should_revoke(old_relation, full_refresh_mode) %}\n {% do apply_grants(target_relation, grant_config, should_revoke=should_revoke) %}\n\n {% do persist_docs(target_relation, model) %}\n\n {% if full_refresh_mode or not exists_as_table %}\n {% do create_indexes(target_relation) %}\n {% endif %}\n\n {{ run_hooks(post_hooks, inside_transaction=True) }}\n\n -- `COMMIT` happens here\n {{ adapter.commit() }}\n\n {{ run_hooks(post_hooks, inside_transaction=False) }}\n\n {{ return({'relations': [target_relation]}) }}\n\n{% endmaterialization %}", "depends_on": { "macros": [ - "macro.dbt.make_intermediate_relation", - "macro.dbt.get_rename_sql" + "macro.dbt.should_full_refresh", + "macro.dbt.run_hooks", + "macro.dbt.reset_csv_table", + "macro.dbt.create_csv_table", + "macro.dbt.load_csv_rows", + "macro.dbt.noop_statement", + "macro.dbt.get_csv_sql", + "macro.dbt.should_revoke", + "macro.dbt.apply_grants", + "macro.dbt.persist_docs", + "macro.dbt.create_indexes" ] }, "description": "", @@ -7571,21 +7569,21 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.568786, - "supported_languages": null + "created_at": 1730458997.0876322, + "supported_languages": [ + "sql" + ] }, - "macro.dbt.drop_materialized_view": { - "name": "drop_materialized_view", + "macro.dbt.strategy_dispatch": { + "name": "strategy_dispatch", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/materialized_view/drop.sql", - "original_file_path": "macros/relations/materialized_view/drop.sql", - "unique_id": "macro.dbt.drop_materialized_view", - "macro_sql": "{% macro drop_materialized_view(relation) -%}\n {{- adapter.dispatch('drop_materialized_view', 'dbt')(relation) -}}\n{%- endmacro %}", + "path": "macros/materializations/snapshots/strategies.sql", + "original_file_path": "macros/materializations/snapshots/strategies.sql", + "unique_id": "macro.dbt.strategy_dispatch", + "macro_sql": "{% macro strategy_dispatch(name) -%}\n{% set original_name = name %}\n {% if '.' in name %}\n {% set package_name, name = name.split(\".\", 1) %}\n {% else %}\n {% set package_name = none %}\n {% endif %}\n\n {% if package_name is none %}\n {% set package_context = context %}\n {% elif package_name in context %}\n {% set package_context = context[package_name] %}\n {% else %}\n {% set error_msg %}\n Could not find package '{{package_name}}', called with '{{original_name}}'\n {% endset %}\n {{ exceptions.raise_compiler_error(error_msg | trim) }}\n {% endif %}\n\n {%- set search_name = 'snapshot_' ~ name ~ '_strategy' -%}\n\n {% if search_name not in package_context %}\n {% set error_msg %}\n The specified strategy macro '{{name}}' was not found in package '{{ package_name }}'\n {% endset %}\n {{ exceptions.raise_compiler_error(error_msg | trim) }}\n {% endif %}\n {{ return(package_context[search_name]) }}\n{%- endmacro %}", "depends_on": { - "macros": [ - "macro.dbt_postgres.postgres__drop_materialized_view" - ] + "macros": [] }, "description": "", "meta": {}, @@ -7595,19 +7593,21 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.568923, + "created_at": 1730458997.0896518, "supported_languages": null }, - "macro.dbt.default__drop_materialized_view": { - "name": "default__drop_materialized_view", + "macro.dbt.snapshot_hash_arguments": { + "name": "snapshot_hash_arguments", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/materialized_view/drop.sql", - "original_file_path": "macros/relations/materialized_view/drop.sql", - "unique_id": "macro.dbt.default__drop_materialized_view", - "macro_sql": "{% macro default__drop_materialized_view(relation) -%}\n drop materialized view if exists {{ relation.render() }} cascade\n{%- endmacro %}", + "path": "macros/materializations/snapshots/strategies.sql", + "original_file_path": "macros/materializations/snapshots/strategies.sql", + "unique_id": "macro.dbt.snapshot_hash_arguments", + "macro_sql": "{% macro snapshot_hash_arguments(args) -%}\n {{ adapter.dispatch('snapshot_hash_arguments', 'dbt')(args) }}\n{%- endmacro %}", "depends_on": { - "macros": [] + "macros": [ + "macro.dbt.default__snapshot_hash_arguments" + ] }, "description": "", "meta": {}, @@ -7617,21 +7617,19 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.56899, + "created_at": 1730458997.0897422, "supported_languages": null }, - "macro.dbt.get_replace_materialized_view_sql": { - "name": "get_replace_materialized_view_sql", + "macro.dbt.default__snapshot_hash_arguments": { + "name": "default__snapshot_hash_arguments", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/materialized_view/replace.sql", - "original_file_path": "macros/relations/materialized_view/replace.sql", - "unique_id": "macro.dbt.get_replace_materialized_view_sql", - "macro_sql": "{% macro get_replace_materialized_view_sql(relation, sql) %}\n {{- adapter.dispatch('get_replace_materialized_view_sql', 'dbt')(relation, sql) -}}\n{% endmacro %}", + "path": "macros/materializations/snapshots/strategies.sql", + "original_file_path": "macros/materializations/snapshots/strategies.sql", + "unique_id": "macro.dbt.default__snapshot_hash_arguments", + "macro_sql": "{% macro default__snapshot_hash_arguments(args) -%}\n md5({%- for arg in args -%}\n coalesce(cast({{ arg }} as varchar ), '')\n {% if not loop.last %} || '|' || {% endif %}\n {%- endfor -%})\n{%- endmacro %}", "depends_on": { - "macros": [ - "macro.dbt.default__get_replace_materialized_view_sql" - ] + "macros": [] }, "description": "", "meta": {}, @@ -7641,19 +7639,21 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5691352, + "created_at": 1730458997.0898585, "supported_languages": null }, - "macro.dbt.default__get_replace_materialized_view_sql": { - "name": "default__get_replace_materialized_view_sql", + "macro.dbt.snapshot_timestamp_strategy": { + "name": "snapshot_timestamp_strategy", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/materialized_view/replace.sql", - "original_file_path": "macros/relations/materialized_view/replace.sql", - "unique_id": "macro.dbt.default__get_replace_materialized_view_sql", - "macro_sql": "{% macro default__get_replace_materialized_view_sql(relation, sql) %}\n {{ exceptions.raise_compiler_error(\n \"`get_replace_materialized_view_sql` has not been implemented for this adapter.\"\n ) }}\n{% endmacro %}", + "path": "macros/materializations/snapshots/strategies.sql", + "original_file_path": "macros/materializations/snapshots/strategies.sql", + "unique_id": "macro.dbt.snapshot_timestamp_strategy", + "macro_sql": "{% macro snapshot_timestamp_strategy(node, snapshotted_rel, current_rel, config, target_exists) %}\n {% set primary_key = config['unique_key'] %}\n {% set updated_at = config['updated_at'] %}\n {% set invalidate_hard_deletes = config.get('invalidate_hard_deletes', false) %}\n\n {#/*\n The snapshot relation might not have an {{ updated_at }} value if the\n snapshot strategy is changed from `check` to `timestamp`. We\n should use a dbt-created column for the comparison in the snapshot\n table instead of assuming that the user-supplied {{ updated_at }}\n will be present in the historical data.\n\n See https://github.com/dbt-labs/dbt-core/issues/2350\n */ #}\n {% set row_changed_expr -%}\n ({{ snapshotted_rel }}.dbt_valid_from < {{ current_rel }}.{{ updated_at }})\n {%- endset %}\n\n {% set scd_id_expr = snapshot_hash_arguments([primary_key, updated_at]) %}\n\n {% do return({\n \"unique_key\": primary_key,\n \"updated_at\": updated_at,\n \"row_changed\": row_changed_expr,\n \"scd_id\": scd_id_expr,\n \"invalidate_hard_deletes\": invalidate_hard_deletes\n }) %}\n{% endmacro %}", "depends_on": { - "macros": [] + "macros": [ + "macro.dbt.snapshot_hash_arguments" + ] }, "description": "", "meta": {}, @@ -7663,20 +7663,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.569213, + "created_at": 1730458997.0902488, "supported_languages": null }, - "macro.dbt.refresh_materialized_view": { - "name": "refresh_materialized_view", + "macro.dbt.snapshot_string_as_time": { + "name": "snapshot_string_as_time", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/materialized_view/refresh.sql", - "original_file_path": "macros/relations/materialized_view/refresh.sql", - "unique_id": "macro.dbt.refresh_materialized_view", - "macro_sql": "{% macro refresh_materialized_view(relation) %}\n {{- log('Applying REFRESH to: ' ~ relation) -}}\n {{- adapter.dispatch('refresh_materialized_view', 'dbt')(relation) -}}\n{% endmacro %}", + "path": "macros/materializations/snapshots/strategies.sql", + "original_file_path": "macros/materializations/snapshots/strategies.sql", + "unique_id": "macro.dbt.snapshot_string_as_time", + "macro_sql": "{% macro snapshot_string_as_time(timestamp) -%}\n {{ adapter.dispatch('snapshot_string_as_time', 'dbt')(timestamp) }}\n{%- endmacro %}", "depends_on": { "macros": [ - "macro.dbt_postgres.postgres__refresh_materialized_view" + "macro.dbt_postgres.postgres__snapshot_string_as_time" ] }, "description": "", @@ -7687,17 +7687,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.569379, + "created_at": 1730458997.090334, "supported_languages": null }, - "macro.dbt.default__refresh_materialized_view": { - "name": "default__refresh_materialized_view", + "macro.dbt.default__snapshot_string_as_time": { + "name": "default__snapshot_string_as_time", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/materialized_view/refresh.sql", - "original_file_path": "macros/relations/materialized_view/refresh.sql", - "unique_id": "macro.dbt.default__refresh_materialized_view", - "macro_sql": "{% macro default__refresh_materialized_view(relation) %}\n {{ exceptions.raise_compiler_error(\"`refresh_materialized_view` has not been implemented for this adapter.\") }}\n{% endmacro %}", + "path": "macros/materializations/snapshots/strategies.sql", + "original_file_path": "macros/materializations/snapshots/strategies.sql", + "unique_id": "macro.dbt.default__snapshot_string_as_time", + "macro_sql": "{% macro default__snapshot_string_as_time(timestamp) %}\n {% do exceptions.raise_not_implemented(\n 'snapshot_string_as_time macro not implemented for adapter '+adapter.type()\n ) %}\n{% endmacro %}", "depends_on": { "macros": [] }, @@ -7709,20 +7709,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.569448, + "created_at": 1730458997.0904233, "supported_languages": null }, - "macro.dbt.get_rename_materialized_view_sql": { - "name": "get_rename_materialized_view_sql", + "macro.dbt.snapshot_check_all_get_existing_columns": { + "name": "snapshot_check_all_get_existing_columns", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/materialized_view/rename.sql", - "original_file_path": "macros/relations/materialized_view/rename.sql", - "unique_id": "macro.dbt.get_rename_materialized_view_sql", - "macro_sql": "{% macro get_rename_materialized_view_sql(relation, new_name) %}\n {{- adapter.dispatch('get_rename_materialized_view_sql', 'dbt')(relation, new_name) -}}\n{% endmacro %}", + "path": "macros/materializations/snapshots/strategies.sql", + "original_file_path": "macros/materializations/snapshots/strategies.sql", + "unique_id": "macro.dbt.snapshot_check_all_get_existing_columns", + "macro_sql": "{% macro snapshot_check_all_get_existing_columns(node, target_exists, check_cols_config) -%}\n {%- if not target_exists -%}\n {#-- no table yet -> return whatever the query does --#}\n {{ return((false, query_columns)) }}\n {%- endif -%}\n\n {#-- handle any schema changes --#}\n {%- set target_relation = adapter.get_relation(database=node.database, schema=node.schema, identifier=node.alias) -%}\n\n {% if check_cols_config == 'all' %}\n {%- set query_columns = get_columns_in_query(node['compiled_code']) -%}\n\n {% elif check_cols_config is iterable and (check_cols_config | length) > 0 %}\n {#-- query for proper casing/quoting, to support comparison below --#}\n {%- set select_check_cols_from_target -%}\n {#-- N.B. The whitespace below is necessary to avoid edge case issue with comments --#}\n {#-- See: https://github.com/dbt-labs/dbt-core/issues/6781 --#}\n select {{ check_cols_config | join(', ') }} from (\n {{ node['compiled_code'] }}\n ) subq\n {%- endset -%}\n {% set query_columns = get_columns_in_query(select_check_cols_from_target) %}\n\n {% else %}\n {% do exceptions.raise_compiler_error(\"Invalid value for 'check_cols': \" ~ check_cols_config) %}\n {% endif %}\n\n {%- set existing_cols = adapter.get_columns_in_relation(target_relation) | map(attribute = 'name') | list -%}\n {%- set ns = namespace() -%} {#-- handle for-loop scoping with a namespace --#}\n {%- set ns.column_added = false -%}\n\n {%- set intersection = [] -%}\n {%- for col in query_columns -%}\n {%- if col in existing_cols -%}\n {%- do intersection.append(adapter.quote(col)) -%}\n {%- else -%}\n {% set ns.column_added = true %}\n {%- endif -%}\n {%- endfor -%}\n {{ return((ns.column_added, intersection)) }}\n{%- endmacro %}", "depends_on": { "macros": [ - "macro.dbt_postgres.postgres__get_rename_materialized_view_sql" + "macro.dbt.get_columns_in_query" ] }, "description": "", @@ -7733,19 +7733,24 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5695949, + "created_at": 1730458997.091158, "supported_languages": null }, - "macro.dbt.default__get_rename_materialized_view_sql": { - "name": "default__get_rename_materialized_view_sql", + "macro.dbt.snapshot_check_strategy": { + "name": "snapshot_check_strategy", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/materialized_view/rename.sql", - "original_file_path": "macros/relations/materialized_view/rename.sql", - "unique_id": "macro.dbt.default__get_rename_materialized_view_sql", - "macro_sql": "{% macro default__get_rename_materialized_view_sql(relation, new_name) %}\n {{ exceptions.raise_compiler_error(\n \"`get_rename_materialized_view_sql` has not been implemented for this adapter.\"\n ) }}\n{% endmacro %}", + "path": "macros/materializations/snapshots/strategies.sql", + "original_file_path": "macros/materializations/snapshots/strategies.sql", + "unique_id": "macro.dbt.snapshot_check_strategy", + "macro_sql": "{% macro snapshot_check_strategy(node, snapshotted_rel, current_rel, config, target_exists) %}\n {% set check_cols_config = config['check_cols'] %}\n {% set primary_key = config['unique_key'] %}\n {% set invalidate_hard_deletes = config.get('invalidate_hard_deletes', false) %}\n {% set updated_at = config.get('updated_at', snapshot_get_time()) %}\n\n {% set column_added = false %}\n\n {% set column_added, check_cols = snapshot_check_all_get_existing_columns(node, target_exists, check_cols_config) %}\n\n {%- set row_changed_expr -%}\n (\n {%- if column_added -%}\n {{ get_true_sql() }}\n {%- else -%}\n {%- for col in check_cols -%}\n {{ snapshotted_rel }}.{{ col }} != {{ current_rel }}.{{ col }}\n or\n (\n (({{ snapshotted_rel }}.{{ col }} is null) and not ({{ current_rel }}.{{ col }} is null))\n or\n ((not {{ snapshotted_rel }}.{{ col }} is null) and ({{ current_rel }}.{{ col }} is null))\n )\n {%- if not loop.last %} or {% endif -%}\n {%- endfor -%}\n {%- endif -%}\n )\n {%- endset %}\n\n {% set scd_id_expr = snapshot_hash_arguments([primary_key, updated_at]) %}\n\n {% do return({\n \"unique_key\": primary_key,\n \"updated_at\": updated_at,\n \"row_changed\": row_changed_expr,\n \"scd_id\": scd_id_expr,\n \"invalidate_hard_deletes\": invalidate_hard_deletes\n }) %}\n{% endmacro %}", "depends_on": { - "macros": [] + "macros": [ + "macro.dbt.snapshot_get_time", + "macro.dbt.snapshot_check_all_get_existing_columns", + "macro.dbt.get_true_sql", + "macro.dbt.snapshot_hash_arguments" + ] }, "description": "", "meta": {}, @@ -7755,20 +7760,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.569671, + "created_at": 1730458997.0919344, "supported_languages": null }, - "macro.dbt.get_alter_materialized_view_as_sql": { - "name": "get_alter_materialized_view_as_sql", + "macro.dbt.create_columns": { + "name": "create_columns", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/materialized_view/alter.sql", - "original_file_path": "macros/relations/materialized_view/alter.sql", - "unique_id": "macro.dbt.get_alter_materialized_view_as_sql", - "macro_sql": "{% macro get_alter_materialized_view_as_sql(\n relation,\n configuration_changes,\n sql,\n existing_relation,\n backup_relation,\n intermediate_relation\n) %}\n {{- log('Applying ALTER to: ' ~ relation) -}}\n {{- adapter.dispatch('get_alter_materialized_view_as_sql', 'dbt')(\n relation,\n configuration_changes,\n sql,\n existing_relation,\n backup_relation,\n intermediate_relation\n ) -}}\n{% endmacro %}", + "path": "macros/materializations/snapshots/helpers.sql", + "original_file_path": "macros/materializations/snapshots/helpers.sql", + "unique_id": "macro.dbt.create_columns", + "macro_sql": "{% macro create_columns(relation, columns) %}\n {{ adapter.dispatch('create_columns', 'dbt')(relation, columns) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt_postgres.postgres__get_alter_materialized_view_as_sql" + "macro.dbt.default__create_columns" ] }, "description": "", @@ -7779,19 +7784,21 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.570016, + "created_at": 1730458997.094251, "supported_languages": null }, - "macro.dbt.default__get_alter_materialized_view_as_sql": { - "name": "default__get_alter_materialized_view_as_sql", + "macro.dbt.default__create_columns": { + "name": "default__create_columns", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/materialized_view/alter.sql", - "original_file_path": "macros/relations/materialized_view/alter.sql", - "unique_id": "macro.dbt.default__get_alter_materialized_view_as_sql", - "macro_sql": "{% macro default__get_alter_materialized_view_as_sql(\n relation,\n configuration_changes,\n sql,\n existing_relation,\n backup_relation,\n intermediate_relation\n) %}\n {{ exceptions.raise_compiler_error(\"Materialized views have not been implemented for this adapter.\") }}\n{% endmacro %}", + "path": "macros/materializations/snapshots/helpers.sql", + "original_file_path": "macros/materializations/snapshots/helpers.sql", + "unique_id": "macro.dbt.default__create_columns", + "macro_sql": "{% macro default__create_columns(relation, columns) %}\n {% for column in columns %}\n {% call statement() %}\n alter table {{ relation.render() }} add column \"{{ column.name }}\" {{ column.data_type }};\n {% endcall %}\n {% endfor %}\n{% endmacro %}", "depends_on": { - "macros": [] + "macros": [ + "macro.dbt.statement" + ] }, "description": "", "meta": {}, @@ -7801,20 +7808,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.570116, + "created_at": 1730458997.0944037, "supported_languages": null }, - "macro.dbt.get_materialized_view_configuration_changes": { - "name": "get_materialized_view_configuration_changes", + "macro.dbt.post_snapshot": { + "name": "post_snapshot", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/materialized_view/alter.sql", - "original_file_path": "macros/relations/materialized_view/alter.sql", - "unique_id": "macro.dbt.get_materialized_view_configuration_changes", - "macro_sql": "{% macro get_materialized_view_configuration_changes(existing_relation, new_config) %}\n /* {#\n It's recommended that configuration changes be formatted as follows:\n {\"\": [{\"action\": \"\", \"context\": ...}]}\n\n For example:\n {\n \"indexes\": [\n {\"action\": \"drop\", \"context\": \"index_abc\"},\n {\"action\": \"create\", \"context\": {\"columns\": [\"column_1\", \"column_2\"], \"type\": \"hash\", \"unique\": True}},\n ],\n }\n\n Either way, `get_materialized_view_configuration_changes` needs to align with `get_alter_materialized_view_as_sql`.\n #} */\n {{- log('Determining configuration changes on: ' ~ existing_relation) -}}\n {%- do return(adapter.dispatch('get_materialized_view_configuration_changes', 'dbt')(existing_relation, new_config)) -%}\n{% endmacro %}", + "path": "macros/materializations/snapshots/helpers.sql", + "original_file_path": "macros/materializations/snapshots/helpers.sql", + "unique_id": "macro.dbt.post_snapshot", + "macro_sql": "{% macro post_snapshot(staging_relation) %}\n {{ adapter.dispatch('post_snapshot', 'dbt')(staging_relation) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt_postgres.postgres__get_materialized_view_configuration_changes" + "macro.dbt.default__post_snapshot" ] }, "description": "", @@ -7825,17 +7832,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5702631, + "created_at": 1730458997.0944915, "supported_languages": null }, - "macro.dbt.default__get_materialized_view_configuration_changes": { - "name": "default__get_materialized_view_configuration_changes", + "macro.dbt.default__post_snapshot": { + "name": "default__post_snapshot", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/materialized_view/alter.sql", - "original_file_path": "macros/relations/materialized_view/alter.sql", - "unique_id": "macro.dbt.default__get_materialized_view_configuration_changes", - "macro_sql": "{% macro default__get_materialized_view_configuration_changes(existing_relation, new_config) %}\n {{ exceptions.raise_compiler_error(\"Materialized views have not been implemented for this adapter.\") }}\n{% endmacro %}", + "path": "macros/materializations/snapshots/helpers.sql", + "original_file_path": "macros/materializations/snapshots/helpers.sql", + "unique_id": "macro.dbt.default__post_snapshot", + "macro_sql": "{% macro default__post_snapshot(staging_relation) %}\n {# no-op #}\n{% endmacro %}", "depends_on": { "macros": [] }, @@ -7847,20 +7854,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.570341, + "created_at": 1730458997.0945404, "supported_languages": null }, - "macro.dbt.get_create_materialized_view_as_sql": { - "name": "get_create_materialized_view_as_sql", + "macro.dbt.get_true_sql": { + "name": "get_true_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/materialized_view/create.sql", - "original_file_path": "macros/relations/materialized_view/create.sql", - "unique_id": "macro.dbt.get_create_materialized_view_as_sql", - "macro_sql": "{% macro get_create_materialized_view_as_sql(relation, sql) -%}\n {{- adapter.dispatch('get_create_materialized_view_as_sql', 'dbt')(relation, sql) -}}\n{%- endmacro %}", + "path": "macros/materializations/snapshots/helpers.sql", + "original_file_path": "macros/materializations/snapshots/helpers.sql", + "unique_id": "macro.dbt.get_true_sql", + "macro_sql": "{% macro get_true_sql() %}\n {{ adapter.dispatch('get_true_sql', 'dbt')() }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt_postgres.postgres__get_create_materialized_view_as_sql" + "macro.dbt.default__get_true_sql" ] }, "description": "", @@ -7871,17 +7878,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.570494, + "created_at": 1730458997.0946152, "supported_languages": null }, - "macro.dbt.default__get_create_materialized_view_as_sql": { - "name": "default__get_create_materialized_view_as_sql", + "macro.dbt.default__get_true_sql": { + "name": "default__get_true_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/materialized_view/create.sql", - "original_file_path": "macros/relations/materialized_view/create.sql", - "unique_id": "macro.dbt.default__get_create_materialized_view_as_sql", - "macro_sql": "{% macro default__get_create_materialized_view_as_sql(relation, sql) -%}\n {{ exceptions.raise_compiler_error(\n \"`get_create_materialized_view_as_sql` has not been implemented for this adapter.\"\n ) }}\n{% endmacro %}", + "path": "macros/materializations/snapshots/helpers.sql", + "original_file_path": "macros/materializations/snapshots/helpers.sql", + "unique_id": "macro.dbt.default__get_true_sql", + "macro_sql": "{% macro default__get_true_sql() %}\n {{ return('TRUE') }}\n{% endmacro %}", "depends_on": { "macros": [] }, @@ -7893,20 +7900,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.570569, + "created_at": 1730458997.0946739, "supported_languages": null }, - "macro.dbt.get_table_columns_and_constraints": { - "name": "get_table_columns_and_constraints", + "macro.dbt.snapshot_staging_table": { + "name": "snapshot_staging_table", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/column/columns_spec_ddl.sql", - "original_file_path": "macros/relations/column/columns_spec_ddl.sql", - "unique_id": "macro.dbt.get_table_columns_and_constraints", - "macro_sql": "{%- macro get_table_columns_and_constraints() -%}\n {{ adapter.dispatch('get_table_columns_and_constraints', 'dbt')() }}\n{%- endmacro -%}\n\n", + "path": "macros/materializations/snapshots/helpers.sql", + "original_file_path": "macros/materializations/snapshots/helpers.sql", + "unique_id": "macro.dbt.snapshot_staging_table", + "macro_sql": "{% macro snapshot_staging_table(strategy, source_sql, target_relation) -%}\n {{ adapter.dispatch('snapshot_staging_table', 'dbt')(strategy, source_sql, target_relation) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__get_table_columns_and_constraints" + "macro.dbt.default__snapshot_staging_table" ] }, "description": "", @@ -7917,20 +7924,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.571182, + "created_at": 1730458997.094778, "supported_languages": null }, - "macro.dbt.default__get_table_columns_and_constraints": { - "name": "default__get_table_columns_and_constraints", + "macro.dbt.default__snapshot_staging_table": { + "name": "default__snapshot_staging_table", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/column/columns_spec_ddl.sql", - "original_file_path": "macros/relations/column/columns_spec_ddl.sql", - "unique_id": "macro.dbt.default__get_table_columns_and_constraints", - "macro_sql": "{% macro default__get_table_columns_and_constraints() -%}\n {{ return(table_columns_and_constraints()) }}\n{%- endmacro %}", + "path": "macros/materializations/snapshots/helpers.sql", + "original_file_path": "macros/materializations/snapshots/helpers.sql", + "unique_id": "macro.dbt.default__snapshot_staging_table", + "macro_sql": "{% macro default__snapshot_staging_table(strategy, source_sql, target_relation) -%}\n\n with snapshot_query as (\n\n {{ source_sql }}\n\n ),\n\n snapshotted_data as (\n\n select *,\n {{ strategy.unique_key }} as dbt_unique_key\n\n from {{ target_relation }}\n where dbt_valid_to is null\n\n ),\n\n insertions_source_data as (\n\n select\n *,\n {{ strategy.unique_key }} as dbt_unique_key,\n {{ strategy.updated_at }} as dbt_updated_at,\n {{ strategy.updated_at }} as dbt_valid_from,\n nullif({{ strategy.updated_at }}, {{ strategy.updated_at }}) as dbt_valid_to,\n {{ strategy.scd_id }} as dbt_scd_id\n\n from snapshot_query\n ),\n\n updates_source_data as (\n\n select\n *,\n {{ strategy.unique_key }} as dbt_unique_key,\n {{ strategy.updated_at }} as dbt_updated_at,\n {{ strategy.updated_at }} as dbt_valid_from,\n {{ strategy.updated_at }} as dbt_valid_to\n\n from snapshot_query\n ),\n\n {%- if strategy.invalidate_hard_deletes %}\n\n deletes_source_data as (\n\n select\n *,\n {{ strategy.unique_key }} as dbt_unique_key\n from snapshot_query\n ),\n {% endif %}\n\n insertions as (\n\n select\n 'insert' as dbt_change_type,\n source_data.*\n\n from insertions_source_data as source_data\n left outer join snapshotted_data on snapshotted_data.dbt_unique_key = source_data.dbt_unique_key\n where snapshotted_data.dbt_unique_key is null\n or (\n snapshotted_data.dbt_unique_key is not null\n and (\n {{ strategy.row_changed }}\n )\n )\n\n ),\n\n updates as (\n\n select\n 'update' as dbt_change_type,\n source_data.*,\n snapshotted_data.dbt_scd_id\n\n from updates_source_data as source_data\n join snapshotted_data on snapshotted_data.dbt_unique_key = source_data.dbt_unique_key\n where (\n {{ strategy.row_changed }}\n )\n )\n\n {%- if strategy.invalidate_hard_deletes -%}\n ,\n\n deletes as (\n\n select\n 'delete' as dbt_change_type,\n source_data.*,\n {{ snapshot_get_time() }} as dbt_valid_from,\n {{ snapshot_get_time() }} as dbt_updated_at,\n {{ snapshot_get_time() }} as dbt_valid_to,\n snapshotted_data.dbt_scd_id\n\n from snapshotted_data\n left join deletes_source_data as source_data on snapshotted_data.dbt_unique_key = source_data.dbt_unique_key\n where source_data.dbt_unique_key is null\n )\n {%- endif %}\n\n select * from insertions\n union all\n select * from updates\n {%- if strategy.invalidate_hard_deletes %}\n union all\n select * from deletes\n {%- endif %}\n\n{%- endmacro %}", "depends_on": { "macros": [ - "macro.dbt.table_columns_and_constraints" + "macro.dbt.snapshot_get_time" ] }, "description": "", @@ -7941,19 +7948,21 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.571247, + "created_at": 1730458997.0952697, "supported_languages": null }, - "macro.dbt.table_columns_and_constraints": { - "name": "table_columns_and_constraints", + "macro.dbt.build_snapshot_table": { + "name": "build_snapshot_table", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/column/columns_spec_ddl.sql", - "original_file_path": "macros/relations/column/columns_spec_ddl.sql", - "unique_id": "macro.dbt.table_columns_and_constraints", - "macro_sql": "{% macro table_columns_and_constraints() %}\n {# loop through user_provided_columns to create DDL with data types and constraints #}\n {%- set raw_column_constraints = adapter.render_raw_columns_constraints(raw_columns=model['columns']) -%}\n {%- set raw_model_constraints = adapter.render_raw_model_constraints(raw_constraints=model['constraints']) -%}\n (\n {% for c in raw_column_constraints -%}\n {{ c }}{{ \",\" if not loop.last or raw_model_constraints }}\n {% endfor %}\n {% for c in raw_model_constraints -%}\n {{ c }}{{ \",\" if not loop.last }}\n {% endfor -%}\n )\n{% endmacro %}", + "path": "macros/materializations/snapshots/helpers.sql", + "original_file_path": "macros/materializations/snapshots/helpers.sql", + "unique_id": "macro.dbt.build_snapshot_table", + "macro_sql": "{% macro build_snapshot_table(strategy, sql) -%}\n {{ adapter.dispatch('build_snapshot_table', 'dbt')(strategy, sql) }}\n{% endmacro %}", "depends_on": { - "macros": [] + "macros": [ + "macro.dbt.default__build_snapshot_table" + ] }, "description": "", "meta": {}, @@ -7963,21 +7972,19 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.571528, + "created_at": 1730458997.0953672, "supported_languages": null }, - "macro.dbt.get_assert_columns_equivalent": { - "name": "get_assert_columns_equivalent", + "macro.dbt.default__build_snapshot_table": { + "name": "default__build_snapshot_table", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/column/columns_spec_ddl.sql", - "original_file_path": "macros/relations/column/columns_spec_ddl.sql", - "unique_id": "macro.dbt.get_assert_columns_equivalent", - "macro_sql": "\n\n{%- macro get_assert_columns_equivalent(sql) -%}\n {{ adapter.dispatch('get_assert_columns_equivalent', 'dbt')(sql) }}\n{%- endmacro -%}\n\n", + "path": "macros/materializations/snapshots/helpers.sql", + "original_file_path": "macros/materializations/snapshots/helpers.sql", + "unique_id": "macro.dbt.default__build_snapshot_table", + "macro_sql": "{% macro default__build_snapshot_table(strategy, sql) %}\n\n select *,\n {{ strategy.scd_id }} as dbt_scd_id,\n {{ strategy.updated_at }} as dbt_updated_at,\n {{ strategy.updated_at }} as dbt_valid_from,\n nullif({{ strategy.updated_at }}, {{ strategy.updated_at }}) as dbt_valid_to\n from (\n {{ sql }}\n ) sbq\n\n{% endmacro %}", "depends_on": { - "macros": [ - "macro.dbt.default__get_assert_columns_equivalent" - ] + "macros": [] }, "description": "", "meta": {}, @@ -7987,20 +7994,23 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5716212, + "created_at": 1730458997.0954957, "supported_languages": null }, - "macro.dbt.default__get_assert_columns_equivalent": { - "name": "default__get_assert_columns_equivalent", + "macro.dbt.build_snapshot_staging_table": { + "name": "build_snapshot_staging_table", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/column/columns_spec_ddl.sql", - "original_file_path": "macros/relations/column/columns_spec_ddl.sql", - "unique_id": "macro.dbt.default__get_assert_columns_equivalent", - "macro_sql": "{% macro default__get_assert_columns_equivalent(sql) -%}\n {{ return(assert_columns_equivalent(sql)) }}\n{%- endmacro %}", + "path": "macros/materializations/snapshots/helpers.sql", + "original_file_path": "macros/materializations/snapshots/helpers.sql", + "unique_id": "macro.dbt.build_snapshot_staging_table", + "macro_sql": "{% macro build_snapshot_staging_table(strategy, sql, target_relation) %}\n {% set temp_relation = make_temp_relation(target_relation) %}\n\n {% set select = snapshot_staging_table(strategy, sql, target_relation) %}\n\n {% call statement('build_snapshot_staging_relation') %}\n {{ create_table_as(True, temp_relation, select) }}\n {% endcall %}\n\n {% do return(temp_relation) %}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.assert_columns_equivalent" + "macro.dbt.make_temp_relation", + "macro.dbt.snapshot_staging_table", + "macro.dbt.statement", + "macro.dbt.create_table_as" ] }, "description": "", @@ -8011,22 +8021,33 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5716941, + "created_at": 1730458997.0957046, "supported_languages": null }, - "macro.dbt.assert_columns_equivalent": { - "name": "assert_columns_equivalent", + "macro.dbt.materialization_snapshot_default": { + "name": "materialization_snapshot_default", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/column/columns_spec_ddl.sql", - "original_file_path": "macros/relations/column/columns_spec_ddl.sql", - "unique_id": "macro.dbt.assert_columns_equivalent", - "macro_sql": "{% macro assert_columns_equivalent(sql) %}\n\n {#-- First ensure the user has defined 'columns' in yaml specification --#}\n {%- set user_defined_columns = model['columns'] -%}\n {%- if not user_defined_columns -%}\n {{ exceptions.raise_contract_error([], []) }}\n {%- endif -%}\n\n {#-- Obtain the column schema provided by sql file. #}\n {%- set sql_file_provided_columns = get_column_schema_from_query(sql, config.get('sql_header', none)) -%}\n {#--Obtain the column schema provided by the schema file by generating an 'empty schema' query from the model's columns. #}\n {%- set schema_file_provided_columns = get_column_schema_from_query(get_empty_schema_sql(user_defined_columns)) -%}\n\n {#-- create dictionaries with name and formatted data type and strings for exception #}\n {%- set sql_columns = format_columns(sql_file_provided_columns) -%}\n {%- set yaml_columns = format_columns(schema_file_provided_columns) -%}\n\n {%- if sql_columns|length != yaml_columns|length -%}\n {%- do exceptions.raise_contract_error(yaml_columns, sql_columns) -%}\n {%- endif -%}\n\n {%- for sql_col in sql_columns -%}\n {%- set yaml_col = [] -%}\n {%- for this_col in yaml_columns -%}\n {%- if this_col['name'] == sql_col['name'] -%}\n {%- do yaml_col.append(this_col) -%}\n {%- break -%}\n {%- endif -%}\n {%- endfor -%}\n {%- if not yaml_col -%}\n {#-- Column with name not found in yaml #}\n {%- do exceptions.raise_contract_error(yaml_columns, sql_columns) -%}\n {%- endif -%}\n {%- if sql_col['formatted'] != yaml_col[0]['formatted'] -%}\n {#-- Column data types don't match #}\n {%- do exceptions.raise_contract_error(yaml_columns, sql_columns) -%}\n {%- endif -%}\n {%- endfor -%}\n\n{% endmacro %}", + "path": "macros/materializations/snapshots/snapshot.sql", + "original_file_path": "macros/materializations/snapshots/snapshot.sql", + "unique_id": "macro.dbt.materialization_snapshot_default", + "macro_sql": "{% materialization snapshot, default %}\n {%- set config = model['config'] -%}\n\n {%- set target_table = model.get('alias', model.get('name')) -%}\n\n {%- set strategy_name = config.get('strategy') -%}\n {%- set unique_key = config.get('unique_key') %}\n -- grab current tables grants config for comparision later on\n {%- set grant_config = config.get('grants') -%}\n\n {% set target_relation_exists, target_relation = get_or_create_relation(\n database=model.database,\n schema=model.schema,\n identifier=target_table,\n type='table') -%}\n\n {%- if not target_relation.is_table -%}\n {% do exceptions.relation_wrong_type(target_relation, 'table') %}\n {%- endif -%}\n\n\n {{ run_hooks(pre_hooks, inside_transaction=False) }}\n\n {{ run_hooks(pre_hooks, inside_transaction=True) }}\n\n {% set strategy_macro = strategy_dispatch(strategy_name) %}\n {% set strategy = strategy_macro(model, \"snapshotted_data\", \"source_data\", config, target_relation_exists) %}\n\n {% if not target_relation_exists %}\n\n {% set build_sql = build_snapshot_table(strategy, model['compiled_code']) %}\n {% set final_sql = create_table_as(False, target_relation, build_sql) %}\n\n {% else %}\n\n {{ adapter.valid_snapshot_target(target_relation) }}\n\n {% set staging_table = build_snapshot_staging_table(strategy, sql, target_relation) %}\n\n -- this may no-op if the database does not require column expansion\n {% do adapter.expand_target_column_types(from_relation=staging_table,\n to_relation=target_relation) %}\n\n {% set missing_columns = adapter.get_missing_columns(staging_table, target_relation)\n | rejectattr('name', 'equalto', 'dbt_change_type')\n | rejectattr('name', 'equalto', 'DBT_CHANGE_TYPE')\n | rejectattr('name', 'equalto', 'dbt_unique_key')\n | rejectattr('name', 'equalto', 'DBT_UNIQUE_KEY')\n | list %}\n\n {% do create_columns(target_relation, missing_columns) %}\n\n {% set source_columns = adapter.get_columns_in_relation(staging_table)\n | rejectattr('name', 'equalto', 'dbt_change_type')\n | rejectattr('name', 'equalto', 'DBT_CHANGE_TYPE')\n | rejectattr('name', 'equalto', 'dbt_unique_key')\n | rejectattr('name', 'equalto', 'DBT_UNIQUE_KEY')\n | list %}\n\n {% set quoted_source_columns = [] %}\n {% for column in source_columns %}\n {% do quoted_source_columns.append(adapter.quote(column.name)) %}\n {% endfor %}\n\n {% set final_sql = snapshot_merge_sql(\n target = target_relation,\n source = staging_table,\n insert_cols = quoted_source_columns\n )\n %}\n\n {% endif %}\n\n {% call statement('main') %}\n {{ final_sql }}\n {% endcall %}\n\n {% set should_revoke = should_revoke(target_relation_exists, full_refresh_mode=False) %}\n {% do apply_grants(target_relation, grant_config, should_revoke=should_revoke) %}\n\n {% do persist_docs(target_relation, model) %}\n\n {% if not target_relation_exists %}\n {% do create_indexes(target_relation) %}\n {% endif %}\n\n {{ run_hooks(post_hooks, inside_transaction=True) }}\n\n {{ adapter.commit() }}\n\n {% if staging_table is defined %}\n {% do post_snapshot(staging_table) %}\n {% endif %}\n\n {{ run_hooks(post_hooks, inside_transaction=False) }}\n\n {{ return({'relations': [target_relation]}) }}\n\n{% endmaterialization %}", "depends_on": { "macros": [ - "macro.dbt.get_column_schema_from_query", - "macro.dbt.get_empty_schema_sql", - "macro.dbt.format_columns" + "macro.dbt.get_or_create_relation", + "macro.dbt.run_hooks", + "macro.dbt.strategy_dispatch", + "macro.dbt.build_snapshot_table", + "macro.dbt.create_table_as", + "macro.dbt.build_snapshot_staging_table", + "macro.dbt.create_columns", + "macro.dbt.snapshot_merge_sql", + "macro.dbt.statement", + "macro.dbt.should_revoke", + "macro.dbt.apply_grants", + "macro.dbt.persist_docs", + "macro.dbt.create_indexes", + "macro.dbt.post_snapshot" ] }, "description": "", @@ -8037,20 +8058,22 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.572414, - "supported_languages": null + "created_at": 1730458997.0989273, + "supported_languages": [ + "sql" + ] }, - "macro.dbt.format_columns": { - "name": "format_columns", + "macro.dbt.snapshot_merge_sql": { + "name": "snapshot_merge_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/column/columns_spec_ddl.sql", - "original_file_path": "macros/relations/column/columns_spec_ddl.sql", - "unique_id": "macro.dbt.format_columns", - "macro_sql": "{% macro format_columns(columns) %}\n {% set formatted_columns = [] %}\n {% for column in columns %}\n {%- set formatted_column = adapter.dispatch('format_column', 'dbt')(column) -%}\n {%- do formatted_columns.append(formatted_column) -%}\n {% endfor %}\n {{ return(formatted_columns) }}\n{% endmacro %}", + "path": "macros/materializations/snapshots/snapshot_merge.sql", + "original_file_path": "macros/materializations/snapshots/snapshot_merge.sql", + "unique_id": "macro.dbt.snapshot_merge_sql", + "macro_sql": "{% macro snapshot_merge_sql(target, source, insert_cols) -%}\n {{ adapter.dispatch('snapshot_merge_sql', 'dbt')(target, source, insert_cols) }}\n{%- endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__format_column" + "macro.dbt_postgres.postgres__snapshot_merge_sql" ] }, "description": "", @@ -8061,17 +8084,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.572615, + "created_at": 1730458997.0992007, "supported_languages": null }, - "macro.dbt.default__format_column": { - "name": "default__format_column", + "macro.dbt.default__snapshot_merge_sql": { + "name": "default__snapshot_merge_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/column/columns_spec_ddl.sql", - "original_file_path": "macros/relations/column/columns_spec_ddl.sql", - "unique_id": "macro.dbt.default__format_column", - "macro_sql": "{% macro default__format_column(column) -%}\n {% set data_type = column.dtype %}\n {% set formatted = column.column.lower() ~ \" \" ~ data_type %}\n {{ return({'name': column.name, 'data_type': data_type, 'formatted': formatted}) }}\n{%- endmacro -%}", + "path": "macros/materializations/snapshots/snapshot_merge.sql", + "original_file_path": "macros/materializations/snapshots/snapshot_merge.sql", + "unique_id": "macro.dbt.default__snapshot_merge_sql", + "macro_sql": "{% macro default__snapshot_merge_sql(target, source, insert_cols) -%}\n {%- set insert_cols_csv = insert_cols | join(', ') -%}\n\n merge into {{ target.render() }} as DBT_INTERNAL_DEST\n using {{ source }} as DBT_INTERNAL_SOURCE\n on DBT_INTERNAL_SOURCE.dbt_scd_id = DBT_INTERNAL_DEST.dbt_scd_id\n\n when matched\n and DBT_INTERNAL_DEST.dbt_valid_to is null\n and DBT_INTERNAL_SOURCE.dbt_change_type in ('update', 'delete')\n then update\n set dbt_valid_to = DBT_INTERNAL_SOURCE.dbt_valid_to\n\n when not matched\n and DBT_INTERNAL_SOURCE.dbt_change_type = 'insert'\n then insert ({{ insert_cols_csv }})\n values ({{ insert_cols_csv }})\n\n{% endmacro %}", "depends_on": { "macros": [] }, @@ -8083,20 +8106,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.572789, + "created_at": 1730458997.0993707, "supported_languages": null }, - "macro.dbt.drop_table": { - "name": "drop_table", + "macro.dbt.get_test_sql": { + "name": "get_test_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/table/drop.sql", - "original_file_path": "macros/relations/table/drop.sql", - "unique_id": "macro.dbt.drop_table", - "macro_sql": "{% macro drop_table(relation) -%}\n {{- adapter.dispatch('drop_table', 'dbt')(relation) -}}\n{%- endmacro %}", + "path": "macros/materializations/tests/helpers.sql", + "original_file_path": "macros/materializations/tests/helpers.sql", + "unique_id": "macro.dbt.get_test_sql", + "macro_sql": "{% macro get_test_sql(main_sql, fail_calc, warn_if, error_if, limit) -%}\n {{ adapter.dispatch('get_test_sql', 'dbt')(main_sql, fail_calc, warn_if, error_if, limit) }}\n{%- endmacro %}", "depends_on": { "macros": [ - "macro.dbt_postgres.postgres__drop_table" + "macro.dbt.default__get_test_sql" ] }, "description": "", @@ -8107,17 +8130,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.572928, + "created_at": 1730458997.1000261, "supported_languages": null }, - "macro.dbt.default__drop_table": { - "name": "default__drop_table", + "macro.dbt.default__get_test_sql": { + "name": "default__get_test_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/table/drop.sql", - "original_file_path": "macros/relations/table/drop.sql", - "unique_id": "macro.dbt.default__drop_table", - "macro_sql": "{% macro default__drop_table(relation) -%}\n drop table if exists {{ relation.render() }} cascade\n{%- endmacro %}", + "path": "macros/materializations/tests/helpers.sql", + "original_file_path": "macros/materializations/tests/helpers.sql", + "unique_id": "macro.dbt.default__get_test_sql", + "macro_sql": "{% macro default__get_test_sql(main_sql, fail_calc, warn_if, error_if, limit) -%}\n select\n {{ fail_calc }} as failures,\n {{ fail_calc }} {{ warn_if }} as should_warn,\n {{ fail_calc }} {{ error_if }} as should_error\n from (\n {{ main_sql }}\n {{ \"limit \" ~ limit if limit != none }}\n ) dbt_internal_test\n{%- endmacro %}", "depends_on": { "macros": [] }, @@ -8129,20 +8152,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.572994, + "created_at": 1730458997.1001964, "supported_languages": null }, - "macro.dbt.get_replace_table_sql": { - "name": "get_replace_table_sql", + "macro.dbt.get_unit_test_sql": { + "name": "get_unit_test_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/table/replace.sql", - "original_file_path": "macros/relations/table/replace.sql", - "unique_id": "macro.dbt.get_replace_table_sql", - "macro_sql": "{% macro get_replace_table_sql(relation, sql) %}\n {{- adapter.dispatch('get_replace_table_sql', 'dbt')(relation, sql) -}}\n{% endmacro %}", + "path": "macros/materializations/tests/helpers.sql", + "original_file_path": "macros/materializations/tests/helpers.sql", + "unique_id": "macro.dbt.get_unit_test_sql", + "macro_sql": "{% macro get_unit_test_sql(main_sql, expected_fixture_sql, expected_column_names) -%}\n {{ adapter.dispatch('get_unit_test_sql', 'dbt')(main_sql, expected_fixture_sql, expected_column_names) }}\n{%- endmacro %}", "depends_on": { "macros": [ - "macro.dbt_postgres.postgres__get_replace_table_sql" + "macro.dbt.default__get_unit_test_sql" ] }, "description": "", @@ -8153,19 +8176,21 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.573144, + "created_at": 1730458997.1003046, "supported_languages": null }, - "macro.dbt.default__get_replace_table_sql": { - "name": "default__get_replace_table_sql", + "macro.dbt.default__get_unit_test_sql": { + "name": "default__get_unit_test_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/table/replace.sql", - "original_file_path": "macros/relations/table/replace.sql", - "unique_id": "macro.dbt.default__get_replace_table_sql", - "macro_sql": "{% macro default__get_replace_table_sql(relation, sql) %}\n {{ exceptions.raise_compiler_error(\n \"`get_replace_table_sql` has not been implemented for this adapter.\"\n ) }}\n{% endmacro %}", + "path": "macros/materializations/tests/helpers.sql", + "original_file_path": "macros/materializations/tests/helpers.sql", + "unique_id": "macro.dbt.default__get_unit_test_sql", + "macro_sql": "{% macro default__get_unit_test_sql(main_sql, expected_fixture_sql, expected_column_names) -%}\n-- Build actual result given inputs\nwith dbt_internal_unit_test_actual as (\n select\n {% for expected_column_name in expected_column_names %}{{expected_column_name}}{% if not loop.last -%},{% endif %}{%- endfor -%}, {{ dbt.string_literal(\"actual\") }} as {{ adapter.quote(\"actual_or_expected\") }}\n from (\n {{ main_sql }}\n ) _dbt_internal_unit_test_actual\n),\n-- Build expected result\ndbt_internal_unit_test_expected as (\n select\n {% for expected_column_name in expected_column_names %}{{expected_column_name}}{% if not loop.last -%}, {% endif %}{%- endfor -%}, {{ dbt.string_literal(\"expected\") }} as {{ adapter.quote(\"actual_or_expected\") }}\n from (\n {{ expected_fixture_sql }}\n ) _dbt_internal_unit_test_expected\n)\n-- Union actual and expected results\nselect * from dbt_internal_unit_test_actual\nunion all\nselect * from dbt_internal_unit_test_expected\n{%- endmacro %}", "depends_on": { - "macros": [] + "macros": [ + "macro.dbt.string_literal" + ] }, "description": "", "meta": {}, @@ -8175,20 +8200,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5732212, + "created_at": 1730458997.1006305, "supported_languages": null }, - "macro.dbt.get_rename_table_sql": { - "name": "get_rename_table_sql", + "macro.dbt.get_where_subquery": { + "name": "get_where_subquery", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/table/rename.sql", - "original_file_path": "macros/relations/table/rename.sql", - "unique_id": "macro.dbt.get_rename_table_sql", - "macro_sql": "{% macro get_rename_table_sql(relation, new_name) %}\n {{- adapter.dispatch('get_rename_table_sql', 'dbt')(relation, new_name) -}}\n{% endmacro %}", + "path": "macros/materializations/tests/where_subquery.sql", + "original_file_path": "macros/materializations/tests/where_subquery.sql", + "unique_id": "macro.dbt.get_where_subquery", + "macro_sql": "{% macro get_where_subquery(relation) -%}\n {% do return(adapter.dispatch('get_where_subquery', 'dbt')(relation)) %}\n{%- endmacro %}", "depends_on": { "macros": [ - "macro.dbt_postgres.postgres__get_rename_table_sql" + "macro.dbt.default__get_where_subquery" ] }, "description": "", @@ -8199,17 +8224,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.573368, + "created_at": 1730458997.1008308, "supported_languages": null }, - "macro.dbt.default__get_rename_table_sql": { - "name": "default__get_rename_table_sql", + "macro.dbt.default__get_where_subquery": { + "name": "default__get_where_subquery", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/table/rename.sql", - "original_file_path": "macros/relations/table/rename.sql", - "unique_id": "macro.dbt.default__get_rename_table_sql", - "macro_sql": "{% macro default__get_rename_table_sql(relation, new_name) %}\n {{ exceptions.raise_compiler_error(\n \"`get_rename_table_sql` has not been implemented for this adapter.\"\n ) }}\n{% endmacro %}", + "path": "macros/materializations/tests/where_subquery.sql", + "original_file_path": "macros/materializations/tests/where_subquery.sql", + "unique_id": "macro.dbt.default__get_where_subquery", + "macro_sql": "{% macro default__get_where_subquery(relation) -%}\n {% set where = config.get('where', '') %}\n {% if where %}\n {%- set filtered -%}\n (select * from {{ relation }} where {{ where }}) dbt_subquery\n {%- endset -%}\n {% do return(filtered) %}\n {%- else -%}\n {% do return(relation) %}\n {%- endif -%}\n{%- endmacro %}", "depends_on": { "macros": [] }, @@ -8221,20 +8246,27 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5734441, + "created_at": 1730458997.101035, "supported_languages": null }, - "macro.dbt.get_create_table_as_sql": { - "name": "get_create_table_as_sql", + "macro.dbt.materialization_unit_default": { + "name": "materialization_unit_default", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/table/create.sql", - "original_file_path": "macros/relations/table/create.sql", - "unique_id": "macro.dbt.get_create_table_as_sql", - "macro_sql": "{% macro get_create_table_as_sql(temporary, relation, sql) -%}\n {{ adapter.dispatch('get_create_table_as_sql', 'dbt')(temporary, relation, sql) }}\n{%- endmacro %}", + "path": "macros/materializations/tests/unit.sql", + "original_file_path": "macros/materializations/tests/unit.sql", + "unique_id": "macro.dbt.materialization_unit_default", + "macro_sql": "{%- materialization unit, default -%}\n\n {% set relations = [] %}\n\n {% set expected_rows = config.get('expected_rows') %}\n {% set expected_sql = config.get('expected_sql') %}\n {% set tested_expected_column_names = expected_rows[0].keys() if (expected_rows | length ) > 0 else get_columns_in_query(sql) %} %}\n\n {%- set target_relation = this.incorporate(type='table') -%}\n {%- set temp_relation = make_temp_relation(target_relation)-%}\n {% do run_query(get_create_table_as_sql(True, temp_relation, get_empty_subquery_sql(sql))) %}\n {%- set columns_in_relation = adapter.get_columns_in_relation(temp_relation) -%}\n {%- set column_name_to_data_types = {} -%}\n {%- for column in columns_in_relation -%}\n {%- do column_name_to_data_types.update({column.name|lower: column.data_type}) -%}\n {%- endfor -%}\n\n {% if not expected_sql %}\n {% set expected_sql = get_expected_sql(expected_rows, column_name_to_data_types) %}\n {% endif %}\n {% set unit_test_sql = get_unit_test_sql(sql, expected_sql, tested_expected_column_names) %}\n\n {% call statement('main', fetch_result=True) -%}\n\n {{ unit_test_sql }}\n\n {%- endcall %}\n\n {% do adapter.drop_relation(temp_relation) %}\n\n {{ return({'relations': relations}) }}\n\n{%- endmaterialization -%}", "depends_on": { "macros": [ - "macro.dbt.default__get_create_table_as_sql" + "macro.dbt.get_columns_in_query", + "macro.dbt.make_temp_relation", + "macro.dbt.run_query", + "macro.dbt.get_create_table_as_sql", + "macro.dbt.get_empty_subquery_sql", + "macro.dbt.get_expected_sql", + "macro.dbt.get_unit_test_sql", + "macro.dbt.statement" ] }, "description": "", @@ -8245,20 +8277,25 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.573946, - "supported_languages": null + "created_at": 1730458997.1019504, + "supported_languages": [ + "sql" + ] }, - "macro.dbt.default__get_create_table_as_sql": { - "name": "default__get_create_table_as_sql", + "macro.dbt.materialization_test_default": { + "name": "materialization_test_default", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/table/create.sql", - "original_file_path": "macros/relations/table/create.sql", - "unique_id": "macro.dbt.default__get_create_table_as_sql", - "macro_sql": "{% macro default__get_create_table_as_sql(temporary, relation, sql) -%}\n {{ return(create_table_as(temporary, relation, sql)) }}\n{% endmacro %}", + "path": "macros/materializations/tests/test.sql", + "original_file_path": "macros/materializations/tests/test.sql", + "unique_id": "macro.dbt.materialization_test_default", + "macro_sql": "{%- materialization test, default -%}\n\n {% set relations = [] %}\n\n {% if should_store_failures() %}\n\n {% set identifier = model['alias'] %}\n {% set old_relation = adapter.get_relation(database=database, schema=schema, identifier=identifier) %}\n\n {% set store_failures_as = config.get('store_failures_as') %}\n -- if `--store-failures` is invoked via command line and `store_failures_as` is not set,\n -- config.get('store_failures_as', 'table') returns None, not 'table'\n {% if store_failures_as == none %}{% set store_failures_as = 'table' %}{% endif %}\n {% if store_failures_as not in ['table', 'view'] %}\n {{ exceptions.raise_compiler_error(\n \"'\" ~ store_failures_as ~ \"' is not a valid value for `store_failures_as`. \"\n \"Accepted values are: ['ephemeral', 'table', 'view']\"\n ) }}\n {% endif %}\n\n {% set target_relation = api.Relation.create(\n identifier=identifier, schema=schema, database=database, type=store_failures_as) -%} %}\n\n {% if old_relation %}\n {% do adapter.drop_relation(old_relation) %}\n {% endif %}\n\n {% call statement(auto_begin=True) %}\n {{ get_create_sql(target_relation, sql) }}\n {% endcall %}\n\n {% do relations.append(target_relation) %}\n\n {% set main_sql %}\n select *\n from {{ target_relation }}\n {% endset %}\n\n {{ adapter.commit() }}\n\n {% else %}\n\n {% set main_sql = sql %}\n\n {% endif %}\n\n {% set limit = config.get('limit') %}\n {% set fail_calc = config.get('fail_calc') %}\n {% set warn_if = config.get('warn_if') %}\n {% set error_if = config.get('error_if') %}\n\n {% call statement('main', fetch_result=True) -%}\n\n {{ get_test_sql(main_sql, fail_calc, warn_if, error_if, limit)}}\n\n {%- endcall %}\n\n {{ return({'relations': relations}) }}\n\n{%- endmaterialization -%}", "depends_on": { "macros": [ - "macro.dbt.create_table_as" + "macro.dbt.should_store_failures", + "macro.dbt.statement", + "macro.dbt.get_create_sql", + "macro.dbt.get_test_sql" ] }, "description": "", @@ -8269,20 +8306,32 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.574038, - "supported_languages": null + "created_at": 1730458997.1035166, + "supported_languages": [ + "sql" + ] }, - "macro.dbt.create_table_as": { - "name": "create_table_as", + "macro.dbt.materialization_table_default": { + "name": "materialization_table_default", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/table/create.sql", - "original_file_path": "macros/relations/table/create.sql", - "unique_id": "macro.dbt.create_table_as", - "macro_sql": "{% macro create_table_as(temporary, relation, compiled_code, language='sql') -%}\n {# backward compatibility for create_table_as that does not support language #}\n {% if language == \"sql\" %}\n {{ adapter.dispatch('create_table_as', 'dbt')(temporary, relation, compiled_code)}}\n {% else %}\n {{ adapter.dispatch('create_table_as', 'dbt')(temporary, relation, compiled_code, language) }}\n {% endif %}\n\n{%- endmacro %}", + "path": "macros/materializations/models/table.sql", + "original_file_path": "macros/materializations/models/table.sql", + "unique_id": "macro.dbt.materialization_table_default", + "macro_sql": "{% materialization table, default %}\n\n {%- set existing_relation = load_cached_relation(this) -%}\n {%- set target_relation = this.incorporate(type='table') %}\n {%- set intermediate_relation = make_intermediate_relation(target_relation) -%}\n -- the intermediate_relation should not already exist in the database; get_relation\n -- will return None in that case. Otherwise, we get a relation that we can drop\n -- later, before we try to use this name for the current operation\n {%- set preexisting_intermediate_relation = load_cached_relation(intermediate_relation) -%}\n /*\n See ../view/view.sql for more information about this relation.\n */\n {%- set backup_relation_type = 'table' if existing_relation is none else existing_relation.type -%}\n {%- set backup_relation = make_backup_relation(target_relation, backup_relation_type) -%}\n -- as above, the backup_relation should not already exist\n {%- set preexisting_backup_relation = load_cached_relation(backup_relation) -%}\n -- grab current tables grants config for comparision later on\n {% set grant_config = config.get('grants') %}\n\n -- drop the temp relations if they exist already in the database\n {{ drop_relation_if_exists(preexisting_intermediate_relation) }}\n {{ drop_relation_if_exists(preexisting_backup_relation) }}\n\n {{ run_hooks(pre_hooks, inside_transaction=False) }}\n\n -- `BEGIN` happens here:\n {{ run_hooks(pre_hooks, inside_transaction=True) }}\n\n -- build model\n {% call statement('main') -%}\n {{ get_create_table_as_sql(False, intermediate_relation, sql) }}\n {%- endcall %}\n\n -- cleanup\n {% if existing_relation is not none %}\n /* Do the equivalent of rename_if_exists. 'existing_relation' could have been dropped\n since the variable was first set. */\n {% set existing_relation = load_cached_relation(existing_relation) %}\n {% if existing_relation is not none %}\n {{ adapter.rename_relation(existing_relation, backup_relation) }}\n {% endif %}\n {% endif %}\n\n {{ adapter.rename_relation(intermediate_relation, target_relation) }}\n\n {% do create_indexes(target_relation) %}\n\n {{ run_hooks(post_hooks, inside_transaction=True) }}\n\n {% set should_revoke = should_revoke(existing_relation, full_refresh_mode=True) %}\n {% do apply_grants(target_relation, grant_config, should_revoke=should_revoke) %}\n\n {% do persist_docs(target_relation, model) %}\n\n -- `COMMIT` happens here\n {{ adapter.commit() }}\n\n -- finally, drop the existing/backup relation after the commit\n {{ drop_relation_if_exists(backup_relation) }}\n\n {{ run_hooks(post_hooks, inside_transaction=False) }}\n\n {{ return({'relations': [target_relation]}) }}\n{% endmaterialization %}", "depends_on": { "macros": [ - "macro.dbt_postgres.postgres__create_table_as" + "macro.dbt.load_cached_relation", + "macro.dbt.make_intermediate_relation", + "macro.dbt.make_backup_relation", + "macro.dbt.drop_relation_if_exists", + "macro.dbt.run_hooks", + "macro.dbt.statement", + "macro.dbt.get_create_table_as_sql", + "macro.dbt.create_indexes", + "macro.dbt.should_revoke", + "macro.dbt.apply_grants", + "macro.dbt.persist_docs" ] }, "description": "", @@ -8293,22 +8342,31 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5742562, - "supported_languages": null + "created_at": 1730458997.1051252, + "supported_languages": [ + "sql" + ] }, - "macro.dbt.default__create_table_as": { - "name": "default__create_table_as", + "macro.dbt.materialization_view_default": { + "name": "materialization_view_default", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/table/create.sql", - "original_file_path": "macros/relations/table/create.sql", - "unique_id": "macro.dbt.default__create_table_as", - "macro_sql": "{% macro default__create_table_as(temporary, relation, sql) -%}\n {%- set sql_header = config.get('sql_header', none) -%}\n\n {{ sql_header if sql_header is not none }}\n\n create {% if temporary: -%}temporary{%- endif %} table\n {{ relation.include(database=(not temporary), schema=(not temporary)) }}\n {% set contract_config = config.get('contract') %}\n {% if contract_config.enforced and (not temporary) %}\n {{ get_assert_columns_equivalent(sql) }}\n {{ get_table_columns_and_constraints() }}\n {%- set sql = get_select_subquery(sql) %}\n {% endif %}\n as (\n {{ sql }}\n );\n{%- endmacro %}", + "path": "macros/materializations/models/view.sql", + "original_file_path": "macros/materializations/models/view.sql", + "unique_id": "macro.dbt.materialization_view_default", + "macro_sql": "{%- materialization view, default -%}\n\n {%- set existing_relation = load_cached_relation(this) -%}\n {%- set target_relation = this.incorporate(type='view') -%}\n {%- set intermediate_relation = make_intermediate_relation(target_relation) -%}\n\n -- the intermediate_relation should not already exist in the database; get_relation\n -- will return None in that case. Otherwise, we get a relation that we can drop\n -- later, before we try to use this name for the current operation\n {%- set preexisting_intermediate_relation = load_cached_relation(intermediate_relation) -%}\n /*\n This relation (probably) doesn't exist yet. If it does exist, it's a leftover from\n a previous run, and we're going to try to drop it immediately. At the end of this\n materialization, we're going to rename the \"existing_relation\" to this identifier,\n and then we're going to drop it. In order to make sure we run the correct one of:\n - drop view ...\n - drop table ...\n\n We need to set the type of this relation to be the type of the existing_relation, if it exists,\n or else \"view\" as a sane default if it does not. Note that if the existing_relation does not\n exist, then there is nothing to move out of the way and subsequentally drop. In that case,\n this relation will be effectively unused.\n */\n {%- set backup_relation_type = 'view' if existing_relation is none else existing_relation.type -%}\n {%- set backup_relation = make_backup_relation(target_relation, backup_relation_type) -%}\n -- as above, the backup_relation should not already exist\n {%- set preexisting_backup_relation = load_cached_relation(backup_relation) -%}\n -- grab current tables grants config for comparision later on\n {% set grant_config = config.get('grants') %}\n\n {{ run_hooks(pre_hooks, inside_transaction=False) }}\n\n -- drop the temp relations if they exist already in the database\n {{ drop_relation_if_exists(preexisting_intermediate_relation) }}\n {{ drop_relation_if_exists(preexisting_backup_relation) }}\n\n -- `BEGIN` happens here:\n {{ run_hooks(pre_hooks, inside_transaction=True) }}\n\n -- build model\n {% call statement('main') -%}\n {{ get_create_view_as_sql(intermediate_relation, sql) }}\n {%- endcall %}\n\n -- cleanup\n -- move the existing view out of the way\n {% if existing_relation is not none %}\n /* Do the equivalent of rename_if_exists. 'existing_relation' could have been dropped\n since the variable was first set. */\n {% set existing_relation = load_cached_relation(existing_relation) %}\n {% if existing_relation is not none %}\n {{ adapter.rename_relation(existing_relation, backup_relation) }}\n {% endif %}\n {% endif %}\n {{ adapter.rename_relation(intermediate_relation, target_relation) }}\n\n {% set should_revoke = should_revoke(existing_relation, full_refresh_mode=True) %}\n {% do apply_grants(target_relation, grant_config, should_revoke=should_revoke) %}\n\n {% do persist_docs(target_relation, model) %}\n\n {{ run_hooks(post_hooks, inside_transaction=True) }}\n\n {{ adapter.commit() }}\n\n {{ drop_relation_if_exists(backup_relation) }}\n\n {{ run_hooks(post_hooks, inside_transaction=False) }}\n\n {{ return({'relations': [target_relation]}) }}\n\n{%- endmaterialization -%}", "depends_on": { "macros": [ - "macro.dbt.get_assert_columns_equivalent", - "macro.dbt.get_table_columns_and_constraints", - "macro.dbt.get_select_subquery" + "macro.dbt.load_cached_relation", + "macro.dbt.make_intermediate_relation", + "macro.dbt.make_backup_relation", + "macro.dbt.run_hooks", + "macro.dbt.drop_relation_if_exists", + "macro.dbt.statement", + "macro.dbt.get_create_view_as_sql", + "macro.dbt.should_revoke", + "macro.dbt.apply_grants", + "macro.dbt.persist_docs" ] }, "description": "", @@ -8319,19 +8377,30 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5746078, - "supported_languages": null + "created_at": 1730458997.106701, + "supported_languages": [ + "sql" + ] }, - "macro.dbt.default__get_column_names": { - "name": "default__get_column_names", + "macro.dbt.materialization_materialized_view_default": { + "name": "materialization_materialized_view_default", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/table/create.sql", - "original_file_path": "macros/relations/table/create.sql", - "unique_id": "macro.dbt.default__get_column_names", - "macro_sql": "{% macro default__get_column_names() %}\n {#- loop through user_provided_columns to get column names -#}\n {%- set user_provided_columns = model['columns'] -%}\n {%- for i in user_provided_columns %}\n {%- set col = user_provided_columns[i] -%}\n {%- set col_name = adapter.quote(col['name']) if col.get('quote') else col['name'] -%}\n {{ col_name }}{{ \", \" if not loop.last }}\n {%- endfor -%}\n{% endmacro %}", + "path": "macros/materializations/models/materialized_view.sql", + "original_file_path": "macros/materializations/models/materialized_view.sql", + "unique_id": "macro.dbt.materialization_materialized_view_default", + "macro_sql": "{% materialization materialized_view, default %}\n {% set existing_relation = load_cached_relation(this) %}\n {% set target_relation = this.incorporate(type=this.MaterializedView) %}\n {% set intermediate_relation = make_intermediate_relation(target_relation) %}\n {% set backup_relation_type = target_relation.MaterializedView if existing_relation is none else existing_relation.type %}\n {% set backup_relation = make_backup_relation(target_relation, backup_relation_type) %}\n\n {{ materialized_view_setup(backup_relation, intermediate_relation, pre_hooks) }}\n\n {% set build_sql = materialized_view_get_build_sql(existing_relation, target_relation, backup_relation, intermediate_relation) %}\n\n {% if build_sql == '' %}\n {{ materialized_view_execute_no_op(target_relation) }}\n {% else %}\n {{ materialized_view_execute_build_sql(build_sql, existing_relation, target_relation, post_hooks) }}\n {% endif %}\n\n {{ materialized_view_teardown(backup_relation, intermediate_relation, post_hooks) }}\n\n {{ return({'relations': [target_relation]}) }}\n\n{% endmaterialization %}", "depends_on": { - "macros": [] + "macros": [ + "macro.dbt.load_cached_relation", + "macro.dbt.make_intermediate_relation", + "macro.dbt.make_backup_relation", + "macro.dbt.materialized_view_setup", + "macro.dbt.materialized_view_get_build_sql", + "macro.dbt.materialized_view_execute_no_op", + "macro.dbt.materialized_view_execute_build_sql", + "macro.dbt.materialized_view_teardown" + ] }, "description": "", "meta": {}, @@ -8341,20 +8410,24 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.574848, - "supported_languages": null + "created_at": 1730458997.10946, + "supported_languages": [ + "sql" + ] }, - "macro.dbt.get_select_subquery": { - "name": "get_select_subquery", - "resource_type": "macro", - "package_name": "dbt", - "path": "macros/relations/table/create.sql", - "original_file_path": "macros/relations/table/create.sql", - "unique_id": "macro.dbt.get_select_subquery", - "macro_sql": "{% macro get_select_subquery(sql) %}\n {{ return(adapter.dispatch('get_select_subquery', 'dbt')(sql)) }}\n{% endmacro %}", + "macro.dbt.materialized_view_setup": { + "name": "materialized_view_setup", + "resource_type": "macro", + "package_name": "dbt", + "path": "macros/materializations/models/materialized_view.sql", + "original_file_path": "macros/materializations/models/materialized_view.sql", + "unique_id": "macro.dbt.materialized_view_setup", + "macro_sql": "{% macro materialized_view_setup(backup_relation, intermediate_relation, pre_hooks) %}\n\n -- backup_relation and intermediate_relation should not already exist in the database\n -- it's possible these exist because of a previous run that exited unexpectedly\n {% set preexisting_backup_relation = load_cached_relation(backup_relation) %}\n {% set preexisting_intermediate_relation = load_cached_relation(intermediate_relation) %}\n\n -- drop the temp relations if they exist already in the database\n {{ drop_relation_if_exists(preexisting_backup_relation) }}\n {{ drop_relation_if_exists(preexisting_intermediate_relation) }}\n\n {{ run_hooks(pre_hooks, inside_transaction=False) }}\n\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__get_select_subquery" + "macro.dbt.load_cached_relation", + "macro.dbt.drop_relation_if_exists", + "macro.dbt.run_hooks" ] }, "description": "", @@ -8365,20 +8438,21 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.574949, + "created_at": 1730458997.1096776, "supported_languages": null }, - "macro.dbt.default__get_select_subquery": { - "name": "default__get_select_subquery", + "macro.dbt.materialized_view_teardown": { + "name": "materialized_view_teardown", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/table/create.sql", - "original_file_path": "macros/relations/table/create.sql", - "unique_id": "macro.dbt.default__get_select_subquery", - "macro_sql": "{% macro default__get_select_subquery(sql) %}\n select {{ adapter.dispatch('get_column_names', 'dbt')() }}\n from (\n {{ sql }}\n ) as model_subq\n{%- endmacro %}", + "path": "macros/materializations/models/materialized_view.sql", + "original_file_path": "macros/materializations/models/materialized_view.sql", + "unique_id": "macro.dbt.materialized_view_teardown", + "macro_sql": "{% macro materialized_view_teardown(backup_relation, intermediate_relation, post_hooks) %}\n\n -- drop the temp relations if they exist to leave the database clean for the next run\n {{ drop_relation_if_exists(backup_relation) }}\n {{ drop_relation_if_exists(intermediate_relation) }}\n\n {{ run_hooks(post_hooks, inside_transaction=False) }}\n\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__get_column_names" + "macro.dbt.drop_relation_if_exists", + "macro.dbt.run_hooks" ] }, "description": "", @@ -8389,20 +8463,25 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.575043, + "created_at": 1730458997.109816, "supported_languages": null }, - "macro.dbt.drop_view": { - "name": "drop_view", + "macro.dbt.materialized_view_get_build_sql": { + "name": "materialized_view_get_build_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/view/drop.sql", - "original_file_path": "macros/relations/view/drop.sql", - "unique_id": "macro.dbt.drop_view", - "macro_sql": "{% macro drop_view(relation) -%}\n {{- adapter.dispatch('drop_view', 'dbt')(relation) -}}\n{%- endmacro %}", + "path": "macros/materializations/models/materialized_view.sql", + "original_file_path": "macros/materializations/models/materialized_view.sql", + "unique_id": "macro.dbt.materialized_view_get_build_sql", + "macro_sql": "{% macro materialized_view_get_build_sql(existing_relation, target_relation, backup_relation, intermediate_relation) %}\n\n {% set full_refresh_mode = should_full_refresh() %}\n\n -- determine the scenario we're in: create, full_refresh, alter, refresh data\n {% if existing_relation is none %}\n {% set build_sql = get_create_materialized_view_as_sql(target_relation, sql) %}\n {% elif full_refresh_mode or not existing_relation.is_materialized_view %}\n {% set build_sql = get_replace_sql(existing_relation, target_relation, sql) %}\n {% else %}\n\n -- get config options\n {% set on_configuration_change = config.get('on_configuration_change') %}\n {% set configuration_changes = get_materialized_view_configuration_changes(existing_relation, config) %}\n\n {% if configuration_changes is none %}\n {% set build_sql = refresh_materialized_view(target_relation) %}\n\n {% elif on_configuration_change == 'apply' %}\n {% set build_sql = get_alter_materialized_view_as_sql(target_relation, configuration_changes, sql, existing_relation, backup_relation, intermediate_relation) %}\n {% elif on_configuration_change == 'continue' %}\n {% set build_sql = '' %}\n {{ exceptions.warn(\"Configuration changes were identified and `on_configuration_change` was set to `continue` for `\" ~ target_relation.render() ~ \"`\") }}\n {% elif on_configuration_change == 'fail' %}\n {{ exceptions.raise_fail_fast_error(\"Configuration changes were identified and `on_configuration_change` was set to `fail` for `\" ~ target_relation.render() ~ \"`\") }}\n\n {% else %}\n -- this only happens if the user provides a value other than `apply`, 'skip', 'fail'\n {{ exceptions.raise_compiler_error(\"Unexpected configuration scenario\") }}\n\n {% endif %}\n\n {% endif %}\n\n {% do return(build_sql) %}\n\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt_postgres.postgres__drop_view" + "macro.dbt.should_full_refresh", + "macro.dbt.get_create_materialized_view_as_sql", + "macro.dbt.get_replace_sql", + "macro.dbt.get_materialized_view_configuration_changes", + "macro.dbt.refresh_materialized_view", + "macro.dbt.get_alter_materialized_view_as_sql" ] }, "description": "", @@ -8413,17 +8492,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5751832, + "created_at": 1730458997.1105013, "supported_languages": null }, - "macro.dbt.default__drop_view": { - "name": "default__drop_view", + "macro.dbt.materialized_view_execute_no_op": { + "name": "materialized_view_execute_no_op", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/view/drop.sql", - "original_file_path": "macros/relations/view/drop.sql", - "unique_id": "macro.dbt.default__drop_view", - "macro_sql": "{% macro default__drop_view(relation) -%}\n drop view if exists {{ relation.render() }} cascade\n{%- endmacro %}", + "path": "macros/materializations/models/materialized_view.sql", + "original_file_path": "macros/materializations/models/materialized_view.sql", + "unique_id": "macro.dbt.materialized_view_execute_no_op", + "macro_sql": "{% macro materialized_view_execute_no_op(target_relation) %}\n {% do store_raw_result(\n name=\"main\",\n message=\"skip \" ~ target_relation,\n code=\"skip\",\n rows_affected=\"-1\"\n ) %}\n{% endmacro %}", "depends_on": { "macros": [] }, @@ -8435,20 +8514,24 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.575253, + "created_at": 1730458997.1106238, "supported_languages": null }, - "macro.dbt.get_replace_view_sql": { - "name": "get_replace_view_sql", + "macro.dbt.materialized_view_execute_build_sql": { + "name": "materialized_view_execute_build_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/view/replace.sql", - "original_file_path": "macros/relations/view/replace.sql", - "unique_id": "macro.dbt.get_replace_view_sql", - "macro_sql": "{% macro get_replace_view_sql(relation, sql) %}\n {{- adapter.dispatch('get_replace_view_sql', 'dbt')(relation, sql) -}}\n{% endmacro %}", + "path": "macros/materializations/models/materialized_view.sql", + "original_file_path": "macros/materializations/models/materialized_view.sql", + "unique_id": "macro.dbt.materialized_view_execute_build_sql", + "macro_sql": "{% macro materialized_view_execute_build_sql(build_sql, existing_relation, target_relation, post_hooks) %}\n\n -- `BEGIN` happens here:\n {{ run_hooks(pre_hooks, inside_transaction=True) }}\n\n {% set grant_config = config.get('grants') %}\n\n {% call statement(name=\"main\") %}\n {{ build_sql }}\n {% endcall %}\n\n {% set should_revoke = should_revoke(existing_relation, full_refresh_mode=True) %}\n {% do apply_grants(target_relation, grant_config, should_revoke=should_revoke) %}\n\n {% do persist_docs(target_relation, model) %}\n\n {{ run_hooks(post_hooks, inside_transaction=True) }}\n\n {{ adapter.commit() }}\n\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt_postgres.postgres__get_replace_view_sql" + "macro.dbt.run_hooks", + "macro.dbt.statement", + "macro.dbt.should_revoke", + "macro.dbt.apply_grants", + "macro.dbt.persist_docs" ] }, "description": "", @@ -8459,19 +8542,21 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.575773, + "created_at": 1730458997.1109552, "supported_languages": null }, - "macro.dbt.default__get_replace_view_sql": { - "name": "default__get_replace_view_sql", + "macro.dbt.get_incremental_append_sql": { + "name": "get_incremental_append_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/view/replace.sql", - "original_file_path": "macros/relations/view/replace.sql", - "unique_id": "macro.dbt.default__get_replace_view_sql", - "macro_sql": "{% macro default__get_replace_view_sql(relation, sql) %}\n {{ exceptions.raise_compiler_error(\n \"`get_replace_view_sql` has not been implemented for this adapter.\"\n ) }}\n{% endmacro %}", + "path": "macros/materializations/models/incremental/strategies.sql", + "original_file_path": "macros/materializations/models/incremental/strategies.sql", + "unique_id": "macro.dbt.get_incremental_append_sql", + "macro_sql": "{% macro get_incremental_append_sql(arg_dict) %}\n\n {{ return(adapter.dispatch('get_incremental_append_sql', 'dbt')(arg_dict)) }}\n\n{% endmacro %}", "depends_on": { - "macros": [] + "macros": [ + "macro.dbt.default__get_incremental_append_sql" + ] }, "description": "", "meta": {}, @@ -8481,26 +8566,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.575861, + "created_at": 1730458997.111433, "supported_languages": null }, - "macro.dbt.create_or_replace_view": { - "name": "create_or_replace_view", + "macro.dbt.default__get_incremental_append_sql": { + "name": "default__get_incremental_append_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/view/replace.sql", - "original_file_path": "macros/relations/view/replace.sql", - "unique_id": "macro.dbt.create_or_replace_view", - "macro_sql": "{% macro create_or_replace_view() %}\n {%- set identifier = model['alias'] -%}\n\n {%- set old_relation = adapter.get_relation(database=database, schema=schema, identifier=identifier) -%}\n {%- set exists_as_view = (old_relation is not none and old_relation.is_view) -%}\n\n {%- set target_relation = api.Relation.create(\n identifier=identifier, schema=schema, database=database,\n type='view') -%}\n {% set grant_config = config.get('grants') %}\n\n {{ run_hooks(pre_hooks) }}\n\n -- If there's a table with the same name and we weren't told to full refresh,\n -- that's an error. If we were told to full refresh, drop it. This behavior differs\n -- for Snowflake and BigQuery, so multiple dispatch is used.\n {%- if old_relation is not none and old_relation.is_table -%}\n {{ handle_existing_table(should_full_refresh(), old_relation) }}\n {%- endif -%}\n\n -- build model\n {% call statement('main') -%}\n {{ get_create_view_as_sql(target_relation, sql) }}\n {%- endcall %}\n\n {% set should_revoke = should_revoke(exists_as_view, full_refresh_mode=True) %}\n {% do apply_grants(target_relation, grant_config, should_revoke=should_revoke) %}\n\n {{ run_hooks(post_hooks) }}\n\n {{ return({'relations': [target_relation]}) }}\n\n{% endmacro %}", + "path": "macros/materializations/models/incremental/strategies.sql", + "original_file_path": "macros/materializations/models/incremental/strategies.sql", + "unique_id": "macro.dbt.default__get_incremental_append_sql", + "macro_sql": "{% macro default__get_incremental_append_sql(arg_dict) %}\n\n {% do return(get_insert_into_sql(arg_dict[\"target_relation\"], arg_dict[\"temp_relation\"], arg_dict[\"dest_columns\"])) %}\n\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.run_hooks", - "macro.dbt.handle_existing_table", - "macro.dbt.should_full_refresh", - "macro.dbt.statement", - "macro.dbt.get_create_view_as_sql", - "macro.dbt.should_revoke", - "macro.dbt.apply_grants" + "macro.dbt.get_insert_into_sql" ] }, "description": "", @@ -8511,20 +8590,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.57647, + "created_at": 1730458997.1115487, "supported_languages": null }, - "macro.dbt.handle_existing_table": { - "name": "handle_existing_table", + "macro.dbt.get_incremental_delete_insert_sql": { + "name": "get_incremental_delete_insert_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/view/replace.sql", - "original_file_path": "macros/relations/view/replace.sql", - "unique_id": "macro.dbt.handle_existing_table", - "macro_sql": "{% macro handle_existing_table(full_refresh, old_relation) %}\n {{ adapter.dispatch('handle_existing_table', 'dbt')(full_refresh, old_relation) }}\n{% endmacro %}", + "path": "macros/materializations/models/incremental/strategies.sql", + "original_file_path": "macros/materializations/models/incremental/strategies.sql", + "unique_id": "macro.dbt.get_incremental_delete_insert_sql", + "macro_sql": "{% macro get_incremental_delete_insert_sql(arg_dict) %}\n\n {{ return(adapter.dispatch('get_incremental_delete_insert_sql', 'dbt')(arg_dict)) }}\n\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__handle_existing_table" + "macro.dbt.default__get_incremental_delete_insert_sql" ] }, "description": "", @@ -8535,19 +8614,21 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.576582, + "created_at": 1730458997.1116428, "supported_languages": null }, - "macro.dbt.default__handle_existing_table": { - "name": "default__handle_existing_table", + "macro.dbt.default__get_incremental_delete_insert_sql": { + "name": "default__get_incremental_delete_insert_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/view/replace.sql", - "original_file_path": "macros/relations/view/replace.sql", - "unique_id": "macro.dbt.default__handle_existing_table", - "macro_sql": "{% macro default__handle_existing_table(full_refresh, old_relation) %}\n {{ log(\"Dropping relation \" ~ old_relation.render() ~ \" because it is of type \" ~ old_relation.type) }}\n {{ adapter.drop_relation(old_relation) }}\n{% endmacro %}", + "path": "macros/materializations/models/incremental/strategies.sql", + "original_file_path": "macros/materializations/models/incremental/strategies.sql", + "unique_id": "macro.dbt.default__get_incremental_delete_insert_sql", + "macro_sql": "{% macro default__get_incremental_delete_insert_sql(arg_dict) %}\n\n {% do return(get_delete_insert_merge_sql(arg_dict[\"target_relation\"], arg_dict[\"temp_relation\"], arg_dict[\"unique_key\"], arg_dict[\"dest_columns\"], arg_dict[\"incremental_predicates\"])) %}\n\n{% endmacro %}", "depends_on": { - "macros": [] + "macros": [ + "macro.dbt.get_delete_insert_merge_sql" + ] }, "description": "", "meta": {}, @@ -8557,20 +8638,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.576712, + "created_at": 1730458997.1117997, "supported_languages": null }, - "macro.dbt.get_rename_view_sql": { - "name": "get_rename_view_sql", + "macro.dbt.get_incremental_merge_sql": { + "name": "get_incremental_merge_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/view/rename.sql", - "original_file_path": "macros/relations/view/rename.sql", - "unique_id": "macro.dbt.get_rename_view_sql", - "macro_sql": "{% macro get_rename_view_sql(relation, new_name) %}\n {{- adapter.dispatch('get_rename_view_sql', 'dbt')(relation, new_name) -}}\n{% endmacro %}", + "path": "macros/materializations/models/incremental/strategies.sql", + "original_file_path": "macros/materializations/models/incremental/strategies.sql", + "unique_id": "macro.dbt.get_incremental_merge_sql", + "macro_sql": "{% macro get_incremental_merge_sql(arg_dict) %}\n\n {{ return(adapter.dispatch('get_incremental_merge_sql', 'dbt')(arg_dict)) }}\n\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt_postgres.postgres__get_rename_view_sql" + "macro.dbt.default__get_incremental_merge_sql" ] }, "description": "", @@ -8581,19 +8662,21 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5768719, + "created_at": 1730458997.1119013, "supported_languages": null }, - "macro.dbt.default__get_rename_view_sql": { - "name": "default__get_rename_view_sql", + "macro.dbt.default__get_incremental_merge_sql": { + "name": "default__get_incremental_merge_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/view/rename.sql", - "original_file_path": "macros/relations/view/rename.sql", - "unique_id": "macro.dbt.default__get_rename_view_sql", - "macro_sql": "{% macro default__get_rename_view_sql(relation, new_name) %}\n {{ exceptions.raise_compiler_error(\n \"`get_rename_view_sql` has not been implemented for this adapter.\"\n ) }}\n{% endmacro %}", + "path": "macros/materializations/models/incremental/strategies.sql", + "original_file_path": "macros/materializations/models/incremental/strategies.sql", + "unique_id": "macro.dbt.default__get_incremental_merge_sql", + "macro_sql": "{% macro default__get_incremental_merge_sql(arg_dict) %}\n\n {% do return(get_merge_sql(arg_dict[\"target_relation\"], arg_dict[\"temp_relation\"], arg_dict[\"unique_key\"], arg_dict[\"dest_columns\"], arg_dict[\"incremental_predicates\"])) %}\n\n{% endmacro %}", "depends_on": { - "macros": [] + "macros": [ + "macro.dbt.get_merge_sql" + ] }, "description": "", "meta": {}, @@ -8603,20 +8686,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.576959, + "created_at": 1730458997.1120682, "supported_languages": null }, - "macro.dbt.get_create_view_as_sql": { - "name": "get_create_view_as_sql", + "macro.dbt.get_incremental_insert_overwrite_sql": { + "name": "get_incremental_insert_overwrite_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/view/create.sql", - "original_file_path": "macros/relations/view/create.sql", - "unique_id": "macro.dbt.get_create_view_as_sql", - "macro_sql": "{% macro get_create_view_as_sql(relation, sql) -%}\n {{ adapter.dispatch('get_create_view_as_sql', 'dbt')(relation, sql) }}\n{%- endmacro %}", + "path": "macros/materializations/models/incremental/strategies.sql", + "original_file_path": "macros/materializations/models/incremental/strategies.sql", + "unique_id": "macro.dbt.get_incremental_insert_overwrite_sql", + "macro_sql": "{% macro get_incremental_insert_overwrite_sql(arg_dict) %}\n\n {{ return(adapter.dispatch('get_incremental_insert_overwrite_sql', 'dbt')(arg_dict)) }}\n\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__get_create_view_as_sql" + "macro.dbt.default__get_incremental_insert_overwrite_sql" ] }, "description": "", @@ -8627,20 +8710,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.577215, + "created_at": 1730458997.1121714, "supported_languages": null }, - "macro.dbt.default__get_create_view_as_sql": { - "name": "default__get_create_view_as_sql", + "macro.dbt.default__get_incremental_insert_overwrite_sql": { + "name": "default__get_incremental_insert_overwrite_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/view/create.sql", - "original_file_path": "macros/relations/view/create.sql", - "unique_id": "macro.dbt.default__get_create_view_as_sql", - "macro_sql": "{% macro default__get_create_view_as_sql(relation, sql) -%}\n {{ return(create_view_as(relation, sql)) }}\n{% endmacro %}", + "path": "macros/materializations/models/incremental/strategies.sql", + "original_file_path": "macros/materializations/models/incremental/strategies.sql", + "unique_id": "macro.dbt.default__get_incremental_insert_overwrite_sql", + "macro_sql": "{% macro default__get_incremental_insert_overwrite_sql(arg_dict) %}\n\n {% do return(get_insert_overwrite_merge_sql(arg_dict[\"target_relation\"], arg_dict[\"temp_relation\"], arg_dict[\"dest_columns\"], arg_dict[\"incremental_predicates\"])) %}\n\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.create_view_as" + "macro.dbt.get_insert_overwrite_merge_sql" ] }, "description": "", @@ -8651,20 +8734,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.577305, + "created_at": 1730458997.1123142, "supported_languages": null }, - "macro.dbt.create_view_as": { - "name": "create_view_as", + "macro.dbt.get_incremental_default_sql": { + "name": "get_incremental_default_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/view/create.sql", - "original_file_path": "macros/relations/view/create.sql", - "unique_id": "macro.dbt.create_view_as", - "macro_sql": "{% macro create_view_as(relation, sql) -%}\n {{ adapter.dispatch('create_view_as', 'dbt')(relation, sql) }}\n{%- endmacro %}", + "path": "macros/materializations/models/incremental/strategies.sql", + "original_file_path": "macros/materializations/models/incremental/strategies.sql", + "unique_id": "macro.dbt.get_incremental_default_sql", + "macro_sql": "{% macro get_incremental_default_sql(arg_dict) %}\n\n {{ return(adapter.dispatch('get_incremental_default_sql', 'dbt')(arg_dict)) }}\n\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__create_view_as" + "macro.dbt_postgres.postgres__get_incremental_default_sql" ] }, "description": "", @@ -8675,20 +8758,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5774028, + "created_at": 1730458997.1124172, "supported_languages": null }, - "macro.dbt.default__create_view_as": { - "name": "default__create_view_as", + "macro.dbt.default__get_incremental_default_sql": { + "name": "default__get_incremental_default_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/relations/view/create.sql", - "original_file_path": "macros/relations/view/create.sql", - "unique_id": "macro.dbt.default__create_view_as", - "macro_sql": "{% macro default__create_view_as(relation, sql) -%}\n {%- set sql_header = config.get('sql_header', none) -%}\n\n {{ sql_header if sql_header is not none }}\n create view {{ relation.render() }}\n {% set contract_config = config.get('contract') %}\n {% if contract_config.enforced %}\n {{ get_assert_columns_equivalent(sql) }}\n {%- endif %}\n as (\n {{ sql }}\n );\n{%- endmacro %}", + "path": "macros/materializations/models/incremental/strategies.sql", + "original_file_path": "macros/materializations/models/incremental/strategies.sql", + "unique_id": "macro.dbt.default__get_incremental_default_sql", + "macro_sql": "{% macro default__get_incremental_default_sql(arg_dict) %}\n\n {% do return(get_incremental_append_sql(arg_dict)) %}\n\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.get_assert_columns_equivalent" + "macro.dbt.get_incremental_append_sql" ] }, "description": "", @@ -8699,19 +8782,21 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.577713, + "created_at": 1730458997.112501, "supported_languages": null }, - "macro.dbt.default__test_relationships": { - "name": "default__test_relationships", + "macro.dbt.get_insert_into_sql": { + "name": "get_insert_into_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/generic_test_sql/relationships.sql", - "original_file_path": "macros/generic_test_sql/relationships.sql", - "unique_id": "macro.dbt.default__test_relationships", - "macro_sql": "{% macro default__test_relationships(model, column_name, to, field) %}\n\nwith child as (\n select {{ column_name }} as from_field\n from {{ model }}\n where {{ column_name }} is not null\n),\n\nparent as (\n select {{ field }} as to_field\n from {{ to }}\n)\n\nselect\n from_field\n\nfrom child\nleft join parent\n on child.from_field = parent.to_field\n\nwhere parent.to_field is null\n\n{% endmacro %}", + "path": "macros/materializations/models/incremental/strategies.sql", + "original_file_path": "macros/materializations/models/incremental/strategies.sql", + "unique_id": "macro.dbt.get_insert_into_sql", + "macro_sql": "{% macro get_insert_into_sql(target_relation, temp_relation, dest_columns) %}\n\n {%- set dest_cols_csv = get_quoted_csv(dest_columns | map(attribute=\"name\")) -%}\n\n insert into {{ target_relation }} ({{ dest_cols_csv }})\n (\n select {{ dest_cols_csv }}\n from {{ temp_relation }}\n )\n\n{% endmacro %}", "depends_on": { - "macros": [] + "macros": [ + "macro.dbt.get_quoted_csv" + ] }, "description": "", "meta": {}, @@ -8721,20 +8806,35 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.577933, + "created_at": 1730458997.1126575, "supported_languages": null }, - "macro.dbt.default__test_not_null": { - "name": "default__test_not_null", + "macro.dbt.materialization_incremental_default": { + "name": "materialization_incremental_default", "resource_type": "macro", "package_name": "dbt", - "path": "macros/generic_test_sql/not_null.sql", - "original_file_path": "macros/generic_test_sql/not_null.sql", - "unique_id": "macro.dbt.default__test_not_null", - "macro_sql": "{% macro default__test_not_null(model, column_name) %}\n\n{% set column_list = '*' if should_store_failures() else column_name %}\n\nselect {{ column_list }}\nfrom {{ model }}\nwhere {{ column_name }} is null\n\n{% endmacro %}", + "path": "macros/materializations/models/incremental/incremental.sql", + "original_file_path": "macros/materializations/models/incremental/incremental.sql", + "unique_id": "macro.dbt.materialization_incremental_default", + "macro_sql": "{% materialization incremental, default -%}\n\n -- relations\n {%- set existing_relation = load_cached_relation(this) -%}\n {%- set target_relation = this.incorporate(type='table') -%}\n {%- set temp_relation = make_temp_relation(target_relation)-%}\n {%- set intermediate_relation = make_intermediate_relation(target_relation)-%}\n {%- set backup_relation_type = 'table' if existing_relation is none else existing_relation.type -%}\n {%- set backup_relation = make_backup_relation(target_relation, backup_relation_type) -%}\n\n -- configs\n {%- set unique_key = config.get('unique_key') -%}\n {%- set full_refresh_mode = (should_full_refresh() or existing_relation.is_view) -%}\n {%- set on_schema_change = incremental_validate_on_schema_change(config.get('on_schema_change'), default='ignore') -%}\n\n -- the temp_ and backup_ relations should not already exist in the database; get_relation\n -- will return None in that case. Otherwise, we get a relation that we can drop\n -- later, before we try to use this name for the current operation. This has to happen before\n -- BEGIN, in a separate transaction\n {%- set preexisting_intermediate_relation = load_cached_relation(intermediate_relation)-%}\n {%- set preexisting_backup_relation = load_cached_relation(backup_relation) -%}\n -- grab current tables grants config for comparision later on\n {% set grant_config = config.get('grants') %}\n {{ drop_relation_if_exists(preexisting_intermediate_relation) }}\n {{ drop_relation_if_exists(preexisting_backup_relation) }}\n\n {{ run_hooks(pre_hooks, inside_transaction=False) }}\n\n -- `BEGIN` happens here:\n {{ run_hooks(pre_hooks, inside_transaction=True) }}\n\n {% set to_drop = [] %}\n\n {% if existing_relation is none %}\n {% set build_sql = get_create_table_as_sql(False, target_relation, sql) %}\n {% elif full_refresh_mode %}\n {% set build_sql = get_create_table_as_sql(False, intermediate_relation, sql) %}\n {% set need_swap = true %}\n {% else %}\n {% do run_query(get_create_table_as_sql(True, temp_relation, sql)) %}\n {% set contract_config = config.get('contract') %}\n {% if not contract_config or not contract_config.enforced %}\n {% do adapter.expand_target_column_types(\n from_relation=temp_relation,\n to_relation=target_relation) %}\n {% endif %}\n {#-- Process schema changes. Returns dict of changes if successful. Use source columns for upserting/merging --#}\n {% set dest_columns = process_schema_changes(on_schema_change, temp_relation, existing_relation) %}\n {% if not dest_columns %}\n {% set dest_columns = adapter.get_columns_in_relation(existing_relation) %}\n {% endif %}\n\n {#-- Get the incremental_strategy, the macro to use for the strategy, and build the sql --#}\n {% set incremental_strategy = config.get('incremental_strategy') or 'default' %}\n {% set incremental_predicates = config.get('predicates', none) or config.get('incremental_predicates', none) %}\n {% set strategy_sql_macro_func = adapter.get_incremental_strategy_macro(context, incremental_strategy) %}\n {% set strategy_arg_dict = ({'target_relation': target_relation, 'temp_relation': temp_relation, 'unique_key': unique_key, 'dest_columns': dest_columns, 'incremental_predicates': incremental_predicates }) %}\n {% set build_sql = strategy_sql_macro_func(strategy_arg_dict) %}\n\n {% endif %}\n\n {% call statement(\"main\") %}\n {{ build_sql }}\n {% endcall %}\n\n {% if need_swap %}\n {% do adapter.rename_relation(target_relation, backup_relation) %}\n {% do adapter.rename_relation(intermediate_relation, target_relation) %}\n {% do to_drop.append(backup_relation) %}\n {% endif %}\n\n {% set should_revoke = should_revoke(existing_relation, full_refresh_mode) %}\n {% do apply_grants(target_relation, grant_config, should_revoke=should_revoke) %}\n\n {% do persist_docs(target_relation, model) %}\n\n {% if existing_relation is none or existing_relation.is_view or should_full_refresh() %}\n {% do create_indexes(target_relation) %}\n {% endif %}\n\n {{ run_hooks(post_hooks, inside_transaction=True) }}\n\n -- `COMMIT` happens here\n {% do adapter.commit() %}\n\n {% for rel in to_drop %}\n {% do adapter.drop_relation(rel) %}\n {% endfor %}\n\n {{ run_hooks(post_hooks, inside_transaction=False) }}\n\n {{ return({'relations': [target_relation]}) }}\n\n{%- endmaterialization %}", "depends_on": { "macros": [ - "macro.dbt.should_store_failures" + "macro.dbt.load_cached_relation", + "macro.dbt.make_temp_relation", + "macro.dbt.make_intermediate_relation", + "macro.dbt.make_backup_relation", + "macro.dbt.should_full_refresh", + "macro.dbt.incremental_validate_on_schema_change", + "macro.dbt.drop_relation_if_exists", + "macro.dbt.run_hooks", + "macro.dbt.get_create_table_as_sql", + "macro.dbt.run_query", + "macro.dbt.process_schema_changes", + "macro.dbt.statement", + "macro.dbt.should_revoke", + "macro.dbt.apply_grants", + "macro.dbt.persist_docs", + "macro.dbt.create_indexes" ] }, "description": "", @@ -8745,19 +8845,23 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5781, - "supported_languages": null + "created_at": 1730458997.1155019, + "supported_languages": [ + "sql" + ] }, - "macro.dbt.default__test_unique": { - "name": "default__test_unique", + "macro.dbt.get_merge_sql": { + "name": "get_merge_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/generic_test_sql/unique.sql", - "original_file_path": "macros/generic_test_sql/unique.sql", - "unique_id": "macro.dbt.default__test_unique", - "macro_sql": "{% macro default__test_unique(model, column_name) %}\n\nselect\n {{ column_name }} as unique_field,\n count(*) as n_records\n\nfrom {{ model }}\nwhere {{ column_name }} is not null\ngroup by {{ column_name }}\nhaving count(*) > 1\n\n{% endmacro %}", + "path": "macros/materializations/models/incremental/merge.sql", + "original_file_path": "macros/materializations/models/incremental/merge.sql", + "unique_id": "macro.dbt.get_merge_sql", + "macro_sql": "{% macro get_merge_sql(target, source, unique_key, dest_columns, incremental_predicates=none) -%}\n -- back compat for old kwarg name\n {% set incremental_predicates = kwargs.get('predicates', incremental_predicates) %}\n {{ adapter.dispatch('get_merge_sql', 'dbt')(target, source, unique_key, dest_columns, incremental_predicates) }}\n{%- endmacro %}", "depends_on": { - "macros": [] + "macros": [ + "macro.dbt.default__get_merge_sql" + ] }, "description": "", "meta": {}, @@ -8767,19 +8871,22 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.578248, + "created_at": 1730458997.1189468, "supported_languages": null }, - "macro.dbt.default__test_accepted_values": { - "name": "default__test_accepted_values", + "macro.dbt.default__get_merge_sql": { + "name": "default__get_merge_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/generic_test_sql/accepted_values.sql", - "original_file_path": "macros/generic_test_sql/accepted_values.sql", - "unique_id": "macro.dbt.default__test_accepted_values", - "macro_sql": "{% macro default__test_accepted_values(model, column_name, values, quote=True) %}\n\nwith all_values as (\n\n select\n {{ column_name }} as value_field,\n count(*) as n_records\n\n from {{ model }}\n group by {{ column_name }}\n\n)\n\nselect *\nfrom all_values\nwhere value_field not in (\n {% for value in values -%}\n {% if quote -%}\n '{{ value }}'\n {%- else -%}\n {{ value }}\n {%- endif -%}\n {%- if not loop.last -%},{%- endif %}\n {%- endfor %}\n)\n\n{% endmacro %}", + "path": "macros/materializations/models/incremental/merge.sql", + "original_file_path": "macros/materializations/models/incremental/merge.sql", + "unique_id": "macro.dbt.default__get_merge_sql", + "macro_sql": "{% macro default__get_merge_sql(target, source, unique_key, dest_columns, incremental_predicates=none) -%}\n {%- set predicates = [] if incremental_predicates is none else [] + incremental_predicates -%}\n {%- set dest_cols_csv = get_quoted_csv(dest_columns | map(attribute=\"name\")) -%}\n {%- set merge_update_columns = config.get('merge_update_columns') -%}\n {%- set merge_exclude_columns = config.get('merge_exclude_columns') -%}\n {%- set update_columns = get_merge_update_columns(merge_update_columns, merge_exclude_columns, dest_columns) -%}\n {%- set sql_header = config.get('sql_header', none) -%}\n\n {% if unique_key %}\n {% if unique_key is sequence and unique_key is not mapping and unique_key is not string %}\n {% for key in unique_key %}\n {% set this_key_match %}\n DBT_INTERNAL_SOURCE.{{ key }} = DBT_INTERNAL_DEST.{{ key }}\n {% endset %}\n {% do predicates.append(this_key_match) %}\n {% endfor %}\n {% else %}\n {% set unique_key_match %}\n DBT_INTERNAL_SOURCE.{{ unique_key }} = DBT_INTERNAL_DEST.{{ unique_key }}\n {% endset %}\n {% do predicates.append(unique_key_match) %}\n {% endif %}\n {% else %}\n {% do predicates.append('FALSE') %}\n {% endif %}\n\n {{ sql_header if sql_header is not none }}\n\n merge into {{ target }} as DBT_INTERNAL_DEST\n using {{ source }} as DBT_INTERNAL_SOURCE\n on {{\"(\" ~ predicates | join(\") and (\") ~ \")\"}}\n\n {% if unique_key %}\n when matched then update set\n {% for column_name in update_columns -%}\n {{ column_name }} = DBT_INTERNAL_SOURCE.{{ column_name }}\n {%- if not loop.last %}, {%- endif %}\n {%- endfor %}\n {% endif %}\n\n when not matched then insert\n ({{ dest_cols_csv }})\n values\n ({{ dest_cols_csv }})\n\n{% endmacro %}", "depends_on": { - "macros": [] + "macros": [ + "macro.dbt.get_quoted_csv", + "macro.dbt.get_merge_update_columns" + ] }, "description": "", "meta": {}, @@ -8789,19 +8896,21 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5785851, + "created_at": 1730458997.1197646, "supported_languages": null }, - "macro.dbt.statement": { - "name": "statement", + "macro.dbt.get_delete_insert_merge_sql": { + "name": "get_delete_insert_merge_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/etc/statement.sql", - "original_file_path": "macros/etc/statement.sql", - "unique_id": "macro.dbt.statement", - "macro_sql": "\n{%- macro statement(name=None, fetch_result=False, auto_begin=True, language='sql') -%}\n {%- if execute: -%}\n {%- set compiled_code = caller() -%}\n\n {%- if name == 'main' -%}\n {{ log('Writing runtime {} for node \"{}\"'.format(language, model['unique_id'])) }}\n {{ write(compiled_code) }}\n {%- endif -%}\n {%- if language == 'sql'-%}\n {%- set res, table = adapter.execute(compiled_code, auto_begin=auto_begin, fetch=fetch_result) -%}\n {%- elif language == 'python' -%}\n {%- set res = submit_python_job(model, compiled_code) -%}\n {#-- TODO: What should table be for python models? --#}\n {%- set table = None -%}\n {%- else -%}\n {% do exceptions.raise_compiler_error(\"statement macro didn't get supported language\") %}\n {%- endif -%}\n\n {%- if name is not none -%}\n {{ store_result(name, response=res, agate_table=table) }}\n {%- endif -%}\n\n {%- endif -%}\n{%- endmacro %}", + "path": "macros/materializations/models/incremental/merge.sql", + "original_file_path": "macros/materializations/models/incremental/merge.sql", + "unique_id": "macro.dbt.get_delete_insert_merge_sql", + "macro_sql": "{% macro get_delete_insert_merge_sql(target, source, unique_key, dest_columns, incremental_predicates) -%}\n {{ adapter.dispatch('get_delete_insert_merge_sql', 'dbt')(target, source, unique_key, dest_columns, incremental_predicates) }}\n{%- endmacro %}", "depends_on": { - "macros": [] + "macros": [ + "macro.dbt.default__get_delete_insert_merge_sql" + ] }, "description": "", "meta": {}, @@ -8811,19 +8920,21 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.579448, + "created_at": 1730458997.119904, "supported_languages": null }, - "macro.dbt.noop_statement": { - "name": "noop_statement", + "macro.dbt.default__get_delete_insert_merge_sql": { + "name": "default__get_delete_insert_merge_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/etc/statement.sql", - "original_file_path": "macros/etc/statement.sql", - "unique_id": "macro.dbt.noop_statement", - "macro_sql": "{% macro noop_statement(name=None, message=None, code=None, rows_affected=None, res=None) -%}\n {%- set sql = caller() -%}\n\n {%- if name == 'main' -%}\n {{ log('Writing runtime SQL for node \"{}\"'.format(model['unique_id'])) }}\n {{ write(sql) }}\n {%- endif -%}\n\n {%- if name is not none -%}\n {{ store_raw_result(name, message=message, code=code, rows_affected=rows_affected, agate_table=res) }}\n {%- endif -%}\n\n{%- endmacro %}", + "path": "macros/materializations/models/incremental/merge.sql", + "original_file_path": "macros/materializations/models/incremental/merge.sql", + "unique_id": "macro.dbt.default__get_delete_insert_merge_sql", + "macro_sql": "{% macro default__get_delete_insert_merge_sql(target, source, unique_key, dest_columns, incremental_predicates) -%}\n\n {%- set dest_cols_csv = get_quoted_csv(dest_columns | map(attribute=\"name\")) -%}\n\n {% if unique_key %}\n {% if unique_key is sequence and unique_key is not string %}\n delete from {{target }}\n using {{ source }}\n where (\n {% for key in unique_key %}\n {{ source }}.{{ key }} = {{ target }}.{{ key }}\n {{ \"and \" if not loop.last}}\n {% endfor %}\n {% if incremental_predicates %}\n {% for predicate in incremental_predicates %}\n and {{ predicate }}\n {% endfor %}\n {% endif %}\n );\n {% else %}\n delete from {{ target }}\n where (\n {{ unique_key }}) in (\n select ({{ unique_key }})\n from {{ source }}\n )\n {%- if incremental_predicates %}\n {% for predicate in incremental_predicates %}\n and {{ predicate }}\n {% endfor %}\n {%- endif -%};\n\n {% endif %}\n {% endif %}\n\n insert into {{ target }} ({{ dest_cols_csv }})\n (\n select {{ dest_cols_csv }}\n from {{ source }}\n )\n\n{%- endmacro %}", "depends_on": { - "macros": [] + "macros": [ + "macro.dbt.get_quoted_csv" + ] }, "description": "", "meta": {}, @@ -8833,20 +8944,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5797608, + "created_at": 1730458997.120424, "supported_languages": null }, - "macro.dbt.run_query": { - "name": "run_query", + "macro.dbt.get_insert_overwrite_merge_sql": { + "name": "get_insert_overwrite_merge_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/etc/statement.sql", - "original_file_path": "macros/etc/statement.sql", - "unique_id": "macro.dbt.run_query", - "macro_sql": "{% macro run_query(sql) %}\n {% call statement(\"run_query_statement\", fetch_result=true, auto_begin=false) %}\n {{ sql }}\n {% endcall %}\n\n {% do return(load_result(\"run_query_statement\").table) %}\n{% endmacro %}", + "path": "macros/materializations/models/incremental/merge.sql", + "original_file_path": "macros/materializations/models/incremental/merge.sql", + "unique_id": "macro.dbt.get_insert_overwrite_merge_sql", + "macro_sql": "{% macro get_insert_overwrite_merge_sql(target, source, dest_columns, predicates, include_sql_header=false) -%}\n {{ adapter.dispatch('get_insert_overwrite_merge_sql', 'dbt')(target, source, dest_columns, predicates, include_sql_header) }}\n{%- endmacro %}", "depends_on": { "macros": [ - "macro.dbt.statement" + "macro.dbt.default__get_insert_overwrite_merge_sql" ] }, "description": "", @@ -8857,19 +8968,21 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.579927, + "created_at": 1730458997.12056, "supported_languages": null }, - "macro.dbt.convert_datetime": { - "name": "convert_datetime", + "macro.dbt.default__get_insert_overwrite_merge_sql": { + "name": "default__get_insert_overwrite_merge_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/etc/datetime.sql", - "original_file_path": "macros/etc/datetime.sql", - "unique_id": "macro.dbt.convert_datetime", - "macro_sql": "{% macro convert_datetime(date_str, date_fmt) %}\n\n {% set error_msg -%}\n The provided partition date '{{ date_str }}' does not match the expected format '{{ date_fmt }}'\n {%- endset %}\n\n {% set res = try_or_compiler_error(error_msg, modules.datetime.datetime.strptime, date_str.strip(), date_fmt) %}\n {{ return(res) }}\n\n{% endmacro %}", + "path": "macros/materializations/models/incremental/merge.sql", + "original_file_path": "macros/materializations/models/incremental/merge.sql", + "unique_id": "macro.dbt.default__get_insert_overwrite_merge_sql", + "macro_sql": "{% macro default__get_insert_overwrite_merge_sql(target, source, dest_columns, predicates, include_sql_header) -%}\n {#-- The only time include_sql_header is True: --#}\n {#-- BigQuery + insert_overwrite strategy + \"static\" partitions config --#}\n {#-- We should consider including the sql header at the materialization level instead --#}\n\n {%- set predicates = [] if predicates is none else [] + predicates -%}\n {%- set dest_cols_csv = get_quoted_csv(dest_columns | map(attribute=\"name\")) -%}\n {%- set sql_header = config.get('sql_header', none) -%}\n\n {{ sql_header if sql_header is not none and include_sql_header }}\n\n merge into {{ target }} as DBT_INTERNAL_DEST\n using {{ source }} as DBT_INTERNAL_SOURCE\n on FALSE\n\n when not matched by source\n {% if predicates %} and {{ predicates | join(' and ') }} {% endif %}\n then delete\n\n when not matched then insert\n ({{ dest_cols_csv }})\n values\n ({{ dest_cols_csv }})\n\n{% endmacro %}", "depends_on": { - "macros": [] + "macros": [ + "macro.dbt.get_quoted_csv" + ] }, "description": "", "meta": {}, @@ -8879,21 +8992,19 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.581246, + "created_at": 1730458997.1209168, "supported_languages": null }, - "macro.dbt.dates_in_range": { - "name": "dates_in_range", + "macro.dbt.get_quoted_csv": { + "name": "get_quoted_csv", "resource_type": "macro", "package_name": "dbt", - "path": "macros/etc/datetime.sql", - "original_file_path": "macros/etc/datetime.sql", - "unique_id": "macro.dbt.dates_in_range", - "macro_sql": "{% macro dates_in_range(start_date_str, end_date_str=none, in_fmt=\"%Y%m%d\", out_fmt=\"%Y%m%d\") %}\n {% set end_date_str = start_date_str if end_date_str is none else end_date_str %}\n\n {% set start_date = convert_datetime(start_date_str, in_fmt) %}\n {% set end_date = convert_datetime(end_date_str, in_fmt) %}\n\n {% set day_count = (end_date - start_date).days %}\n {% if day_count < 0 %}\n {% set msg -%}\n Partition start date is after the end date ({{ start_date }}, {{ end_date }})\n {%- endset %}\n\n {{ exceptions.raise_compiler_error(msg, model) }}\n {% endif %}\n\n {% set date_list = [] %}\n {% for i in range(0, day_count + 1) %}\n {% set the_date = (modules.datetime.timedelta(days=i) + start_date) %}\n {% if not out_fmt %}\n {% set _ = date_list.append(the_date) %}\n {% else %}\n {% set _ = date_list.append(the_date.strftime(out_fmt)) %}\n {% endif %}\n {% endfor %}\n\n {{ return(date_list) }}\n{% endmacro %}", + "path": "macros/materializations/models/incremental/column_helpers.sql", + "original_file_path": "macros/materializations/models/incremental/column_helpers.sql", + "unique_id": "macro.dbt.get_quoted_csv", + "macro_sql": "{% macro get_quoted_csv(column_names) %}\n\n {% set quoted = [] %}\n {% for col in column_names -%}\n {%- do quoted.append(adapter.quote(col)) -%}\n {%- endfor %}\n\n {%- set dest_cols_csv = quoted | join(', ') -%}\n {{ return(dest_cols_csv) }}\n\n{% endmacro %}", "depends_on": { - "macros": [ - "macro.dbt.convert_datetime" - ] + "macros": [] }, "description": "", "meta": {}, @@ -8903,21 +9014,19 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.581859, + "created_at": 1730458997.1218565, "supported_languages": null }, - "macro.dbt.partition_range": { - "name": "partition_range", + "macro.dbt.diff_columns": { + "name": "diff_columns", "resource_type": "macro", "package_name": "dbt", - "path": "macros/etc/datetime.sql", - "original_file_path": "macros/etc/datetime.sql", - "unique_id": "macro.dbt.partition_range", - "macro_sql": "{% macro partition_range(raw_partition_date, date_fmt='%Y%m%d') %}\n {% set partition_range = (raw_partition_date | string).split(\",\") %}\n\n {% if (partition_range | length) == 1 %}\n {% set start_date = partition_range[0] %}\n {% set end_date = none %}\n {% elif (partition_range | length) == 2 %}\n {% set start_date = partition_range[0] %}\n {% set end_date = partition_range[1] %}\n {% else %}\n {{ exceptions.raise_compiler_error(\"Invalid partition time. Expected format: {Start Date}[,{End Date}]. Got: \" ~ raw_partition_date) }}\n {% endif %}\n\n {{ return(dates_in_range(start_date, end_date, in_fmt=date_fmt)) }}\n{% endmacro %}", + "path": "macros/materializations/models/incremental/column_helpers.sql", + "original_file_path": "macros/materializations/models/incremental/column_helpers.sql", + "unique_id": "macro.dbt.diff_columns", + "macro_sql": "{% macro diff_columns(source_columns, target_columns) %}\n\n {% set result = [] %}\n {% set source_names = source_columns | map(attribute = 'column') | list %}\n {% set target_names = target_columns | map(attribute = 'column') | list %}\n\n {# --check whether the name attribute exists in the target - this does not perform a data type check #}\n {% for sc in source_columns %}\n {% if sc.name not in target_names %}\n {{ result.append(sc) }}\n {% endif %}\n {% endfor %}\n\n {{ return(result) }}\n\n{% endmacro %}", "depends_on": { - "macros": [ - "macro.dbt.dates_in_range" - ] + "macros": [] }, "description": "", "meta": {}, @@ -8927,17 +9036,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.582237, + "created_at": 1730458997.122162, "supported_languages": null }, - "macro.dbt.py_current_timestring": { - "name": "py_current_timestring", + "macro.dbt.diff_column_data_types": { + "name": "diff_column_data_types", "resource_type": "macro", "package_name": "dbt", - "path": "macros/etc/datetime.sql", - "original_file_path": "macros/etc/datetime.sql", - "unique_id": "macro.dbt.py_current_timestring", - "macro_sql": "{% macro py_current_timestring() %}\n {% set dt = modules.datetime.datetime.now() %}\n {% do return(dt.strftime(\"%Y%m%d%H%M%S%f\")) %}\n{% endmacro %}", + "path": "macros/materializations/models/incremental/column_helpers.sql", + "original_file_path": "macros/materializations/models/incremental/column_helpers.sql", + "unique_id": "macro.dbt.diff_column_data_types", + "macro_sql": "{% macro diff_column_data_types(source_columns, target_columns) %}\n\n {% set result = [] %}\n {% for sc in source_columns %}\n {% set tc = target_columns | selectattr(\"name\", \"equalto\", sc.name) | list | first %}\n {% if tc %}\n {% if sc.data_type != tc.data_type and not sc.can_expand_to(other_column=tc) %}\n {{ result.append( { 'column_name': tc.name, 'new_type': sc.data_type } ) }}\n {% endif %}\n {% endif %}\n {% endfor %}\n\n {{ return(result) }}\n\n{% endmacro %}", "depends_on": { "macros": [] }, @@ -8949,20 +9058,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5823581, + "created_at": 1730458997.1225326, "supported_languages": null }, - "macro.dbt.except": { - "name": "except", + "macro.dbt.get_merge_update_columns": { + "name": "get_merge_update_columns", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/except.sql", - "original_file_path": "macros/utils/except.sql", - "unique_id": "macro.dbt.except", - "macro_sql": "{% macro except() %}\n {{ return(adapter.dispatch('except', 'dbt')()) }}\n{% endmacro %}", + "path": "macros/materializations/models/incremental/column_helpers.sql", + "original_file_path": "macros/materializations/models/incremental/column_helpers.sql", + "unique_id": "macro.dbt.get_merge_update_columns", + "macro_sql": "{% macro get_merge_update_columns(merge_update_columns, merge_exclude_columns, dest_columns) %}\n {{ return(adapter.dispatch('get_merge_update_columns', 'dbt')(merge_update_columns, merge_exclude_columns, dest_columns)) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__except" + "macro.dbt.default__get_merge_update_columns" ] }, "description": "", @@ -8973,17 +9082,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.582481, + "created_at": 1730458997.1226609, "supported_languages": null }, - "macro.dbt.default__except": { - "name": "default__except", + "macro.dbt.default__get_merge_update_columns": { + "name": "default__get_merge_update_columns", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/except.sql", - "original_file_path": "macros/utils/except.sql", - "unique_id": "macro.dbt.default__except", - "macro_sql": "{% macro default__except() %}\n\n except\n\n{% endmacro %}", + "path": "macros/materializations/models/incremental/column_helpers.sql", + "original_file_path": "macros/materializations/models/incremental/column_helpers.sql", + "unique_id": "macro.dbt.default__get_merge_update_columns", + "macro_sql": "{% macro default__get_merge_update_columns(merge_update_columns, merge_exclude_columns, dest_columns) %}\n {%- set default_cols = dest_columns | map(attribute=\"quoted\") | list -%}\n\n {%- if merge_update_columns and merge_exclude_columns -%}\n {{ exceptions.raise_compiler_error(\n 'Model cannot specify merge_update_columns and merge_exclude_columns. Please update model to use only one config'\n )}}\n {%- elif merge_update_columns -%}\n {%- set update_columns = merge_update_columns -%}\n {%- elif merge_exclude_columns -%}\n {%- set update_columns = [] -%}\n {%- for column in dest_columns -%}\n {% if column.column | lower not in merge_exclude_columns | map(\"lower\") | list %}\n {%- do update_columns.append(column.quoted) -%}\n {% endif %}\n {%- endfor -%}\n {%- else -%}\n {%- set update_columns = default_cols -%}\n {%- endif -%}\n\n {{ return(update_columns) }}\n\n{% endmacro %}", "depends_on": { "macros": [] }, @@ -8995,20 +9104,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.582525, + "created_at": 1730458997.1230595, "supported_languages": null }, - "macro.dbt.get_intervals_between": { - "name": "get_intervals_between", + "macro.dbt.is_incremental": { + "name": "is_incremental", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/date_spine.sql", - "original_file_path": "macros/utils/date_spine.sql", - "unique_id": "macro.dbt.get_intervals_between", - "macro_sql": "{% macro get_intervals_between(start_date, end_date, datepart) -%}\n {{ return(adapter.dispatch('get_intervals_between', 'dbt')(start_date, end_date, datepart)) }}\n{%- endmacro %}", + "path": "macros/materializations/models/incremental/is_incremental.sql", + "original_file_path": "macros/materializations/models/incremental/is_incremental.sql", + "unique_id": "macro.dbt.is_incremental", + "macro_sql": "{% macro is_incremental() %}\n {#-- do not run introspective queries in parsing #}\n {% if not execute %}\n {{ return(False) }}\n {% else %}\n {% set relation = adapter.get_relation(this.database, this.schema, this.table) %}\n {{ return(relation is not none\n and relation.type == 'table'\n and model.config.materialized == 'incremental'\n and not should_full_refresh()) }}\n {% endif %}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__get_intervals_between" + "macro.dbt.should_full_refresh" ] }, "description": "", @@ -9019,22 +9128,19 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.582956, + "created_at": 1730458997.123411, "supported_languages": null }, - "macro.dbt.default__get_intervals_between": { - "name": "default__get_intervals_between", + "macro.dbt.incremental_validate_on_schema_change": { + "name": "incremental_validate_on_schema_change", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/date_spine.sql", - "original_file_path": "macros/utils/date_spine.sql", - "unique_id": "macro.dbt.default__get_intervals_between", - "macro_sql": "{% macro default__get_intervals_between(start_date, end_date, datepart) -%}\n {%- call statement('get_intervals_between', fetch_result=True) %}\n\n select {{ dbt.datediff(start_date, end_date, datepart) }}\n\n {%- endcall -%}\n\n {%- set value_list = load_result('get_intervals_between') -%}\n\n {%- if value_list and value_list['data'] -%}\n {%- set values = value_list['data'] | map(attribute=0) | list %}\n {{ return(values[0]) }}\n {%- else -%}\n {{ return(1) }}\n {%- endif -%}\n\n{%- endmacro %}", + "path": "macros/materializations/models/incremental/on_schema_change.sql", + "original_file_path": "macros/materializations/models/incremental/on_schema_change.sql", + "unique_id": "macro.dbt.incremental_validate_on_schema_change", + "macro_sql": "{% macro incremental_validate_on_schema_change(on_schema_change, default='ignore') %}\n\n {% if on_schema_change not in ['sync_all_columns', 'append_new_columns', 'fail', 'ignore'] %}\n\n {% set log_message = 'Invalid value for on_schema_change (%s) specified. Setting default value of %s.' % (on_schema_change, default) %}\n {% do log(log_message) %}\n\n {{ return(default) }}\n\n {% else %}\n\n {{ return(on_schema_change) }}\n\n {% endif %}\n\n{% endmacro %}", "depends_on": { - "macros": [ - "macro.dbt.statement", - "macro.dbt.datediff" - ] + "macros": [] }, "description": "", "meta": {}, @@ -9044,20 +9150,21 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.583261, + "created_at": 1730458997.1265626, "supported_languages": null }, - "macro.dbt.date_spine": { - "name": "date_spine", + "macro.dbt.check_for_schema_changes": { + "name": "check_for_schema_changes", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/date_spine.sql", - "original_file_path": "macros/utils/date_spine.sql", - "unique_id": "macro.dbt.date_spine", - "macro_sql": "{% macro date_spine(datepart, start_date, end_date) %}\n {{ return(adapter.dispatch('date_spine', 'dbt')(datepart, start_date, end_date)) }}\n{%- endmacro %}", + "path": "macros/materializations/models/incremental/on_schema_change.sql", + "original_file_path": "macros/materializations/models/incremental/on_schema_change.sql", + "unique_id": "macro.dbt.check_for_schema_changes", + "macro_sql": "{% macro check_for_schema_changes(source_relation, target_relation) %}\n\n {% set schema_changed = False %}\n\n {%- set source_columns = adapter.get_columns_in_relation(source_relation) -%}\n {%- set target_columns = adapter.get_columns_in_relation(target_relation) -%}\n {%- set source_not_in_target = diff_columns(source_columns, target_columns) -%}\n {%- set target_not_in_source = diff_columns(target_columns, source_columns) -%}\n\n {% set new_target_types = diff_column_data_types(source_columns, target_columns) %}\n\n {% if source_not_in_target != [] %}\n {% set schema_changed = True %}\n {% elif target_not_in_source != [] or new_target_types != [] %}\n {% set schema_changed = True %}\n {% elif new_target_types != [] %}\n {% set schema_changed = True %}\n {% endif %}\n\n {% set changes_dict = {\n 'schema_changed': schema_changed,\n 'source_not_in_target': source_not_in_target,\n 'target_not_in_source': target_not_in_source,\n 'source_columns': source_columns,\n 'target_columns': target_columns,\n 'new_target_types': new_target_types\n } %}\n\n {% set msg %}\n In {{ target_relation }}:\n Schema changed: {{ schema_changed }}\n Source columns not in target: {{ source_not_in_target }}\n Target columns not in source: {{ target_not_in_source }}\n New column types: {{ new_target_types }}\n {% endset %}\n\n {% do log(msg) %}\n\n {{ return(changes_dict) }}\n\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__date_spine" + "macro.dbt.diff_columns", + "macro.dbt.diff_column_data_types" ] }, "description": "", @@ -9068,22 +9175,21 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.583389, + "created_at": 1730458997.1272023, "supported_languages": null }, - "macro.dbt.default__date_spine": { - "name": "default__date_spine", + "macro.dbt.sync_column_schemas": { + "name": "sync_column_schemas", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/date_spine.sql", - "original_file_path": "macros/utils/date_spine.sql", - "unique_id": "macro.dbt.default__date_spine", - "macro_sql": "{% macro default__date_spine(datepart, start_date, end_date) %}\n\n\n {# call as follows:\n\n date_spine(\n \"day\",\n \"to_date('01/01/2016', 'mm/dd/yyyy')\",\n \"dbt.dateadd(week, 1, current_date)\"\n ) #}\n\n\n with rawdata as (\n\n {{dbt.generate_series(\n dbt.get_intervals_between(start_date, end_date, datepart)\n )}}\n\n ),\n\n all_periods as (\n\n select (\n {{\n dbt.dateadd(\n datepart,\n \"row_number() over (order by 1) - 1\",\n start_date\n )\n }}\n ) as date_{{datepart}}\n from rawdata\n\n ),\n\n filtered as (\n\n select *\n from all_periods\n where date_{{datepart}} <= {{ end_date }}\n\n )\n\n select * from filtered\n\n{% endmacro %}", + "path": "macros/materializations/models/incremental/on_schema_change.sql", + "original_file_path": "macros/materializations/models/incremental/on_schema_change.sql", + "unique_id": "macro.dbt.sync_column_schemas", + "macro_sql": "{% macro sync_column_schemas(on_schema_change, target_relation, schema_changes_dict) %}\n\n {%- set add_to_target_arr = schema_changes_dict['source_not_in_target'] -%}\n\n {%- if on_schema_change == 'append_new_columns'-%}\n {%- if add_to_target_arr | length > 0 -%}\n {%- do alter_relation_add_remove_columns(target_relation, add_to_target_arr, none) -%}\n {%- endif -%}\n\n {% elif on_schema_change == 'sync_all_columns' %}\n {%- set remove_from_target_arr = schema_changes_dict['target_not_in_source'] -%}\n {%- set new_target_types = schema_changes_dict['new_target_types'] -%}\n\n {% if add_to_target_arr | length > 0 or remove_from_target_arr | length > 0 %}\n {%- do alter_relation_add_remove_columns(target_relation, add_to_target_arr, remove_from_target_arr) -%}\n {% endif %}\n\n {% if new_target_types != [] %}\n {% for ntt in new_target_types %}\n {% set column_name = ntt['column_name'] %}\n {% set new_type = ntt['new_type'] %}\n {% do alter_column_type(target_relation, column_name, new_type) %}\n {% endfor %}\n {% endif %}\n\n {% endif %}\n\n {% set schema_change_message %}\n In {{ target_relation }}:\n Schema change approach: {{ on_schema_change }}\n Columns added: {{ add_to_target_arr }}\n Columns removed: {{ remove_from_target_arr }}\n Data types changed: {{ new_target_types }}\n {% endset %}\n\n {% do log(schema_change_message) %}\n\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.generate_series", - "macro.dbt.get_intervals_between", - "macro.dbt.dateadd" + "macro.dbt.alter_relation_add_remove_columns", + "macro.dbt.alter_column_type" ] }, "description": "", @@ -9094,20 +9200,21 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.583595, + "created_at": 1730458997.1278114, "supported_languages": null }, - "macro.dbt.date": { - "name": "date", - "resource_type": "macro", - "package_name": "dbt", - "path": "macros/utils/date.sql", - "original_file_path": "macros/utils/date.sql", - "unique_id": "macro.dbt.date", - "macro_sql": "{% macro date(year, month, day) %}\n {{ return(adapter.dispatch('date', 'dbt') (year, month, day)) }}\n{% endmacro %}", + "macro.dbt.process_schema_changes": { + "name": "process_schema_changes", + "resource_type": "macro", + "package_name": "dbt", + "path": "macros/materializations/models/incremental/on_schema_change.sql", + "original_file_path": "macros/materializations/models/incremental/on_schema_change.sql", + "unique_id": "macro.dbt.process_schema_changes", + "macro_sql": "{% macro process_schema_changes(on_schema_change, source_relation, target_relation) %}\n\n {% if on_schema_change == 'ignore' %}\n\n {{ return({}) }}\n\n {% else %}\n\n {% set schema_changes_dict = check_for_schema_changes(source_relation, target_relation) %}\n\n {% if schema_changes_dict['schema_changed'] %}\n\n {% if on_schema_change == 'fail' %}\n\n {% set fail_msg %}\n The source and target schemas on this incremental model are out of sync!\n They can be reconciled in several ways:\n - set the `on_schema_change` config to either append_new_columns or sync_all_columns, depending on your situation.\n - Re-run the incremental model with `full_refresh: True` to update the target schema.\n - update the schema manually and re-run the process.\n\n Additional troubleshooting context:\n Source columns not in target: {{ schema_changes_dict['source_not_in_target'] }}\n Target columns not in source: {{ schema_changes_dict['target_not_in_source'] }}\n New column types: {{ schema_changes_dict['new_target_types'] }}\n {% endset %}\n\n {% do exceptions.raise_compiler_error(fail_msg) %}\n\n {# -- unless we ignore, run the sync operation per the config #}\n {% else %}\n\n {% do sync_column_schemas(on_schema_change, target_relation, schema_changes_dict) %}\n\n {% endif %}\n\n {% endif %}\n\n {{ return(schema_changes_dict['source_columns']) }}\n\n {% endif %}\n\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__date" + "macro.dbt.check_for_schema_changes", + "macro.dbt.sync_column_schemas" ] }, "description": "", @@ -9118,19 +9225,28 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5837948, + "created_at": 1730458997.1282709, "supported_languages": null }, - "macro.dbt.default__date": { - "name": "default__date", + "macro.dbt.materialization_clone_default": { + "name": "materialization_clone_default", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/date.sql", - "original_file_path": "macros/utils/date.sql", - "unique_id": "macro.dbt.default__date", - "macro_sql": "{% macro default__date(year, month, day) -%}\n {%- set dt = modules.datetime.date(year, month, day) -%}\n {%- set iso_8601_formatted_date = dt.strftime('%Y-%m-%d') -%}\n to_date('{{ iso_8601_formatted_date }}', 'YYYY-MM-DD')\n{%- endmacro %}", + "path": "macros/materializations/models/clone/clone.sql", + "original_file_path": "macros/materializations/models/clone/clone.sql", + "unique_id": "macro.dbt.materialization_clone_default", + "macro_sql": "{%- materialization clone, default -%}\n\n {%- set relations = {'relations': []} -%}\n\n {%- if not defer_relation -%}\n -- nothing to do\n {{ log(\"No relation found in state manifest for \" ~ model.unique_id, info=True) }}\n {{ return(relations) }}\n {%- endif -%}\n\n {%- set existing_relation = load_cached_relation(this) -%}\n\n {%- if existing_relation and not flags.FULL_REFRESH -%}\n -- noop!\n {{ log(\"Relation \" ~ existing_relation ~ \" already exists\", info=True) }}\n {{ return(relations) }}\n {%- endif -%}\n\n {%- set other_existing_relation = load_cached_relation(defer_relation) -%}\n\n -- If this is a database that can do zero-copy cloning of tables, and the other relation is a table, then this will be a table\n -- Otherwise, this will be a view\n\n {% set can_clone_table = can_clone_table() %}\n\n {%- if other_existing_relation and other_existing_relation.type == 'table' and can_clone_table -%}\n\n {%- set target_relation = this.incorporate(type='table') -%}\n {% if existing_relation is not none and not existing_relation.is_table %}\n {{ log(\"Dropping relation \" ~ existing_relation.render() ~ \" because it is of type \" ~ existing_relation.type) }}\n {{ drop_relation_if_exists(existing_relation) }}\n {% endif %}\n\n -- as a general rule, data platforms that can clone tables can also do atomic 'create or replace'\n {% call statement('main') %}\n {% if target_relation and defer_relation and target_relation == defer_relation %}\n {{ log(\"Target relation and defer relation are the same, skipping clone for relation: \" ~ target_relation.render()) }}\n {% else %}\n {{ create_or_replace_clone(target_relation, defer_relation) }}\n {% endif %}\n\n {% endcall %}\n\n {% set should_revoke = should_revoke(existing_relation, full_refresh_mode=True) %}\n {% do apply_grants(target_relation, grant_config, should_revoke=should_revoke) %}\n {% do persist_docs(target_relation, model) %}\n\n {{ return({'relations': [target_relation]}) }}\n\n {%- else -%}\n\n {%- set target_relation = this.incorporate(type='view') -%}\n\n -- reuse the view materialization\n -- TODO: support actual dispatch for materialization macros\n -- Tracking ticket: https://github.com/dbt-labs/dbt-core/issues/7799\n {% set search_name = \"materialization_view_\" ~ adapter.type() %}\n {% if not search_name in context %}\n {% set search_name = \"materialization_view_default\" %}\n {% endif %}\n {% set materialization_macro = context[search_name] %}\n {% set relations = materialization_macro() %}\n {{ return(relations) }}\n\n {%- endif -%}\n\n{%- endmaterialization -%}", "depends_on": { - "macros": [] + "macros": [ + "macro.dbt.load_cached_relation", + "macro.dbt.can_clone_table", + "macro.dbt.drop_relation_if_exists", + "macro.dbt.statement", + "macro.dbt.create_or_replace_clone", + "macro.dbt.should_revoke", + "macro.dbt.apply_grants", + "macro.dbt.persist_docs" + ] }, "description": "", "meta": {}, @@ -9140,20 +9256,22 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.583956, - "supported_languages": null + "created_at": 1730458997.130331, + "supported_languages": [ + "sql" + ] }, - "macro.dbt.replace": { - "name": "replace", + "macro.dbt.can_clone_table": { + "name": "can_clone_table", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/replace.sql", - "original_file_path": "macros/utils/replace.sql", - "unique_id": "macro.dbt.replace", - "macro_sql": "{% macro replace(field, old_chars, new_chars) -%}\n {{ return(adapter.dispatch('replace', 'dbt') (field, old_chars, new_chars)) }}\n{% endmacro %}", + "path": "macros/materializations/models/clone/can_clone_table.sql", + "original_file_path": "macros/materializations/models/clone/can_clone_table.sql", + "unique_id": "macro.dbt.can_clone_table", + "macro_sql": "{% macro can_clone_table() %}\n {{ return(adapter.dispatch('can_clone_table', 'dbt')()) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__replace" + "macro.dbt.default__can_clone_table" ] }, "description": "", @@ -9164,17 +9282,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.584152, + "created_at": 1730458997.1304858, "supported_languages": null }, - "macro.dbt.default__replace": { - "name": "default__replace", + "macro.dbt.default__can_clone_table": { + "name": "default__can_clone_table", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/replace.sql", - "original_file_path": "macros/utils/replace.sql", - "unique_id": "macro.dbt.default__replace", - "macro_sql": "{% macro default__replace(field, old_chars, new_chars) %}\n\n replace(\n {{ field }},\n {{ old_chars }},\n {{ new_chars }}\n )\n\n\n{% endmacro %}", + "path": "macros/materializations/models/clone/can_clone_table.sql", + "original_file_path": "macros/materializations/models/clone/can_clone_table.sql", + "unique_id": "macro.dbt.default__can_clone_table", + "macro_sql": "{% macro default__can_clone_table() %}\n {{ return(False) }}\n{% endmacro %}", "depends_on": { "macros": [] }, @@ -9186,20 +9304,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5842519, + "created_at": 1730458997.1305516, "supported_languages": null }, - "macro.dbt.concat": { - "name": "concat", + "macro.dbt.create_or_replace_clone": { + "name": "create_or_replace_clone", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/concat.sql", - "original_file_path": "macros/utils/concat.sql", - "unique_id": "macro.dbt.concat", - "macro_sql": "{% macro concat(fields) -%}\n {{ return(adapter.dispatch('concat', 'dbt')(fields)) }}\n{%- endmacro %}", + "path": "macros/materializations/models/clone/create_or_replace_clone.sql", + "original_file_path": "macros/materializations/models/clone/create_or_replace_clone.sql", + "unique_id": "macro.dbt.create_or_replace_clone", + "macro_sql": "{% macro create_or_replace_clone(this_relation, defer_relation) %}\n {{ return(adapter.dispatch('create_or_replace_clone', 'dbt')(this_relation, defer_relation)) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__concat" + "macro.dbt.default__create_or_replace_clone" ] }, "description": "", @@ -9210,17 +9328,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.58439, + "created_at": 1730458997.1307166, "supported_languages": null }, - "macro.dbt.default__concat": { - "name": "default__concat", + "macro.dbt.default__create_or_replace_clone": { + "name": "default__create_or_replace_clone", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/concat.sql", - "original_file_path": "macros/utils/concat.sql", - "unique_id": "macro.dbt.default__concat", - "macro_sql": "{% macro default__concat(fields) -%}\n {{ fields|join(' || ') }}\n{%- endmacro %}", + "path": "macros/materializations/models/clone/create_or_replace_clone.sql", + "original_file_path": "macros/materializations/models/clone/create_or_replace_clone.sql", + "unique_id": "macro.dbt.default__create_or_replace_clone", + "macro_sql": "{% macro default__create_or_replace_clone(this_relation, defer_relation) %}\n create or replace table {{ this_relation.render() }} clone {{ defer_relation.render() }}\n{% endmacro %}", "depends_on": { "macros": [] }, @@ -9232,21 +9350,19 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.58446, + "created_at": 1730458997.130813, "supported_languages": null }, - "macro.dbt.get_powers_of_two": { - "name": "get_powers_of_two", + "macro.dbt.default__test_relationships": { + "name": "default__test_relationships", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/generate_series.sql", - "original_file_path": "macros/utils/generate_series.sql", - "unique_id": "macro.dbt.get_powers_of_two", - "macro_sql": "{% macro get_powers_of_two(upper_bound) %}\n {{ return(adapter.dispatch('get_powers_of_two', 'dbt')(upper_bound)) }}\n{% endmacro %}", + "path": "macros/generic_test_sql/relationships.sql", + "original_file_path": "macros/generic_test_sql/relationships.sql", + "unique_id": "macro.dbt.default__test_relationships", + "macro_sql": "{% macro default__test_relationships(model, column_name, to, field) %}\n\nwith child as (\n select {{ column_name }} as from_field\n from {{ model }}\n where {{ column_name }} is not null\n),\n\nparent as (\n select {{ field }} as to_field\n from {{ to }}\n)\n\nselect\n from_field\n\nfrom child\nleft join parent\n on child.from_field = parent.to_field\n\nwhere parent.to_field is null\n\n{% endmacro %}", "depends_on": { - "macros": [ - "macro.dbt.default__get_powers_of_two" - ] + "macros": [] }, "description": "", "meta": {}, @@ -9256,17 +9372,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.584995, + "created_at": 1730458997.1310163, "supported_languages": null }, - "macro.dbt.default__get_powers_of_two": { - "name": "default__get_powers_of_two", + "macro.dbt.default__test_accepted_values": { + "name": "default__test_accepted_values", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/generate_series.sql", - "original_file_path": "macros/utils/generate_series.sql", - "unique_id": "macro.dbt.default__get_powers_of_two", - "macro_sql": "{% macro default__get_powers_of_two(upper_bound) %}\n\n {% if upper_bound <= 0 %}\n {{ exceptions.raise_compiler_error(\"upper bound must be positive\") }}\n {% endif %}\n\n {% for _ in range(1, 100) %}\n {% if upper_bound <= 2 ** loop.index %}{{ return(loop.index) }}{% endif %}\n {% endfor %}\n\n{% endmacro %}", + "path": "macros/generic_test_sql/accepted_values.sql", + "original_file_path": "macros/generic_test_sql/accepted_values.sql", + "unique_id": "macro.dbt.default__test_accepted_values", + "macro_sql": "{% macro default__test_accepted_values(model, column_name, values, quote=True) %}\n\nwith all_values as (\n\n select\n {{ column_name }} as value_field,\n count(*) as n_records\n\n from {{ model }}\n group by {{ column_name }}\n\n)\n\nselect *\nfrom all_values\nwhere value_field not in (\n {% for value in values -%}\n {% if quote -%}\n '{{ value }}'\n {%- else -%}\n {{ value }}\n {%- endif -%}\n {%- if not loop.last -%},{%- endif %}\n {%- endfor %}\n)\n\n{% endmacro %}", "depends_on": { "macros": [] }, @@ -9278,21 +9394,19 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.585472, + "created_at": 1730458997.1313286, "supported_languages": null }, - "macro.dbt.generate_series": { - "name": "generate_series", + "macro.dbt.default__test_unique": { + "name": "default__test_unique", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/generate_series.sql", - "original_file_path": "macros/utils/generate_series.sql", - "unique_id": "macro.dbt.generate_series", - "macro_sql": "{% macro generate_series(upper_bound) %}\n {{ return(adapter.dispatch('generate_series', 'dbt')(upper_bound)) }}\n{% endmacro %}", + "path": "macros/generic_test_sql/unique.sql", + "original_file_path": "macros/generic_test_sql/unique.sql", + "unique_id": "macro.dbt.default__test_unique", + "macro_sql": "{% macro default__test_unique(model, column_name) %}\n\nselect\n {{ column_name }} as unique_field,\n count(*) as n_records\n\nfrom {{ model }}\nwhere {{ column_name }} is not null\ngroup by {{ column_name }}\nhaving count(*) > 1\n\n{% endmacro %}", "depends_on": { - "macros": [ - "macro.dbt.default__generate_series" - ] + "macros": [] }, "description": "", "meta": {}, @@ -9302,20 +9416,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.585577, + "created_at": 1730458997.1314626, "supported_languages": null }, - "macro.dbt.default__generate_series": { - "name": "default__generate_series", + "macro.dbt.default__test_not_null": { + "name": "default__test_not_null", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/generate_series.sql", - "original_file_path": "macros/utils/generate_series.sql", - "unique_id": "macro.dbt.default__generate_series", - "macro_sql": "{% macro default__generate_series(upper_bound) %}\n\n {% set n = dbt.get_powers_of_two(upper_bound) %}\n\n with p as (\n select 0 as generated_number union all select 1\n ), unioned as (\n\n select\n\n {% for i in range(n) %}\n p{{i}}.generated_number * power(2, {{i}})\n {% if not loop.last %} + {% endif %}\n {% endfor %}\n + 1\n as generated_number\n\n from\n\n {% for i in range(n) %}\n p as p{{i}}\n {% if not loop.last %} cross join {% endif %}\n {% endfor %}\n\n )\n\n select *\n from unioned\n where generated_number <= {{upper_bound}}\n order by generated_number\n\n{% endmacro %}", + "path": "macros/generic_test_sql/not_null.sql", + "original_file_path": "macros/generic_test_sql/not_null.sql", + "unique_id": "macro.dbt.default__test_not_null", + "macro_sql": "{% macro default__test_not_null(model, column_name) %}\n\n{% set column_list = '*' if should_store_failures() else column_name %}\n\nselect {{ column_list }}\nfrom {{ model }}\nwhere {{ column_name }} is null\n\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.get_powers_of_two" + "macro.dbt.should_store_failures" ] }, "description": "", @@ -9326,20 +9440,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.585859, + "created_at": 1730458997.131616, "supported_languages": null }, - "macro.dbt.length": { - "name": "length", + "macro.dbt.get_intervals_between": { + "name": "get_intervals_between", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/length.sql", - "original_file_path": "macros/utils/length.sql", - "unique_id": "macro.dbt.length", - "macro_sql": "{% macro length(expression) -%}\n {{ return(adapter.dispatch('length', 'dbt') (expression)) }}\n{% endmacro %}", + "path": "macros/utils/date_spine.sql", + "original_file_path": "macros/utils/date_spine.sql", + "unique_id": "macro.dbt.get_intervals_between", + "macro_sql": "{% macro get_intervals_between(start_date, end_date, datepart) -%}\n {{ return(adapter.dispatch('get_intervals_between', 'dbt')(start_date, end_date, datepart)) }}\n{%- endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__length" + "macro.dbt.default__get_intervals_between" ] }, "description": "", @@ -9350,19 +9464,22 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.586007, + "created_at": 1730458997.132017, "supported_languages": null }, - "macro.dbt.default__length": { - "name": "default__length", + "macro.dbt.default__get_intervals_between": { + "name": "default__get_intervals_between", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/length.sql", - "original_file_path": "macros/utils/length.sql", - "unique_id": "macro.dbt.default__length", - "macro_sql": "{% macro default__length(expression) %}\n\n length(\n {{ expression }}\n )\n\n{%- endmacro -%}", + "path": "macros/utils/date_spine.sql", + "original_file_path": "macros/utils/date_spine.sql", + "unique_id": "macro.dbt.default__get_intervals_between", + "macro_sql": "{% macro default__get_intervals_between(start_date, end_date, datepart) -%}\n {%- call statement('get_intervals_between', fetch_result=True) %}\n\n select {{ dbt.datediff(start_date, end_date, datepart) }}\n\n {%- endcall -%}\n\n {%- set value_list = load_result('get_intervals_between') -%}\n\n {%- if value_list and value_list['data'] -%}\n {%- set values = value_list['data'] | map(attribute=0) | list %}\n {{ return(values[0]) }}\n {%- else -%}\n {{ return(1) }}\n {%- endif -%}\n\n{%- endmacro %}", "depends_on": { - "macros": [] + "macros": [ + "macro.dbt.statement", + "macro.dbt.datediff" + ] }, "description": "", "meta": {}, @@ -9372,20 +9489,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.586066, + "created_at": 1730458997.1323192, "supported_languages": null }, - "macro.dbt.dateadd": { - "name": "dateadd", + "macro.dbt.date_spine": { + "name": "date_spine", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/dateadd.sql", - "original_file_path": "macros/utils/dateadd.sql", - "unique_id": "macro.dbt.dateadd", - "macro_sql": "{% macro dateadd(datepart, interval, from_date_or_timestamp) %}\n {{ return(adapter.dispatch('dateadd', 'dbt')(datepart, interval, from_date_or_timestamp)) }}\n{% endmacro %}", + "path": "macros/utils/date_spine.sql", + "original_file_path": "macros/utils/date_spine.sql", + "unique_id": "macro.dbt.date_spine", + "macro_sql": "{% macro date_spine(datepart, start_date, end_date) %}\n {{ return(adapter.dispatch('date_spine', 'dbt')(datepart, start_date, end_date)) }}\n{%- endmacro %}", "depends_on": { "macros": [ - "macro.dbt_postgres.postgres__dateadd" + "macro.dbt.default__date_spine" ] }, "description": "", @@ -9396,19 +9513,23 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.586258, + "created_at": 1730458997.1324399, "supported_languages": null }, - "macro.dbt.default__dateadd": { - "name": "default__dateadd", + "macro.dbt.default__date_spine": { + "name": "default__date_spine", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/dateadd.sql", - "original_file_path": "macros/utils/dateadd.sql", - "unique_id": "macro.dbt.default__dateadd", - "macro_sql": "{% macro default__dateadd(datepart, interval, from_date_or_timestamp) %}\n\n dateadd(\n {{ datepart }},\n {{ interval }},\n {{ from_date_or_timestamp }}\n )\n\n{% endmacro %}", + "path": "macros/utils/date_spine.sql", + "original_file_path": "macros/utils/date_spine.sql", + "unique_id": "macro.dbt.default__date_spine", + "macro_sql": "{% macro default__date_spine(datepart, start_date, end_date) %}\n\n\n {# call as follows:\n\n date_spine(\n \"day\",\n \"to_date('01/01/2016', 'mm/dd/yyyy')\",\n \"dbt.dateadd(week, 1, current_date)\"\n ) #}\n\n\n with rawdata as (\n\n {{dbt.generate_series(\n dbt.get_intervals_between(start_date, end_date, datepart)\n )}}\n\n ),\n\n all_periods as (\n\n select (\n {{\n dbt.dateadd(\n datepart,\n \"row_number() over (order by 1) - 1\",\n start_date\n )\n }}\n ) as date_{{datepart}}\n from rawdata\n\n ),\n\n filtered as (\n\n select *\n from all_periods\n where date_{{datepart}} <= {{ end_date }}\n\n )\n\n select * from filtered\n\n{% endmacro %}", "depends_on": { - "macros": [] + "macros": [ + "macro.dbt.generate_series", + "macro.dbt.get_intervals_between", + "macro.dbt.dateadd" + ] }, "description": "", "meta": {}, @@ -9418,7 +9539,7 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.586348, + "created_at": 1730458997.132632, "supported_languages": null }, "macro.dbt.intersect": { @@ -9442,7 +9563,7 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.586476, + "created_at": 1730458997.132753, "supported_languages": null }, "macro.dbt.default__intersect": { @@ -9464,66 +9585,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.58652, - "supported_languages": null - }, - "macro.dbt.escape_single_quotes": { - "name": "escape_single_quotes", - "resource_type": "macro", - "package_name": "dbt", - "path": "macros/utils/escape_single_quotes.sql", - "original_file_path": "macros/utils/escape_single_quotes.sql", - "unique_id": "macro.dbt.escape_single_quotes", - "macro_sql": "{% macro escape_single_quotes(expression) %}\n {{ return(adapter.dispatch('escape_single_quotes', 'dbt') (expression)) }}\n{% endmacro %}", - "depends_on": { - "macros": [ - "macro.dbt.default__escape_single_quotes" - ] - }, - "description": "", - "meta": {}, - "docs": { - "show": true, - "node_color": null - }, - "patch_path": null, - "arguments": [], - "created_at": 1728697972.586671, - "supported_languages": null - }, - "macro.dbt.default__escape_single_quotes": { - "name": "default__escape_single_quotes", - "resource_type": "macro", - "package_name": "dbt", - "path": "macros/utils/escape_single_quotes.sql", - "original_file_path": "macros/utils/escape_single_quotes.sql", - "unique_id": "macro.dbt.default__escape_single_quotes", - "macro_sql": "{% macro default__escape_single_quotes(expression) -%}\n{{ expression | replace(\"'\",\"''\") }}\n{%- endmacro %}", - "depends_on": { - "macros": [] - }, - "description": "", - "meta": {}, - "docs": { - "show": true, - "node_color": null - }, - "patch_path": null, - "arguments": [], - "created_at": 1728697972.586748, + "created_at": 1730458997.1327956, "supported_languages": null }, - "macro.dbt.right": { - "name": "right", + "macro.dbt.listagg": { + "name": "listagg", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/right.sql", - "original_file_path": "macros/utils/right.sql", - "unique_id": "macro.dbt.right", - "macro_sql": "{% macro right(string_text, length_expression) -%}\n {{ return(adapter.dispatch('right', 'dbt') (string_text, length_expression)) }}\n{% endmacro %}", + "path": "macros/utils/listagg.sql", + "original_file_path": "macros/utils/listagg.sql", + "unique_id": "macro.dbt.listagg", + "macro_sql": "{% macro listagg(measure, delimiter_text=\"','\", order_by_clause=none, limit_num=none) -%}\n {{ return(adapter.dispatch('listagg', 'dbt') (measure, delimiter_text, order_by_clause, limit_num)) }}\n{%- endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__right" + "macro.dbt_postgres.postgres__listagg" ] }, "description": "", @@ -9534,17 +9609,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.586915, + "created_at": 1730458997.133127, "supported_languages": null }, - "macro.dbt.default__right": { - "name": "default__right", + "macro.dbt.default__listagg": { + "name": "default__listagg", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/right.sql", - "original_file_path": "macros/utils/right.sql", - "unique_id": "macro.dbt.default__right", - "macro_sql": "{% macro default__right(string_text, length_expression) %}\n\n right(\n {{ string_text }},\n {{ length_expression }}\n )\n\n{%- endmacro -%}", + "path": "macros/utils/listagg.sql", + "original_file_path": "macros/utils/listagg.sql", + "unique_id": "macro.dbt.default__listagg", + "macro_sql": "{% macro default__listagg(measure, delimiter_text, order_by_clause, limit_num) -%}\n\n {% if limit_num -%}\n array_to_string(\n array_slice(\n array_agg(\n {{ measure }}\n ){% if order_by_clause -%}\n within group ({{ order_by_clause }})\n {%- endif %}\n ,0\n ,{{ limit_num }}\n ),\n {{ delimiter_text }}\n )\n {%- else %}\n listagg(\n {{ measure }},\n {{ delimiter_text }}\n )\n {% if order_by_clause -%}\n within group ({{ order_by_clause }})\n {%- endif %}\n {%- endif %}\n\n{%- endmacro %}", "depends_on": { "macros": [] }, @@ -9556,20 +9631,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.586992, + "created_at": 1730458997.1333427, "supported_languages": null }, - "macro.dbt.listagg": { - "name": "listagg", + "macro.dbt.length": { + "name": "length", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/listagg.sql", - "original_file_path": "macros/utils/listagg.sql", - "unique_id": "macro.dbt.listagg", - "macro_sql": "{% macro listagg(measure, delimiter_text=\"','\", order_by_clause=none, limit_num=none) -%}\n {{ return(adapter.dispatch('listagg', 'dbt') (measure, delimiter_text, order_by_clause, limit_num)) }}\n{%- endmacro %}", + "path": "macros/utils/length.sql", + "original_file_path": "macros/utils/length.sql", + "unique_id": "macro.dbt.length", + "macro_sql": "{% macro length(expression) -%}\n {{ return(adapter.dispatch('length', 'dbt') (expression)) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt_postgres.postgres__listagg" + "macro.dbt.default__length" ] }, "description": "", @@ -9580,17 +9655,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.587376, + "created_at": 1730458997.1334784, "supported_languages": null }, - "macro.dbt.default__listagg": { - "name": "default__listagg", + "macro.dbt.default__length": { + "name": "default__length", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/listagg.sql", - "original_file_path": "macros/utils/listagg.sql", - "unique_id": "macro.dbt.default__listagg", - "macro_sql": "{% macro default__listagg(measure, delimiter_text, order_by_clause, limit_num) -%}\n\n {% if limit_num -%}\n array_to_string(\n array_slice(\n array_agg(\n {{ measure }}\n ){% if order_by_clause -%}\n within group ({{ order_by_clause }})\n {%- endif %}\n ,0\n ,{{ limit_num }}\n ),\n {{ delimiter_text }}\n )\n {%- else %}\n listagg(\n {{ measure }},\n {{ delimiter_text }}\n )\n {% if order_by_clause -%}\n within group ({{ order_by_clause }})\n {%- endif %}\n {%- endif %}\n\n{%- endmacro %}", + "path": "macros/utils/length.sql", + "original_file_path": "macros/utils/length.sql", + "unique_id": "macro.dbt.default__length", + "macro_sql": "{% macro default__length(expression) %}\n\n length(\n {{ expression }}\n )\n\n{%- endmacro -%}", "depends_on": { "macros": [] }, @@ -9602,20 +9677,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.587609, + "created_at": 1730458997.1335354, "supported_languages": null }, - "macro.dbt.datediff": { - "name": "datediff", + "macro.dbt.dateadd": { + "name": "dateadd", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/datediff.sql", - "original_file_path": "macros/utils/datediff.sql", - "unique_id": "macro.dbt.datediff", - "macro_sql": "{% macro datediff(first_date, second_date, datepart) %}\n {{ return(adapter.dispatch('datediff', 'dbt')(first_date, second_date, datepart)) }}\n{% endmacro %}", + "path": "macros/utils/dateadd.sql", + "original_file_path": "macros/utils/dateadd.sql", + "unique_id": "macro.dbt.dateadd", + "macro_sql": "{% macro dateadd(datepart, interval, from_date_or_timestamp) %}\n {{ return(adapter.dispatch('dateadd', 'dbt')(datepart, interval, from_date_or_timestamp)) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt_postgres.postgres__datediff" + "macro.dbt_postgres.postgres__dateadd" ] }, "description": "", @@ -9626,17 +9701,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.587799, + "created_at": 1730458997.1337202, "supported_languages": null }, - "macro.dbt.default__datediff": { - "name": "default__datediff", + "macro.dbt.default__dateadd": { + "name": "default__dateadd", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/datediff.sql", - "original_file_path": "macros/utils/datediff.sql", - "unique_id": "macro.dbt.default__datediff", - "macro_sql": "{% macro default__datediff(first_date, second_date, datepart) -%}\n\n datediff(\n {{ datepart }},\n {{ first_date }},\n {{ second_date }}\n )\n\n{%- endmacro %}", + "path": "macros/utils/dateadd.sql", + "original_file_path": "macros/utils/dateadd.sql", + "unique_id": "macro.dbt.default__dateadd", + "macro_sql": "{% macro default__dateadd(datepart, interval, from_date_or_timestamp) %}\n\n dateadd(\n {{ datepart }},\n {{ interval }},\n {{ from_date_or_timestamp }}\n )\n\n{% endmacro %}", "depends_on": { "macros": [] }, @@ -9648,20 +9723,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.58789, + "created_at": 1730458997.133814, "supported_languages": null }, - "macro.dbt.safe_cast": { - "name": "safe_cast", + "macro.dbt.concat": { + "name": "concat", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/safe_cast.sql", - "original_file_path": "macros/utils/safe_cast.sql", - "unique_id": "macro.dbt.safe_cast", - "macro_sql": "{% macro safe_cast(field, type) %}\n {{ return(adapter.dispatch('safe_cast', 'dbt') (field, type)) }}\n{% endmacro %}", + "path": "macros/utils/concat.sql", + "original_file_path": "macros/utils/concat.sql", + "unique_id": "macro.dbt.concat", + "macro_sql": "{% macro concat(fields) -%}\n {{ return(adapter.dispatch('concat', 'dbt')(fields)) }}\n{%- endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__safe_cast" + "macro.dbt.default__concat" ] }, "description": "", @@ -9672,17 +9747,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5880508, + "created_at": 1730458997.1339555, "supported_languages": null }, - "macro.dbt.default__safe_cast": { - "name": "default__safe_cast", + "macro.dbt.default__concat": { + "name": "default__concat", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/safe_cast.sql", - "original_file_path": "macros/utils/safe_cast.sql", - "unique_id": "macro.dbt.default__safe_cast", - "macro_sql": "{% macro default__safe_cast(field, type) %}\n {# most databases don't support this function yet\n so we just need to use cast #}\n cast({{field}} as {{type}})\n{% endmacro %}", + "path": "macros/utils/concat.sql", + "original_file_path": "macros/utils/concat.sql", + "unique_id": "macro.dbt.default__concat", + "macro_sql": "{% macro default__concat(fields) -%}\n {{ fields|join(' || ') }}\n{%- endmacro %}", "depends_on": { "macros": [] }, @@ -9694,20 +9769,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.588129, + "created_at": 1730458997.134027, "supported_languages": null }, - "macro.dbt.hash": { - "name": "hash", + "macro.dbt.cast": { + "name": "cast", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/hash.sql", - "original_file_path": "macros/utils/hash.sql", - "unique_id": "macro.dbt.hash", - "macro_sql": "{% macro hash(field) -%}\n {{ return(adapter.dispatch('hash', 'dbt') (field)) }}\n{%- endmacro %}", + "path": "macros/utils/cast.sql", + "original_file_path": "macros/utils/cast.sql", + "unique_id": "macro.dbt.cast", + "macro_sql": "{% macro cast(field, type) %}\n {{ return(adapter.dispatch('cast', 'dbt') (field, type)) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__hash" + "macro.dbt.default__cast" ] }, "description": "", @@ -9718,17 +9793,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.588274, + "created_at": 1730458997.1341813, "supported_languages": null }, - "macro.dbt.default__hash": { - "name": "default__hash", + "macro.dbt.default__cast": { + "name": "default__cast", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/hash.sql", - "original_file_path": "macros/utils/hash.sql", - "unique_id": "macro.dbt.default__hash", - "macro_sql": "{% macro default__hash(field) -%}\n md5(cast({{ field }} as {{ api.Column.translate_type('string') }}))\n{%- endmacro %}", + "path": "macros/utils/cast.sql", + "original_file_path": "macros/utils/cast.sql", + "unique_id": "macro.dbt.default__cast", + "macro_sql": "{% macro default__cast(field, type) %}\n cast({{field}} as {{type}})\n{% endmacro %}", "depends_on": { "macros": [] }, @@ -9740,20 +9815,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.588362, + "created_at": 1730458997.1342537, "supported_languages": null }, - "macro.dbt.cast_bool_to_text": { - "name": "cast_bool_to_text", + "macro.dbt.type_string": { + "name": "type_string", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/cast_bool_to_text.sql", - "original_file_path": "macros/utils/cast_bool_to_text.sql", - "unique_id": "macro.dbt.cast_bool_to_text", - "macro_sql": "{% macro cast_bool_to_text(field) %}\n {{ adapter.dispatch('cast_bool_to_text', 'dbt') (field) }}\n{% endmacro %}", + "path": "macros/utils/data_types.sql", + "original_file_path": "macros/utils/data_types.sql", + "unique_id": "macro.dbt.type_string", + "macro_sql": "\n\n{%- macro type_string() -%}\n {{ return(adapter.dispatch('type_string', 'dbt')()) }}\n{%- endmacro -%}\n\n", "depends_on": { "macros": [ - "macro.dbt.default__cast_bool_to_text" + "macro.dbt.default__type_string" ] }, "description": "", @@ -9764,17 +9839,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.588501, + "created_at": 1730458997.134821, "supported_languages": null }, - "macro.dbt.default__cast_bool_to_text": { - "name": "default__cast_bool_to_text", + "macro.dbt.default__type_string": { + "name": "default__type_string", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/cast_bool_to_text.sql", - "original_file_path": "macros/utils/cast_bool_to_text.sql", - "unique_id": "macro.dbt.default__cast_bool_to_text", - "macro_sql": "{% macro default__cast_bool_to_text(field) %}\n cast({{ field }} as {{ api.Column.translate_type('string') }})\n{% endmacro %}", + "path": "macros/utils/data_types.sql", + "original_file_path": "macros/utils/data_types.sql", + "unique_id": "macro.dbt.default__type_string", + "macro_sql": "{% macro default__type_string() %}\n {{ return(api.Column.translate_type(\"string\")) }}\n{% endmacro %}", "depends_on": { "macros": [] }, @@ -9786,20 +9861,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.588592, + "created_at": 1730458997.1350765, "supported_languages": null }, - "macro.dbt.cast": { - "name": "cast", + "macro.dbt.type_timestamp": { + "name": "type_timestamp", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/cast.sql", - "original_file_path": "macros/utils/cast.sql", - "unique_id": "macro.dbt.cast", - "macro_sql": "{% macro cast(field, type) %}\n {{ return(adapter.dispatch('cast', 'dbt') (field, type)) }}\n{% endmacro %}", + "path": "macros/utils/data_types.sql", + "original_file_path": "macros/utils/data_types.sql", + "unique_id": "macro.dbt.type_timestamp", + "macro_sql": "\n\n{%- macro type_timestamp() -%}\n {{ return(adapter.dispatch('type_timestamp', 'dbt')()) }}\n{%- endmacro -%}\n\n", "depends_on": { "macros": [ - "macro.dbt.default__cast" + "macro.dbt.default__type_timestamp" ] }, "description": "", @@ -9810,17 +9885,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.588743, + "created_at": 1730458997.1351712, "supported_languages": null }, - "macro.dbt.default__cast": { - "name": "default__cast", + "macro.dbt.default__type_timestamp": { + "name": "default__type_timestamp", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/cast.sql", - "original_file_path": "macros/utils/cast.sql", - "unique_id": "macro.dbt.default__cast", - "macro_sql": "{% macro default__cast(field, type) %}\n cast({{field}} as {{type}})\n{% endmacro %}", + "path": "macros/utils/data_types.sql", + "original_file_path": "macros/utils/data_types.sql", + "unique_id": "macro.dbt.default__type_timestamp", + "macro_sql": "{% macro default__type_timestamp() %}\n {{ return(api.Column.translate_type(\"timestamp\")) }}\n{% endmacro %}", "depends_on": { "macros": [] }, @@ -9832,20 +9907,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.588811, + "created_at": 1730458997.135258, "supported_languages": null }, - "macro.dbt.any_value": { - "name": "any_value", + "macro.dbt.type_float": { + "name": "type_float", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/any_value.sql", - "original_file_path": "macros/utils/any_value.sql", - "unique_id": "macro.dbt.any_value", - "macro_sql": "{% macro any_value(expression) -%}\n {{ return(adapter.dispatch('any_value', 'dbt') (expression)) }}\n{% endmacro %}", + "path": "macros/utils/data_types.sql", + "original_file_path": "macros/utils/data_types.sql", + "unique_id": "macro.dbt.type_float", + "macro_sql": "\n\n{%- macro type_float() -%}\n {{ return(adapter.dispatch('type_float', 'dbt')()) }}\n{%- endmacro -%}\n\n", "depends_on": { "macros": [ - "macro.dbt_postgres.postgres__any_value" + "macro.dbt.default__type_float" ] }, "description": "", @@ -9856,17 +9931,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.588944, + "created_at": 1730458997.1353476, "supported_languages": null }, - "macro.dbt.default__any_value": { - "name": "default__any_value", + "macro.dbt.default__type_float": { + "name": "default__type_float", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/any_value.sql", - "original_file_path": "macros/utils/any_value.sql", - "unique_id": "macro.dbt.default__any_value", - "macro_sql": "{% macro default__any_value(expression) -%}\n\n any_value({{ expression }})\n\n{%- endmacro %}", + "path": "macros/utils/data_types.sql", + "original_file_path": "macros/utils/data_types.sql", + "unique_id": "macro.dbt.default__type_float", + "macro_sql": "{% macro default__type_float() %}\n {{ return(api.Column.translate_type(\"float\")) }}\n{% endmacro %}", "depends_on": { "macros": [] }, @@ -9878,20 +9953,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.589011, + "created_at": 1730458997.1354318, "supported_languages": null }, - "macro.dbt.position": { - "name": "position", + "macro.dbt.type_numeric": { + "name": "type_numeric", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/position.sql", - "original_file_path": "macros/utils/position.sql", - "unique_id": "macro.dbt.position", - "macro_sql": "{% macro position(substring_text, string_text) -%}\n {{ return(adapter.dispatch('position', 'dbt') (substring_text, string_text)) }}\n{% endmacro %}", + "path": "macros/utils/data_types.sql", + "original_file_path": "macros/utils/data_types.sql", + "unique_id": "macro.dbt.type_numeric", + "macro_sql": "\n\n{%- macro type_numeric() -%}\n {{ return(adapter.dispatch('type_numeric', 'dbt')()) }}\n{%- endmacro -%}\n\n", "depends_on": { "macros": [ - "macro.dbt.default__position" + "macro.dbt.default__type_numeric" ] }, "description": "", @@ -9902,17 +9977,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.589164, + "created_at": 1730458997.1355212, "supported_languages": null }, - "macro.dbt.default__position": { - "name": "default__position", + "macro.dbt.default__type_numeric": { + "name": "default__type_numeric", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/position.sql", - "original_file_path": "macros/utils/position.sql", - "unique_id": "macro.dbt.default__position", - "macro_sql": "{% macro default__position(substring_text, string_text) %}\n\n position(\n {{ substring_text }} in {{ string_text }}\n )\n\n{%- endmacro -%}", + "path": "macros/utils/data_types.sql", + "original_file_path": "macros/utils/data_types.sql", + "unique_id": "macro.dbt.default__type_numeric", + "macro_sql": "{% macro default__type_numeric() %}\n {{ return(api.Column.numeric_type(\"numeric\", 28, 6)) }}\n{% endmacro %}", "depends_on": { "macros": [] }, @@ -9924,20 +9999,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.589298, + "created_at": 1730458997.1356184, "supported_languages": null }, - "macro.dbt.string_literal": { - "name": "string_literal", + "macro.dbt.type_bigint": { + "name": "type_bigint", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/literal.sql", - "original_file_path": "macros/utils/literal.sql", - "unique_id": "macro.dbt.string_literal", - "macro_sql": "{%- macro string_literal(value) -%}\n {{ return(adapter.dispatch('string_literal', 'dbt') (value)) }}\n{%- endmacro -%}\n\n", + "path": "macros/utils/data_types.sql", + "original_file_path": "macros/utils/data_types.sql", + "unique_id": "macro.dbt.type_bigint", + "macro_sql": "\n\n{%- macro type_bigint() -%}\n {{ return(adapter.dispatch('type_bigint', 'dbt')()) }}\n{%- endmacro -%}\n\n", "depends_on": { "macros": [ - "macro.dbt.default__string_literal" + "macro.dbt.default__type_bigint" ] }, "description": "", @@ -9948,17 +10023,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.58943, + "created_at": 1730458997.1357028, "supported_languages": null }, - "macro.dbt.default__string_literal": { - "name": "default__string_literal", + "macro.dbt.default__type_bigint": { + "name": "default__type_bigint", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/literal.sql", - "original_file_path": "macros/utils/literal.sql", - "unique_id": "macro.dbt.default__string_literal", - "macro_sql": "{% macro default__string_literal(value) -%}\n '{{ value }}'\n{%- endmacro %}", + "path": "macros/utils/data_types.sql", + "original_file_path": "macros/utils/data_types.sql", + "unique_id": "macro.dbt.default__type_bigint", + "macro_sql": "{% macro default__type_bigint() %}\n {{ return(api.Column.translate_type(\"bigint\")) }}\n{% endmacro %}", "depends_on": { "macros": [] }, @@ -9970,20 +10045,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5894852, + "created_at": 1730458997.1357884, "supported_languages": null }, - "macro.dbt.type_string": { - "name": "type_string", + "macro.dbt.type_int": { + "name": "type_int", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/data_types.sql", "original_file_path": "macros/utils/data_types.sql", - "unique_id": "macro.dbt.type_string", - "macro_sql": "\n\n{%- macro type_string() -%}\n {{ return(adapter.dispatch('type_string', 'dbt')()) }}\n{%- endmacro -%}\n\n", + "unique_id": "macro.dbt.type_int", + "macro_sql": "\n\n{%- macro type_int() -%}\n {{ return(adapter.dispatch('type_int', 'dbt')()) }}\n{%- endmacro -%}\n\n", "depends_on": { "macros": [ - "macro.dbt.default__type_string" + "macro.dbt.default__type_int" ] }, "description": "", @@ -9994,17 +10069,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.590035, + "created_at": 1730458997.13587, "supported_languages": null }, - "macro.dbt.default__type_string": { - "name": "default__type_string", + "macro.dbt.default__type_int": { + "name": "default__type_int", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/data_types.sql", "original_file_path": "macros/utils/data_types.sql", - "unique_id": "macro.dbt.default__type_string", - "macro_sql": "{% macro default__type_string() %}\n {{ return(api.Column.translate_type(\"string\")) }}\n{% endmacro %}", + "unique_id": "macro.dbt.default__type_int", + "macro_sql": "{%- macro default__type_int() -%}\n {{ return(api.Column.translate_type(\"integer\")) }}\n{%- endmacro -%}\n\n", "depends_on": { "macros": [] }, @@ -10016,20 +10091,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.590111, + "created_at": 1730458997.1359558, "supported_languages": null }, - "macro.dbt.type_timestamp": { - "name": "type_timestamp", + "macro.dbt.type_boolean": { + "name": "type_boolean", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/data_types.sql", "original_file_path": "macros/utils/data_types.sql", - "unique_id": "macro.dbt.type_timestamp", - "macro_sql": "\n\n{%- macro type_timestamp() -%}\n {{ return(adapter.dispatch('type_timestamp', 'dbt')()) }}\n{%- endmacro -%}\n\n", + "unique_id": "macro.dbt.type_boolean", + "macro_sql": "\n\n{%- macro type_boolean() -%}\n {{ return(adapter.dispatch('type_boolean', 'dbt')()) }}\n{%- endmacro -%}\n\n", "depends_on": { "macros": [ - "macro.dbt.default__type_timestamp" + "macro.dbt.default__type_boolean" ] }, "description": "", @@ -10040,17 +10115,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5902, + "created_at": 1730458997.1360357, "supported_languages": null }, - "macro.dbt.default__type_timestamp": { - "name": "default__type_timestamp", + "macro.dbt.default__type_boolean": { + "name": "default__type_boolean", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/data_types.sql", "original_file_path": "macros/utils/data_types.sql", - "unique_id": "macro.dbt.default__type_timestamp", - "macro_sql": "{% macro default__type_timestamp() %}\n {{ return(api.Column.translate_type(\"timestamp\")) }}\n{% endmacro %}", + "unique_id": "macro.dbt.default__type_boolean", + "macro_sql": "{%- macro default__type_boolean() -%}\n {{ return(api.Column.translate_type(\"boolean\")) }}\n{%- endmacro -%}\n\n", "depends_on": { "macros": [] }, @@ -10062,20 +10137,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.590283, + "created_at": 1730458997.1361096, "supported_languages": null }, - "macro.dbt.type_float": { - "name": "type_float", + "macro.dbt.date": { + "name": "date", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/data_types.sql", - "original_file_path": "macros/utils/data_types.sql", - "unique_id": "macro.dbt.type_float", - "macro_sql": "\n\n{%- macro type_float() -%}\n {{ return(adapter.dispatch('type_float', 'dbt')()) }}\n{%- endmacro -%}\n\n", + "path": "macros/utils/date.sql", + "original_file_path": "macros/utils/date.sql", + "unique_id": "macro.dbt.date", + "macro_sql": "{% macro date(year, month, day) %}\n {{ return(adapter.dispatch('date', 'dbt') (year, month, day)) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__type_float" + "macro.dbt.default__date" ] }, "description": "", @@ -10086,17 +10161,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.590372, + "created_at": 1730458997.136292, "supported_languages": null }, - "macro.dbt.default__type_float": { - "name": "default__type_float", + "macro.dbt.default__date": { + "name": "default__date", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/data_types.sql", - "original_file_path": "macros/utils/data_types.sql", - "unique_id": "macro.dbt.default__type_float", - "macro_sql": "{% macro default__type_float() %}\n {{ return(api.Column.translate_type(\"float\")) }}\n{% endmacro %}", + "path": "macros/utils/date.sql", + "original_file_path": "macros/utils/date.sql", + "unique_id": "macro.dbt.default__date", + "macro_sql": "{% macro default__date(year, month, day) -%}\n {%- set dt = modules.datetime.date(year, month, day) -%}\n {%- set iso_8601_formatted_date = dt.strftime('%Y-%m-%d') -%}\n to_date('{{ iso_8601_formatted_date }}', 'YYYY-MM-DD')\n{%- endmacro %}", "depends_on": { "macros": [] }, @@ -10108,20 +10183,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.590455, + "created_at": 1730458997.1364388, "supported_languages": null }, - "macro.dbt.type_numeric": { - "name": "type_numeric", + "macro.dbt.except": { + "name": "except", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/data_types.sql", - "original_file_path": "macros/utils/data_types.sql", - "unique_id": "macro.dbt.type_numeric", - "macro_sql": "\n\n{%- macro type_numeric() -%}\n {{ return(adapter.dispatch('type_numeric', 'dbt')()) }}\n{%- endmacro -%}\n\n", + "path": "macros/utils/except.sql", + "original_file_path": "macros/utils/except.sql", + "unique_id": "macro.dbt.except", + "macro_sql": "{% macro except() %}\n {{ return(adapter.dispatch('except', 'dbt')()) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__type_numeric" + "macro.dbt.default__except" ] }, "description": "", @@ -10132,17 +10207,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.590544, + "created_at": 1730458997.1365597, "supported_languages": null }, - "macro.dbt.default__type_numeric": { - "name": "default__type_numeric", + "macro.dbt.default__except": { + "name": "default__except", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/data_types.sql", - "original_file_path": "macros/utils/data_types.sql", - "unique_id": "macro.dbt.default__type_numeric", - "macro_sql": "{% macro default__type_numeric() %}\n {{ return(api.Column.numeric_type(\"numeric\", 28, 6)) }}\n{% endmacro %}", + "path": "macros/utils/except.sql", + "original_file_path": "macros/utils/except.sql", + "unique_id": "macro.dbt.default__except", + "macro_sql": "{% macro default__except() %}\n\n except\n\n{% endmacro %}", "depends_on": { "macros": [] }, @@ -10154,20 +10229,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.59064, + "created_at": 1730458997.136602, "supported_languages": null }, - "macro.dbt.type_bigint": { - "name": "type_bigint", + "macro.dbt.position": { + "name": "position", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/data_types.sql", - "original_file_path": "macros/utils/data_types.sql", - "unique_id": "macro.dbt.type_bigint", - "macro_sql": "\n\n{%- macro type_bigint() -%}\n {{ return(adapter.dispatch('type_bigint', 'dbt')()) }}\n{%- endmacro -%}\n\n", + "path": "macros/utils/position.sql", + "original_file_path": "macros/utils/position.sql", + "unique_id": "macro.dbt.position", + "macro_sql": "{% macro position(substring_text, string_text) -%}\n {{ return(adapter.dispatch('position', 'dbt') (substring_text, string_text)) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__type_bigint" + "macro.dbt.default__position" ] }, "description": "", @@ -10178,17 +10253,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.590729, + "created_at": 1730458997.136751, "supported_languages": null }, - "macro.dbt.default__type_bigint": { - "name": "default__type_bigint", + "macro.dbt.default__position": { + "name": "default__position", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/data_types.sql", - "original_file_path": "macros/utils/data_types.sql", - "unique_id": "macro.dbt.default__type_bigint", - "macro_sql": "{% macro default__type_bigint() %}\n {{ return(api.Column.translate_type(\"bigint\")) }}\n{% endmacro %}", + "path": "macros/utils/position.sql", + "original_file_path": "macros/utils/position.sql", + "unique_id": "macro.dbt.default__position", + "macro_sql": "{% macro default__position(substring_text, string_text) %}\n\n position(\n {{ substring_text }} in {{ string_text }}\n )\n\n{%- endmacro -%}", "depends_on": { "macros": [] }, @@ -10200,20 +10275,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.590812, + "created_at": 1730458997.136823, "supported_languages": null }, - "macro.dbt.type_int": { - "name": "type_int", + "macro.dbt.safe_cast": { + "name": "safe_cast", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/data_types.sql", - "original_file_path": "macros/utils/data_types.sql", - "unique_id": "macro.dbt.type_int", - "macro_sql": "\n\n{%- macro type_int() -%}\n {{ return(adapter.dispatch('type_int', 'dbt')()) }}\n{%- endmacro -%}\n\n", + "path": "macros/utils/safe_cast.sql", + "original_file_path": "macros/utils/safe_cast.sql", + "unique_id": "macro.dbt.safe_cast", + "macro_sql": "{% macro safe_cast(field, type) %}\n {{ return(adapter.dispatch('safe_cast', 'dbt') (field, type)) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__type_int" + "macro.dbt.default__safe_cast" ] }, "description": "", @@ -10224,17 +10299,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5909, + "created_at": 1730458997.1369748, "supported_languages": null }, - "macro.dbt.default__type_int": { - "name": "default__type_int", + "macro.dbt.default__safe_cast": { + "name": "default__safe_cast", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/data_types.sql", - "original_file_path": "macros/utils/data_types.sql", - "unique_id": "macro.dbt.default__type_int", - "macro_sql": "{%- macro default__type_int() -%}\n {{ return(api.Column.translate_type(\"integer\")) }}\n{%- endmacro -%}\n\n", + "path": "macros/utils/safe_cast.sql", + "original_file_path": "macros/utils/safe_cast.sql", + "unique_id": "macro.dbt.default__safe_cast", + "macro_sql": "{% macro default__safe_cast(field, type) %}\n {# most databases don't support this function yet\n so we just need to use cast #}\n cast({{field}} as {{type}})\n{% endmacro %}", "depends_on": { "macros": [] }, @@ -10246,20 +10321,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.590981, + "created_at": 1730458997.137048, "supported_languages": null }, - "macro.dbt.type_boolean": { - "name": "type_boolean", + "macro.dbt.bool_or": { + "name": "bool_or", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/data_types.sql", - "original_file_path": "macros/utils/data_types.sql", - "unique_id": "macro.dbt.type_boolean", - "macro_sql": "\n\n{%- macro type_boolean() -%}\n {{ return(adapter.dispatch('type_boolean', 'dbt')()) }}\n{%- endmacro -%}\n\n", + "path": "macros/utils/bool_or.sql", + "original_file_path": "macros/utils/bool_or.sql", + "unique_id": "macro.dbt.bool_or", + "macro_sql": "{% macro bool_or(expression) -%}\n {{ return(adapter.dispatch('bool_or', 'dbt') (expression)) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__type_boolean" + "macro.dbt.default__bool_or" ] }, "description": "", @@ -10270,17 +10345,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.591072, + "created_at": 1730458997.1371768, "supported_languages": null }, - "macro.dbt.default__type_boolean": { - "name": "default__type_boolean", + "macro.dbt.default__bool_or": { + "name": "default__bool_or", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/data_types.sql", - "original_file_path": "macros/utils/data_types.sql", - "unique_id": "macro.dbt.default__type_boolean", - "macro_sql": "{%- macro default__type_boolean() -%}\n {{ return(api.Column.translate_type(\"boolean\")) }}\n{%- endmacro -%}\n\n", + "path": "macros/utils/bool_or.sql", + "original_file_path": "macros/utils/bool_or.sql", + "unique_id": "macro.dbt.default__bool_or", + "macro_sql": "{% macro default__bool_or(expression) -%}\n\n bool_or({{ expression }})\n\n{%- endmacro %}", "depends_on": { "macros": [] }, @@ -10292,7 +10367,7 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5911522, + "created_at": 1730458997.1372318, "supported_languages": null }, "macro.dbt.array_concat": { @@ -10316,7 +10391,7 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5913112, + "created_at": 1730458997.1373742, "supported_languages": null }, "macro.dbt.default__array_concat": { @@ -10338,20 +10413,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.591392, + "created_at": 1730458997.1374435, "supported_languages": null }, - "macro.dbt.bool_or": { - "name": "bool_or", + "macro.dbt.last_day": { + "name": "last_day", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/bool_or.sql", - "original_file_path": "macros/utils/bool_or.sql", - "unique_id": "macro.dbt.bool_or", - "macro_sql": "{% macro bool_or(expression) -%}\n {{ return(adapter.dispatch('bool_or', 'dbt') (expression)) }}\n{% endmacro %}", + "path": "macros/utils/last_day.sql", + "original_file_path": "macros/utils/last_day.sql", + "unique_id": "macro.dbt.last_day", + "macro_sql": "{% macro last_day(date, datepart) %}\n {{ return(adapter.dispatch('last_day', 'dbt') (date, datepart)) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__bool_or" + "macro.dbt_postgres.postgres__last_day" ] }, "description": "", @@ -10362,19 +10437,22 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.591533, + "created_at": 1730458997.1376238, "supported_languages": null }, - "macro.dbt.default__bool_or": { - "name": "default__bool_or", + "macro.dbt.default_last_day": { + "name": "default_last_day", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/bool_or.sql", - "original_file_path": "macros/utils/bool_or.sql", - "unique_id": "macro.dbt.default__bool_or", - "macro_sql": "{% macro default__bool_or(expression) -%}\n\n bool_or({{ expression }})\n\n{%- endmacro %}", + "path": "macros/utils/last_day.sql", + "original_file_path": "macros/utils/last_day.sql", + "unique_id": "macro.dbt.default_last_day", + "macro_sql": "\n\n{%- macro default_last_day(date, datepart) -%}\n cast(\n {{dbt.dateadd('day', '-1',\n dbt.dateadd(datepart, '1', dbt.date_trunc(datepart, date))\n )}}\n as date)\n{%- endmacro -%}\n\n", "depends_on": { - "macros": [] + "macros": [ + "macro.dbt.dateadd", + "macro.dbt.date_trunc" + ] }, "description": "", "meta": {}, @@ -10384,20 +10462,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.591591, + "created_at": 1730458997.1377678, "supported_languages": null }, - "macro.dbt.last_day": { - "name": "last_day", + "macro.dbt.default__last_day": { + "name": "default__last_day", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/last_day.sql", "original_file_path": "macros/utils/last_day.sql", - "unique_id": "macro.dbt.last_day", - "macro_sql": "{% macro last_day(date, datepart) %}\n {{ return(adapter.dispatch('last_day', 'dbt') (date, datepart)) }}\n{% endmacro %}", + "unique_id": "macro.dbt.default__last_day", + "macro_sql": "{% macro default__last_day(date, datepart) -%}\n {{dbt.default_last_day(date, datepart)}}\n{%- endmacro %}", "depends_on": { "macros": [ - "macro.dbt_postgres.postgres__last_day" + "macro.dbt.default_last_day" ] }, "description": "", @@ -10408,21 +10486,66 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.591788, + "created_at": 1730458997.1379077, "supported_languages": null }, - "macro.dbt.default_last_day": { - "name": "default_last_day", + "macro.dbt.array_append": { + "name": "array_append", + "resource_type": "macro", + "package_name": "dbt", + "path": "macros/utils/array_append.sql", + "original_file_path": "macros/utils/array_append.sql", + "unique_id": "macro.dbt.array_append", + "macro_sql": "{% macro array_append(array, new_element) -%}\n {{ return(adapter.dispatch('array_append', 'dbt')(array, new_element)) }}\n{%- endmacro %}", + "depends_on": { + "macros": [ + "macro.dbt.default__array_append" + ] + }, + "description": "", + "meta": {}, + "docs": { + "show": true, + "node_color": null + }, + "patch_path": null, + "arguments": [], + "created_at": 1730458997.1380756, + "supported_languages": null + }, + "macro.dbt.default__array_append": { + "name": "default__array_append", + "resource_type": "macro", + "package_name": "dbt", + "path": "macros/utils/array_append.sql", + "original_file_path": "macros/utils/array_append.sql", + "unique_id": "macro.dbt.default__array_append", + "macro_sql": "{% macro default__array_append(array, new_element) -%}\n array_append({{ array }}, {{ new_element }})\n{%- endmacro %}", + "depends_on": { + "macros": [] + }, + "description": "", + "meta": {}, + "docs": { + "show": true, + "node_color": null + }, + "patch_path": null, + "arguments": [], + "created_at": 1730458997.138152, + "supported_languages": null + }, + "macro.dbt.date_trunc": { + "name": "date_trunc", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/last_day.sql", - "original_file_path": "macros/utils/last_day.sql", - "unique_id": "macro.dbt.default_last_day", - "macro_sql": "\n\n{%- macro default_last_day(date, datepart) -%}\n cast(\n {{dbt.dateadd('day', '-1',\n dbt.dateadd(datepart, '1', dbt.date_trunc(datepart, date))\n )}}\n as date)\n{%- endmacro -%}\n\n", + "path": "macros/utils/date_trunc.sql", + "original_file_path": "macros/utils/date_trunc.sql", + "unique_id": "macro.dbt.date_trunc", + "macro_sql": "{% macro date_trunc(datepart, date) -%}\n {{ return(adapter.dispatch('date_trunc', 'dbt') (datepart, date)) }}\n{%- endmacro %}", "depends_on": { "macros": [ - "macro.dbt.dateadd", - "macro.dbt.date_trunc" + "macro.dbt.default__date_trunc" ] }, "description": "", @@ -10433,21 +10556,19 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.591935, + "created_at": 1730458997.138304, "supported_languages": null }, - "macro.dbt.default__last_day": { - "name": "default__last_day", + "macro.dbt.default__date_trunc": { + "name": "default__date_trunc", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/last_day.sql", - "original_file_path": "macros/utils/last_day.sql", - "unique_id": "macro.dbt.default__last_day", - "macro_sql": "{% macro default__last_day(date, datepart) -%}\n {{dbt.default_last_day(date, datepart)}}\n{%- endmacro %}", + "path": "macros/utils/date_trunc.sql", + "original_file_path": "macros/utils/date_trunc.sql", + "unique_id": "macro.dbt.default__date_trunc", + "macro_sql": "{% macro default__date_trunc(datepart, date) -%}\n date_trunc('{{datepart}}', {{date}})\n{%- endmacro %}", "depends_on": { - "macros": [ - "macro.dbt.default_last_day" - ] + "macros": [] }, "description": "", "meta": {}, @@ -10457,7 +10578,7 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5920188, + "created_at": 1730458997.1383803, "supported_languages": null }, "macro.dbt.split_part": { @@ -10481,7 +10602,7 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5923488, + "created_at": 1730458997.1386838, "supported_languages": null }, "macro.dbt.default__split_part": { @@ -10503,7 +10624,7 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.592448, + "created_at": 1730458997.138779, "supported_languages": null }, "macro.dbt._split_part_negative": { @@ -10525,20 +10646,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.592578, + "created_at": 1730458997.1389055, "supported_languages": null }, - "macro.dbt.date_trunc": { - "name": "date_trunc", + "macro.dbt.datediff": { + "name": "datediff", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/date_trunc.sql", - "original_file_path": "macros/utils/date_trunc.sql", - "unique_id": "macro.dbt.date_trunc", - "macro_sql": "{% macro date_trunc(datepart, date) -%}\n {{ return(adapter.dispatch('date_trunc', 'dbt') (datepart, date)) }}\n{%- endmacro %}", + "path": "macros/utils/datediff.sql", + "original_file_path": "macros/utils/datediff.sql", + "unique_id": "macro.dbt.datediff", + "macro_sql": "{% macro datediff(first_date, second_date, datepart) %}\n {{ return(adapter.dispatch('datediff', 'dbt')(first_date, second_date, datepart)) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__date_trunc" + "macro.dbt_postgres.postgres__datediff" ] }, "description": "", @@ -10549,17 +10670,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.592795, + "created_at": 1730458997.1391, "supported_languages": null }, - "macro.dbt.default__date_trunc": { - "name": "default__date_trunc", + "macro.dbt.default__datediff": { + "name": "default__datediff", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/date_trunc.sql", - "original_file_path": "macros/utils/date_trunc.sql", - "unique_id": "macro.dbt.default__date_trunc", - "macro_sql": "{% macro default__date_trunc(datepart, date) -%}\n date_trunc('{{datepart}}', {{date}})\n{%- endmacro %}", + "path": "macros/utils/datediff.sql", + "original_file_path": "macros/utils/datediff.sql", + "unique_id": "macro.dbt.default__datediff", + "macro_sql": "{% macro default__datediff(first_date, second_date, datepart) -%}\n\n datediff(\n {{ datepart }},\n {{ first_date }},\n {{ second_date }}\n )\n\n{%- endmacro %}", "depends_on": { "macros": [] }, @@ -10571,20 +10692,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.592872, + "created_at": 1730458997.139194, "supported_languages": null }, - "macro.dbt.array_construct": { - "name": "array_construct", + "macro.dbt.replace": { + "name": "replace", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/array_construct.sql", - "original_file_path": "macros/utils/array_construct.sql", - "unique_id": "macro.dbt.array_construct", - "macro_sql": "{% macro array_construct(inputs=[], data_type=api.Column.translate_type('integer')) -%}\n {{ return(adapter.dispatch('array_construct', 'dbt')(inputs, data_type)) }}\n{%- endmacro %}", + "path": "macros/utils/replace.sql", + "original_file_path": "macros/utils/replace.sql", + "unique_id": "macro.dbt.replace", + "macro_sql": "{% macro replace(field, old_chars, new_chars) -%}\n {{ return(adapter.dispatch('replace', 'dbt') (field, old_chars, new_chars)) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__array_construct" + "macro.dbt.default__replace" ] }, "description": "", @@ -10595,17 +10716,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5930848, + "created_at": 1730458997.1393752, "supported_languages": null }, - "macro.dbt.default__array_construct": { - "name": "default__array_construct", + "macro.dbt.default__replace": { + "name": "default__replace", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/array_construct.sql", - "original_file_path": "macros/utils/array_construct.sql", - "unique_id": "macro.dbt.default__array_construct", - "macro_sql": "{% macro default__array_construct(inputs, data_type) -%}\n {% if inputs|length > 0 %}\n array[ {{ inputs|join(' , ') }} ]\n {% else %}\n array[]::{{data_type}}[]\n {% endif %}\n{%- endmacro %}", + "path": "macros/utils/replace.sql", + "original_file_path": "macros/utils/replace.sql", + "unique_id": "macro.dbt.default__replace", + "macro_sql": "{% macro default__replace(field, old_chars, new_chars) %}\n\n replace(\n {{ field }},\n {{ old_chars }},\n {{ new_chars }}\n )\n\n\n{% endmacro %}", "depends_on": { "macros": [] }, @@ -10617,20 +10738,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5932212, + "created_at": 1730458997.1394682, "supported_languages": null }, - "macro.dbt.array_append": { - "name": "array_append", + "macro.dbt.right": { + "name": "right", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/array_append.sql", - "original_file_path": "macros/utils/array_append.sql", - "unique_id": "macro.dbt.array_append", - "macro_sql": "{% macro array_append(array, new_element) -%}\n {{ return(adapter.dispatch('array_append', 'dbt')(array, new_element)) }}\n{%- endmacro %}", + "path": "macros/utils/right.sql", + "original_file_path": "macros/utils/right.sql", + "unique_id": "macro.dbt.right", + "macro_sql": "{% macro right(string_text, length_expression) -%}\n {{ return(adapter.dispatch('right', 'dbt') (string_text, length_expression)) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__array_append" + "macro.dbt.default__right" ] }, "description": "", @@ -10641,17 +10762,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.593384, + "created_at": 1730458997.1396322, "supported_languages": null }, - "macro.dbt.default__array_append": { - "name": "default__array_append", + "macro.dbt.default__right": { + "name": "default__right", "resource_type": "macro", "package_name": "dbt", - "path": "macros/utils/array_append.sql", - "original_file_path": "macros/utils/array_append.sql", - "unique_id": "macro.dbt.default__array_append", - "macro_sql": "{% macro default__array_append(array, new_element) -%}\n array_append({{ array }}, {{ new_element }})\n{%- endmacro %}", + "path": "macros/utils/right.sql", + "original_file_path": "macros/utils/right.sql", + "unique_id": "macro.dbt.default__right", + "macro_sql": "{% macro default__right(string_text, length_expression) %}\n\n right(\n {{ string_text }},\n {{ length_expression }}\n )\n\n{%- endmacro -%}", "depends_on": { "macros": [] }, @@ -10663,20 +10784,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.59346, + "created_at": 1730458997.1397088, "supported_languages": null }, - "macro.dbt.create_schema": { - "name": "create_schema", + "macro.dbt.string_literal": { + "name": "string_literal", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/schema.sql", - "original_file_path": "macros/adapters/schema.sql", - "unique_id": "macro.dbt.create_schema", - "macro_sql": "{% macro create_schema(relation) -%}\n {{ adapter.dispatch('create_schema', 'dbt')(relation) }}\n{% endmacro %}", + "path": "macros/utils/literal.sql", + "original_file_path": "macros/utils/literal.sql", + "unique_id": "macro.dbt.string_literal", + "macro_sql": "{%- macro string_literal(value) -%}\n {{ return(adapter.dispatch('string_literal', 'dbt') (value)) }}\n{%- endmacro -%}\n\n", "depends_on": { "macros": [ - "macro.dbt_postgres.postgres__create_schema" + "macro.dbt.default__string_literal" ] }, "description": "", @@ -10687,21 +10808,19 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5936892, + "created_at": 1730458997.1398432, "supported_languages": null }, - "macro.dbt.default__create_schema": { - "name": "default__create_schema", + "macro.dbt.default__string_literal": { + "name": "default__string_literal", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/schema.sql", - "original_file_path": "macros/adapters/schema.sql", - "unique_id": "macro.dbt.default__create_schema", - "macro_sql": "{% macro default__create_schema(relation) -%}\n {%- call statement('create_schema') -%}\n create schema if not exists {{ relation.without_identifier() }}\n {% endcall %}\n{% endmacro %}", + "path": "macros/utils/literal.sql", + "original_file_path": "macros/utils/literal.sql", + "unique_id": "macro.dbt.default__string_literal", + "macro_sql": "{% macro default__string_literal(value) -%}\n '{{ value }}'\n{%- endmacro %}", "depends_on": { - "macros": [ - "macro.dbt.statement" - ] + "macros": [] }, "description": "", "meta": {}, @@ -10711,20 +10830,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.593793, + "created_at": 1730458997.139902, "supported_languages": null }, - "macro.dbt.drop_schema": { - "name": "drop_schema", + "macro.dbt.hash": { + "name": "hash", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/schema.sql", - "original_file_path": "macros/adapters/schema.sql", - "unique_id": "macro.dbt.drop_schema", - "macro_sql": "{% macro drop_schema(relation) -%}\n {{ adapter.dispatch('drop_schema', 'dbt')(relation) }}\n{% endmacro %}", + "path": "macros/utils/hash.sql", + "original_file_path": "macros/utils/hash.sql", + "unique_id": "macro.dbt.hash", + "macro_sql": "{% macro hash(field) -%}\n {{ return(adapter.dispatch('hash', 'dbt') (field)) }}\n{%- endmacro %}", "depends_on": { "macros": [ - "macro.dbt_postgres.postgres__drop_schema" + "macro.dbt.default__hash" ] }, "description": "", @@ -10735,20 +10854,42 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5938811, + "created_at": 1730458997.1400514, "supported_languages": null }, - "macro.dbt.default__drop_schema": { - "name": "default__drop_schema", + "macro.dbt.default__hash": { + "name": "default__hash", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/schema.sql", - "original_file_path": "macros/adapters/schema.sql", - "unique_id": "macro.dbt.default__drop_schema", - "macro_sql": "{% macro default__drop_schema(relation) -%}\n {%- call statement('drop_schema') -%}\n drop schema if exists {{ relation.without_identifier() }} cascade\n {% endcall %}\n{% endmacro %}", + "path": "macros/utils/hash.sql", + "original_file_path": "macros/utils/hash.sql", + "unique_id": "macro.dbt.default__hash", + "macro_sql": "{% macro default__hash(field) -%}\n md5(cast({{ field }} as {{ api.Column.translate_type('string') }}))\n{%- endmacro %}", + "depends_on": { + "macros": [] + }, + "description": "", + "meta": {}, + "docs": { + "show": true, + "node_color": null + }, + "patch_path": null, + "arguments": [], + "created_at": 1730458997.1401424, + "supported_languages": null + }, + "macro.dbt.array_construct": { + "name": "array_construct", + "resource_type": "macro", + "package_name": "dbt", + "path": "macros/utils/array_construct.sql", + "original_file_path": "macros/utils/array_construct.sql", + "unique_id": "macro.dbt.array_construct", + "macro_sql": "{% macro array_construct(inputs=[], data_type=api.Column.translate_type('integer')) -%}\n {{ return(adapter.dispatch('array_construct', 'dbt')(inputs, data_type)) }}\n{%- endmacro %}", "depends_on": { "macros": [ - "macro.dbt.statement" + "macro.dbt.default__array_construct" ] }, "description": "", @@ -10759,20 +10900,42 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5939798, + "created_at": 1730458997.140337, "supported_languages": null }, - "macro.dbt.current_timestamp": { - "name": "current_timestamp", + "macro.dbt.default__array_construct": { + "name": "default__array_construct", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/timestamps.sql", - "original_file_path": "macros/adapters/timestamps.sql", - "unique_id": "macro.dbt.current_timestamp", - "macro_sql": "{%- macro current_timestamp() -%}\n {{ adapter.dispatch('current_timestamp', 'dbt')() }}\n{%- endmacro -%}\n\n", + "path": "macros/utils/array_construct.sql", + "original_file_path": "macros/utils/array_construct.sql", + "unique_id": "macro.dbt.default__array_construct", + "macro_sql": "{% macro default__array_construct(inputs, data_type) -%}\n {% if inputs|length > 0 %}\n array[ {{ inputs|join(' , ') }} ]\n {% else %}\n array[]::{{data_type}}[]\n {% endif %}\n{%- endmacro %}", + "depends_on": { + "macros": [] + }, + "description": "", + "meta": {}, + "docs": { + "show": true, + "node_color": null + }, + "patch_path": null, + "arguments": [], + "created_at": 1730458997.140478, + "supported_languages": null + }, + "macro.dbt.escape_single_quotes": { + "name": "escape_single_quotes", + "resource_type": "macro", + "package_name": "dbt", + "path": "macros/utils/escape_single_quotes.sql", + "original_file_path": "macros/utils/escape_single_quotes.sql", + "unique_id": "macro.dbt.escape_single_quotes", + "macro_sql": "{% macro escape_single_quotes(expression) %}\n {{ return(adapter.dispatch('escape_single_quotes', 'dbt') (expression)) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt_postgres.postgres__current_timestamp" + "macro.dbt.default__escape_single_quotes" ] }, "description": "", @@ -10783,17 +10946,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.594285, + "created_at": 1730458997.1406233, "supported_languages": null }, - "macro.dbt.default__current_timestamp": { - "name": "default__current_timestamp", + "macro.dbt.default__escape_single_quotes": { + "name": "default__escape_single_quotes", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/timestamps.sql", - "original_file_path": "macros/adapters/timestamps.sql", - "unique_id": "macro.dbt.default__current_timestamp", - "macro_sql": "{% macro default__current_timestamp() -%}\n {{ exceptions.raise_not_implemented(\n 'current_timestamp macro not implemented for adapter ' + adapter.type()) }}\n{%- endmacro %}", + "path": "macros/utils/escape_single_quotes.sql", + "original_file_path": "macros/utils/escape_single_quotes.sql", + "unique_id": "macro.dbt.default__escape_single_quotes", + "macro_sql": "{% macro default__escape_single_quotes(expression) -%}\n{{ expression | replace(\"'\",\"''\") }}\n{%- endmacro %}", "depends_on": { "macros": [] }, @@ -10805,20 +10968,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.594368, + "created_at": 1730458997.1406984, "supported_languages": null }, - "macro.dbt.snapshot_get_time": { - "name": "snapshot_get_time", + "macro.dbt.any_value": { + "name": "any_value", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/timestamps.sql", - "original_file_path": "macros/adapters/timestamps.sql", - "unique_id": "macro.dbt.snapshot_get_time", - "macro_sql": "\n\n{%- macro snapshot_get_time() -%}\n {{ adapter.dispatch('snapshot_get_time', 'dbt')() }}\n{%- endmacro -%}\n\n", + "path": "macros/utils/any_value.sql", + "original_file_path": "macros/utils/any_value.sql", + "unique_id": "macro.dbt.any_value", + "macro_sql": "{% macro any_value(expression) -%}\n {{ return(adapter.dispatch('any_value', 'dbt') (expression)) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt_postgres.postgres__snapshot_get_time" + "macro.dbt_postgres.postgres__any_value" ] }, "description": "", @@ -10829,21 +10992,19 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.59445, + "created_at": 1730458997.1408272, "supported_languages": null }, - "macro.dbt.default__snapshot_get_time": { - "name": "default__snapshot_get_time", + "macro.dbt.default__any_value": { + "name": "default__any_value", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/timestamps.sql", - "original_file_path": "macros/adapters/timestamps.sql", - "unique_id": "macro.dbt.default__snapshot_get_time", - "macro_sql": "{% macro default__snapshot_get_time() %}\n {{ current_timestamp() }}\n{% endmacro %}", + "path": "macros/utils/any_value.sql", + "original_file_path": "macros/utils/any_value.sql", + "unique_id": "macro.dbt.default__any_value", + "macro_sql": "{% macro default__any_value(expression) -%}\n\n any_value({{ expression }})\n\n{%- endmacro %}", "depends_on": { - "macros": [ - "macro.dbt.current_timestamp" - ] + "macros": [] }, "description": "", "meta": {}, @@ -10853,20 +11014,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.594508, + "created_at": 1730458997.1408842, "supported_languages": null }, - "macro.dbt.current_timestamp_backcompat": { - "name": "current_timestamp_backcompat", + "macro.dbt.get_powers_of_two": { + "name": "get_powers_of_two", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/timestamps.sql", - "original_file_path": "macros/adapters/timestamps.sql", - "unique_id": "macro.dbt.current_timestamp_backcompat", - "macro_sql": "{% macro current_timestamp_backcompat() %}\n {{ return(adapter.dispatch('current_timestamp_backcompat', 'dbt')()) }}\n{% endmacro %}", + "path": "macros/utils/generate_series.sql", + "original_file_path": "macros/utils/generate_series.sql", + "unique_id": "macro.dbt.get_powers_of_two", + "macro_sql": "{% macro get_powers_of_two(upper_bound) %}\n {{ return(adapter.dispatch('get_powers_of_two', 'dbt')(upper_bound)) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt_postgres.postgres__current_timestamp_backcompat" + "macro.dbt.default__get_powers_of_two" ] }, "description": "", @@ -10877,17 +11038,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5946, + "created_at": 1730458997.141351, "supported_languages": null }, - "macro.dbt.default__current_timestamp_backcompat": { - "name": "default__current_timestamp_backcompat", + "macro.dbt.default__get_powers_of_two": { + "name": "default__get_powers_of_two", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/timestamps.sql", - "original_file_path": "macros/adapters/timestamps.sql", - "unique_id": "macro.dbt.default__current_timestamp_backcompat", - "macro_sql": "{% macro default__current_timestamp_backcompat() %}\n current_timestamp::timestamp\n{% endmacro %}", + "path": "macros/utils/generate_series.sql", + "original_file_path": "macros/utils/generate_series.sql", + "unique_id": "macro.dbt.default__get_powers_of_two", + "macro_sql": "{% macro default__get_powers_of_two(upper_bound) %}\n\n {% if upper_bound <= 0 %}\n {{ exceptions.raise_compiler_error(\"upper bound must be positive\") }}\n {% endif %}\n\n {% for _ in range(1, 100) %}\n {% if upper_bound <= 2 ** loop.index %}{{ return(loop.index) }}{% endif %}\n {% endfor %}\n\n{% endmacro %}", "depends_on": { "macros": [] }, @@ -10899,20 +11060,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.594645, + "created_at": 1730458997.1416252, "supported_languages": null }, - "macro.dbt.current_timestamp_in_utc_backcompat": { - "name": "current_timestamp_in_utc_backcompat", + "macro.dbt.generate_series": { + "name": "generate_series", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/timestamps.sql", - "original_file_path": "macros/adapters/timestamps.sql", - "unique_id": "macro.dbt.current_timestamp_in_utc_backcompat", - "macro_sql": "{% macro current_timestamp_in_utc_backcompat() %}\n {{ return(adapter.dispatch('current_timestamp_in_utc_backcompat', 'dbt')()) }}\n{% endmacro %}", + "path": "macros/utils/generate_series.sql", + "original_file_path": "macros/utils/generate_series.sql", + "unique_id": "macro.dbt.generate_series", + "macro_sql": "{% macro generate_series(upper_bound) %}\n {{ return(adapter.dispatch('generate_series', 'dbt')(upper_bound)) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt_postgres.postgres__current_timestamp_in_utc_backcompat" + "macro.dbt.default__generate_series" ] }, "description": "", @@ -10923,21 +11084,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.594738, + "created_at": 1730458997.1417263, "supported_languages": null }, - "macro.dbt.default__current_timestamp_in_utc_backcompat": { - "name": "default__current_timestamp_in_utc_backcompat", + "macro.dbt.default__generate_series": { + "name": "default__generate_series", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/timestamps.sql", - "original_file_path": "macros/adapters/timestamps.sql", - "unique_id": "macro.dbt.default__current_timestamp_in_utc_backcompat", - "macro_sql": "{% macro default__current_timestamp_in_utc_backcompat() %}\n {{ return(adapter.dispatch('current_timestamp_backcompat', 'dbt')()) }}\n{% endmacro %}", + "path": "macros/utils/generate_series.sql", + "original_file_path": "macros/utils/generate_series.sql", + "unique_id": "macro.dbt.default__generate_series", + "macro_sql": "{% macro default__generate_series(upper_bound) %}\n\n {% set n = dbt.get_powers_of_two(upper_bound) %}\n\n with p as (\n select 0 as generated_number union all select 1\n ), unioned as (\n\n select\n\n {% for i in range(n) %}\n p{{i}}.generated_number * power(2, {{i}})\n {% if not loop.last %} + {% endif %}\n {% endfor %}\n + 1\n as generated_number\n\n from\n\n {% for i in range(n) %}\n p as p{{i}}\n {% if not loop.last %} cross join {% endif %}\n {% endfor %}\n\n )\n\n select *\n from unioned\n where generated_number <= {{upper_bound}}\n order by generated_number\n\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.current_timestamp_backcompat", - "macro.dbt_postgres.postgres__current_timestamp_backcompat" + "macro.dbt.get_powers_of_two" ] }, "description": "", @@ -10948,20 +11108,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.59483, + "created_at": 1730458997.1420078, "supported_languages": null }, - "macro.dbt.get_create_index_sql": { - "name": "get_create_index_sql", + "macro.dbt.cast_bool_to_text": { + "name": "cast_bool_to_text", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/indexes.sql", - "original_file_path": "macros/adapters/indexes.sql", - "unique_id": "macro.dbt.get_create_index_sql", - "macro_sql": "{% macro get_create_index_sql(relation, index_dict) -%}\n {{ return(adapter.dispatch('get_create_index_sql', 'dbt')(relation, index_dict)) }}\n{% endmacro %}", + "path": "macros/utils/cast_bool_to_text.sql", + "original_file_path": "macros/utils/cast_bool_to_text.sql", + "unique_id": "macro.dbt.cast_bool_to_text", + "macro_sql": "{% macro cast_bool_to_text(field) %}\n {{ adapter.dispatch('cast_bool_to_text', 'dbt') (field) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt_postgres.postgres__get_create_index_sql" + "macro.dbt.default__cast_bool_to_text" ] }, "description": "", @@ -10972,17 +11132,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5953548, + "created_at": 1730458997.1421416, "supported_languages": null }, - "macro.dbt.default__get_create_index_sql": { - "name": "default__get_create_index_sql", + "macro.dbt.default__cast_bool_to_text": { + "name": "default__cast_bool_to_text", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/indexes.sql", - "original_file_path": "macros/adapters/indexes.sql", - "unique_id": "macro.dbt.default__get_create_index_sql", - "macro_sql": "{% macro default__get_create_index_sql(relation, index_dict) -%}\n {% do return(None) %}\n{% endmacro %}", + "path": "macros/utils/cast_bool_to_text.sql", + "original_file_path": "macros/utils/cast_bool_to_text.sql", + "unique_id": "macro.dbt.default__cast_bool_to_text", + "macro_sql": "{% macro default__cast_bool_to_text(field) %}\n cast({{ field }} as {{ api.Column.translate_type('string') }})\n{% endmacro %}", "depends_on": { "macros": [] }, @@ -10994,20 +11154,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.595433, + "created_at": 1730458997.1422305, "supported_languages": null }, - "macro.dbt.create_indexes": { - "name": "create_indexes", + "macro.dbt.get_drop_backup_sql": { + "name": "get_drop_backup_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/indexes.sql", - "original_file_path": "macros/adapters/indexes.sql", - "unique_id": "macro.dbt.create_indexes", - "macro_sql": "{% macro create_indexes(relation) -%}\n {{ adapter.dispatch('create_indexes', 'dbt')(relation) }}\n{%- endmacro %}", + "path": "macros/relations/drop_backup.sql", + "original_file_path": "macros/relations/drop_backup.sql", + "unique_id": "macro.dbt.get_drop_backup_sql", + "macro_sql": "{%- macro get_drop_backup_sql(relation) -%}\n {{- log('Applying DROP BACKUP to: ' ~ relation) -}}\n {{- adapter.dispatch('get_drop_backup_sql', 'dbt')(relation) -}}\n{%- endmacro -%}\n\n\n", "depends_on": { "macros": [ - "macro.dbt.default__create_indexes" + "macro.dbt.default__get_drop_backup_sql" ] }, "description": "", @@ -11018,21 +11178,21 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5955179, + "created_at": 1730458997.1424184, "supported_languages": null }, - "macro.dbt.default__create_indexes": { - "name": "default__create_indexes", + "macro.dbt.default__get_drop_backup_sql": { + "name": "default__get_drop_backup_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/indexes.sql", - "original_file_path": "macros/adapters/indexes.sql", - "unique_id": "macro.dbt.default__create_indexes", - "macro_sql": "{% macro default__create_indexes(relation) -%}\n {%- set _indexes = config.get('indexes', default=[]) -%}\n\n {% for _index_dict in _indexes %}\n {% set create_index_sql = get_create_index_sql(relation, _index_dict) %}\n {% if create_index_sql %}\n {% do run_query(create_index_sql) %}\n {% endif %}\n {% endfor %}\n{% endmacro %}", + "path": "macros/relations/drop_backup.sql", + "original_file_path": "macros/relations/drop_backup.sql", + "unique_id": "macro.dbt.default__get_drop_backup_sql", + "macro_sql": "{%- macro default__get_drop_backup_sql(relation) -%}\n\n -- get the standard backup name\n {% set backup_relation = make_backup_relation(relation, relation.type) %}\n\n {{ get_drop_sql(backup_relation) }}\n\n{%- endmacro -%}", "depends_on": { "macros": [ - "macro.dbt.get_create_index_sql", - "macro.dbt.run_query" + "macro.dbt.make_backup_relation", + "macro.dbt.get_drop_sql" ] }, "description": "", @@ -11043,20 +11203,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.595733, + "created_at": 1730458997.1425326, "supported_languages": null }, - "macro.dbt.get_drop_index_sql": { - "name": "get_drop_index_sql", + "macro.dbt.get_rename_sql": { + "name": "get_rename_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/indexes.sql", - "original_file_path": "macros/adapters/indexes.sql", - "unique_id": "macro.dbt.get_drop_index_sql", - "macro_sql": "{% macro get_drop_index_sql(relation, index_name) -%}\n {{ adapter.dispatch('get_drop_index_sql', 'dbt')(relation, index_name) }}\n{%- endmacro %}", + "path": "macros/relations/rename.sql", + "original_file_path": "macros/relations/rename.sql", + "unique_id": "macro.dbt.get_rename_sql", + "macro_sql": "{%- macro get_rename_sql(relation, new_name) -%}\n {{- log('Applying RENAME to: ' ~ relation) -}}\n {{- adapter.dispatch('get_rename_sql', 'dbt')(relation, new_name) -}}\n{%- endmacro -%}\n\n\n", "depends_on": { "macros": [ - "macro.dbt_postgres.postgres__get_drop_index_sql" + "macro.dbt.default__get_rename_sql" ] }, "description": "", @@ -11067,19 +11227,23 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.595839, + "created_at": 1730458997.1429522, "supported_languages": null }, - "macro.dbt.default__get_drop_index_sql": { - "name": "default__get_drop_index_sql", + "macro.dbt.default__get_rename_sql": { + "name": "default__get_rename_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/indexes.sql", - "original_file_path": "macros/adapters/indexes.sql", - "unique_id": "macro.dbt.default__get_drop_index_sql", - "macro_sql": "{% macro default__get_drop_index_sql(relation, index_name) -%}\n {{ exceptions.raise_compiler_error(\"`get_drop_index_sql has not been implemented for this adapter.\") }}\n{%- endmacro %}", + "path": "macros/relations/rename.sql", + "original_file_path": "macros/relations/rename.sql", + "unique_id": "macro.dbt.default__get_rename_sql", + "macro_sql": "{%- macro default__get_rename_sql(relation, new_name) -%}\n\n {%- if relation.is_view -%}\n {{ get_rename_view_sql(relation, new_name) }}\n\n {%- elif relation.is_table -%}\n {{ get_rename_table_sql(relation, new_name) }}\n\n {%- elif relation.is_materialized_view -%}\n {{ get_rename_materialized_view_sql(relation, new_name) }}\n\n {%- else -%}\n {{- exceptions.raise_compiler_error(\"`get_rename_sql` has not been implemented for: \" ~ relation.type ) -}}\n\n {%- endif -%}\n\n{%- endmacro -%}\n\n\n", "depends_on": { - "macros": [] + "macros": [ + "macro.dbt.get_rename_view_sql", + "macro.dbt.get_rename_table_sql", + "macro.dbt.get_rename_materialized_view_sql" + ] }, "description": "", "meta": {}, @@ -11089,20 +11253,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5959291, + "created_at": 1730458997.1431935, "supported_languages": null }, - "macro.dbt.get_show_indexes_sql": { - "name": "get_show_indexes_sql", + "macro.dbt.rename_relation": { + "name": "rename_relation", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/indexes.sql", - "original_file_path": "macros/adapters/indexes.sql", - "unique_id": "macro.dbt.get_show_indexes_sql", - "macro_sql": "{% macro get_show_indexes_sql(relation) -%}\n {{ adapter.dispatch('get_show_indexes_sql', 'dbt')(relation) }}\n{%- endmacro %}", + "path": "macros/relations/rename.sql", + "original_file_path": "macros/relations/rename.sql", + "unique_id": "macro.dbt.rename_relation", + "macro_sql": "{% macro rename_relation(from_relation, to_relation) -%}\n {{ return(adapter.dispatch('rename_relation', 'dbt')(from_relation, to_relation)) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt_postgres.postgres__get_show_indexes_sql" + "macro.dbt.default__rename_relation" ] }, "description": "", @@ -11113,19 +11277,21 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5960162, + "created_at": 1730458997.143313, "supported_languages": null }, - "macro.dbt.default__get_show_indexes_sql": { - "name": "default__get_show_indexes_sql", + "macro.dbt.default__rename_relation": { + "name": "default__rename_relation", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/indexes.sql", - "original_file_path": "macros/adapters/indexes.sql", - "unique_id": "macro.dbt.default__get_show_indexes_sql", - "macro_sql": "{% macro default__get_show_indexes_sql(relation) -%}\n {{ exceptions.raise_compiler_error(\"`get_show_indexes_sql has not been implemented for this adapter.\") }}\n{%- endmacro %}", + "path": "macros/relations/rename.sql", + "original_file_path": "macros/relations/rename.sql", + "unique_id": "macro.dbt.default__rename_relation", + "macro_sql": "{% macro default__rename_relation(from_relation, to_relation) -%}\n {% set target_name = adapter.quote_as_configured(to_relation.identifier, 'identifier') %}\n {% call statement('rename_relation') -%}\n alter table {{ from_relation.render() }} rename to {{ target_name }}\n {%- endcall %}\n{% endmacro %}", "depends_on": { - "macros": [] + "macros": [ + "macro.dbt.statement" + ] }, "description": "", "meta": {}, @@ -11135,20 +11301,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5960891, + "created_at": 1730458997.1434832, "supported_languages": null }, - "macro.dbt.make_intermediate_relation": { - "name": "make_intermediate_relation", + "macro.dbt.drop_schema_named": { + "name": "drop_schema_named", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/relation.sql", - "original_file_path": "macros/adapters/relation.sql", - "unique_id": "macro.dbt.make_intermediate_relation", - "macro_sql": "{% macro make_intermediate_relation(base_relation, suffix='__dbt_tmp') %}\n {{ return(adapter.dispatch('make_intermediate_relation', 'dbt')(base_relation, suffix)) }}\n{% endmacro %}", + "path": "macros/relations/schema.sql", + "original_file_path": "macros/relations/schema.sql", + "unique_id": "macro.dbt.drop_schema_named", + "macro_sql": "{% macro drop_schema_named(schema_name) %}\n {{ return(adapter.dispatch('drop_schema_named', 'dbt') (schema_name)) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt_postgres.postgres__make_intermediate_relation" + "macro.dbt.default__drop_schema_named" ] }, "description": "", @@ -11159,21 +11325,19 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.597478, + "created_at": 1730458997.1436388, "supported_languages": null }, - "macro.dbt.default__make_intermediate_relation": { - "name": "default__make_intermediate_relation", + "macro.dbt.default__drop_schema_named": { + "name": "default__drop_schema_named", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/relation.sql", - "original_file_path": "macros/adapters/relation.sql", - "unique_id": "macro.dbt.default__make_intermediate_relation", - "macro_sql": "{% macro default__make_intermediate_relation(base_relation, suffix) %}\n {{ return(default__make_temp_relation(base_relation, suffix)) }}\n{% endmacro %}", + "path": "macros/relations/schema.sql", + "original_file_path": "macros/relations/schema.sql", + "unique_id": "macro.dbt.default__drop_schema_named", + "macro_sql": "{% macro default__drop_schema_named(schema_name) %}\n {% set schema_relation = api.Relation.create(schema=schema_name) %}\n {{ adapter.drop_schema(schema_relation) }}\n{% endmacro %}", "depends_on": { - "macros": [ - "macro.dbt.default__make_temp_relation" - ] + "macros": [] }, "description": "", "meta": {}, @@ -11183,20 +11347,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.597574, + "created_at": 1730458997.143761, "supported_languages": null }, - "macro.dbt.make_temp_relation": { - "name": "make_temp_relation", + "macro.dbt.get_replace_sql": { + "name": "get_replace_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/relation.sql", - "original_file_path": "macros/adapters/relation.sql", - "unique_id": "macro.dbt.make_temp_relation", - "macro_sql": "{% macro make_temp_relation(base_relation, suffix='__dbt_tmp') %}\n {{ return(adapter.dispatch('make_temp_relation', 'dbt')(base_relation, suffix)) }}\n{% endmacro %}", + "path": "macros/relations/replace.sql", + "original_file_path": "macros/relations/replace.sql", + "unique_id": "macro.dbt.get_replace_sql", + "macro_sql": "{% macro get_replace_sql(existing_relation, target_relation, sql) %}\n {{- log('Applying REPLACE to: ' ~ existing_relation) -}}\n {{- adapter.dispatch('get_replace_sql', 'dbt')(existing_relation, target_relation, sql) -}}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt_postgres.postgres__make_temp_relation" + "macro.dbt.default__get_replace_sql" ] }, "description": "", @@ -11207,19 +11371,29 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.597693, + "created_at": 1730458997.144241, "supported_languages": null }, - "macro.dbt.default__make_temp_relation": { - "name": "default__make_temp_relation", + "macro.dbt.default__get_replace_sql": { + "name": "default__get_replace_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/relation.sql", - "original_file_path": "macros/adapters/relation.sql", - "unique_id": "macro.dbt.default__make_temp_relation", - "macro_sql": "{% macro default__make_temp_relation(base_relation, suffix) %}\n {%- set temp_identifier = base_relation.identifier ~ suffix -%}\n {%- set temp_relation = base_relation.incorporate(\n path={\"identifier\": temp_identifier}) -%}\n\n {{ return(temp_relation) }}\n{% endmacro %}", + "path": "macros/relations/replace.sql", + "original_file_path": "macros/relations/replace.sql", + "unique_id": "macro.dbt.default__get_replace_sql", + "macro_sql": "{% macro default__get_replace_sql(existing_relation, target_relation, sql) %}\n\n {# /* use a create or replace statement if possible */ #}\n\n {% set is_replaceable = existing_relation.type == target_relation_type and existing_relation.can_be_replaced %}\n\n {% if is_replaceable and existing_relation.is_view %}\n {{ get_replace_view_sql(target_relation, sql) }}\n\n {% elif is_replaceable and existing_relation.is_table %}\n {{ get_replace_table_sql(target_relation, sql) }}\n\n {% elif is_replaceable and existing_relation.is_materialized_view %}\n {{ get_replace_materialized_view_sql(target_relation, sql) }}\n\n {# /* a create or replace statement is not possible, so try to stage and/or backup to be safe */ #}\n\n {# /* create target_relation as an intermediate relation, then swap it out with the existing one using a backup */ #}\n {%- elif target_relation.can_be_renamed and existing_relation.can_be_renamed -%}\n {{ get_create_intermediate_sql(target_relation, sql) }};\n {{ get_create_backup_sql(existing_relation) }};\n {{ get_rename_intermediate_sql(target_relation) }};\n {{ get_drop_backup_sql(existing_relation) }}\n\n {# /* create target_relation as an intermediate relation, then swap it out with the existing one without using a backup */ #}\n {%- elif target_relation.can_be_renamed -%}\n {{ get_create_intermediate_sql(target_relation, sql) }};\n {{ get_drop_sql(existing_relation) }};\n {{ get_rename_intermediate_sql(target_relation) }}\n\n {# /* create target_relation in place by first backing up the existing relation */ #}\n {%- elif existing_relation.can_be_renamed -%}\n {{ get_create_backup_sql(existing_relation) }};\n {{ get_create_sql(target_relation, sql) }};\n {{ get_drop_backup_sql(existing_relation) }}\n\n {# /* no renaming is allowed, so just drop and create */ #}\n {%- else -%}\n {{ get_drop_sql(existing_relation) }};\n {{ get_create_sql(target_relation, sql) }}\n\n {%- endif -%}\n\n{% endmacro %}", "depends_on": { - "macros": [] + "macros": [ + "macro.dbt.get_replace_view_sql", + "macro.dbt.get_replace_table_sql", + "macro.dbt.get_replace_materialized_view_sql", + "macro.dbt.get_create_intermediate_sql", + "macro.dbt.get_create_backup_sql", + "macro.dbt.get_rename_intermediate_sql", + "macro.dbt.get_drop_backup_sql", + "macro.dbt.get_drop_sql", + "macro.dbt.get_create_sql" + ] }, "description": "", "meta": {}, @@ -11229,20 +11403,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.597853, + "created_at": 1730458997.144886, "supported_languages": null }, - "macro.dbt.make_backup_relation": { - "name": "make_backup_relation", + "macro.dbt.get_rename_intermediate_sql": { + "name": "get_rename_intermediate_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/relation.sql", - "original_file_path": "macros/adapters/relation.sql", - "unique_id": "macro.dbt.make_backup_relation", - "macro_sql": "{% macro make_backup_relation(base_relation, backup_relation_type, suffix='__dbt_backup') %}\n {{ return(adapter.dispatch('make_backup_relation', 'dbt')(base_relation, backup_relation_type, suffix)) }}\n{% endmacro %}", + "path": "macros/relations/rename_intermediate.sql", + "original_file_path": "macros/relations/rename_intermediate.sql", + "unique_id": "macro.dbt.get_rename_intermediate_sql", + "macro_sql": "{%- macro get_rename_intermediate_sql(relation) -%}\n {{- log('Applying RENAME INTERMEDIATE to: ' ~ relation) -}}\n {{- adapter.dispatch('get_rename_intermediate_sql', 'dbt')(relation) -}}\n{%- endmacro -%}\n\n\n", "depends_on": { "macros": [ - "macro.dbt_postgres.postgres__make_backup_relation" + "macro.dbt.default__get_rename_intermediate_sql" ] }, "description": "", @@ -11253,19 +11427,22 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5979881, + "created_at": 1730458997.1450853, "supported_languages": null }, - "macro.dbt.default__make_backup_relation": { - "name": "default__make_backup_relation", + "macro.dbt.default__get_rename_intermediate_sql": { + "name": "default__get_rename_intermediate_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/relation.sql", - "original_file_path": "macros/adapters/relation.sql", - "unique_id": "macro.dbt.default__make_backup_relation", - "macro_sql": "{% macro default__make_backup_relation(base_relation, backup_relation_type, suffix) %}\n {%- set backup_identifier = base_relation.identifier ~ suffix -%}\n {%- set backup_relation = base_relation.incorporate(\n path={\"identifier\": backup_identifier},\n type=backup_relation_type\n ) -%}\n {{ return(backup_relation) }}\n{% endmacro %}", + "path": "macros/relations/rename_intermediate.sql", + "original_file_path": "macros/relations/rename_intermediate.sql", + "unique_id": "macro.dbt.default__get_rename_intermediate_sql", + "macro_sql": "{%- macro default__get_rename_intermediate_sql(relation) -%}\n\n -- get the standard intermediate name\n {% set intermediate_relation = make_intermediate_relation(relation) %}\n\n {{ get_rename_sql(intermediate_relation, relation.identifier) }}\n\n{%- endmacro -%}", "depends_on": { - "macros": [] + "macros": [ + "macro.dbt.make_intermediate_relation", + "macro.dbt.get_rename_sql" + ] }, "description": "", "meta": {}, @@ -11275,20 +11452,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.598164, + "created_at": 1730458997.1452024, "supported_languages": null }, - "macro.dbt.truncate_relation": { - "name": "truncate_relation", + "macro.dbt.get_drop_sql": { + "name": "get_drop_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/relation.sql", - "original_file_path": "macros/adapters/relation.sql", - "unique_id": "macro.dbt.truncate_relation", - "macro_sql": "{% macro truncate_relation(relation) -%}\n {{ return(adapter.dispatch('truncate_relation', 'dbt')(relation)) }}\n{% endmacro %}", + "path": "macros/relations/drop.sql", + "original_file_path": "macros/relations/drop.sql", + "unique_id": "macro.dbt.get_drop_sql", + "macro_sql": "{%- macro get_drop_sql(relation) -%}\n {{- log('Applying DROP to: ' ~ relation) -}}\n {{- adapter.dispatch('get_drop_sql', 'dbt')(relation) -}}\n{%- endmacro -%}\n\n\n", "depends_on": { "macros": [ - "macro.dbt.default__truncate_relation" + "macro.dbt.default__get_drop_sql" ] }, "description": "", @@ -11299,20 +11476,22 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.598264, + "created_at": 1730458997.1456175, "supported_languages": null }, - "macro.dbt.default__truncate_relation": { - "name": "default__truncate_relation", + "macro.dbt.default__get_drop_sql": { + "name": "default__get_drop_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/relation.sql", - "original_file_path": "macros/adapters/relation.sql", - "unique_id": "macro.dbt.default__truncate_relation", - "macro_sql": "{% macro default__truncate_relation(relation) -%}\n {% call statement('truncate_relation') -%}\n truncate table {{ relation.render() }}\n {%- endcall %}\n{% endmacro %}", + "path": "macros/relations/drop.sql", + "original_file_path": "macros/relations/drop.sql", + "unique_id": "macro.dbt.default__get_drop_sql", + "macro_sql": "{%- macro default__get_drop_sql(relation) -%}\n\n {%- if relation.is_view -%}\n {{ drop_view(relation) }}\n\n {%- elif relation.is_table -%}\n {{ drop_table(relation) }}\n\n {%- elif relation.is_materialized_view -%}\n {{ drop_materialized_view(relation) }}\n\n {%- else -%}\n drop {{ relation.type }} if exists {{ relation.render() }} cascade\n\n {%- endif -%}\n\n{%- endmacro -%}\n\n\n", "depends_on": { "macros": [ - "macro.dbt.statement" + "macro.dbt.drop_view", + "macro.dbt.drop_table", + "macro.dbt.drop_materialized_view" ] }, "description": "", @@ -11323,20 +11502,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.598363, + "created_at": 1730458997.1458173, "supported_languages": null }, - "macro.dbt.get_or_create_relation": { - "name": "get_or_create_relation", + "macro.dbt.drop_relation": { + "name": "drop_relation", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/relation.sql", - "original_file_path": "macros/adapters/relation.sql", - "unique_id": "macro.dbt.get_or_create_relation", - "macro_sql": "{% macro get_or_create_relation(database, schema, identifier, type) -%}\n {{ return(adapter.dispatch('get_or_create_relation', 'dbt')(database, schema, identifier, type)) }}\n{% endmacro %}", + "path": "macros/relations/drop.sql", + "original_file_path": "macros/relations/drop.sql", + "unique_id": "macro.dbt.drop_relation", + "macro_sql": "{% macro drop_relation(relation) -%}\n {{ return(adapter.dispatch('drop_relation', 'dbt')(relation)) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__get_or_create_relation" + "macro.dbt.default__drop_relation" ] }, "description": "", @@ -11347,19 +11526,22 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.598497, + "created_at": 1730458997.1459162, "supported_languages": null }, - "macro.dbt.default__get_or_create_relation": { - "name": "default__get_or_create_relation", + "macro.dbt.default__drop_relation": { + "name": "default__drop_relation", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/relation.sql", - "original_file_path": "macros/adapters/relation.sql", - "unique_id": "macro.dbt.default__get_or_create_relation", - "macro_sql": "{% macro default__get_or_create_relation(database, schema, identifier, type) %}\n {%- set target_relation = adapter.get_relation(database=database, schema=schema, identifier=identifier) %}\n\n {% if target_relation %}\n {% do return([true, target_relation]) %}\n {% endif %}\n\n {%- set new_relation = api.Relation.create(\n database=database,\n schema=schema,\n identifier=identifier,\n type=type\n ) -%}\n {% do return([false, new_relation]) %}\n{% endmacro %}", + "path": "macros/relations/drop.sql", + "original_file_path": "macros/relations/drop.sql", + "unique_id": "macro.dbt.default__drop_relation", + "macro_sql": "{% macro default__drop_relation(relation) -%}\n {% call statement('drop_relation', auto_begin=False) -%}\n {{ get_drop_sql(relation) }}\n {%- endcall %}\n{% endmacro %}", "depends_on": { - "macros": [] + "macros": [ + "macro.dbt.statement", + "macro.dbt.get_drop_sql" + ] }, "description": "", "meta": {}, @@ -11369,17 +11551,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5988, + "created_at": 1730458997.146028, "supported_languages": null }, - "macro.dbt.load_cached_relation": { - "name": "load_cached_relation", + "macro.dbt.drop_relation_if_exists": { + "name": "drop_relation_if_exists", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/relation.sql", - "original_file_path": "macros/adapters/relation.sql", - "unique_id": "macro.dbt.load_cached_relation", - "macro_sql": "{% macro load_cached_relation(relation) %}\n {% do return(adapter.get_relation(\n database=relation.database,\n schema=relation.schema,\n identifier=relation.identifier\n )) -%}\n{% endmacro %}", + "path": "macros/relations/drop.sql", + "original_file_path": "macros/relations/drop.sql", + "unique_id": "macro.dbt.drop_relation_if_exists", + "macro_sql": "{% macro drop_relation_if_exists(relation) %}\n {% if relation is not none %}\n {{ adapter.drop_relation(relation) }}\n {% endif %}\n{% endmacro %}", "depends_on": { "macros": [] }, @@ -11391,20 +11573,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5989308, + "created_at": 1730458997.1461315, "supported_languages": null }, - "macro.dbt.load_relation": { - "name": "load_relation", + "macro.dbt.get_create_intermediate_sql": { + "name": "get_create_intermediate_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/relation.sql", - "original_file_path": "macros/adapters/relation.sql", - "unique_id": "macro.dbt.load_relation", - "macro_sql": "{% macro load_relation(relation) %}\n {{ return(load_cached_relation(relation)) }}\n{% endmacro %}", + "path": "macros/relations/create_intermediate.sql", + "original_file_path": "macros/relations/create_intermediate.sql", + "unique_id": "macro.dbt.get_create_intermediate_sql", + "macro_sql": "{%- macro get_create_intermediate_sql(relation, sql) -%}\n {{- log('Applying CREATE INTERMEDIATE to: ' ~ relation) -}}\n {{- adapter.dispatch('get_create_intermediate_sql', 'dbt')(relation, sql) -}}\n{%- endmacro -%}\n\n\n", "depends_on": { "macros": [ - "macro.dbt.load_cached_relation" + "macro.dbt.default__get_create_intermediate_sql" ] }, "description": "", @@ -11415,20 +11597,22 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.59901, + "created_at": 1730458997.1463287, "supported_languages": null }, - "macro.dbt.collect_freshness": { - "name": "collect_freshness", + "macro.dbt.default__get_create_intermediate_sql": { + "name": "default__get_create_intermediate_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/freshness.sql", - "original_file_path": "macros/adapters/freshness.sql", - "unique_id": "macro.dbt.collect_freshness", - "macro_sql": "{% macro collect_freshness(source, loaded_at_field, filter) %}\n {{ return(adapter.dispatch('collect_freshness', 'dbt')(source, loaded_at_field, filter))}}\n{% endmacro %}", + "path": "macros/relations/create_intermediate.sql", + "original_file_path": "macros/relations/create_intermediate.sql", + "unique_id": "macro.dbt.default__get_create_intermediate_sql", + "macro_sql": "{%- macro default__get_create_intermediate_sql(relation, sql) -%}\n\n -- get the standard intermediate name\n {% set intermediate_relation = make_intermediate_relation(relation) %}\n\n -- drop any pre-existing intermediate\n {{ get_drop_sql(intermediate_relation) }};\n\n {{ get_create_sql(intermediate_relation, sql) }}\n\n{%- endmacro -%}", "depends_on": { "macros": [ - "macro.dbt.default__collect_freshness" + "macro.dbt.make_intermediate_relation", + "macro.dbt.get_drop_sql", + "macro.dbt.get_create_sql" ] }, "description": "", @@ -11439,21 +11623,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.599255, + "created_at": 1730458997.1464577, "supported_languages": null }, - "macro.dbt.default__collect_freshness": { - "name": "default__collect_freshness", + "macro.dbt.get_create_sql": { + "name": "get_create_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/freshness.sql", - "original_file_path": "macros/adapters/freshness.sql", - "unique_id": "macro.dbt.default__collect_freshness", - "macro_sql": "{% macro default__collect_freshness(source, loaded_at_field, filter) %}\n {% call statement('collect_freshness', fetch_result=True, auto_begin=False) -%}\n select\n max({{ loaded_at_field }}) as max_loaded_at,\n {{ current_timestamp() }} as snapshotted_at\n from {{ source }}\n {% if filter %}\n where {{ filter }}\n {% endif %}\n {% endcall %}\n {{ return(load_result('collect_freshness')) }}\n{% endmacro %}", + "path": "macros/relations/create.sql", + "original_file_path": "macros/relations/create.sql", + "unique_id": "macro.dbt.get_create_sql", + "macro_sql": "{%- macro get_create_sql(relation, sql) -%}\n {{- log('Applying CREATE to: ' ~ relation) -}}\n {{- adapter.dispatch('get_create_sql', 'dbt')(relation, sql) -}}\n{%- endmacro -%}\n\n\n", "depends_on": { "macros": [ - "macro.dbt.statement", - "macro.dbt.current_timestamp" + "macro.dbt.default__get_create_sql" ] }, "description": "", @@ -11464,20 +11647,22 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.5994859, + "created_at": 1730458997.1467226, "supported_languages": null }, - "macro.dbt.validate_sql": { - "name": "validate_sql", + "macro.dbt.default__get_create_sql": { + "name": "default__get_create_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/validate_sql.sql", - "original_file_path": "macros/adapters/validate_sql.sql", - "unique_id": "macro.dbt.validate_sql", - "macro_sql": "{% macro validate_sql(sql) -%}\n {{ return(adapter.dispatch('validate_sql', 'dbt')(sql)) }}\n{% endmacro %}", + "path": "macros/relations/create.sql", + "original_file_path": "macros/relations/create.sql", + "unique_id": "macro.dbt.default__get_create_sql", + "macro_sql": "{%- macro default__get_create_sql(relation, sql) -%}\n\n {%- if relation.is_view -%}\n {{ get_create_view_as_sql(relation, sql) }}\n\n {%- elif relation.is_table -%}\n {{ get_create_table_as_sql(False, relation, sql) }}\n\n {%- elif relation.is_materialized_view -%}\n {{ get_create_materialized_view_as_sql(relation, sql) }}\n\n {%- else -%}\n {{- exceptions.raise_compiler_error(\"`get_create_sql` has not been implemented for: \" ~ relation.type ) -}}\n\n {%- endif -%}\n\n{%- endmacro -%}", "depends_on": { "macros": [ - "macro.dbt.default__validate_sql" + "macro.dbt.get_create_view_as_sql", + "macro.dbt.get_create_table_as_sql", + "macro.dbt.get_create_materialized_view_as_sql" ] }, "description": "", @@ -11488,20 +11673,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.599652, + "created_at": 1730458997.1470141, "supported_languages": null }, - "macro.dbt.default__validate_sql": { - "name": "default__validate_sql", + "macro.dbt.get_create_backup_sql": { + "name": "get_create_backup_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/validate_sql.sql", - "original_file_path": "macros/adapters/validate_sql.sql", - "unique_id": "macro.dbt.default__validate_sql", - "macro_sql": "{% macro default__validate_sql(sql) -%}\n {% call statement('validate_sql') -%}\n explain {{ sql }}\n {% endcall %}\n {{ return(load_result('validate_sql')) }}\n{% endmacro %}", + "path": "macros/relations/create_backup.sql", + "original_file_path": "macros/relations/create_backup.sql", + "unique_id": "macro.dbt.get_create_backup_sql", + "macro_sql": "{%- macro get_create_backup_sql(relation) -%}\n {{- log('Applying CREATE BACKUP to: ' ~ relation) -}}\n {{- adapter.dispatch('get_create_backup_sql', 'dbt')(relation) -}}\n{%- endmacro -%}\n\n\n", "depends_on": { "macros": [ - "macro.dbt.statement" + "macro.dbt.default__get_create_backup_sql" ] }, "description": "", @@ -11512,20 +11697,22 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.599782, + "created_at": 1730458997.147205, "supported_languages": null }, - "macro.dbt.copy_grants": { - "name": "copy_grants", + "macro.dbt.default__get_create_backup_sql": { + "name": "default__get_create_backup_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/apply_grants.sql", - "original_file_path": "macros/adapters/apply_grants.sql", - "unique_id": "macro.dbt.copy_grants", - "macro_sql": "{% macro copy_grants() %}\n {{ return(adapter.dispatch('copy_grants', 'dbt')()) }}\n{% endmacro %}", + "path": "macros/relations/create_backup.sql", + "original_file_path": "macros/relations/create_backup.sql", + "unique_id": "macro.dbt.default__get_create_backup_sql", + "macro_sql": "{%- macro default__get_create_backup_sql(relation) -%}\n\n -- get the standard backup name\n {% set backup_relation = make_backup_relation(relation, relation.type) %}\n\n -- drop any pre-existing backup\n {{ get_drop_sql(backup_relation) }};\n\n {{ get_rename_sql(relation, backup_relation.identifier) }}\n\n{%- endmacro -%}", "depends_on": { "macros": [ - "macro.dbt_postgres.postgres__copy_grants" + "macro.dbt.make_backup_relation", + "macro.dbt.get_drop_sql", + "macro.dbt.get_rename_sql" ] }, "description": "", @@ -11536,19 +11723,21 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.6009269, + "created_at": 1730458997.1473446, "supported_languages": null }, - "macro.dbt.default__copy_grants": { - "name": "default__copy_grants", + "macro.dbt.get_table_columns_and_constraints": { + "name": "get_table_columns_and_constraints", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/apply_grants.sql", - "original_file_path": "macros/adapters/apply_grants.sql", - "unique_id": "macro.dbt.default__copy_grants", - "macro_sql": "{% macro default__copy_grants() %}\n {{ return(True) }}\n{% endmacro %}", + "path": "macros/relations/column/columns_spec_ddl.sql", + "original_file_path": "macros/relations/column/columns_spec_ddl.sql", + "unique_id": "macro.dbt.get_table_columns_and_constraints", + "macro_sql": "{%- macro get_table_columns_and_constraints() -%}\n {{ adapter.dispatch('get_table_columns_and_constraints', 'dbt')() }}\n{%- endmacro -%}\n\n", "depends_on": { - "macros": [] + "macros": [ + "macro.dbt.default__get_table_columns_and_constraints" + ] }, "description": "", "meta": {}, @@ -11558,20 +11747,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.600993, + "created_at": 1730458997.147922, "supported_languages": null }, - "macro.dbt.support_multiple_grantees_per_dcl_statement": { - "name": "support_multiple_grantees_per_dcl_statement", + "macro.dbt.default__get_table_columns_and_constraints": { + "name": "default__get_table_columns_and_constraints", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/apply_grants.sql", - "original_file_path": "macros/adapters/apply_grants.sql", - "unique_id": "macro.dbt.support_multiple_grantees_per_dcl_statement", - "macro_sql": "{% macro support_multiple_grantees_per_dcl_statement() %}\n {{ return(adapter.dispatch('support_multiple_grantees_per_dcl_statement', 'dbt')()) }}\n{% endmacro %}", + "path": "macros/relations/column/columns_spec_ddl.sql", + "original_file_path": "macros/relations/column/columns_spec_ddl.sql", + "unique_id": "macro.dbt.default__get_table_columns_and_constraints", + "macro_sql": "{% macro default__get_table_columns_and_constraints() -%}\n {{ return(table_columns_and_constraints()) }}\n{%- endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__support_multiple_grantees_per_dcl_statement" + "macro.dbt.table_columns_and_constraints" ] }, "description": "", @@ -11582,17 +11771,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.601089, + "created_at": 1730458997.1479952, "supported_languages": null }, - "macro.dbt.default__support_multiple_grantees_per_dcl_statement": { - "name": "default__support_multiple_grantees_per_dcl_statement", + "macro.dbt.table_columns_and_constraints": { + "name": "table_columns_and_constraints", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/apply_grants.sql", - "original_file_path": "macros/adapters/apply_grants.sql", - "unique_id": "macro.dbt.default__support_multiple_grantees_per_dcl_statement", - "macro_sql": "\n\n{%- macro default__support_multiple_grantees_per_dcl_statement() -%}\n {{ return(True) }}\n{%- endmacro -%}\n\n\n", + "path": "macros/relations/column/columns_spec_ddl.sql", + "original_file_path": "macros/relations/column/columns_spec_ddl.sql", + "unique_id": "macro.dbt.table_columns_and_constraints", + "macro_sql": "{% macro table_columns_and_constraints() %}\n {# loop through user_provided_columns to create DDL with data types and constraints #}\n {%- set raw_column_constraints = adapter.render_raw_columns_constraints(raw_columns=model['columns']) -%}\n {%- set raw_model_constraints = adapter.render_raw_model_constraints(raw_constraints=model['constraints']) -%}\n (\n {% for c in raw_column_constraints -%}\n {{ c }}{{ \",\" if not loop.last or raw_model_constraints }}\n {% endfor %}\n {% for c in raw_model_constraints -%}\n {{ c }}{{ \",\" if not loop.last }}\n {% endfor -%}\n )\n{% endmacro %}", "depends_on": { "macros": [] }, @@ -11604,20 +11793,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.601155, + "created_at": 1730458997.1482987, "supported_languages": null }, - "macro.dbt.should_revoke": { - "name": "should_revoke", + "macro.dbt.get_assert_columns_equivalent": { + "name": "get_assert_columns_equivalent", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/apply_grants.sql", - "original_file_path": "macros/adapters/apply_grants.sql", - "unique_id": "macro.dbt.should_revoke", - "macro_sql": "{% macro should_revoke(existing_relation, full_refresh_mode=True) %}\n\n {% if not existing_relation %}\n {#-- The table doesn't already exist, so no grants to copy over --#}\n {{ return(False) }}\n {% elif full_refresh_mode %}\n {#-- The object is being REPLACED -- whether grants are copied over depends on the value of user config --#}\n {{ return(copy_grants()) }}\n {% else %}\n {#-- The table is being merged/upserted/inserted -- grants will be carried over --#}\n {{ return(True) }}\n {% endif %}\n\n{% endmacro %}", + "path": "macros/relations/column/columns_spec_ddl.sql", + "original_file_path": "macros/relations/column/columns_spec_ddl.sql", + "unique_id": "macro.dbt.get_assert_columns_equivalent", + "macro_sql": "\n\n{%- macro get_assert_columns_equivalent(sql) -%}\n {{ adapter.dispatch('get_assert_columns_equivalent', 'dbt')(sql) }}\n{%- endmacro -%}\n\n", "depends_on": { "macros": [ - "macro.dbt.copy_grants" + "macro.dbt.default__get_assert_columns_equivalent" ] }, "description": "", @@ -11628,20 +11817,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.601345, + "created_at": 1730458997.1483924, "supported_languages": null }, - "macro.dbt.get_show_grant_sql": { - "name": "get_show_grant_sql", + "macro.dbt.default__get_assert_columns_equivalent": { + "name": "default__get_assert_columns_equivalent", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/apply_grants.sql", - "original_file_path": "macros/adapters/apply_grants.sql", - "unique_id": "macro.dbt.get_show_grant_sql", - "macro_sql": "{% macro get_show_grant_sql(relation) %}\n {{ return(adapter.dispatch(\"get_show_grant_sql\", \"dbt\")(relation)) }}\n{% endmacro %}", + "path": "macros/relations/column/columns_spec_ddl.sql", + "original_file_path": "macros/relations/column/columns_spec_ddl.sql", + "unique_id": "macro.dbt.default__get_assert_columns_equivalent", + "macro_sql": "{% macro default__get_assert_columns_equivalent(sql) -%}\n {{ return(assert_columns_equivalent(sql)) }}\n{%- endmacro %}", "depends_on": { "macros": [ - "macro.dbt_postgres.postgres__get_show_grant_sql" + "macro.dbt.assert_columns_equivalent" ] }, "description": "", @@ -11652,19 +11841,23 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.601454, + "created_at": 1730458997.14847, "supported_languages": null }, - "macro.dbt.default__get_show_grant_sql": { - "name": "default__get_show_grant_sql", + "macro.dbt.assert_columns_equivalent": { + "name": "assert_columns_equivalent", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/apply_grants.sql", - "original_file_path": "macros/adapters/apply_grants.sql", - "unique_id": "macro.dbt.default__get_show_grant_sql", - "macro_sql": "{% macro default__get_show_grant_sql(relation) %}\n show grants on {{ relation.render() }}\n{% endmacro %}", + "path": "macros/relations/column/columns_spec_ddl.sql", + "original_file_path": "macros/relations/column/columns_spec_ddl.sql", + "unique_id": "macro.dbt.assert_columns_equivalent", + "macro_sql": "{% macro assert_columns_equivalent(sql) %}\n\n {#-- First ensure the user has defined 'columns' in yaml specification --#}\n {%- set user_defined_columns = model['columns'] -%}\n {%- if not user_defined_columns -%}\n {{ exceptions.raise_contract_error([], []) }}\n {%- endif -%}\n\n {#-- Obtain the column schema provided by sql file. #}\n {%- set sql_file_provided_columns = get_column_schema_from_query(sql, config.get('sql_header', none)) -%}\n {#--Obtain the column schema provided by the schema file by generating an 'empty schema' query from the model's columns. #}\n {%- set schema_file_provided_columns = get_column_schema_from_query(get_empty_schema_sql(user_defined_columns)) -%}\n\n {#-- create dictionaries with name and formatted data type and strings for exception #}\n {%- set sql_columns = format_columns(sql_file_provided_columns) -%}\n {%- set yaml_columns = format_columns(schema_file_provided_columns) -%}\n\n {%- if sql_columns|length != yaml_columns|length -%}\n {%- do exceptions.raise_contract_error(yaml_columns, sql_columns) -%}\n {%- endif -%}\n\n {%- for sql_col in sql_columns -%}\n {%- set yaml_col = [] -%}\n {%- for this_col in yaml_columns -%}\n {%- if this_col['name'] == sql_col['name'] -%}\n {%- do yaml_col.append(this_col) -%}\n {%- break -%}\n {%- endif -%}\n {%- endfor -%}\n {%- if not yaml_col -%}\n {#-- Column with name not found in yaml #}\n {%- do exceptions.raise_contract_error(yaml_columns, sql_columns) -%}\n {%- endif -%}\n {%- if sql_col['formatted'] != yaml_col[0]['formatted'] -%}\n {#-- Column data types don't match #}\n {%- do exceptions.raise_contract_error(yaml_columns, sql_columns) -%}\n {%- endif -%}\n {%- endfor -%}\n\n{% endmacro %}", "depends_on": { - "macros": [] + "macros": [ + "macro.dbt.get_column_schema_from_query", + "macro.dbt.get_empty_schema_sql", + "macro.dbt.format_columns" + ] }, "description": "", "meta": {}, @@ -11674,20 +11867,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.601521, + "created_at": 1730458997.1491692, "supported_languages": null }, - "macro.dbt.get_grant_sql": { - "name": "get_grant_sql", + "macro.dbt.format_columns": { + "name": "format_columns", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/apply_grants.sql", - "original_file_path": "macros/adapters/apply_grants.sql", - "unique_id": "macro.dbt.get_grant_sql", - "macro_sql": "{% macro get_grant_sql(relation, privilege, grantees) %}\n {{ return(adapter.dispatch('get_grant_sql', 'dbt')(relation, privilege, grantees)) }}\n{% endmacro %}", + "path": "macros/relations/column/columns_spec_ddl.sql", + "original_file_path": "macros/relations/column/columns_spec_ddl.sql", + "unique_id": "macro.dbt.format_columns", + "macro_sql": "{% macro format_columns(columns) %}\n {% set formatted_columns = [] %}\n {% for column in columns %}\n {%- set formatted_column = adapter.dispatch('format_column', 'dbt')(column) -%}\n {%- do formatted_columns.append(formatted_column) -%}\n {% endfor %}\n {{ return(formatted_columns) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__get_grant_sql" + "macro.dbt.default__format_column" ] }, "description": "", @@ -11698,17 +11891,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.6016471, + "created_at": 1730458997.1493826, "supported_languages": null }, - "macro.dbt.default__get_grant_sql": { - "name": "default__get_grant_sql", + "macro.dbt.default__format_column": { + "name": "default__format_column", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/apply_grants.sql", - "original_file_path": "macros/adapters/apply_grants.sql", - "unique_id": "macro.dbt.default__get_grant_sql", - "macro_sql": "\n\n{%- macro default__get_grant_sql(relation, privilege, grantees) -%}\n grant {{ privilege }} on {{ relation.render() }} to {{ grantees | join(', ') }}\n{%- endmacro -%}\n\n\n", + "path": "macros/relations/column/columns_spec_ddl.sql", + "original_file_path": "macros/relations/column/columns_spec_ddl.sql", + "unique_id": "macro.dbt.default__format_column", + "macro_sql": "{% macro default__format_column(column) -%}\n {% set data_type = column.dtype %}\n {% set formatted = column.column.lower() ~ \" \" ~ data_type %}\n {{ return({'name': column.name, 'data_type': data_type, 'formatted': formatted}) }}\n{%- endmacro -%}", "depends_on": { "macros": [] }, @@ -11720,20 +11913,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.601763, + "created_at": 1730458997.1495821, "supported_languages": null }, - "macro.dbt.get_revoke_sql": { - "name": "get_revoke_sql", + "macro.dbt.get_rename_table_sql": { + "name": "get_rename_table_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/apply_grants.sql", - "original_file_path": "macros/adapters/apply_grants.sql", - "unique_id": "macro.dbt.get_revoke_sql", - "macro_sql": "{% macro get_revoke_sql(relation, privilege, grantees) %}\n {{ return(adapter.dispatch('get_revoke_sql', 'dbt')(relation, privilege, grantees)) }}\n{% endmacro %}", + "path": "macros/relations/table/rename.sql", + "original_file_path": "macros/relations/table/rename.sql", + "unique_id": "macro.dbt.get_rename_table_sql", + "macro_sql": "{% macro get_rename_table_sql(relation, new_name) %}\n {{- adapter.dispatch('get_rename_table_sql', 'dbt')(relation, new_name) -}}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__get_revoke_sql" + "macro.dbt_postgres.postgres__get_rename_table_sql" ] }, "description": "", @@ -11744,17 +11937,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.601886, + "created_at": 1730458997.149742, "supported_languages": null }, - "macro.dbt.default__get_revoke_sql": { - "name": "default__get_revoke_sql", + "macro.dbt.default__get_rename_table_sql": { + "name": "default__get_rename_table_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/apply_grants.sql", - "original_file_path": "macros/adapters/apply_grants.sql", - "unique_id": "macro.dbt.default__get_revoke_sql", - "macro_sql": "\n\n{%- macro default__get_revoke_sql(relation, privilege, grantees) -%}\n revoke {{ privilege }} on {{ relation.render() }} from {{ grantees | join(', ') }}\n{%- endmacro -%}\n\n\n", + "path": "macros/relations/table/rename.sql", + "original_file_path": "macros/relations/table/rename.sql", + "unique_id": "macro.dbt.default__get_rename_table_sql", + "macro_sql": "{% macro default__get_rename_table_sql(relation, new_name) %}\n {{ exceptions.raise_compiler_error(\n \"`get_rename_table_sql` has not been implemented for this adapter.\"\n ) }}\n{% endmacro %}", "depends_on": { "macros": [] }, @@ -11766,20 +11959,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.6020632, + "created_at": 1730458997.1498258, "supported_languages": null }, - "macro.dbt.get_dcl_statement_list": { - "name": "get_dcl_statement_list", + "macro.dbt.get_replace_table_sql": { + "name": "get_replace_table_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/apply_grants.sql", - "original_file_path": "macros/adapters/apply_grants.sql", - "unique_id": "macro.dbt.get_dcl_statement_list", - "macro_sql": "{% macro get_dcl_statement_list(relation, grant_config, get_dcl_macro) %}\n {{ return(adapter.dispatch('get_dcl_statement_list', 'dbt')(relation, grant_config, get_dcl_macro)) }}\n{% endmacro %}", + "path": "macros/relations/table/replace.sql", + "original_file_path": "macros/relations/table/replace.sql", + "unique_id": "macro.dbt.get_replace_table_sql", + "macro_sql": "{% macro get_replace_table_sql(relation, sql) %}\n {{- adapter.dispatch('get_replace_table_sql', 'dbt')(relation, sql) -}}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__get_dcl_statement_list" + "macro.dbt_postgres.postgres__get_replace_table_sql" ] }, "description": "", @@ -11790,21 +11983,19 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.6021912, + "created_at": 1730458997.149989, "supported_languages": null }, - "macro.dbt.default__get_dcl_statement_list": { - "name": "default__get_dcl_statement_list", + "macro.dbt.default__get_replace_table_sql": { + "name": "default__get_replace_table_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/apply_grants.sql", - "original_file_path": "macros/adapters/apply_grants.sql", - "unique_id": "macro.dbt.default__get_dcl_statement_list", - "macro_sql": "\n\n{%- macro default__get_dcl_statement_list(relation, grant_config, get_dcl_macro) -%}\n {#\n -- Unpack grant_config into specific privileges and the set of users who need them granted/revoked.\n -- Depending on whether this database supports multiple grantees per statement, pass in the list of\n -- all grantees per privilege, or (if not) template one statement per privilege-grantee pair.\n -- `get_dcl_macro` will be either `get_grant_sql` or `get_revoke_sql`\n #}\n {%- set dcl_statements = [] -%}\n {%- for privilege, grantees in grant_config.items() %}\n {%- if support_multiple_grantees_per_dcl_statement() and grantees -%}\n {%- set dcl = get_dcl_macro(relation, privilege, grantees) -%}\n {%- do dcl_statements.append(dcl) -%}\n {%- else -%}\n {%- for grantee in grantees -%}\n {% set dcl = get_dcl_macro(relation, privilege, [grantee]) %}\n {%- do dcl_statements.append(dcl) -%}\n {% endfor -%}\n {%- endif -%}\n {%- endfor -%}\n {{ return(dcl_statements) }}\n{%- endmacro %}", + "path": "macros/relations/table/replace.sql", + "original_file_path": "macros/relations/table/replace.sql", + "unique_id": "macro.dbt.default__get_replace_table_sql", + "macro_sql": "{% macro default__get_replace_table_sql(relation, sql) %}\n {{ exceptions.raise_compiler_error(\n \"`get_replace_table_sql` has not been implemented for this adapter.\"\n ) }}\n{% endmacro %}", "depends_on": { - "macros": [ - "macro.dbt.support_multiple_grantees_per_dcl_statement" - ] + "macros": [] }, "description": "", "meta": {}, @@ -11814,20 +12005,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.602544, + "created_at": 1730458997.1500702, "supported_languages": null }, - "macro.dbt.call_dcl_statements": { - "name": "call_dcl_statements", + "macro.dbt.drop_table": { + "name": "drop_table", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/apply_grants.sql", - "original_file_path": "macros/adapters/apply_grants.sql", - "unique_id": "macro.dbt.call_dcl_statements", - "macro_sql": "{% macro call_dcl_statements(dcl_statement_list) %}\n {{ return(adapter.dispatch(\"call_dcl_statements\", \"dbt\")(dcl_statement_list)) }}\n{% endmacro %}", + "path": "macros/relations/table/drop.sql", + "original_file_path": "macros/relations/table/drop.sql", + "unique_id": "macro.dbt.drop_table", + "macro_sql": "{% macro drop_table(relation) -%}\n {{- adapter.dispatch('drop_table', 'dbt')(relation) -}}\n{%- endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__call_dcl_statements" + "macro.dbt_postgres.postgres__drop_table" ] }, "description": "", @@ -11838,21 +12029,19 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.602644, + "created_at": 1730458997.150212, "supported_languages": null }, - "macro.dbt.default__call_dcl_statements": { - "name": "default__call_dcl_statements", + "macro.dbt.default__drop_table": { + "name": "default__drop_table", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/apply_grants.sql", - "original_file_path": "macros/adapters/apply_grants.sql", - "unique_id": "macro.dbt.default__call_dcl_statements", - "macro_sql": "{% macro default__call_dcl_statements(dcl_statement_list) %}\n {#\n -- By default, supply all grant + revoke statements in a single semicolon-separated block,\n -- so that they're all processed together.\n\n -- Some databases do not support this. Those adapters will need to override this macro\n -- to run each statement individually.\n #}\n {% call statement('grants') %}\n {% for dcl_statement in dcl_statement_list %}\n {{ dcl_statement }};\n {% endfor %}\n {% endcall %}\n{% endmacro %}", + "path": "macros/relations/table/drop.sql", + "original_file_path": "macros/relations/table/drop.sql", + "unique_id": "macro.dbt.default__drop_table", + "macro_sql": "{% macro default__drop_table(relation) -%}\n drop table if exists {{ relation.render() }} cascade\n{%- endmacro %}", "depends_on": { - "macros": [ - "macro.dbt.statement" - ] + "macros": [] }, "description": "", "meta": {}, @@ -11862,20 +12051,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.602777, + "created_at": 1730458997.1502812, "supported_languages": null }, - "macro.dbt.apply_grants": { - "name": "apply_grants", + "macro.dbt.get_create_table_as_sql": { + "name": "get_create_table_as_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/apply_grants.sql", - "original_file_path": "macros/adapters/apply_grants.sql", - "unique_id": "macro.dbt.apply_grants", - "macro_sql": "{% macro apply_grants(relation, grant_config, should_revoke) %}\n {{ return(adapter.dispatch(\"apply_grants\", \"dbt\")(relation, grant_config, should_revoke)) }}\n{% endmacro %}", + "path": "macros/relations/table/create.sql", + "original_file_path": "macros/relations/table/create.sql", + "unique_id": "macro.dbt.get_create_table_as_sql", + "macro_sql": "{% macro get_create_table_as_sql(temporary, relation, sql) -%}\n {{ adapter.dispatch('get_create_table_as_sql', 'dbt')(temporary, relation, sql) }}\n{%- endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__apply_grants" + "macro.dbt.default__get_create_table_as_sql" ] }, "description": "", @@ -11886,23 +12075,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.602901, + "created_at": 1730458997.1507668, "supported_languages": null }, - "macro.dbt.default__apply_grants": { - "name": "default__apply_grants", + "macro.dbt.default__get_create_table_as_sql": { + "name": "default__get_create_table_as_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/apply_grants.sql", - "original_file_path": "macros/adapters/apply_grants.sql", - "unique_id": "macro.dbt.default__apply_grants", - "macro_sql": "{% macro default__apply_grants(relation, grant_config, should_revoke=True) %}\n {#-- If grant_config is {} or None, this is a no-op --#}\n {% if grant_config %}\n {% if should_revoke %}\n {#-- We think previous grants may have carried over --#}\n {#-- Show current grants and calculate diffs --#}\n {% set current_grants_table = run_query(get_show_grant_sql(relation)) %}\n {% set current_grants_dict = adapter.standardize_grants_dict(current_grants_table) %}\n {% set needs_granting = diff_of_two_dicts(grant_config, current_grants_dict) %}\n {% set needs_revoking = diff_of_two_dicts(current_grants_dict, grant_config) %}\n {% if not (needs_granting or needs_revoking) %}\n {{ log('On ' ~ relation.render() ~': All grants are in place, no revocation or granting needed.')}}\n {% endif %}\n {% else %}\n {#-- We don't think there's any chance of previous grants having carried over. --#}\n {#-- Jump straight to granting what the user has configured. --#}\n {% set needs_revoking = {} %}\n {% set needs_granting = grant_config %}\n {% endif %}\n {% if needs_granting or needs_revoking %}\n {% set revoke_statement_list = get_dcl_statement_list(relation, needs_revoking, get_revoke_sql) %}\n {% set grant_statement_list = get_dcl_statement_list(relation, needs_granting, get_grant_sql) %}\n {% set dcl_statement_list = revoke_statement_list + grant_statement_list %}\n {% if dcl_statement_list %}\n {{ call_dcl_statements(dcl_statement_list) }}\n {% endif %}\n {% endif %}\n {% endif %}\n{% endmacro %}", + "path": "macros/relations/table/create.sql", + "original_file_path": "macros/relations/table/create.sql", + "unique_id": "macro.dbt.default__get_create_table_as_sql", + "macro_sql": "{% macro default__get_create_table_as_sql(temporary, relation, sql) -%}\n {{ return(create_table_as(temporary, relation, sql)) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.run_query", - "macro.dbt.get_show_grant_sql", - "macro.dbt.get_dcl_statement_list", - "macro.dbt.call_dcl_statements" + "macro.dbt.create_table_as" ] }, "description": "", @@ -11913,20 +12099,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.6034849, + "created_at": 1730458997.150861, "supported_languages": null }, - "macro.dbt.get_show_sql": { - "name": "get_show_sql", + "macro.dbt.create_table_as": { + "name": "create_table_as", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/show.sql", - "original_file_path": "macros/adapters/show.sql", - "unique_id": "macro.dbt.get_show_sql", - "macro_sql": "{% macro get_show_sql(compiled_code, sql_header, limit) -%}\n {%- if sql_header is not none -%}\n {{ sql_header }}\n {%- endif %}\n {{ get_limit_subquery_sql(compiled_code, limit) }}\n{% endmacro %}", + "path": "macros/relations/table/create.sql", + "original_file_path": "macros/relations/table/create.sql", + "unique_id": "macro.dbt.create_table_as", + "macro_sql": "{% macro create_table_as(temporary, relation, compiled_code, language='sql') -%}\n {# backward compatibility for create_table_as that does not support language #}\n {% if language == \"sql\" %}\n {{ adapter.dispatch('create_table_as', 'dbt')(temporary, relation, compiled_code)}}\n {% else %}\n {{ adapter.dispatch('create_table_as', 'dbt')(temporary, relation, compiled_code, language) }}\n {% endif %}\n\n{%- endmacro %}", "depends_on": { "macros": [ - "macro.dbt.get_limit_subquery_sql" + "macro.dbt_postgres.postgres__create_table_as" ] }, "description": "", @@ -11937,20 +12123,22 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.603714, + "created_at": 1730458997.1510854, "supported_languages": null }, - "macro.dbt.get_limit_subquery_sql": { - "name": "get_limit_subquery_sql", + "macro.dbt.default__create_table_as": { + "name": "default__create_table_as", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/show.sql", - "original_file_path": "macros/adapters/show.sql", - "unique_id": "macro.dbt.get_limit_subquery_sql", - "macro_sql": "\n{%- macro get_limit_subquery_sql(sql, limit) -%}\n {{ adapter.dispatch('get_limit_sql', 'dbt')(sql, limit) }}\n{%- endmacro -%}\n\n", + "path": "macros/relations/table/create.sql", + "original_file_path": "macros/relations/table/create.sql", + "unique_id": "macro.dbt.default__create_table_as", + "macro_sql": "{% macro default__create_table_as(temporary, relation, sql) -%}\n {%- set sql_header = config.get('sql_header', none) -%}\n\n {{ sql_header if sql_header is not none }}\n\n create {% if temporary: -%}temporary{%- endif %} table\n {{ relation.include(database=(not temporary), schema=(not temporary)) }}\n {% set contract_config = config.get('contract') %}\n {% if contract_config.enforced and (not temporary) %}\n {{ get_assert_columns_equivalent(sql) }}\n {{ get_table_columns_and_constraints() }}\n {%- set sql = get_select_subquery(sql) %}\n {% endif %}\n as (\n {{ sql }}\n );\n{%- endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__get_limit_sql" + "macro.dbt.get_assert_columns_equivalent", + "macro.dbt.get_table_columns_and_constraints", + "macro.dbt.get_select_subquery" ] }, "description": "", @@ -11961,17 +12149,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.6038148, + "created_at": 1730458997.1514344, "supported_languages": null }, - "macro.dbt.default__get_limit_sql": { - "name": "default__get_limit_sql", + "macro.dbt.default__get_column_names": { + "name": "default__get_column_names", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/show.sql", - "original_file_path": "macros/adapters/show.sql", - "unique_id": "macro.dbt.default__get_limit_sql", - "macro_sql": "{% macro default__get_limit_sql(sql, limit) %}\n {{ compiled_code }}\n {% if limit is not none %}\n limit {{ limit }}\n {%- endif -%}\n{% endmacro %}", + "path": "macros/relations/table/create.sql", + "original_file_path": "macros/relations/table/create.sql", + "unique_id": "macro.dbt.default__get_column_names", + "macro_sql": "{% macro default__get_column_names() %}\n {#- loop through user_provided_columns to get column names -#}\n {%- set user_provided_columns = model['columns'] -%}\n {%- for i in user_provided_columns %}\n {%- set col = user_provided_columns[i] -%}\n {%- set col_name = adapter.quote(col['name']) if col.get('quote') else col['name'] -%}\n {{ col_name }}{{ \", \" if not loop.last }}\n {%- endfor -%}\n{% endmacro %}", "depends_on": { "macros": [] }, @@ -11983,20 +12171,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.603922, + "created_at": 1730458997.1516697, "supported_languages": null }, - "macro.dbt.alter_column_comment": { - "name": "alter_column_comment", + "macro.dbt.get_select_subquery": { + "name": "get_select_subquery", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/persist_docs.sql", - "original_file_path": "macros/adapters/persist_docs.sql", - "unique_id": "macro.dbt.alter_column_comment", - "macro_sql": "{% macro alter_column_comment(relation, column_dict) -%}\n {{ return(adapter.dispatch('alter_column_comment', 'dbt')(relation, column_dict)) }}\n{% endmacro %}", + "path": "macros/relations/table/create.sql", + "original_file_path": "macros/relations/table/create.sql", + "unique_id": "macro.dbt.get_select_subquery", + "macro_sql": "{% macro get_select_subquery(sql) %}\n {{ return(adapter.dispatch('get_select_subquery', 'dbt')(sql)) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt_postgres.postgres__alter_column_comment" + "macro.dbt.default__get_select_subquery" ] }, "description": "", @@ -12007,42 +12195,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.604347, - "supported_languages": null - }, - "macro.dbt.default__alter_column_comment": { - "name": "default__alter_column_comment", - "resource_type": "macro", - "package_name": "dbt", - "path": "macros/adapters/persist_docs.sql", - "original_file_path": "macros/adapters/persist_docs.sql", - "unique_id": "macro.dbt.default__alter_column_comment", - "macro_sql": "{% macro default__alter_column_comment(relation, column_dict) -%}\n {{ exceptions.raise_not_implemented(\n 'alter_column_comment macro not implemented for adapter '+adapter.type()) }}\n{% endmacro %}", - "depends_on": { - "macros": [] - }, - "description": "", - "meta": {}, - "docs": { - "show": true, - "node_color": null - }, - "patch_path": null, - "arguments": [], - "created_at": 1728697972.6044421, + "created_at": 1730458997.1517642, "supported_languages": null }, - "macro.dbt.alter_relation_comment": { - "name": "alter_relation_comment", + "macro.dbt.default__get_select_subquery": { + "name": "default__get_select_subquery", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/persist_docs.sql", - "original_file_path": "macros/adapters/persist_docs.sql", - "unique_id": "macro.dbt.alter_relation_comment", - "macro_sql": "{% macro alter_relation_comment(relation, relation_comment) -%}\n {{ return(adapter.dispatch('alter_relation_comment', 'dbt')(relation, relation_comment)) }}\n{% endmacro %}", + "path": "macros/relations/table/create.sql", + "original_file_path": "macros/relations/table/create.sql", + "unique_id": "macro.dbt.default__get_select_subquery", + "macro_sql": "{% macro default__get_select_subquery(sql) %}\n select {{ adapter.dispatch('get_column_names', 'dbt')() }}\n from (\n {{ sql }}\n ) as model_subq\n{%- endmacro %}", "depends_on": { "macros": [ - "macro.dbt_postgres.postgres__alter_relation_comment" + "macro.dbt.default__get_column_names" ] }, "description": "", @@ -12053,19 +12219,21 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.6045492, + "created_at": 1730458997.1518562, "supported_languages": null }, - "macro.dbt.default__alter_relation_comment": { - "name": "default__alter_relation_comment", + "macro.dbt.get_rename_view_sql": { + "name": "get_rename_view_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/persist_docs.sql", - "original_file_path": "macros/adapters/persist_docs.sql", - "unique_id": "macro.dbt.default__alter_relation_comment", - "macro_sql": "{% macro default__alter_relation_comment(relation, relation_comment) -%}\n {{ exceptions.raise_not_implemented(\n 'alter_relation_comment macro not implemented for adapter '+adapter.type()) }}\n{% endmacro %}", + "path": "macros/relations/view/rename.sql", + "original_file_path": "macros/relations/view/rename.sql", + "unique_id": "macro.dbt.get_rename_view_sql", + "macro_sql": "{% macro get_rename_view_sql(relation, new_name) %}\n {{- adapter.dispatch('get_rename_view_sql', 'dbt')(relation, new_name) -}}\n{% endmacro %}", "depends_on": { - "macros": [] + "macros": [ + "macro.dbt_postgres.postgres__get_rename_view_sql" + ] }, "description": "", "meta": {}, @@ -12075,21 +12243,19 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.604644, + "created_at": 1730458997.152006, "supported_languages": null }, - "macro.dbt.persist_docs": { - "name": "persist_docs", + "macro.dbt.default__get_rename_view_sql": { + "name": "default__get_rename_view_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/persist_docs.sql", - "original_file_path": "macros/adapters/persist_docs.sql", - "unique_id": "macro.dbt.persist_docs", - "macro_sql": "{% macro persist_docs(relation, model, for_relation=true, for_columns=true) -%}\n {{ return(adapter.dispatch('persist_docs', 'dbt')(relation, model, for_relation, for_columns)) }}\n{% endmacro %}", + "path": "macros/relations/view/rename.sql", + "original_file_path": "macros/relations/view/rename.sql", + "unique_id": "macro.dbt.default__get_rename_view_sql", + "macro_sql": "{% macro default__get_rename_view_sql(relation, new_name) %}\n {{ exceptions.raise_compiler_error(\n \"`get_rename_view_sql` has not been implemented for this adapter.\"\n ) }}\n{% endmacro %}", "depends_on": { - "macros": [ - "macro.dbt.default__persist_docs" - ] + "macros": [] }, "description": "", "meta": {}, @@ -12099,22 +12265,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.60479, + "created_at": 1730458997.1520839, "supported_languages": null }, - "macro.dbt.default__persist_docs": { - "name": "default__persist_docs", + "macro.dbt.get_replace_view_sql": { + "name": "get_replace_view_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/persist_docs.sql", - "original_file_path": "macros/adapters/persist_docs.sql", - "unique_id": "macro.dbt.default__persist_docs", - "macro_sql": "{% macro default__persist_docs(relation, model, for_relation, for_columns) -%}\n {% if for_relation and config.persist_relation_docs() and model.description %}\n {% do run_query(alter_relation_comment(relation, model.description)) %}\n {% endif %}\n\n {% if for_columns and config.persist_column_docs() and model.columns %}\n {% do run_query(alter_column_comment(relation, model.columns)) %}\n {% endif %}\n{% endmacro %}", + "path": "macros/relations/view/replace.sql", + "original_file_path": "macros/relations/view/replace.sql", + "unique_id": "macro.dbt.get_replace_view_sql", + "macro_sql": "{% macro get_replace_view_sql(relation, sql) %}\n {{- adapter.dispatch('get_replace_view_sql', 'dbt')(relation, sql) -}}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.run_query", - "macro.dbt.alter_relation_comment", - "macro.dbt.alter_column_comment" + "macro.dbt_postgres.postgres__get_replace_view_sql" ] }, "description": "", @@ -12125,21 +12289,19 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.60505, + "created_at": 1730458997.1526058, "supported_languages": null }, - "macro.dbt.get_catalog_relations": { - "name": "get_catalog_relations", + "macro.dbt.default__get_replace_view_sql": { + "name": "default__get_replace_view_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/metadata.sql", - "original_file_path": "macros/adapters/metadata.sql", - "unique_id": "macro.dbt.get_catalog_relations", - "macro_sql": "{% macro get_catalog_relations(information_schema, relations) -%}\n {{ return(adapter.dispatch('get_catalog_relations', 'dbt')(information_schema, relations)) }}\n{%- endmacro %}", + "path": "macros/relations/view/replace.sql", + "original_file_path": "macros/relations/view/replace.sql", + "unique_id": "macro.dbt.default__get_replace_view_sql", + "macro_sql": "{% macro default__get_replace_view_sql(relation, sql) %}\n {{ exceptions.raise_compiler_error(\n \"`get_replace_view_sql` has not been implemented for this adapter.\"\n ) }}\n{% endmacro %}", "depends_on": { - "macros": [ - "macro.dbt_postgres.postgres__get_catalog_relations" - ] + "macros": [] }, "description": "", "meta": {}, @@ -12149,19 +12311,27 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.607223, + "created_at": 1730458997.1526911, "supported_languages": null }, - "macro.dbt.default__get_catalog_relations": { - "name": "default__get_catalog_relations", + "macro.dbt.create_or_replace_view": { + "name": "create_or_replace_view", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/metadata.sql", - "original_file_path": "macros/adapters/metadata.sql", - "unique_id": "macro.dbt.default__get_catalog_relations", - "macro_sql": "{% macro default__get_catalog_relations(information_schema, relations) -%}\n {% set typename = adapter.type() %}\n {% set msg -%}\n get_catalog_relations not implemented for {{ typename }}\n {%- endset %}\n\n {{ exceptions.raise_compiler_error(msg) }}\n{%- endmacro %}", + "path": "macros/relations/view/replace.sql", + "original_file_path": "macros/relations/view/replace.sql", + "unique_id": "macro.dbt.create_or_replace_view", + "macro_sql": "{% macro create_or_replace_view() %}\n {%- set identifier = model['alias'] -%}\n\n {%- set old_relation = adapter.get_relation(database=database, schema=schema, identifier=identifier) -%}\n {%- set exists_as_view = (old_relation is not none and old_relation.is_view) -%}\n\n {%- set target_relation = api.Relation.create(\n identifier=identifier, schema=schema, database=database,\n type='view') -%}\n {% set grant_config = config.get('grants') %}\n\n {{ run_hooks(pre_hooks) }}\n\n -- If there's a table with the same name and we weren't told to full refresh,\n -- that's an error. If we were told to full refresh, drop it. This behavior differs\n -- for Snowflake and BigQuery, so multiple dispatch is used.\n {%- if old_relation is not none and old_relation.is_table -%}\n {{ handle_existing_table(should_full_refresh(), old_relation) }}\n {%- endif -%}\n\n -- build model\n {% call statement('main') -%}\n {{ get_create_view_as_sql(target_relation, sql) }}\n {%- endcall %}\n\n {% set should_revoke = should_revoke(exists_as_view, full_refresh_mode=True) %}\n {% do apply_grants(target_relation, grant_config, should_revoke=should_revoke) %}\n\n {{ run_hooks(post_hooks) }}\n\n {{ return({'relations': [target_relation]}) }}\n\n{% endmacro %}", "depends_on": { - "macros": [] + "macros": [ + "macro.dbt.run_hooks", + "macro.dbt.handle_existing_table", + "macro.dbt.should_full_refresh", + "macro.dbt.statement", + "macro.dbt.get_create_view_as_sql", + "macro.dbt.should_revoke", + "macro.dbt.apply_grants" + ] }, "description": "", "meta": {}, @@ -12171,20 +12341,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.607369, + "created_at": 1730458997.1533124, "supported_languages": null }, - "macro.dbt.get_catalog": { - "name": "get_catalog", + "macro.dbt.handle_existing_table": { + "name": "handle_existing_table", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/metadata.sql", - "original_file_path": "macros/adapters/metadata.sql", - "unique_id": "macro.dbt.get_catalog", - "macro_sql": "{% macro get_catalog(information_schema, schemas) -%}\n {{ return(adapter.dispatch('get_catalog', 'dbt')(information_schema, schemas)) }}\n{%- endmacro %}", + "path": "macros/relations/view/replace.sql", + "original_file_path": "macros/relations/view/replace.sql", + "unique_id": "macro.dbt.handle_existing_table", + "macro_sql": "{% macro handle_existing_table(full_refresh, old_relation) %}\n {{ adapter.dispatch('handle_existing_table', 'dbt')(full_refresh, old_relation) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt_postgres.postgres__get_catalog" + "macro.dbt.default__handle_existing_table" ] }, "description": "", @@ -12195,17 +12365,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.607483, + "created_at": 1730458997.1534252, "supported_languages": null }, - "macro.dbt.default__get_catalog": { - "name": "default__get_catalog", + "macro.dbt.default__handle_existing_table": { + "name": "default__handle_existing_table", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/metadata.sql", - "original_file_path": "macros/adapters/metadata.sql", - "unique_id": "macro.dbt.default__get_catalog", - "macro_sql": "{% macro default__get_catalog(information_schema, schemas) -%}\n\n {% set typename = adapter.type() %}\n {% set msg -%}\n get_catalog not implemented for {{ typename }}\n {%- endset %}\n\n {{ exceptions.raise_compiler_error(msg) }}\n{% endmacro %}", + "path": "macros/relations/view/replace.sql", + "original_file_path": "macros/relations/view/replace.sql", + "unique_id": "macro.dbt.default__handle_existing_table", + "macro_sql": "{% macro default__handle_existing_table(full_refresh, old_relation) %}\n {{ log(\"Dropping relation \" ~ old_relation.render() ~ \" because it is of type \" ~ old_relation.type) }}\n {{ adapter.drop_relation(old_relation) }}\n{% endmacro %}", "depends_on": { "macros": [] }, @@ -12217,20 +12387,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.6076312, + "created_at": 1730458997.153566, "supported_languages": null }, - "macro.dbt.information_schema_name": { - "name": "information_schema_name", + "macro.dbt.drop_view": { + "name": "drop_view", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/metadata.sql", - "original_file_path": "macros/adapters/metadata.sql", - "unique_id": "macro.dbt.information_schema_name", - "macro_sql": "{% macro information_schema_name(database) %}\n {{ return(adapter.dispatch('information_schema_name', 'dbt')(database)) }}\n{% endmacro %}", + "path": "macros/relations/view/drop.sql", + "original_file_path": "macros/relations/view/drop.sql", + "unique_id": "macro.dbt.drop_view", + "macro_sql": "{% macro drop_view(relation) -%}\n {{- adapter.dispatch('drop_view', 'dbt')(relation) -}}\n{%- endmacro %}", "depends_on": { "macros": [ - "macro.dbt_postgres.postgres__information_schema_name" + "macro.dbt_postgres.postgres__drop_view" ] }, "description": "", @@ -12241,17 +12411,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.607736, + "created_at": 1730458997.1537077, "supported_languages": null }, - "macro.dbt.default__information_schema_name": { - "name": "default__information_schema_name", + "macro.dbt.default__drop_view": { + "name": "default__drop_view", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/metadata.sql", - "original_file_path": "macros/adapters/metadata.sql", - "unique_id": "macro.dbt.default__information_schema_name", - "macro_sql": "{% macro default__information_schema_name(database) -%}\n {%- if database -%}\n {{ database }}.INFORMATION_SCHEMA\n {%- else -%}\n INFORMATION_SCHEMA\n {%- endif -%}\n{%- endmacro %}", + "path": "macros/relations/view/drop.sql", + "original_file_path": "macros/relations/view/drop.sql", + "unique_id": "macro.dbt.default__drop_view", + "macro_sql": "{% macro default__drop_view(relation) -%}\n drop view if exists {{ relation.render() }} cascade\n{%- endmacro %}", "depends_on": { "macros": [] }, @@ -12263,20 +12433,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.607827, + "created_at": 1730458997.1537795, "supported_languages": null }, - "macro.dbt.list_schemas": { - "name": "list_schemas", + "macro.dbt.get_create_view_as_sql": { + "name": "get_create_view_as_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/metadata.sql", - "original_file_path": "macros/adapters/metadata.sql", - "unique_id": "macro.dbt.list_schemas", - "macro_sql": "{% macro list_schemas(database) -%}\n {{ return(adapter.dispatch('list_schemas', 'dbt')(database)) }}\n{% endmacro %}", + "path": "macros/relations/view/create.sql", + "original_file_path": "macros/relations/view/create.sql", + "unique_id": "macro.dbt.get_create_view_as_sql", + "macro_sql": "{% macro get_create_view_as_sql(relation, sql) -%}\n {{ adapter.dispatch('get_create_view_as_sql', 'dbt')(relation, sql) }}\n{%- endmacro %}", "depends_on": { "macros": [ - "macro.dbt_postgres.postgres__list_schemas" + "macro.dbt.default__get_create_view_as_sql" ] }, "description": "", @@ -12287,21 +12457,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.607929, + "created_at": 1730458997.154024, "supported_languages": null }, - "macro.dbt.default__list_schemas": { - "name": "default__list_schemas", + "macro.dbt.default__get_create_view_as_sql": { + "name": "default__get_create_view_as_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/metadata.sql", - "original_file_path": "macros/adapters/metadata.sql", - "unique_id": "macro.dbt.default__list_schemas", - "macro_sql": "{% macro default__list_schemas(database) -%}\n {% set sql %}\n select distinct schema_name\n from {{ information_schema_name(database) }}.SCHEMATA\n where catalog_name ilike '{{ database }}'\n {% endset %}\n {{ return(run_query(sql)) }}\n{% endmacro %}", + "path": "macros/relations/view/create.sql", + "original_file_path": "macros/relations/view/create.sql", + "unique_id": "macro.dbt.default__get_create_view_as_sql", + "macro_sql": "{% macro default__get_create_view_as_sql(relation, sql) -%}\n {{ return(create_view_as(relation, sql)) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.information_schema_name", - "macro.dbt.run_query" + "macro.dbt.create_view_as" ] }, "description": "", @@ -12312,20 +12481,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.608066, + "created_at": 1730458997.1541114, "supported_languages": null }, - "macro.dbt.check_schema_exists": { - "name": "check_schema_exists", + "macro.dbt.create_view_as": { + "name": "create_view_as", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/metadata.sql", - "original_file_path": "macros/adapters/metadata.sql", - "unique_id": "macro.dbt.check_schema_exists", - "macro_sql": "{% macro check_schema_exists(information_schema, schema) -%}\n {{ return(adapter.dispatch('check_schema_exists', 'dbt')(information_schema, schema)) }}\n{% endmacro %}", + "path": "macros/relations/view/create.sql", + "original_file_path": "macros/relations/view/create.sql", + "unique_id": "macro.dbt.create_view_as", + "macro_sql": "{% macro create_view_as(relation, sql) -%}\n {{ adapter.dispatch('create_view_as', 'dbt')(relation, sql) }}\n{%- endmacro %}", "depends_on": { "macros": [ - "macro.dbt_postgres.postgres__check_schema_exists" + "macro.dbt.default__create_view_as" ] }, "description": "", @@ -12336,21 +12505,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.6081889, + "created_at": 1730458997.1542127, "supported_languages": null }, - "macro.dbt.default__check_schema_exists": { - "name": "default__check_schema_exists", + "macro.dbt.default__create_view_as": { + "name": "default__create_view_as", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/metadata.sql", - "original_file_path": "macros/adapters/metadata.sql", - "unique_id": "macro.dbt.default__check_schema_exists", - "macro_sql": "{% macro default__check_schema_exists(information_schema, schema) -%}\n {% set sql -%}\n select count(*)\n from {{ information_schema.replace(information_schema_view='SCHEMATA') }}\n where catalog_name='{{ information_schema.database }}'\n and schema_name='{{ schema }}'\n {%- endset %}\n {{ return(run_query(sql)) }}\n{% endmacro %}", + "path": "macros/relations/view/create.sql", + "original_file_path": "macros/relations/view/create.sql", + "unique_id": "macro.dbt.default__create_view_as", + "macro_sql": "{% macro default__create_view_as(relation, sql) -%}\n {%- set sql_header = config.get('sql_header', none) -%}\n\n {{ sql_header if sql_header is not none }}\n create view {{ relation.render() }}\n {% set contract_config = config.get('contract') %}\n {% if contract_config.enforced %}\n {{ get_assert_columns_equivalent(sql) }}\n {%- endif %}\n as (\n {{ sql }}\n );\n{%- endmacro %}", "depends_on": { "macros": [ - "macro.dbt.replace", - "macro.dbt.run_query" + "macro.dbt.get_assert_columns_equivalent" ] }, "description": "", @@ -12361,20 +12529,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.608431, + "created_at": 1730458997.1544507, "supported_languages": null }, - "macro.dbt.list_relations_without_caching": { - "name": "list_relations_without_caching", + "macro.dbt.refresh_materialized_view": { + "name": "refresh_materialized_view", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/metadata.sql", - "original_file_path": "macros/adapters/metadata.sql", - "unique_id": "macro.dbt.list_relations_without_caching", - "macro_sql": "{% macro list_relations_without_caching(schema_relation) %}\n {{ return(adapter.dispatch('list_relations_without_caching', 'dbt')(schema_relation)) }}\n{% endmacro %}", + "path": "macros/relations/materialized_view/refresh.sql", + "original_file_path": "macros/relations/materialized_view/refresh.sql", + "unique_id": "macro.dbt.refresh_materialized_view", + "macro_sql": "{% macro refresh_materialized_view(relation) %}\n {{- log('Applying REFRESH to: ' ~ relation) -}}\n {{- adapter.dispatch('refresh_materialized_view', 'dbt')(relation) -}}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt_postgres.postgres__list_relations_without_caching" + "macro.dbt_postgres.postgres__refresh_materialized_view" ] }, "description": "", @@ -12385,17 +12553,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.608534, + "created_at": 1730458997.1546357, "supported_languages": null }, - "macro.dbt.default__list_relations_without_caching": { - "name": "default__list_relations_without_caching", + "macro.dbt.default__refresh_materialized_view": { + "name": "default__refresh_materialized_view", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/metadata.sql", - "original_file_path": "macros/adapters/metadata.sql", - "unique_id": "macro.dbt.default__list_relations_without_caching", - "macro_sql": "{% macro default__list_relations_without_caching(schema_relation) %}\n {{ exceptions.raise_not_implemented(\n 'list_relations_without_caching macro not implemented for adapter '+adapter.type()) }}\n{% endmacro %}", + "path": "macros/relations/materialized_view/refresh.sql", + "original_file_path": "macros/relations/materialized_view/refresh.sql", + "unique_id": "macro.dbt.default__refresh_materialized_view", + "macro_sql": "{% macro default__refresh_materialized_view(relation) %}\n {{ exceptions.raise_compiler_error(\"`refresh_materialized_view` has not been implemented for this adapter.\") }}\n{% endmacro %}", "depends_on": { "macros": [] }, @@ -12407,20 +12575,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.6086242, + "created_at": 1730458997.1547105, "supported_languages": null }, - "macro.dbt.get_catalog_for_single_relation": { - "name": "get_catalog_for_single_relation", + "macro.dbt.get_alter_materialized_view_as_sql": { + "name": "get_alter_materialized_view_as_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/metadata.sql", - "original_file_path": "macros/adapters/metadata.sql", - "unique_id": "macro.dbt.get_catalog_for_single_relation", - "macro_sql": "{% macro get_catalog_for_single_relation(relation) %}\n {{ return(adapter.dispatch('get_catalog_for_single_relation', 'dbt')(relation)) }}\n{% endmacro %}", + "path": "macros/relations/materialized_view/alter.sql", + "original_file_path": "macros/relations/materialized_view/alter.sql", + "unique_id": "macro.dbt.get_alter_materialized_view_as_sql", + "macro_sql": "{% macro get_alter_materialized_view_as_sql(\n relation,\n configuration_changes,\n sql,\n existing_relation,\n backup_relation,\n intermediate_relation\n) %}\n {{- log('Applying ALTER to: ' ~ relation) -}}\n {{- adapter.dispatch('get_alter_materialized_view_as_sql', 'dbt')(\n relation,\n configuration_changes,\n sql,\n existing_relation,\n backup_relation,\n intermediate_relation\n ) -}}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__get_catalog_for_single_relation" + "macro.dbt_postgres.postgres__get_alter_materialized_view_as_sql" ] }, "description": "", @@ -12431,17 +12599,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.608723, + "created_at": 1730458997.155065, "supported_languages": null }, - "macro.dbt.default__get_catalog_for_single_relation": { - "name": "default__get_catalog_for_single_relation", + "macro.dbt.default__get_alter_materialized_view_as_sql": { + "name": "default__get_alter_materialized_view_as_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/metadata.sql", - "original_file_path": "macros/adapters/metadata.sql", - "unique_id": "macro.dbt.default__get_catalog_for_single_relation", - "macro_sql": "{% macro default__get_catalog_for_single_relation(relation) %}\n {{ exceptions.raise_not_implemented(\n 'get_catalog_for_single_relation macro not implemented for adapter '+adapter.type()) }}\n{% endmacro %}", + "path": "macros/relations/materialized_view/alter.sql", + "original_file_path": "macros/relations/materialized_view/alter.sql", + "unique_id": "macro.dbt.default__get_alter_materialized_view_as_sql", + "macro_sql": "{% macro default__get_alter_materialized_view_as_sql(\n relation,\n configuration_changes,\n sql,\n existing_relation,\n backup_relation,\n intermediate_relation\n) %}\n {{ exceptions.raise_compiler_error(\"Materialized views have not been implemented for this adapter.\") }}\n{% endmacro %}", "depends_on": { "macros": [] }, @@ -12453,20 +12621,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.608813, + "created_at": 1730458997.1551697, "supported_languages": null }, - "macro.dbt.get_relations": { - "name": "get_relations", + "macro.dbt.get_materialized_view_configuration_changes": { + "name": "get_materialized_view_configuration_changes", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/metadata.sql", - "original_file_path": "macros/adapters/metadata.sql", - "unique_id": "macro.dbt.get_relations", - "macro_sql": "{% macro get_relations() %}\n {{ return(adapter.dispatch('get_relations', 'dbt')()) }}\n{% endmacro %}", + "path": "macros/relations/materialized_view/alter.sql", + "original_file_path": "macros/relations/materialized_view/alter.sql", + "unique_id": "macro.dbt.get_materialized_view_configuration_changes", + "macro_sql": "{% macro get_materialized_view_configuration_changes(existing_relation, new_config) %}\n /* {#\n It's recommended that configuration changes be formatted as follows:\n {\"\": [{\"action\": \"\", \"context\": ...}]}\n\n For example:\n {\n \"indexes\": [\n {\"action\": \"drop\", \"context\": \"index_abc\"},\n {\"action\": \"create\", \"context\": {\"columns\": [\"column_1\", \"column_2\"], \"type\": \"hash\", \"unique\": True}},\n ],\n }\n\n Either way, `get_materialized_view_configuration_changes` needs to align with `get_alter_materialized_view_as_sql`.\n #} */\n {{- log('Determining configuration changes on: ' ~ existing_relation) -}}\n {%- do return(adapter.dispatch('get_materialized_view_configuration_changes', 'dbt')(existing_relation, new_config)) -%}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt_postgres.postgres__get_relations" + "macro.dbt_postgres.postgres__get_materialized_view_configuration_changes" ] }, "description": "", @@ -12477,17 +12645,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.608902, + "created_at": 1730458997.1553273, "supported_languages": null }, - "macro.dbt.default__get_relations": { - "name": "default__get_relations", + "macro.dbt.default__get_materialized_view_configuration_changes": { + "name": "default__get_materialized_view_configuration_changes", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/metadata.sql", - "original_file_path": "macros/adapters/metadata.sql", - "unique_id": "macro.dbt.default__get_relations", - "macro_sql": "{% macro default__get_relations() %}\n {{ exceptions.raise_not_implemented(\n 'get_relations macro not implemented for adapter '+adapter.type()) }}\n{% endmacro %}", + "path": "macros/relations/materialized_view/alter.sql", + "original_file_path": "macros/relations/materialized_view/alter.sql", + "unique_id": "macro.dbt.default__get_materialized_view_configuration_changes", + "macro_sql": "{% macro default__get_materialized_view_configuration_changes(existing_relation, new_config) %}\n {{ exceptions.raise_compiler_error(\"Materialized views have not been implemented for this adapter.\") }}\n{% endmacro %}", "depends_on": { "macros": [] }, @@ -12499,20 +12667,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.6089878, + "created_at": 1730458997.1554084, "supported_languages": null }, - "macro.dbt.get_relation_last_modified": { - "name": "get_relation_last_modified", + "macro.dbt.get_rename_materialized_view_sql": { + "name": "get_rename_materialized_view_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/metadata.sql", - "original_file_path": "macros/adapters/metadata.sql", - "unique_id": "macro.dbt.get_relation_last_modified", - "macro_sql": "{% macro get_relation_last_modified(information_schema, relations) %}\n {{ return(adapter.dispatch('get_relation_last_modified', 'dbt')(information_schema, relations)) }}\n{% endmacro %}", + "path": "macros/relations/materialized_view/rename.sql", + "original_file_path": "macros/relations/materialized_view/rename.sql", + "unique_id": "macro.dbt.get_rename_materialized_view_sql", + "macro_sql": "{% macro get_rename_materialized_view_sql(relation, new_name) %}\n {{- adapter.dispatch('get_rename_materialized_view_sql', 'dbt')(relation, new_name) -}}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__get_relation_last_modified" + "macro.dbt_postgres.postgres__get_rename_materialized_view_sql" ] }, "description": "", @@ -12523,17 +12691,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.609102, + "created_at": 1730458997.1555636, "supported_languages": null }, - "macro.dbt.default__get_relation_last_modified": { - "name": "default__get_relation_last_modified", + "macro.dbt.default__get_rename_materialized_view_sql": { + "name": "default__get_rename_materialized_view_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/metadata.sql", - "original_file_path": "macros/adapters/metadata.sql", - "unique_id": "macro.dbt.default__get_relation_last_modified", - "macro_sql": "{% macro default__get_relation_last_modified(information_schema, relations) %}\n {{ exceptions.raise_not_implemented(\n 'get_relation_last_modified macro not implemented for adapter ' + adapter.type()) }}\n{% endmacro %}", + "path": "macros/relations/materialized_view/rename.sql", + "original_file_path": "macros/relations/materialized_view/rename.sql", + "unique_id": "macro.dbt.default__get_rename_materialized_view_sql", + "macro_sql": "{% macro default__get_rename_materialized_view_sql(relation, new_name) %}\n {{ exceptions.raise_compiler_error(\n \"`get_rename_materialized_view_sql` has not been implemented for this adapter.\"\n ) }}\n{% endmacro %}", "depends_on": { "macros": [] }, @@ -12545,20 +12713,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.6092029, + "created_at": 1730458997.1556451, "supported_languages": null }, - "macro.dbt.get_columns_in_relation": { - "name": "get_columns_in_relation", + "macro.dbt.get_replace_materialized_view_sql": { + "name": "get_replace_materialized_view_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/columns.sql", - "original_file_path": "macros/adapters/columns.sql", - "unique_id": "macro.dbt.get_columns_in_relation", - "macro_sql": "{% macro get_columns_in_relation(relation) -%}\n {{ return(adapter.dispatch('get_columns_in_relation', 'dbt')(relation)) }}\n{% endmacro %}", + "path": "macros/relations/materialized_view/replace.sql", + "original_file_path": "macros/relations/materialized_view/replace.sql", + "unique_id": "macro.dbt.get_replace_materialized_view_sql", + "macro_sql": "{% macro get_replace_materialized_view_sql(relation, sql) %}\n {{- adapter.dispatch('get_replace_materialized_view_sql', 'dbt')(relation, sql) -}}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt_postgres.postgres__get_columns_in_relation" + "macro.dbt.default__get_replace_materialized_view_sql" ] }, "description": "", @@ -12569,39 +12737,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.6106482, - "supported_languages": null - }, - "macro.dbt.default__get_columns_in_relation": { - "name": "default__get_columns_in_relation", - "resource_type": "macro", - "package_name": "dbt", - "path": "macros/adapters/columns.sql", - "original_file_path": "macros/adapters/columns.sql", - "unique_id": "macro.dbt.default__get_columns_in_relation", - "macro_sql": "{% macro default__get_columns_in_relation(relation) -%}\n {{ exceptions.raise_not_implemented(\n 'get_columns_in_relation macro not implemented for adapter '+adapter.type()) }}\n{% endmacro %}", - "depends_on": { - "macros": [] - }, - "description": "", - "meta": {}, - "docs": { - "show": true, - "node_color": null - }, - "patch_path": null, - "arguments": [], - "created_at": 1728697972.61074, + "created_at": 1730458997.1557887, "supported_languages": null }, - "macro.dbt.sql_convert_columns_in_relation": { - "name": "sql_convert_columns_in_relation", + "macro.dbt.default__get_replace_materialized_view_sql": { + "name": "default__get_replace_materialized_view_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/columns.sql", - "original_file_path": "macros/adapters/columns.sql", - "unique_id": "macro.dbt.sql_convert_columns_in_relation", - "macro_sql": "{% macro sql_convert_columns_in_relation(table) -%}\n {% set columns = [] %}\n {% for row in table %}\n {% do columns.append(api.Column(*row)) %}\n {% endfor %}\n {{ return(columns) }}\n{% endmacro %}", + "path": "macros/relations/materialized_view/replace.sql", + "original_file_path": "macros/relations/materialized_view/replace.sql", + "unique_id": "macro.dbt.default__get_replace_materialized_view_sql", + "macro_sql": "{% macro default__get_replace_materialized_view_sql(relation, sql) %}\n {{ exceptions.raise_compiler_error(\n \"`get_replace_materialized_view_sql` has not been implemented for this adapter.\"\n ) }}\n{% endmacro %}", "depends_on": { "macros": [] }, @@ -12613,20 +12759,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.61091, + "created_at": 1730458997.1558645, "supported_languages": null }, - "macro.dbt.get_empty_subquery_sql": { - "name": "get_empty_subquery_sql", + "macro.dbt.drop_materialized_view": { + "name": "drop_materialized_view", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/columns.sql", - "original_file_path": "macros/adapters/columns.sql", - "unique_id": "macro.dbt.get_empty_subquery_sql", - "macro_sql": "{% macro get_empty_subquery_sql(select_sql, select_sql_header=none) -%}\n {{ return(adapter.dispatch('get_empty_subquery_sql', 'dbt')(select_sql, select_sql_header)) }}\n{% endmacro %}", + "path": "macros/relations/materialized_view/drop.sql", + "original_file_path": "macros/relations/materialized_view/drop.sql", + "unique_id": "macro.dbt.drop_materialized_view", + "macro_sql": "{% macro drop_materialized_view(relation) -%}\n {{- adapter.dispatch('drop_materialized_view', 'dbt')(relation) -}}\n{%- endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__get_empty_subquery_sql" + "macro.dbt_postgres.postgres__drop_materialized_view" ] }, "description": "", @@ -12637,17 +12783,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.611032, + "created_at": 1730458997.1559994, "supported_languages": null }, - "macro.dbt.default__get_empty_subquery_sql": { - "name": "default__get_empty_subquery_sql", + "macro.dbt.default__drop_materialized_view": { + "name": "default__drop_materialized_view", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/columns.sql", - "original_file_path": "macros/adapters/columns.sql", - "unique_id": "macro.dbt.default__get_empty_subquery_sql", - "macro_sql": "{% macro default__get_empty_subquery_sql(select_sql, select_sql_header=none) %}\n {%- if select_sql_header is not none -%}\n {{ select_sql_header }}\n {%- endif -%}\n select * from (\n {{ select_sql }}\n ) as __dbt_sbq\n where false\n limit 0\n{% endmacro %}", + "path": "macros/relations/materialized_view/drop.sql", + "original_file_path": "macros/relations/materialized_view/drop.sql", + "unique_id": "macro.dbt.default__drop_materialized_view", + "macro_sql": "{% macro default__drop_materialized_view(relation) -%}\n drop materialized view if exists {{ relation.render() }} cascade\n{%- endmacro %}", "depends_on": { "macros": [] }, @@ -12659,20 +12805,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.611148, + "created_at": 1730458997.1560645, "supported_languages": null }, - "macro.dbt.get_empty_schema_sql": { - "name": "get_empty_schema_sql", + "macro.dbt.get_create_materialized_view_as_sql": { + "name": "get_create_materialized_view_as_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/columns.sql", - "original_file_path": "macros/adapters/columns.sql", - "unique_id": "macro.dbt.get_empty_schema_sql", - "macro_sql": "{% macro get_empty_schema_sql(columns) -%}\n {{ return(adapter.dispatch('get_empty_schema_sql', 'dbt')(columns)) }}\n{% endmacro %}", + "path": "macros/relations/materialized_view/create.sql", + "original_file_path": "macros/relations/materialized_view/create.sql", + "unique_id": "macro.dbt.get_create_materialized_view_as_sql", + "macro_sql": "{% macro get_create_materialized_view_as_sql(relation, sql) -%}\n {{- adapter.dispatch('get_create_materialized_view_as_sql', 'dbt')(relation, sql) -}}\n{%- endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__get_empty_schema_sql" + "macro.dbt_postgres.postgres__get_create_materialized_view_as_sql" ] }, "description": "", @@ -12683,21 +12829,19 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.61125, + "created_at": 1730458997.1562083, "supported_languages": null }, - "macro.dbt.default__get_empty_schema_sql": { - "name": "default__get_empty_schema_sql", + "macro.dbt.default__get_create_materialized_view_as_sql": { + "name": "default__get_create_materialized_view_as_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/columns.sql", - "original_file_path": "macros/adapters/columns.sql", - "unique_id": "macro.dbt.default__get_empty_schema_sql", - "macro_sql": "{% macro default__get_empty_schema_sql(columns) %}\n {%- set col_err = [] -%}\n {%- set col_naked_numeric = [] -%}\n select\n {% for i in columns %}\n {%- set col = columns[i] -%}\n {%- if col['data_type'] is not defined -%}\n {%- do col_err.append(col['name']) -%}\n {#-- If this column's type is just 'numeric' then it is missing precision/scale, raise a warning --#}\n {%- elif col['data_type'].strip().lower() in ('numeric', 'decimal', 'number') -%}\n {%- do col_naked_numeric.append(col['name']) -%}\n {%- endif -%}\n {% set col_name = adapter.quote(col['name']) if col.get('quote') else col['name'] %}\n {{ cast('null', col['data_type']) }} as {{ col_name }}{{ \", \" if not loop.last }}\n {%- endfor -%}\n {%- if (col_err | length) > 0 -%}\n {{ exceptions.column_type_missing(column_names=col_err) }}\n {%- elif (col_naked_numeric | length) > 0 -%}\n {{ exceptions.warn(\"Detected columns with numeric type and unspecified precision/scale, this can lead to unintended rounding: \" ~ col_naked_numeric ~ \"`\") }}\n {%- endif -%}\n{% endmacro %}", + "path": "macros/relations/materialized_view/create.sql", + "original_file_path": "macros/relations/materialized_view/create.sql", + "unique_id": "macro.dbt.default__get_create_materialized_view_as_sql", + "macro_sql": "{% macro default__get_create_materialized_view_as_sql(relation, sql) -%}\n {{ exceptions.raise_compiler_error(\n \"`get_create_materialized_view_as_sql` has not been implemented for this adapter.\"\n ) }}\n{% endmacro %}", "depends_on": { - "macros": [ - "macro.dbt.cast" - ] + "macros": [] }, "description": "", "meta": {}, @@ -12707,20 +12851,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.6118898, + "created_at": 1730458997.1562855, "supported_languages": null }, - "macro.dbt.get_column_schema_from_query": { - "name": "get_column_schema_from_query", + "macro.dbt.resolve_model_name": { + "name": "resolve_model_name", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/columns.sql", - "original_file_path": "macros/adapters/columns.sql", - "unique_id": "macro.dbt.get_column_schema_from_query", - "macro_sql": "{% macro get_column_schema_from_query(select_sql, select_sql_header=none) -%}\n {% set columns = [] %}\n {# -- Using an 'empty subquery' here to get the same schema as the given select_sql statement, without necessitating a data scan.#}\n {% set sql = get_empty_subquery_sql(select_sql, select_sql_header) %}\n {% set column_schema = adapter.get_column_schema_from_query(sql) %}\n {{ return(column_schema) }}\n{% endmacro %}", + "path": "macros/python_model/python.sql", + "original_file_path": "macros/python_model/python.sql", + "unique_id": "macro.dbt.resolve_model_name", + "macro_sql": "{% macro resolve_model_name(input_model_name) %}\n {{ return(adapter.dispatch('resolve_model_name', 'dbt')(input_model_name)) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.get_empty_subquery_sql" + "macro.dbt.default__resolve_model_name" ] }, "description": "", @@ -12731,21 +12875,19 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.612082, + "created_at": 1730458997.1571918, "supported_languages": null }, - "macro.dbt.get_columns_in_query": { - "name": "get_columns_in_query", + "macro.dbt.default__resolve_model_name": { + "name": "default__resolve_model_name", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/columns.sql", - "original_file_path": "macros/adapters/columns.sql", - "unique_id": "macro.dbt.get_columns_in_query", - "macro_sql": "{% macro get_columns_in_query(select_sql) -%}\n {{ return(adapter.dispatch('get_columns_in_query', 'dbt')(select_sql)) }}\n{% endmacro %}", + "path": "macros/python_model/python.sql", + "original_file_path": "macros/python_model/python.sql", + "unique_id": "macro.dbt.default__resolve_model_name", + "macro_sql": "\n\n{%- macro default__resolve_model_name(input_model_name) -%}\n {{ input_model_name | string | replace('\"', '\\\"') }}\n{%- endmacro -%}\n\n", "depends_on": { - "macros": [ - "macro.dbt.default__get_columns_in_query" - ] + "macros": [] }, "description": "", "meta": {}, @@ -12755,21 +12897,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.612185, + "created_at": 1730458997.1572735, "supported_languages": null }, - "macro.dbt.default__get_columns_in_query": { - "name": "default__get_columns_in_query", + "macro.dbt.build_ref_function": { + "name": "build_ref_function", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/columns.sql", - "original_file_path": "macros/adapters/columns.sql", - "unique_id": "macro.dbt.default__get_columns_in_query", - "macro_sql": "{% macro default__get_columns_in_query(select_sql) %}\n {% call statement('get_columns_in_query', fetch_result=True, auto_begin=False) -%}\n {{ get_empty_subquery_sql(select_sql) }}\n {% endcall %}\n {{ return(load_result('get_columns_in_query').table.columns | map(attribute='name') | list) }}\n{% endmacro %}", + "path": "macros/python_model/python.sql", + "original_file_path": "macros/python_model/python.sql", + "unique_id": "macro.dbt.build_ref_function", + "macro_sql": "{% macro build_ref_function(model) %}\n\n {%- set ref_dict = {} -%}\n {%- for _ref in model.refs -%}\n {% set _ref_args = [_ref.get('package'), _ref['name']] if _ref.get('package') else [_ref['name'],] %}\n {%- set resolved = ref(*_ref_args, v=_ref.get('version')) -%}\n {%- if _ref.get('version') -%}\n {% do _ref_args.extend([\"v\" ~ _ref['version']]) %}\n {%- endif -%}\n {%- do ref_dict.update({_ref_args | join('.'): resolve_model_name(resolved)}) -%}\n {%- endfor -%}\n\ndef ref(*args, **kwargs):\n refs = {{ ref_dict | tojson }}\n key = '.'.join(args)\n version = kwargs.get(\"v\") or kwargs.get(\"version\")\n if version:\n key += f\".v{version}\"\n dbt_load_df_function = kwargs.get(\"dbt_load_df_function\")\n return dbt_load_df_function(refs[key])\n\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.statement", - "macro.dbt.get_empty_subquery_sql" + "macro.dbt.resolve_model_name" ] }, "description": "", @@ -12780,20 +12921,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.612374, + "created_at": 1730458997.1577597, "supported_languages": null }, - "macro.dbt.alter_column_type": { - "name": "alter_column_type", + "macro.dbt.build_source_function": { + "name": "build_source_function", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/columns.sql", - "original_file_path": "macros/adapters/columns.sql", - "unique_id": "macro.dbt.alter_column_type", - "macro_sql": "{% macro alter_column_type(relation, column_name, new_column_type) -%}\n {{ return(adapter.dispatch('alter_column_type', 'dbt')(relation, column_name, new_column_type)) }}\n{% endmacro %}", + "path": "macros/python_model/python.sql", + "original_file_path": "macros/python_model/python.sql", + "unique_id": "macro.dbt.build_source_function", + "macro_sql": "{% macro build_source_function(model) %}\n\n {%- set source_dict = {} -%}\n {%- for _source in model.sources -%}\n {%- set resolved = source(*_source) -%}\n {%- do source_dict.update({_source | join('.'): resolve_model_name(resolved)}) -%}\n {%- endfor -%}\n\ndef source(*args, dbt_load_df_function):\n sources = {{ source_dict | tojson }}\n key = '.'.join(args)\n return dbt_load_df_function(sources[key])\n\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__alter_column_type" + "macro.dbt.resolve_model_name" ] }, "description": "", @@ -12804,21 +12945,19 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.612504, + "created_at": 1730458997.1579938, "supported_languages": null }, - "macro.dbt.default__alter_column_type": { - "name": "default__alter_column_type", + "macro.dbt.build_config_dict": { + "name": "build_config_dict", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/columns.sql", - "original_file_path": "macros/adapters/columns.sql", - "unique_id": "macro.dbt.default__alter_column_type", - "macro_sql": "{% macro default__alter_column_type(relation, column_name, new_column_type) -%}\n {#\n 1. Create a new column (w/ temp name and correct type)\n 2. Copy data over to it\n 3. Drop the existing column (cascade!)\n 4. Rename the new column to existing column\n #}\n {%- set tmp_column = column_name + \"__dbt_alter\" -%}\n\n {% call statement('alter_column_type') %}\n alter table {{ relation.render() }} add column {{ adapter.quote(tmp_column) }} {{ new_column_type }};\n update {{ relation.render() }} set {{ adapter.quote(tmp_column) }} = {{ adapter.quote(column_name) }};\n alter table {{ relation.render() }} drop column {{ adapter.quote(column_name) }} cascade;\n alter table {{ relation.render() }} rename column {{ adapter.quote(tmp_column) }} to {{ adapter.quote(column_name) }}\n {% endcall %}\n\n{% endmacro %}", + "path": "macros/python_model/python.sql", + "original_file_path": "macros/python_model/python.sql", + "unique_id": "macro.dbt.build_config_dict", + "macro_sql": "{% macro build_config_dict(model) %}\n {%- set config_dict = {} -%}\n {% set config_dbt_used = zip(model.config.config_keys_used, model.config.config_keys_defaults) | list %}\n {%- for key, default in config_dbt_used -%}\n {# weird type testing with enum, would be much easier to write this logic in Python! #}\n {%- if key == \"language\" -%}\n {%- set value = \"python\" -%}\n {%- endif -%}\n {%- set value = model.config.get(key, default) -%}\n {%- do config_dict.update({key: value}) -%}\n {%- endfor -%}\nconfig_dict = {{ config_dict }}\n{% endmacro %}", "depends_on": { - "macros": [ - "macro.dbt.statement" - ] + "macros": [] }, "description": "", "meta": {}, @@ -12828,20 +12967,25 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.612871, + "created_at": 1730458997.1583254, "supported_languages": null }, - "macro.dbt.alter_relation_add_remove_columns": { - "name": "alter_relation_add_remove_columns", + "macro.dbt.py_script_postfix": { + "name": "py_script_postfix", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/columns.sql", - "original_file_path": "macros/adapters/columns.sql", - "unique_id": "macro.dbt.alter_relation_add_remove_columns", - "macro_sql": "{% macro alter_relation_add_remove_columns(relation, add_columns = none, remove_columns = none) -%}\n {{ return(adapter.dispatch('alter_relation_add_remove_columns', 'dbt')(relation, add_columns, remove_columns)) }}\n{% endmacro %}", + "path": "macros/python_model/python.sql", + "original_file_path": "macros/python_model/python.sql", + "unique_id": "macro.dbt.py_script_postfix", + "macro_sql": "{% macro py_script_postfix(model) %}\n# This part is user provided model code\n# you will need to copy the next section to run the code\n# COMMAND ----------\n# this part is dbt logic for get ref work, do not modify\n\n{{ build_ref_function(model ) }}\n{{ build_source_function(model ) }}\n{{ build_config_dict(model) }}\n\nclass config:\n def __init__(self, *args, **kwargs):\n pass\n\n @staticmethod\n def get(key, default=None):\n return config_dict.get(key, default)\n\nclass this:\n \"\"\"dbt.this() or dbt.this.identifier\"\"\"\n database = \"{{ this.database }}\"\n schema = \"{{ this.schema }}\"\n identifier = \"{{ this.identifier }}\"\n {% set this_relation_name = resolve_model_name(this) %}\n def __repr__(self):\n return '{{ this_relation_name }}'\n\n\nclass dbtObj:\n def __init__(self, load_df_function) -> None:\n self.source = lambda *args: source(*args, dbt_load_df_function=load_df_function)\n self.ref = lambda *args, **kwargs: ref(*args, **kwargs, dbt_load_df_function=load_df_function)\n self.config = config\n self.this = this()\n self.is_incremental = {{ is_incremental() }}\n\n# COMMAND ----------\n{{py_script_comment()}}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__alter_relation_add_remove_columns" + "macro.dbt.build_ref_function", + "macro.dbt.build_source_function", + "macro.dbt.build_config_dict", + "macro.dbt.resolve_model_name", + "macro.dbt.is_incremental", + "macro.dbt.py_script_comment" ] }, "description": "", @@ -12852,21 +12996,19 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.613015, + "created_at": 1730458997.1585944, "supported_languages": null }, - "macro.dbt.default__alter_relation_add_remove_columns": { - "name": "default__alter_relation_add_remove_columns", + "macro.dbt.py_script_comment": { + "name": "py_script_comment", "resource_type": "macro", "package_name": "dbt", - "path": "macros/adapters/columns.sql", - "original_file_path": "macros/adapters/columns.sql", - "unique_id": "macro.dbt.default__alter_relation_add_remove_columns", - "macro_sql": "{% macro default__alter_relation_add_remove_columns(relation, add_columns, remove_columns) %}\n\n {% if add_columns is none %}\n {% set add_columns = [] %}\n {% endif %}\n {% if remove_columns is none %}\n {% set remove_columns = [] %}\n {% endif %}\n\n {% set sql -%}\n\n alter {{ relation.type }} {{ relation.render() }}\n\n {% for column in add_columns %}\n add column {{ column.name }} {{ column.data_type }}{{ ',' if not loop.last }}\n {% endfor %}{{ ',' if add_columns and remove_columns }}\n\n {% for column in remove_columns %}\n drop column {{ column.name }}{{ ',' if not loop.last }}\n {% endfor %}\n\n {%- endset -%}\n\n {% do run_query(sql) %}\n\n{% endmacro %}", + "path": "macros/python_model/python.sql", + "original_file_path": "macros/python_model/python.sql", + "unique_id": "macro.dbt.py_script_comment", + "macro_sql": "{%macro py_script_comment()%}\n{%endmacro%}", "depends_on": { - "macros": [ - "macro.dbt.run_query" - ] + "macros": [] }, "description": "", "meta": {}, @@ -12876,24 +13018,19 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.613463, + "created_at": 1730458997.1586397, "supported_languages": null }, - "macro.dbt.get_fixture_sql": { - "name": "get_fixture_sql", + "macro.dbt.statement": { + "name": "statement", "resource_type": "macro", "package_name": "dbt", - "path": "macros/unit_test_sql/get_fixture_sql.sql", - "original_file_path": "macros/unit_test_sql/get_fixture_sql.sql", - "unique_id": "macro.dbt.get_fixture_sql", - "macro_sql": "{% macro get_fixture_sql(rows, column_name_to_data_types) %}\n-- Fixture for {{ model.name }}\n{% set default_row = {} %}\n\n{%- if not column_name_to_data_types -%}\n{#-- Use defer_relation IFF it is available in the manifest and 'this' is missing from the database --#}\n{%- set this_or_defer_relation = defer_relation if (defer_relation and not load_relation(this)) else this -%}\n{%- set columns_in_relation = adapter.get_columns_in_relation(this_or_defer_relation) -%}\n\n{%- set column_name_to_data_types = {} -%}\n{%- for column in columns_in_relation -%}\n{#-- This needs to be a case-insensitive comparison --#}\n{%- do column_name_to_data_types.update({column.name|lower: column.data_type}) -%}\n{%- endfor -%}\n{%- endif -%}\n\n{%- if not column_name_to_data_types -%}\n {{ exceptions.raise_compiler_error(\"Not able to get columns for unit test '\" ~ model.name ~ \"' from relation \" ~ this ~ \" because the relation doesn't exist\") }}\n{%- endif -%}\n\n{%- for column_name, column_type in column_name_to_data_types.items() -%}\n {%- do default_row.update({column_name: (safe_cast(\"null\", column_type) | trim )}) -%}\n{%- endfor -%}\n\n{{ validate_fixture_rows(rows, row_number) }}\n\n{%- for row in rows -%}\n{%- set formatted_row = format_row(row, column_name_to_data_types) -%}\n{%- set default_row_copy = default_row.copy() -%}\n{%- do default_row_copy.update(formatted_row) -%}\nselect\n{%- for column_name, column_value in default_row_copy.items() %} {{ column_value }} as {{ column_name }}{% if not loop.last -%}, {%- endif %}\n{%- endfor %}\n{%- if not loop.last %}\nunion all\n{% endif %}\n{%- endfor -%}\n\n{%- if (rows | length) == 0 -%}\n select\n {%- for column_name, column_value in default_row.items() %} {{ column_value }} as {{ column_name }}{% if not loop.last -%},{%- endif %}\n {%- endfor %}\n limit 0\n{%- endif -%}\n{% endmacro %}", + "path": "macros/etc/statement.sql", + "original_file_path": "macros/etc/statement.sql", + "unique_id": "macro.dbt.statement", + "macro_sql": "\n{%- macro statement(name=None, fetch_result=False, auto_begin=True, language='sql') -%}\n {%- if execute: -%}\n {%- set compiled_code = caller() -%}\n\n {%- if name == 'main' -%}\n {{ log('Writing runtime {} for node \"{}\"'.format(language, model['unique_id'])) }}\n {{ write(compiled_code) }}\n {%- endif -%}\n {%- if language == 'sql'-%}\n {%- set res, table = adapter.execute(compiled_code, auto_begin=auto_begin, fetch=fetch_result) -%}\n {%- elif language == 'python' -%}\n {%- set res = submit_python_job(model, compiled_code) -%}\n {#-- TODO: What should table be for python models? --#}\n {%- set table = None -%}\n {%- else -%}\n {% do exceptions.raise_compiler_error(\"statement macro didn't get supported language\") %}\n {%- endif -%}\n\n {%- if name is not none -%}\n {{ store_result(name, response=res, agate_table=table) }}\n {%- endif -%}\n\n {%- endif -%}\n{%- endmacro %}", "depends_on": { - "macros": [ - "macro.dbt.load_relation", - "macro.dbt.safe_cast", - "macro.dbt.validate_fixture_rows", - "macro.dbt.format_row" - ] + "macros": [] }, "description": "", "meta": {}, @@ -12903,21 +13040,19 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.6156511, + "created_at": 1730458997.1594589, "supported_languages": null }, - "macro.dbt.get_expected_sql": { - "name": "get_expected_sql", + "macro.dbt.noop_statement": { + "name": "noop_statement", "resource_type": "macro", "package_name": "dbt", - "path": "macros/unit_test_sql/get_fixture_sql.sql", - "original_file_path": "macros/unit_test_sql/get_fixture_sql.sql", - "unique_id": "macro.dbt.get_expected_sql", - "macro_sql": "{% macro get_expected_sql(rows, column_name_to_data_types) %}\n\n{%- if (rows | length) == 0 -%}\n select * from dbt_internal_unit_test_actual\n limit 0\n{%- else -%}\n{%- for row in rows -%}\n{%- set formatted_row = format_row(row, column_name_to_data_types) -%}\nselect\n{%- for column_name, column_value in formatted_row.items() %} {{ column_value }} as {{ column_name }}{% if not loop.last -%}, {%- endif %}\n{%- endfor %}\n{%- if not loop.last %}\nunion all\n{% endif %}\n{%- endfor -%}\n{%- endif -%}\n\n{% endmacro %}", + "path": "macros/etc/statement.sql", + "original_file_path": "macros/etc/statement.sql", + "unique_id": "macro.dbt.noop_statement", + "macro_sql": "{% macro noop_statement(name=None, message=None, code=None, rows_affected=None, res=None) -%}\n {%- set sql = caller() -%}\n\n {%- if name == 'main' -%}\n {{ log('Writing runtime SQL for node \"{}\"'.format(model['unique_id'])) }}\n {{ write(sql) }}\n {%- endif -%}\n\n {%- if name is not none -%}\n {{ store_raw_result(name, message=message, code=code, rows_affected=rows_affected, agate_table=res) }}\n {%- endif -%}\n\n{%- endmacro %}", "depends_on": { - "macros": [ - "macro.dbt.format_row" - ] + "macros": [] }, "description": "", "meta": {}, @@ -12927,22 +13062,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.615957, + "created_at": 1730458997.1597736, "supported_languages": null }, - "macro.dbt.format_row": { - "name": "format_row", + "macro.dbt.run_query": { + "name": "run_query", "resource_type": "macro", "package_name": "dbt", - "path": "macros/unit_test_sql/get_fixture_sql.sql", - "original_file_path": "macros/unit_test_sql/get_fixture_sql.sql", - "unique_id": "macro.dbt.format_row", - "macro_sql": "\n\n{%- macro format_row(row, column_name_to_data_types) -%}\n {#-- generate case-insensitive formatted row --#}\n {% set formatted_row = {} %}\n {%- for column_name, column_value in row.items() -%}\n {% set column_name = column_name|lower %}\n\n {%- if column_name not in column_name_to_data_types %}\n {#-- if user-provided row contains column name that relation does not contain, raise an error --#}\n {% set fixture_name = \"expected output\" if model.resource_type == 'unit_test' else (\"'\" ~ model.name ~ \"'\") %}\n {{ exceptions.raise_compiler_error(\n \"Invalid column name: '\" ~ column_name ~ \"' in unit test fixture for \" ~ fixture_name ~ \".\"\n \"\\nAccepted columns for \" ~ fixture_name ~ \" are: \" ~ (column_name_to_data_types.keys()|list)\n ) }}\n {%- endif -%}\n\n {%- set column_type = column_name_to_data_types[column_name] %}\n\n {#-- sanitize column_value: wrap yaml strings in quotes, apply cast --#}\n {%- set column_value_clean = column_value -%}\n {%- if column_value is string -%}\n {%- set column_value_clean = dbt.string_literal(dbt.escape_single_quotes(column_value)) -%}\n {%- elif column_value is none -%}\n {%- set column_value_clean = 'null' -%}\n {%- endif -%}\n\n {%- set row_update = {column_name: safe_cast(column_value_clean, column_type) } -%}\n {%- do formatted_row.update(row_update) -%}\n {%- endfor -%}\n {{ return(formatted_row) }}\n{%- endmacro -%}\n\n", + "path": "macros/etc/statement.sql", + "original_file_path": "macros/etc/statement.sql", + "unique_id": "macro.dbt.run_query", + "macro_sql": "{% macro run_query(sql) %}\n {% call statement(\"run_query_statement\", fetch_result=true, auto_begin=false) %}\n {{ sql }}\n {% endcall %}\n\n {% do return(load_result(\"run_query_statement\").table) %}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.string_literal", - "macro.dbt.escape_single_quotes", - "macro.dbt.safe_cast" + "macro.dbt.statement" ] }, "description": "", @@ -12953,21 +13086,19 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.6165981, + "created_at": 1730458997.1599307, "supported_languages": null }, - "macro.dbt.validate_fixture_rows": { - "name": "validate_fixture_rows", + "macro.dbt.convert_datetime": { + "name": "convert_datetime", "resource_type": "macro", "package_name": "dbt", - "path": "macros/unit_test_sql/get_fixture_sql.sql", - "original_file_path": "macros/unit_test_sql/get_fixture_sql.sql", - "unique_id": "macro.dbt.validate_fixture_rows", - "macro_sql": "{%- macro validate_fixture_rows(rows, row_number) -%}\n {{ return(adapter.dispatch('validate_fixture_rows', 'dbt')(rows, row_number)) }}\n{%- endmacro -%}\n\n", + "path": "macros/etc/datetime.sql", + "original_file_path": "macros/etc/datetime.sql", + "unique_id": "macro.dbt.convert_datetime", + "macro_sql": "{% macro convert_datetime(date_str, date_fmt) %}\n\n {% set error_msg -%}\n The provided partition date '{{ date_str }}' does not match the expected format '{{ date_fmt }}'\n {%- endset %}\n\n {% set res = try_or_compiler_error(error_msg, modules.datetime.datetime.strptime, date_str.strip(), date_fmt) %}\n {{ return(res) }}\n\n{% endmacro %}", "depends_on": { - "macros": [ - "macro.dbt.default__validate_fixture_rows" - ] + "macros": [] }, "description": "", "meta": {}, @@ -12977,19 +13108,21 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.616714, + "created_at": 1730458997.1610026, "supported_languages": null }, - "macro.dbt.default__validate_fixture_rows": { - "name": "default__validate_fixture_rows", + "macro.dbt.dates_in_range": { + "name": "dates_in_range", "resource_type": "macro", "package_name": "dbt", - "path": "macros/unit_test_sql/get_fixture_sql.sql", - "original_file_path": "macros/unit_test_sql/get_fixture_sql.sql", - "unique_id": "macro.dbt.default__validate_fixture_rows", - "macro_sql": "{%- macro default__validate_fixture_rows(rows, row_number) -%}\n {# This is an abstract method for adapter overrides as needed #}\n{%- endmacro -%}", + "path": "macros/etc/datetime.sql", + "original_file_path": "macros/etc/datetime.sql", + "unique_id": "macro.dbt.dates_in_range", + "macro_sql": "{% macro dates_in_range(start_date_str, end_date_str=none, in_fmt=\"%Y%m%d\", out_fmt=\"%Y%m%d\") %}\n {% set end_date_str = start_date_str if end_date_str is none else end_date_str %}\n\n {% set start_date = convert_datetime(start_date_str, in_fmt) %}\n {% set end_date = convert_datetime(end_date_str, in_fmt) %}\n\n {% set day_count = (end_date - start_date).days %}\n {% if day_count < 0 %}\n {% set msg -%}\n Partition start date is after the end date ({{ start_date }}, {{ end_date }})\n {%- endset %}\n\n {{ exceptions.raise_compiler_error(msg, model) }}\n {% endif %}\n\n {% set date_list = [] %}\n {% for i in range(0, day_count + 1) %}\n {% set the_date = (modules.datetime.timedelta(days=i) + start_date) %}\n {% if not out_fmt %}\n {% set _ = date_list.append(the_date) %}\n {% else %}\n {% set _ = date_list.append(the_date.strftime(out_fmt)) %}\n {% endif %}\n {% endfor %}\n\n {{ return(date_list) }}\n{% endmacro %}", "depends_on": { - "macros": [] + "macros": [ + "macro.dbt.convert_datetime" + ] }, "description": "", "meta": {}, @@ -12999,20 +13132,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.616768, + "created_at": 1730458997.1616185, "supported_languages": null }, - "macro.dbt.resolve_model_name": { - "name": "resolve_model_name", + "macro.dbt.partition_range": { + "name": "partition_range", "resource_type": "macro", "package_name": "dbt", - "path": "macros/python_model/python.sql", - "original_file_path": "macros/python_model/python.sql", - "unique_id": "macro.dbt.resolve_model_name", - "macro_sql": "{% macro resolve_model_name(input_model_name) %}\n {{ return(adapter.dispatch('resolve_model_name', 'dbt')(input_model_name)) }}\n{% endmacro %}", + "path": "macros/etc/datetime.sql", + "original_file_path": "macros/etc/datetime.sql", + "unique_id": "macro.dbt.partition_range", + "macro_sql": "{% macro partition_range(raw_partition_date, date_fmt='%Y%m%d') %}\n {% set partition_range = (raw_partition_date | string).split(\",\") %}\n\n {% if (partition_range | length) == 1 %}\n {% set start_date = partition_range[0] %}\n {% set end_date = none %}\n {% elif (partition_range | length) == 2 %}\n {% set start_date = partition_range[0] %}\n {% set end_date = partition_range[1] %}\n {% else %}\n {{ exceptions.raise_compiler_error(\"Invalid partition time. Expected format: {Start Date}[,{End Date}]. Got: \" ~ raw_partition_date) }}\n {% endif %}\n\n {{ return(dates_in_range(start_date, end_date, in_fmt=date_fmt)) }}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.default__resolve_model_name" + "macro.dbt.dates_in_range" ] }, "description": "", @@ -13023,17 +13156,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.617768, + "created_at": 1730458997.16201, "supported_languages": null }, - "macro.dbt.default__resolve_model_name": { - "name": "default__resolve_model_name", + "macro.dbt.py_current_timestring": { + "name": "py_current_timestring", "resource_type": "macro", "package_name": "dbt", - "path": "macros/python_model/python.sql", - "original_file_path": "macros/python_model/python.sql", - "unique_id": "macro.dbt.default__resolve_model_name", - "macro_sql": "\n\n{%- macro default__resolve_model_name(input_model_name) -%}\n {{ input_model_name | string | replace('\"', '\\\"') }}\n{%- endmacro -%}\n\n", + "path": "macros/etc/datetime.sql", + "original_file_path": "macros/etc/datetime.sql", + "unique_id": "macro.dbt.py_current_timestring", + "macro_sql": "{% macro py_current_timestring() %}\n {% set dt = modules.datetime.datetime.now() %}\n {% do return(dt.strftime(\"%Y%m%d%H%M%S%f\")) %}\n{% endmacro %}", "depends_on": { "macros": [] }, @@ -13045,20 +13178,23 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.617853, + "created_at": 1730458997.1621323, "supported_languages": null }, - "macro.dbt.build_ref_function": { - "name": "build_ref_function", + "macro.dbt.get_fixture_sql": { + "name": "get_fixture_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/python_model/python.sql", - "original_file_path": "macros/python_model/python.sql", - "unique_id": "macro.dbt.build_ref_function", - "macro_sql": "{% macro build_ref_function(model) %}\n\n {%- set ref_dict = {} -%}\n {%- for _ref in model.refs -%}\n {% set _ref_args = [_ref.get('package'), _ref['name']] if _ref.get('package') else [_ref['name'],] %}\n {%- set resolved = ref(*_ref_args, v=_ref.get('version')) -%}\n {%- if _ref.get('version') -%}\n {% do _ref_args.extend([\"v\" ~ _ref['version']]) %}\n {%- endif -%}\n {%- do ref_dict.update({_ref_args | join('.'): resolve_model_name(resolved)}) -%}\n {%- endfor -%}\n\ndef ref(*args, **kwargs):\n refs = {{ ref_dict | tojson }}\n key = '.'.join(args)\n version = kwargs.get(\"v\") or kwargs.get(\"version\")\n if version:\n key += f\".v{version}\"\n dbt_load_df_function = kwargs.get(\"dbt_load_df_function\")\n return dbt_load_df_function(refs[key])\n\n{% endmacro %}", + "path": "macros/unit_test_sql/get_fixture_sql.sql", + "original_file_path": "macros/unit_test_sql/get_fixture_sql.sql", + "unique_id": "macro.dbt.get_fixture_sql", + "macro_sql": "{% macro get_fixture_sql(rows, column_name_to_data_types) %}\n-- Fixture for {{ model.name }}\n{% set default_row = {} %}\n\n{%- if not column_name_to_data_types -%}\n{#-- Use defer_relation IFF it is available in the manifest and 'this' is missing from the database --#}\n{%- set this_or_defer_relation = defer_relation if (defer_relation and not load_relation(this)) else this -%}\n{%- set columns_in_relation = adapter.get_columns_in_relation(this_or_defer_relation) -%}\n\n{%- set column_name_to_data_types = {} -%}\n{%- for column in columns_in_relation -%}\n{#-- This needs to be a case-insensitive comparison --#}\n{%- do column_name_to_data_types.update({column.name|lower: column.data_type}) -%}\n{%- endfor -%}\n{%- endif -%}\n\n{%- if not column_name_to_data_types -%}\n {{ exceptions.raise_compiler_error(\"Not able to get columns for unit test '\" ~ model.name ~ \"' from relation \" ~ this ~ \" because the relation doesn't exist\") }}\n{%- endif -%}\n\n{%- for column_name, column_type in column_name_to_data_types.items() -%}\n {%- do default_row.update({column_name: (safe_cast(\"null\", column_type) | trim )}) -%}\n{%- endfor -%}\n\n{{ validate_fixture_rows(rows, row_number) }}\n\n{%- for row in rows -%}\n{%- set formatted_row = format_row(row, column_name_to_data_types) -%}\n{%- set default_row_copy = default_row.copy() -%}\n{%- do default_row_copy.update(formatted_row) -%}\nselect\n{%- for column_name, column_value in default_row_copy.items() %} {{ column_value }} as {{ column_name }}{% if not loop.last -%}, {%- endif %}\n{%- endfor %}\n{%- if not loop.last %}\nunion all\n{% endif %}\n{%- endfor -%}\n\n{%- if (rows | length) == 0 -%}\n select\n {%- for column_name, column_value in default_row.items() %} {{ column_value }} as {{ column_name }}{% if not loop.last -%},{%- endif %}\n {%- endfor %}\n limit 0\n{%- endif -%}\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.resolve_model_name" + "macro.dbt.load_relation", + "macro.dbt.safe_cast", + "macro.dbt.validate_fixture_rows", + "macro.dbt.format_row" ] }, "description": "", @@ -13069,20 +13205,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.618272, + "created_at": 1730458997.1640768, "supported_languages": null }, - "macro.dbt.build_source_function": { - "name": "build_source_function", + "macro.dbt.get_expected_sql": { + "name": "get_expected_sql", "resource_type": "macro", "package_name": "dbt", - "path": "macros/python_model/python.sql", - "original_file_path": "macros/python_model/python.sql", - "unique_id": "macro.dbt.build_source_function", - "macro_sql": "{% macro build_source_function(model) %}\n\n {%- set source_dict = {} -%}\n {%- for _source in model.sources -%}\n {%- set resolved = source(*_source) -%}\n {%- do source_dict.update({_source | join('.'): resolve_model_name(resolved)}) -%}\n {%- endfor -%}\n\ndef source(*args, dbt_load_df_function):\n sources = {{ source_dict | tojson }}\n key = '.'.join(args)\n return dbt_load_df_function(sources[key])\n\n{% endmacro %}", + "path": "macros/unit_test_sql/get_fixture_sql.sql", + "original_file_path": "macros/unit_test_sql/get_fixture_sql.sql", + "unique_id": "macro.dbt.get_expected_sql", + "macro_sql": "{% macro get_expected_sql(rows, column_name_to_data_types) %}\n\n{%- if (rows | length) == 0 -%}\n select * from dbt_internal_unit_test_actual\n limit 0\n{%- else -%}\n{%- for row in rows -%}\n{%- set formatted_row = format_row(row, column_name_to_data_types) -%}\nselect\n{%- for column_name, column_value in formatted_row.items() %} {{ column_value }} as {{ column_name }}{% if not loop.last -%}, {%- endif %}\n{%- endfor %}\n{%- if not loop.last %}\nunion all\n{% endif %}\n{%- endfor -%}\n{%- endif -%}\n\n{% endmacro %}", "depends_on": { "macros": [ - "macro.dbt.resolve_model_name" + "macro.dbt.format_row" ] }, "description": "", @@ -13093,19 +13229,23 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.618489, + "created_at": 1730458997.1643934, "supported_languages": null }, - "macro.dbt.build_config_dict": { - "name": "build_config_dict", + "macro.dbt.format_row": { + "name": "format_row", "resource_type": "macro", "package_name": "dbt", - "path": "macros/python_model/python.sql", - "original_file_path": "macros/python_model/python.sql", - "unique_id": "macro.dbt.build_config_dict", - "macro_sql": "{% macro build_config_dict(model) %}\n {%- set config_dict = {} -%}\n {% set config_dbt_used = zip(model.config.config_keys_used, model.config.config_keys_defaults) | list %}\n {%- for key, default in config_dbt_used -%}\n {# weird type testing with enum, would be much easier to write this logic in Python! #}\n {%- if key == \"language\" -%}\n {%- set value = \"python\" -%}\n {%- endif -%}\n {%- set value = model.config.get(key, default) -%}\n {%- do config_dict.update({key: value}) -%}\n {%- endfor -%}\nconfig_dict = {{ config_dict }}\n{% endmacro %}", + "path": "macros/unit_test_sql/get_fixture_sql.sql", + "original_file_path": "macros/unit_test_sql/get_fixture_sql.sql", + "unique_id": "macro.dbt.format_row", + "macro_sql": "\n\n{%- macro format_row(row, column_name_to_data_types) -%}\n {#-- generate case-insensitive formatted row --#}\n {% set formatted_row = {} %}\n {%- for column_name, column_value in row.items() -%}\n {% set column_name = column_name|lower %}\n\n {%- if column_name not in column_name_to_data_types %}\n {#-- if user-provided row contains column name that relation does not contain, raise an error --#}\n {% set fixture_name = \"expected output\" if model.resource_type == 'unit_test' else (\"'\" ~ model.name ~ \"'\") %}\n {{ exceptions.raise_compiler_error(\n \"Invalid column name: '\" ~ column_name ~ \"' in unit test fixture for \" ~ fixture_name ~ \".\"\n \"\\nAccepted columns for \" ~ fixture_name ~ \" are: \" ~ (column_name_to_data_types.keys()|list)\n ) }}\n {%- endif -%}\n\n {%- set column_type = column_name_to_data_types[column_name] %}\n\n {#-- sanitize column_value: wrap yaml strings in quotes, apply cast --#}\n {%- set column_value_clean = column_value -%}\n {%- if column_value is string -%}\n {%- set column_value_clean = dbt.string_literal(dbt.escape_single_quotes(column_value)) -%}\n {%- elif column_value is none -%}\n {%- set column_value_clean = 'null' -%}\n {%- endif -%}\n\n {%- set row_update = {column_name: safe_cast(column_value_clean, column_type) } -%}\n {%- do formatted_row.update(row_update) -%}\n {%- endfor -%}\n {{ return(formatted_row) }}\n{%- endmacro -%}\n\n", "depends_on": { - "macros": [] + "macros": [ + "macro.dbt.string_literal", + "macro.dbt.escape_single_quotes", + "macro.dbt.safe_cast" + ] }, "description": "", "meta": {}, @@ -13115,25 +13255,20 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.618793, + "created_at": 1730458997.1650355, "supported_languages": null }, - "macro.dbt.py_script_postfix": { - "name": "py_script_postfix", + "macro.dbt.validate_fixture_rows": { + "name": "validate_fixture_rows", "resource_type": "macro", "package_name": "dbt", - "path": "macros/python_model/python.sql", - "original_file_path": "macros/python_model/python.sql", - "unique_id": "macro.dbt.py_script_postfix", - "macro_sql": "{% macro py_script_postfix(model) %}\n# This part is user provided model code\n# you will need to copy the next section to run the code\n# COMMAND ----------\n# this part is dbt logic for get ref work, do not modify\n\n{{ build_ref_function(model ) }}\n{{ build_source_function(model ) }}\n{{ build_config_dict(model) }}\n\nclass config:\n def __init__(self, *args, **kwargs):\n pass\n\n @staticmethod\n def get(key, default=None):\n return config_dict.get(key, default)\n\nclass this:\n \"\"\"dbt.this() or dbt.this.identifier\"\"\"\n database = \"{{ this.database }}\"\n schema = \"{{ this.schema }}\"\n identifier = \"{{ this.identifier }}\"\n {% set this_relation_name = resolve_model_name(this) %}\n def __repr__(self):\n return '{{ this_relation_name }}'\n\n\nclass dbtObj:\n def __init__(self, load_df_function) -> None:\n self.source = lambda *args: source(*args, dbt_load_df_function=load_df_function)\n self.ref = lambda *args, **kwargs: ref(*args, **kwargs, dbt_load_df_function=load_df_function)\n self.config = config\n self.this = this()\n self.is_incremental = {{ is_incremental() }}\n\n# COMMAND ----------\n{{py_script_comment()}}\n{% endmacro %}", + "path": "macros/unit_test_sql/get_fixture_sql.sql", + "original_file_path": "macros/unit_test_sql/get_fixture_sql.sql", + "unique_id": "macro.dbt.validate_fixture_rows", + "macro_sql": "{%- macro validate_fixture_rows(rows, row_number) -%}\n {{ return(adapter.dispatch('validate_fixture_rows', 'dbt')(rows, row_number)) }}\n{%- endmacro -%}\n\n", "depends_on": { "macros": [ - "macro.dbt.build_ref_function", - "macro.dbt.build_source_function", - "macro.dbt.build_config_dict", - "macro.dbt.resolve_model_name", - "macro.dbt.is_incremental", - "macro.dbt.py_script_comment" + "macro.dbt.default__validate_fixture_rows" ] }, "description": "", @@ -13144,17 +13279,17 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.6190479, + "created_at": 1730458997.1651497, "supported_languages": null }, - "macro.dbt.py_script_comment": { - "name": "py_script_comment", + "macro.dbt.default__validate_fixture_rows": { + "name": "default__validate_fixture_rows", "resource_type": "macro", "package_name": "dbt", - "path": "macros/python_model/python.sql", - "original_file_path": "macros/python_model/python.sql", - "unique_id": "macro.dbt.py_script_comment", - "macro_sql": "{%macro py_script_comment()%}\n{%endmacro%}", + "path": "macros/unit_test_sql/get_fixture_sql.sql", + "original_file_path": "macros/unit_test_sql/get_fixture_sql.sql", + "unique_id": "macro.dbt.default__validate_fixture_rows", + "macro_sql": "{%- macro default__validate_fixture_rows(rows, row_number) -%}\n {# This is an abstract method for adapter overrides as needed #}\n{%- endmacro -%}", "depends_on": { "macros": [] }, @@ -13166,7 +13301,7 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.619092, + "created_at": 1730458997.165206, "supported_languages": null }, "macro.dbt.test_unique": { @@ -13190,7 +13325,7 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.619404, + "created_at": 1730458997.1655095, "supported_languages": null }, "macro.dbt.test_not_null": { @@ -13214,7 +13349,7 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.61954, + "created_at": 1730458997.1656528, "supported_languages": null }, "macro.dbt.test_accepted_values": { @@ -13238,7 +13373,7 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.619704, + "created_at": 1730458997.165827, "supported_languages": null }, "macro.dbt.test_relationships": { @@ -13262,7 +13397,7 @@ }, "patch_path": null, "arguments": [], - "created_at": 1728697972.619862, + "created_at": 1730458997.1659946, "supported_languages": null } }, @@ -13298,7 +13433,9 @@ "description": "### Visualization: Table\n\nCTE SQL\n\n#### Query\n\n```\nwith completed_orders as (\n select * from Orders where status = 'completed'\n)\nselect * from completed_orders\n```\n\n#### Metadata\n\nMetabase ID: __32__\n\nCreated On: __2024-06-20T06:01:34.470497Z__", "label": "Completed Orders CTE SQL", "maturity": "medium", - "meta": {}, + "meta": { + "last_used_at": "2024-10-12T03:43:09.869884Z" + }, "tags": [ "metabase" ], @@ -13322,7 +13459,7 @@ ], "sources": [], "metrics": [], - "created_at": 1728697972.910919 + "created_at": 1730458997.4756088 }, "exposure.sandbox.dummy": { "name": "dummy", @@ -13344,7 +13481,10 @@ "description": "### Visualization: Table\n\nDummy 1\n\n#### Query\n\n```\nselect 1;\n```\n\n#### Metadata\n\nMetabase ID: __30__\n\nCreated On: __2024-06-20T05:56:33.051625Z__", "label": "Dummy", "maturity": "medium", - "meta": {}, + "meta": { + "average_query_time": "0:00.028", + "last_used_at": "2024-10-12T03:43:09.869884Z" + }, "tags": [ "metabase" ], @@ -13360,7 +13500,7 @@ "refs": [], "sources": [], "metrics": [], - "created_at": 1728697972.911566 + "created_at": 1730458997.4763608 }, "exposure.sandbox.dummy_1": { "name": "dummy_1", @@ -13382,7 +13522,10 @@ "description": "### Visualization: Table\n\nDummy 2\n\n#### Query\n\n```\nselect 2;\n```\n\n#### Metadata\n\nMetabase ID: __31__\n\nCreated On: __2024-06-20T05:56:45.033599Z__", "label": "Dummy", "maturity": "medium", - "meta": {}, + "meta": { + "average_query_time": "0:00.024", + "last_used_at": "2024-10-12T03:43:09.869884Z" + }, "tags": [ "metabase" ], @@ -13398,7 +13541,7 @@ "refs": [], "sources": [], "metrics": [], - "created_at": 1728697972.9118578 + "created_at": 1730458997.4768343 }, "exposure.sandbox.orders___customers": { "name": "orders___customers", @@ -13420,7 +13563,10 @@ "description": "### Visualization: Table\n\nOrders and customers\n\n#### Metadata\n\nMetabase ID: __27__\n\nCreated On: __2024-06-19T11:57:35.85999Z__", "label": "Orders + Customers", "maturity": "medium", - "meta": {}, + "meta": { + "average_query_time": "0:00.107", + "last_used_at": "2024-10-12T03:43:09.869884Z" + }, "tags": [ "metabase" ], @@ -13450,7 +13596,7 @@ ], "sources": [], "metrics": [], - "created_at": 1728697972.912312 + "created_at": 1730458997.4773912 }, "exposure.sandbox.orders___customers__filtered_by_status_is_completed": { "name": "orders___customers__filtered_by_status_is_completed", @@ -13472,7 +13618,10 @@ "description": "### Visualization: Table\n\nNo description provided in Metabase\n\n#### Metadata\n\nMetabase ID: __28__\n\nCreated On: __2024-06-19T11:58:35.060527Z__", "label": "Orders + Customers, Filtered by Status is completed", "maturity": "medium", - "meta": {}, + "meta": { + "average_query_time": "0:00.264", + "last_used_at": "2024-10-12T03:43:09.869884Z" + }, "tags": [ "metabase" ], @@ -13502,7 +13651,7 @@ ], "sources": [], "metrics": [], - "created_at": 1728697972.912936 + "created_at": 1730458997.4781487 }, "exposure.sandbox.returned_order_count_sql": { "name": "returned_order_count_sql", @@ -13524,7 +13673,10 @@ "description": "### Visualization: Scalar\n\nNo description provided in Metabase\n\n#### Query\n\n```\nselect\n count(*)\nfrom STG_payments as p\n left join STG_orders as o on p.order_id = o.order_id\nwhere o.status = 'returned'\n;\n```\n\n#### Metadata\n\nMetabase ID: __29__\n\nCreated On: __2024-06-19T12:03:01.905927Z__", "label": "Returned Order Count SQL", "maturity": "medium", - "meta": {}, + "meta": { + "average_query_time": "0:00.191", + "last_used_at": "2024-10-12T03:43:09.869884Z" + }, "tags": [ "metabase" ], @@ -13554,7 +13706,7 @@ ], "sources": [], "metrics": [], - "created_at": 1728697972.914315 + "created_at": 1730458997.479057 }, "exposure.sandbox.the_dashboard": { "name": "the_dashboard", @@ -13618,7 +13770,7 @@ ], "sources": [], "metrics": [], - "created_at": 1728697972.9152288 + "created_at": 1730458997.4798684 }, "exposure.sandbox.transactions": { "name": "transactions", @@ -13640,7 +13792,10 @@ "description": "### Visualization: Table\n\nNo description provided in Metabase\n\n#### Metadata\n\nMetabase ID: __33__\n\nCreated On: __2024-10-11T23:46:29.272117Z__", "label": "Transactions", "maturity": "medium", - "meta": {}, + "meta": { + "average_query_time": "0:00.115", + "last_used_at": "2024-10-12T03:43:09.869884Z" + }, "tags": [ "metabase" ], @@ -13664,7 +13819,7 @@ ], "sources": [], "metrics": [], - "created_at": 1728697972.916076 + "created_at": 1730458997.480795 } }, "metrics": {}, @@ -13690,9 +13845,6 @@ "model.sandbox.stg_payments": [ "seed.sandbox.raw_payments" ], - "model.sandbox.stg_orders": [ - "seed.sandbox.raw_orders" - ], "seed.sandbox.raw_customers": [], "seed.sandbox.raw_orders": [], "seed.sandbox.raw_payments": [], @@ -13747,6 +13899,18 @@ "test.sandbox.not_null_stg_customers_customer_id.e2cfb1f9aa": [ "model.sandbox.stg_customers" ], + "test.sandbox.unique_stg_payments_payment_id.3744510712": [ + "model.sandbox.stg_payments" + ], + "test.sandbox.not_null_stg_payments_payment_id.c19cc50075": [ + "model.sandbox.stg_payments" + ], + "test.sandbox.accepted_values_stg_payments_payment_method__credit_card__coupon__bank_transfer__gift_card.3c3820f278": [ + "model.sandbox.stg_payments" + ], + "model.sandbox.stg_orders": [ + "seed.sandbox.raw_orders" + ], "test.sandbox.unique_stg_orders_order_id.e3b841c71a": [ "model.sandbox.stg_orders" ], @@ -13756,15 +13920,14 @@ "test.sandbox.accepted_values_stg_orders_status__placed__shipped__completed__return_pending__returned.080fb20aad": [ "model.sandbox.stg_orders" ], - "test.sandbox.unique_stg_payments_payment_id.3744510712": [ - "model.sandbox.stg_payments" - ], - "test.sandbox.not_null_stg_payments_payment_id.c19cc50075": [ - "model.sandbox.stg_payments" + "test.sandbox.not_null_stg_orders_sku_id.71aa9c46d3": [ + "model.sandbox.stg_orders" ], - "test.sandbox.accepted_values_stg_payments_payment_method__credit_card__coupon__bank_transfer__gift_card.3c3820f278": [ - "model.sandbox.stg_payments" + "test.sandbox.relationships_stg_orders_sku_id__sku_id__source_inventory_skus_.68f111a4fe": [ + "model.sandbox.stg_orders", + "source.sandbox.inventory.skus" ], + "source.sandbox.inventory.skus": [], "exposure.sandbox.completed_orders_cte_sql": [ "model.sandbox.orders" ], @@ -13837,15 +14000,6 @@ "test.sandbox.not_null_stg_payments_payment_id.c19cc50075", "test.sandbox.unique_stg_payments_payment_id.3744510712" ], - "model.sandbox.stg_orders": [ - "exposure.sandbox.returned_order_count_sql", - "exposure.sandbox.the_dashboard", - "model.sandbox.customers", - "model.sandbox.orders", - "test.sandbox.accepted_values_stg_orders_status__placed__shipped__completed__return_pending__returned.080fb20aad", - "test.sandbox.not_null_stg_orders_order_id.81cfe2fe64", - "test.sandbox.unique_stg_orders_order_id.e3b841c71a" - ], "seed.sandbox.raw_customers": [ "model.sandbox.stg_customers" ], @@ -13872,12 +14026,28 @@ "test.sandbox.not_null_payments_order_id.24258dbcca": [], "test.sandbox.unique_stg_customers_customer_id.c7614daada": [], "test.sandbox.not_null_stg_customers_customer_id.e2cfb1f9aa": [], - "test.sandbox.unique_stg_orders_order_id.e3b841c71a": [], - "test.sandbox.not_null_stg_orders_order_id.81cfe2fe64": [], - "test.sandbox.accepted_values_stg_orders_status__placed__shipped__completed__return_pending__returned.080fb20aad": [], "test.sandbox.unique_stg_payments_payment_id.3744510712": [], "test.sandbox.not_null_stg_payments_payment_id.c19cc50075": [], "test.sandbox.accepted_values_stg_payments_payment_method__credit_card__coupon__bank_transfer__gift_card.3c3820f278": [], + "model.sandbox.stg_orders": [ + "exposure.sandbox.returned_order_count_sql", + "exposure.sandbox.the_dashboard", + "model.sandbox.customers", + "model.sandbox.orders", + "test.sandbox.accepted_values_stg_orders_status__placed__shipped__completed__return_pending__returned.080fb20aad", + "test.sandbox.not_null_stg_orders_order_id.81cfe2fe64", + "test.sandbox.not_null_stg_orders_sku_id.71aa9c46d3", + "test.sandbox.relationships_stg_orders_sku_id__sku_id__source_inventory_skus_.68f111a4fe", + "test.sandbox.unique_stg_orders_order_id.e3b841c71a" + ], + "test.sandbox.unique_stg_orders_order_id.e3b841c71a": [], + "test.sandbox.not_null_stg_orders_order_id.81cfe2fe64": [], + "test.sandbox.accepted_values_stg_orders_status__placed__shipped__completed__return_pending__returned.080fb20aad": [], + "test.sandbox.not_null_stg_orders_sku_id.71aa9c46d3": [], + "test.sandbox.relationships_stg_orders_sku_id__sku_id__source_inventory_skus_.68f111a4fe": [], + "source.sandbox.inventory.skus": [ + "test.sandbox.relationships_stg_orders_sku_id__sku_id__source_inventory_skus_.68f111a4fe" + ], "exposure.sandbox.completed_orders_cte_sql": [], "exposure.sandbox.dummy": [], "exposure.sandbox.dummy_1": [], diff --git a/tests/test_manifest.py b/tests/test_manifest.py index d9dc1428..938390cc 100644 --- a/tests/test_manifest.py +++ b/tests/test_manifest.py @@ -224,8 +224,25 @@ def test_v12(): name="customer_id", description="", ), + Column( + name="sku_id", + description="", + semantic_type="type/FK", + fk_target_table="inventory.skus", + fk_target_field="sku_id", + ), ], ), + Model( + database="dbtmetabase", + schema="inventory", + group=Group.sources, + name="skus", + alias="skus", + description="", + unique_id="source.sandbox.inventory.skus", + source="inventory", + ), ], ) diff --git a/tests/test_models.py b/tests/test_models.py index f42b1e28..48496573 100644 --- a/tests/test_models.py +++ b/tests/test_models.py @@ -73,13 +73,20 @@ def test_build_lookups(core: MockDbtMetabase): "PUBLIC.RAW_ORDERS": {"ID", "USER_ID", "ORDER_DATE", "STATUS"}, "PUBLIC.RAW_PAYMENTS": {"ID", "ORDER_ID", "PAYMENT_METHOD", "AMOUNT"}, "PUBLIC.STG_CUSTOMERS": {"CUSTOMER_ID", "FIRST_NAME", "LAST_NAME"}, - "PUBLIC.STG_ORDERS": {"ORDER_ID", "STATUS", "ORDER_DATE", "CUSTOMER_ID"}, + "PUBLIC.STG_ORDERS": { + "ORDER_ID", + "STATUS", + "ORDER_DATE", + "CUSTOMER_ID", + "SKU_ID", + }, "PUBLIC.STG_PAYMENTS": { "PAYMENT_ID", "PAYMENT_METHOD", "ORDER_ID", "AMOUNT", }, + "INVENTORY.SKUS": {"SKU_ID", "PRODUCT"}, } actual_tables = core._ModelsMixin__get_tables(database_id="2") # type: ignore