From 3ccaf86545780619a5e88e71179f44c672cb63b3 Mon Sep 17 00:00:00 2001 From: Vidhan Bhonsle Date: Wed, 22 Jul 2026 18:44:17 +0530 Subject: [PATCH] Updated airflow azure blob quickstart --- quickstarts/images/dag.png | Bin 31876 -> 60883 bytes ...azure-to-teradata-transfer-operator-doc.md | 329 ++++++++++-------- 2 files changed, 182 insertions(+), 147 deletions(-) diff --git a/quickstarts/images/dag.png b/quickstarts/images/dag.png index 86a14e20cc95685bbf5ba06e0b5564edcda01402..84cc04216cb6902615b11afb805bd38a50b1cd16 100644 GIT binary patch literal 60883 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%0AQgznC;$#rgIb_5=1nKdzNG6W&5UU8ZZ5VYq`8 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 literal 31876 zcmd422{fDQ-!_W=ZMze@19ofbq^PMaHO16X(b8(SS<;$fR^$(tzn~XyUKA3l zPTjk8UljOz_k-&WAwoi@e(d}R|LGfJ^F$$l;%l?0^4X|3a6& z{d=WT9+N1nBN5wz3^8lpX!TD@1A>2wWU z8xg&^&^!7Bvpo_R58)JdJJMn}NO;(0J_aJUJ)0}>xOfayI_mqM0;Ai5Wj4kNzuzoZ-ML`-J0uGWe%xlwrpLX<~S)xloID6c5Dq? zBXtk=^jm`0SS!VJr&bo71PW$XB99mcZGhU!!Qtl3&Tx)QYd(*8VE=TdQ>(8=v!Qb^ zhw<2CGe1*@uu7o(YI(WfU)&`+@^_8EXQf%Gnf&eMHYg6KWw_R3p%*lLMXwQl%CK(H zi5ggixa`qj#~+=t_{S{vLc1i3GF`aUE4K>&JS#4s3)Z@9%Oc0iO{7?PM=CzSH=jU! z$#c3U3d;gkGa5-4*yuancgiS|=j2#C>w#Z4qpGHEaAHX5Vr}~aefoS2Y3p=|ej4TH z-h?Xb4yl@I%~{6>LYOs6#^+GHMFeO6lneHQ?&M11>s$*wnICek8Ls;``2aXf z;@F@FcG!4!?y6dk^)l`^4Y2bbBs<0Pc+@;#o>Z3~2&wtFz0$2EzDN}r;}ja+&#^P` zNY8-o_B;K`YuETww|}nrp79N=P;w%wR^6gEz!lcW$?2=9RaT_&c^PS{?8gzfTA0)v z9!bw^eRzCU3*B@QzG4?+f@R;q#6`;+Wk4Ll0t9?&$Y_hv)`%(zirHRJMH*pgO~faR zCD3z;e_X$3BIj_?{ceKORcastM;IN;z%8>Rbq(_%;~$z%I;TUB^9sn5Y8!gH*FQ&) z2XjUow^HU_IZ@K{Upd}*Q(!-^-Jui_H`peH`nl?lpDS+)Hwk>Hm6;caOW3VPZ0(Np zfU`+jMw*RVGgP8{7s^i=SxHyaghe-msNj#^XA>X=vV>E4%?$h#NHY<-_yT#BrgzuLDpQdXinm>=JuRt zV-~lPIE}eTqoeq)T(yBNLolmjB_cjr0RHiz9{En6pSi^r@}5&h02oz$T{AtX5!3f{r(H7#i$v2 z23Ic;HJUt#oJw|TMMLwbyMOMB=?Cm9J-QXdr1ag8EJ{a%q7h+!^J-rqa0;e%e!}qX zY&FI1Tgt82j(I`&>K`~5m@5;wTLH@{zd!0GCNpUFbSG~M34JtlcpK$~(DwnsV>vGG8|B-g zf4^zeM`KfDt0Eoh{-u79xR1|gZ#!)E;SO>7f3EhUTBW)0(Y<}IPr;e$Vocv$4d;g6 zbRdJg8$AIqx-`nTgW@pr-z0&2J@56zo{Mj%eY7rH1C_%+MSx)QrnQm^o3bQD5F4boj-5?~AchwjhW2@J7JiI~c;)4mvr%0EtD0$qc~X6)^}a=&ps z*~EuD@}(I+C@6Q+{28jO?2L`HYH&l0JIN=e`(B6s;01%mjg!<&CV|(jK*@*f{kip? zR`13pE+{0r?7oXD6;Wq2LY-)QFMbLBsaI7Te0i)?`ZZ=WVh|5+sX)HUkBj zb~=_{u5GtD;U_s^wLkqcTeBtn4$XL1j0=4s1;|0(G5eSQ9b35X{TQ-B486Gb#G0Ze z@6k%9dOXvqskx!X1kQdkis>3&qhbH?Z9?!)u9dg<21D$OcZL3?<@irb)M?!kK59wO z^rxh4CHLWZll!S|3@(2~6(8!LI-I4Wn$Eu5icp-YRfXr2~FdCh*Q`m zIrXt%y}S3mD|lN0qEN-z%D+F_W*v7($;utJMs=YsI|fJfdx-22vUtb}8wG20*m0Id|@ahw5lYI}`NMNvvZnR>?TLl64MLwilCf`I(zG+^9 zn^NvX{l}m;M#n^d0L7%7ia{>=Qy=LfFBoo4&To_J62fb&LX+1rFdqS!M1Gmi0u=)z_JMumASp8LGIHL^&N++HK4#w$)K z{o^}vRieuOL{QY5|2;tDe?7GM|HUVUs+&q^6z<1Icl&HAF`UFrHd$d=5o*cl{-pZO zqn@KxE}e@W{%9z%U}XtSe4+*I`;H3Df&>{QFZwzM-dRN7FlmlpSb;U)v`3#8I;-gy zo%H3DtAbc8EKSYSjl;2~APrsAsxnVm^xi*cQtJT9VE9#3Re8$1mM~iXEBW@Uqq7Mu z>gecb1NpoHHo`iC?Jo6)GlupFMGC|l!Iwh{4>{;2Ec!V|_(y;E`kDThm;(H);p*o@ z)c#kO?|XZjUvYo?nf=!$_#oxZ5>2S5%bFg^! zY=ZT#zJ#^>%E*sKzs#nGg&M;cV40B!DRZ@yWh}GLkKhS|>EoqF;v4!p!gQ*~~9XA#x+;Ok$_=7N!@ z`|jjnyfcbAMM9@y=>GZ%HX&JhUz+RHDC3ENI;-Erd&(PP3|91z*a*~qMyFa@gN9R~ z1EYfAryYba3170ey(jcc6_@#$eYmh#Xi%CGJ;%vfs7-ySxVPW^RRcLq`9gfcBdl-t zTD}ocnAyYCFErHjCDeG_{*3x9Y*uN}#W|kVv`^;hq<8|wnXGG-wDwV zDh&M3-b}gu`070u&yxwHZ@-Lm%2zPxfC*=i| z*=!vTP01%76!1$()}9#2ws!B&-sccMjitvH{gJx08r;BjDyO!_ebVWmJz(%=vsYRp z!f~eYo!2;j8Hdc?XyDA|w#{Thz$%kXisI~fYotLQC_+P_&CBm!bujUw7aM5ICT?}U zgV$lHfv>QM3b&M9*4%F8brd~uz-6f4RY|r#JmRtA?5~AHPn!$xVM2)ynbblsLVG-J zy*r80a=41i^3g+XU!sW?SYheb__~P&kLlWJ?d+-q9NTz(ekBCOec@S!RhR8U1;Dl& z`xbvW+e?gZ)G$S|PL@-jUw$KZYqDAZ-^^418XT6ZoVE=0GIy1rAc1E`<1^L9xicFm zBx0;NBG9;mI{vHAnyhKg2D+Jn6g*$y;n~fd=c^#(6|QRQptVVUs&}Le6$YD5AecGg zg2tn)eF(y>_XjCunn?n zeG@OEnRCuC{QD(V%ixAI{g}hL#QaWbpls7AR#Lu?PLq*CT429_-JI2r+$e|8_3s^b zFd3ZYbuhO20+seQTx1pszDZyML(eU*C9~`N#((^0_}q>adGS^#j&l%yUu*bN=-ZL! zKm(u_M-Z0)$4DixRid)lNZwszX_q{to-=YDFOiAkk34Yy7$~eRi{-0R*HVpMLUPi0 zCS(I00ShJDiOPGn8F|e?+=GT=*LM@KKh);cuIYLSN3|bHmTaL?^Tkw01s_3H@r0w+ z;2=Ikw&C|aIRm>RC11=K%gk1<$Zb-58->@FzJlQ~RS#Bi`^r+JmyaFcnSZgCh@ra> zXYBT!c1j4CNQX>FR{1}pOFm}t7e90e-xPNE zq&j7)aKDM5%VhowK5FA8^%cx8ce~%88iv|>&_KTx(^xVZ@?c!oLUqH?NbIcQo616B z9Lm{Y`!@~6jSKsIPem(0-pnHw?&zLQ!l*?ocgOqaRfD!1e6kEz7hTNGO)v+x)MWTD z6{J)OyK#)sI9~@B_^}h<@17tcPRA!?FW1Cz23xczxr3fbxrD}2$owc#|=XdS>iKernwdW z;(uRWZY%D2EreKc%e2OBs`X%n)NyO|qpM9zJ;doT@-INa?d1I6>>aloEiekvab8Vn zODFxJVv3}4(>ugGjI~@QdE>KsTmTTeaPR^4^O38p?nvuP%wt=1y6uvl4e3RWu~o_O z@=?mp;o}~i=hbIToVPdnxlzl;GfuL^M-s+a5{3=WGXm92DPd0b?<-~E8Qd@Mj3T2w z{b1t7>Mc74?=G(~axJ&>zFP@b_T$TE^)a)I7CDj;>|9d^qtaI$7w8=0K)X<=JO$*= zzTXy!hnh`>xe=%|jTC4UL#DcRX{)^YYlVyOLRCmugvQr_HS27Wg}>hgoX$;jH%?{Fu!<~aZsZtv-@*s4g6 z>%A1J6Gyo&>SZ>bEuEEcuvUL76May7{JF6pe^ySkbxRmimQwb8O((?$5C6jSr~T8~FbCEXl%Z`-;qLxwv~V^hSiU{Zjpp%!Nz6tk1k@eV{E`~hgD7! zsV_b~X|5Fm&<+SvtmqHO)F^L}mbj)>0ueqsRZF`u(+;}c5p~d!f}G@=(wB1$>|QQ? z^b2wckF5_CR3K25x9S)U8WaHp&uyxL%7a6CFH}n3GD=_5TDTM2;T$m)#`*Y2#+wta zVoKD__!u_xdKC!L4Z(cZ$dT9S9?z8(Bgk906#*Y@G>)e=7~2~(*EZma!=)C)dtpj|vUv>F&u3glcLG!z53%Y*MwAb0bjKo2!%s2%WoqM0|k_40FDUE1j`d%M@M?zBousq$|U zWXUS4NtDgVh&xSnY6O8>ToYL@8K4FBj(&PDIvgl&XSY0Ae3o9bWzc6^Ia#g0Jzbx> zY+cS9gn4ISjmWHQ#$(1|X!h($x(;rMON8sg z8$*BbYww0Dr@ z{;X{$O`b%0TD4nF9p`{WrDQYGo@LqDxRkk@6VCtq-uWKLky{ghB6~Q=*x{ z=tbR}@Rx<>>To`$gIn;dNTAE@ol&xDmDu`P_JD2iW!q&^2Pia@?QKynH6xlpOvO}} z4uZf|#nXZc9?uFhX0xw3e02aVzJou&#x%ky55>8&Z6kyuNlgLJtKgt^NjXu+=k~G7 zARK5ibbK`D>JK4NFT=CvE1qXCj){7KW9kz-_lmViqu@wh46q^i*l5g2e05AC?uIX| ztBdGrz(F)ier+jul)DTfN8T!JE07t;ypufgK z90>#;<-<7i%3@2ivhbh>brBWmVp~;gqyED{vve(^tR?XC%xJk#uR_E;x~6e5krygZ zt1t|_Jq-)+Z;%9ndNU2&jR7mORkKPle)qQl2GSq=?q!;sqKEC8yqttosF!_ zitm2Xakuj_J;%o?BV|9xR`ftG^MkK$>n#*}Y&X2b{+U4VsxwM@IViNa~e*zJ#Yns@uS&!CSwB(TV1mv4H6BA#20&r$o@<(JaY7cgw&Sgx5$;67h-06CpWt)VOeW2$vx(PS1E$G-KWogSZao)CP zG8mL*wIyXICTB7HPY;wxZH&`K1@SZdvrVn_k;%6!?ru*RDy*P;#@J0cf&n+PN@e3D z!Io&()pPqG;Q&E$?$zbjeihQO{5_v6#_ct=Leg7ns$vSap7jr{vH^=kMlWnvqOSuv zgU4NS^Ub1&gw~XBIA_0#tS2gI+}+a~Mb-Bb=5DQaN)?HvSXT=rt6I!_^I?9B-q`nY z{S#doq(`D3LvZc|=oGBs%f&L1Q1@@9!%$JfV%pB z`3W2RT>^TELcNK2`@C>Z^*#MuyRqZut_botq(Z7=WmW6IOwfN?I{x{w8P_B=q1~#@)Ad(k;I`Y(H}x_vw%pDe>H$m zdr;I%=f*;i2lTIzsz;)Sb_k1)@Zal%j6R%?0X+BsA^nUgx<)f74^-m(!0NqFrM0Gv z*=wPj$#4Ar5~-!_>wjr8?zoS_SQU5u&L(f^Ih7L}FYlyZdtt|yxhku=7g3P}>chSL zAo+Q|WJ4TaLlBN)I2@JrjCE>VZxgJdYNlptnW@^gaRfTmOyMtgB^jmP-_x&$yPsSO zZ_X2TwADD1v=;GA%e4DwnF;-+y;-YZrdXR zD<#tt*h4U7Q_5guerZ>|TJN=hcNC#yn#>5$3&VR_Ox`%QL)Y|`H7VS+MPqWG2c`dw z5WNmw9v3X22<4LjIIfj1Qac*yBkEz33M)Gt+Z&W_*=ozpdp?nt{wg1e@J!W|vBU66 zI-C%GmBBiFAt)_FUs12-%?jf_KkS}{`U@Up{%Y4eEkg?A}pM%|cUEf1aQ)urSC8SO~P-^X{oJ0ey@`$7+ZT3?;RMLzM~idn9Lq>}zpyMAc! z%zBh~q6a>TQrfDRN%;++o+qiDfv4lu&;MXC^=`wk<-@9G(y{CD3ZHJ-wO3^ zyYPCx=o}j;CYQ>fn0LoVdh(Bl7bt}z->)*TMWhI*f0oZQ5R?Q6LT&sa0c-!f) z%0-=&8wmNltFgiI9o6GJ$)fhK znSl$r3=HL{c%jMU?JpU`-_@Vw-V~lVd%Ze4!ey6avC9o6^S-O77v?-uZ2QOEhG@md z0L1x4!&E>SE!a2L7v`k8(_Im@uQBm4KkRo9_chqTC^>sNYy}(omriq~nec?;ZeOt^ zG%ww@2@F*;X7*@Ni!~A6W(l@^MWSA^L^RQuB)j_CHOEddHB(hcf(&EOUc8;3I5TkO zJX6aEEuy_DQ?!91@JCU&Di^PjC#b`f9RGBxCD%wSb87RRo{QlVSk%wVI4J713Z96e z^a@^=vB0Dz1W-sk*gRiL)t7-SiC{=SWjF8Ii~I0+`K9-q%v0 z(67LK;08~Rys{J7&qdb7a8bu)CFY#kJ&jfYfmDoAN{0CqiD=Ju1y;<4Xcb@(l^nZY z+B`RvUcvh779&oL_ARKO)Y8+-28!$?)^#qREag6`r)p)yxZtbmsOUnzAMdKpHDdvX zIOitYcU_eOz}m}d>gWM2O=Ah&3`Fr$HH)uXEHT{b*YHjU?gD9=wYFZ9hHj{Q&OP#K z#vA#a5kQan#j94M@IPCrRkGvDf=c#8RtL`?o~l8%E47cUwTYb#vCgP#oyTjNhNGhL<)2 zfVRRMs51{Yg3mWsWru5y$<_}X3Rmv1vu?>-GA`&lSRYd0y1-@_Q^GiFO{y6soR#8( z4Y%~&>dGh9d?nHChC|)M;VL;(F?P%wgH`CJqJPJIzo^$8TXK6aD!otZ$YR^eW?Ywl z^|79=R_uc%8)F^I;l9=6yRjJ^ciz6qt9XX4(BJl8u+@+9nQb4F`hd|%kh zT>d|N<>iRNzPUfWvwlPeavsOYD;?hFn^Pze;uPDlwU{a=A#GE7QQ{k%R>#sbA^&bo zzY6lwX^mfZOEr?xz+Zv3TS z9k<1D*dV}mm#swOd7w^_DhN23<3VobJ!N#4d5mgisB5bvm#7q!>CdA|=!TE#qjZ)# z?*Ehy_T0LccDU#)q^}VF+jg&#^(j!6#X+M^JRhB&@+aDEx;7C!D;;1j4keO0vPynx z3wet`9El=B4Y7<|=r0q+%=P8(E!HV{EC2_VlLuQwZC&#h=Ri5hmgJ+zrf1lCAAbE=eeLQY49ewo{;RJd

r8EhPctCV;Z@c+ta*0yLr zTZPC=7P(Acj`DZFq387P6*!p8y_oZ$+t;h@0r>gW|H9928?}ULz?TXJsUAp}AxL#y z0lOGkqcoqc&=Rb&#gtIktI1hfU7>a~6oik=^;E{Q$=-c$L~1SJ*HP--5iCQo9<9YW z_!_oCt~=xEtN(r~AN?x+@81!`qhsP{W@feyR#*qgr7WKJI~)YMBE08Dn#kdMIwNh- z4DGpd4zb%W*ou4FH!`l2>EHNy=XzT^yS4(O=rzl;$Z778(L1wA?BzPDQTEk?qaKS| zi}@Q_$)~FrO4bEEn!?XCaiyDTqFK02GKfgHTZ-7H<`9dUWtI*UPe)n29+EvRzE%Zn zr@jEe8dp1us(8cfjAl=Kz@e{C_x0pQkhAIidWT+aoUTF#O(idWF!}7d!zB?7nKxo~ z--G{M3_q^R={-1R$o=sqq|xNioJyZl9>LojXv#8)PZaRMivQMMr;jmq^tF??&d>Y% zcUay${gBgmsaflv60DurvAKBma_3q>&+Ej+aJA>tc27Gfw+}mLCM+&t1?}1uq9pRi zw>z3(i~ZRSeomxpV8OvT@0=OvOEuFs_J3}30oe}^iO&THDD#EgX`LSb$j65$?$b}+ zCEpr()KJi|5hic)LDwgoLC(j5uO+eFh3S znIeBKSU767C)>TRzzDPfsA^SdLub#A_cRX~TAycXTp+&a!CLk*PiZl1n1-GIr>FPr z?BOGJ(J@vY6kY+%$jo$daBwL5zPU;}WRAdY9B#|k3p$Z!2s_V1-hj!@f4;w9zF%o7 z%~5Gqr3_Z!ZZnuy`gRtUW_~lIAT4Lk{Pcxhn1xS)QudJc+<$w)oh$#o+-5&8wKhoPMoOm%KohT6%eW~_N^#O7oshIdRV6L zuJSb5___@{|AE!%Dj7XOTc=7!e%VW1+}yeUw_DW-upvD?QS-Zb%k0%F?kw{bXwuWC zPt_b<*}7Hk!Z|r($IR1TUbSgU&DA4E2_L=V93YvqN=dKC7{FG+1)Yk0gtO+!Crg5y z;5YaKA+o@dPrSJ4!@F@s>SWm{_UY3e<1)72fddDgU+rlCNGmG?vs8I{wtZ{|+SHBO z*wmCWdDc&f47QLpPTyi}(`3$-_g1iOhH%T}ybVWE?#6d6k2VM#OV+Yx&;EbeTHyb< zHP?;{K#TQ7Vv};I@D%PVCJBVk z)J|E9408^WZO79>YwqXJeEYh~mIUKr(Au5rSbUwt}yUZpaBXBW8uV9Bu-tCrc|NV+B+_TuNyu$B$B$M?zZ%J7b{W*x> z-OkfSMr&sjs1n?4+g3XS*0O;qno?Q4tJ(~t&&J)89K-fSGPfpxm1DvdUjHHkT)YLaPZbzxR9qbPZGPSjI&w5(&Ldeg7ZnkEQ> z2ThJ^=Q07{T6WD!cOa{@Bg{d#sV1-Yj&1F%s8{2^{Cl0|4R)N>y97I>bRsEz$QOL& zif7?abUhFhUru;BYYF!Eo1dz?*znH5MLp48^d0bgk4_o=`~in&Z^6tHC(iTUlF=UG z!J#T@3cjB6UzpT>rdS*GWPIB|^&5wjj_*pLY8Rdu)r7tc;@jvoO*RBR_cJte>Ut&*eLP6jb@5@^CgHR8BHHB14-sqR=0pgP|b66Abc}aOe zl^2DZGz~u>e8-wDrO$h84t|Sh93cKsV*^Av-s(Nf}&3$H*zxxztyo z84o`gRr4o$SSufKpAlE2w1EKMmx)MbbB8ugLK*x7cF74gFw4q&dgHwB2YwBEdx)Di zx82go^IP9J6qX7wN%{sj2K&!4jezaOleVqBN^le-@ZJ5u+SR! zA$Z}g-oYf|O!|kKU_;eQsgfpgBZ?dIKyp$80(e|x{VVUi!h%Z(BvLy}aNxznF=q^n zYe{88Hk7DyfeY3G6n$Mt|OE?&cjQl`QIFgCxf8rMgDt&&Vm|MeKLY>Rtd>9Y^j}Z#J{%o z|E;R~u-KKPQ{vAG3}A*81%A>%kN^eBy-({Slpkf`)9h#D`E3pTg(cRC`y6>iN@d3` z8Lxr&gLfN5a>f(Uv+mO>UBnY^8AZD?3+a=1-E#%|a{#CAF@{=KJw7Q`xYv3ap>5az zjc}8r9IW^7u4r?rf2^LX3l&i6!<@z@Hw7)p-4VKLE!V=0R&GVcaIWYD`zgwTqSR#l z6$SKu+n0ravs9n2>O5Rzgx9DrI~}^BTzAploPW`QJ)OfA(UXj{hBw#Jk8~kIzJ!0V{@%g-cn-2Jbv zxoRi!Z#xr0?&QdBc%FG9;~{;XK4k2WR2cSKb}0~k>4zEKzFc`J%gkk-9UW2M*Rz0r z%_Wn`5ZSta(K#DMMz7V5p06YRVEG?1UaWrJkP-?}Sh(t@{~|Y@I#5u$6jsM9IX4Fl zY%rqX>^TIZxHML8v@}tz)l843@W2f`a&%jZ zlTN%kh_N@`I&Z&OikyU5fr)I2tntB&6z!VYyQ-$Sie5h49iPYwy7^X!zHP_k*iEtY zKL102Wz737Wzp_}FzPEfz zVltp9;0Gsb{nG%qk)85ahK(D-%d zoZs3BA7xUb2idt%uAC!t-skr851JM1r6BJ`jMe*_xgn;cbOOl->;1+j8n71(Sz~Sv z)tt>Ysc~}2K&X*rb*7>NS#=Fg^?ti^F%)TFO75N>d_7Vx++9W1$>;lzuWI8CMORZU zRQW0zDV#X5Xf(s#{z`tMupfh6-A~OR_DNIwn@wS5}zwt3BnhklAS zjlaH{H+p`>>YYgF0)XXIj{tLtY9VQg7SBf-xRaXJi$*QsPJHw$8v1pei5*sev8=-P z#`m7@QYh6X4}vnyxO_b1KR#=exXo(%I$`_6z;EsdzP(9$w0H!cbP57WnDv_O^K-adOTjimXefba0xq3B#0d�H#`E+Zg6o)}3ub(6$V8AxZ1;Rm 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 diff --git a/quickstarts/manage-data/airflow-azure-to-teradata-transfer-operator-doc.md b/quickstarts/manage-data/airflow-azure-to-teradata-transfer-operator-doc.md index a1ccde72ee2..e68ad54ac26 100644 --- a/quickstarts/manage-data/airflow-azure-to-teradata-transfer-operator-doc.md +++ b/quickstarts/manage-data/airflow-azure-to-teradata-transfer-operator-doc.md @@ -1,220 +1,255 @@ --- sidebar_position: 4 author: Satish Chinthanippu -email: satish.chinthanippu@teradata.com -page_last_update: July 24th, 2024 -description: Transferring CSV, JSON, and Parquet data from Azure Blob Storage to Teradata Vantage with Airflow's Azure Cloud Transfer Operator -keywords: [data warehouses, teradata, vantage, transfer, cloud data platform, object storage, business intelligence, enterprise analytics, airflow, airflow teradata provider, microsoft azure blob storage] +email: satish.chinthanippu@teradata.com, developer.relations@teradata.com +page_last_update: July 22nd, 2026 +description: Transferring CSV, JSON, and Parquet data from Azure Blob Storage to Teradata with Airflow's Azure Cloud Transfer Operator +keywords: [data warehouses, teradata, transfer, cloud data platform, object storage, business intelligence, enterprise analytics, airflow, airflow teradata provider, microsoft azure blob storage] --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; import TrialDocsNote from '../_partials/teradata_trial.mdx' -# Data Transfer from Azure Blob to Teradata Vantage Using Apache Airflow +# Data Transfer from Azure Blob to Teradata Using Apache Airflow ## Overview -This document provides instructions and guidance for transferring data in CSV, JSON and Parquet formats from Microsoft Azure Blob Storage to Teradata Vantage using the Airflow Teradata Provider and the [Azure Cloud Transfer Operator](https://airflow.apache.org/docs/apache-airflow-providers-teradata/stable/operators/azure_blob_to_teradata.html). It outlines the setup, configuration and execution steps required to establish a seamless data transfer pipeline between these platforms. +This document provides instructions and guidance for transferring data in CSV, JSON and Parquet formats from Microsoft Azure Blob Storage to Teradata using the Airflow Teradata Provider and the [Azure Cloud Transfer Operator](https://airflow.apache.org/docs/apache-airflow-providers-teradata/stable/operators/azure_blob_to_teradata.html). It outlines the setup, configuration and execution steps required to establish a seamless data transfer pipeline between these platforms. :::note -Use [The Windows Subsystem for Linux (WSL)](https://learn.microsoft.com/en-us/windows/wsl/install) on `Windows` to try this quickstart example. +On Windows, use [Windows Subsystem for Linux (WSL)](https://learn.microsoft.com/en-us/windows/wsl/install) to complete this quickstart. ::: ## Prerequisites -* Access to a Teradata Vantage instance, version 17.10 or higher. +* Access to a Teradata instance, version 17.10 or higher. -* Python 3.8, 3.9, 3.10 or 3.11 and python3-env, python3-pip installed. - - - ```bash - sudo apt install -y python3-venv python3-pip - ``` - - - ```bash - sudo apt install -y python3-venv python3-pip - ``` - - +* Python 3.10, 3.11, or 3.12 installed. +* `uv` installed. To install `uv` on Linux, WSL, or macOS, run: + + ```bash + curl -LsSf https://astral.sh/uv/install.sh | sh + ``` + + Restart the terminal and verify the installation: + + ```bash + uv --version + ``` + +## Install Apache Airflow + +1. Create and activate a Python virtual environment. + ```bash - brew install python + uv venv airflow_env + source airflow_env/bin/activate ``` - Refer [Installation Guide](https://docs.python-guide.org/starting/install3/osx/) if you face any issues. - - -## Install Apache Airflow -1. Create a new python environment to manage airflow and its dependencies. Activate the environment. +2. Install Apache Airflow 3.2.2. - ``` bash - python3 -m venv airflow_env - source airflow_env/bin/activate - AIRFLOW_VERSION=2.9.3 - PYTHON_VERSION="$(python3 --version | cut -d " " -f 2 | cut -d "." -f 1-2)" - CONSTRAINT_URL="https://raw.githubusercontent.com/apache/airflow/constraints-${AIRFLOW_VERSION}/constraints-${PYTHON_VERSION}.txt" - pip install "apache-airflow##${AIRFLOW_VERSION}" --constraint "${CONSTRAINT_URL}" + ```bash + AIRFLOW_VERSION=3.2.2 + uv pip install "apache-airflow==${AIRFLOW_VERSION}" ``` -2. Install the Apache Airflow Teradata provider package and the Microsoft Azure provider package. +3. Install the Airflow Teradata provider with Microsoft Azure support. - ``` bash - pip install "apache-airflow-providers-teradata[microsoft.azure]" + ```bash + uv pip install "apache-airflow-providers-teradata[microsoft.azure]" ``` -3. Set the AIRFLOW_HOME environment variable. - ``` bash - export AIRFLOW_HOME=~/airflow +4. Set the `AIRFLOW_HOME` environment variable. + + ```bash + export AIRFLOW_HOME=~/airflow-azure-quickstart ``` ## Configure Apache Airflow -1. Switch to the virtual environment where Apache Airflow was installed at [Install Apache Airflow](./airflow-azure-to-teradata-transfer-operator-doc.md) - ``` bash - source airflow_env/bin/activate - ``` +Configure the environment variables to enable the test connection functionality and prevent sample DAGs from loading in the Airflow UI. -2. Configure the listed environment variables to activate the test connection button, preventing the loading of sample DAGs and default connections in the Airflow UI. +```bash +export AIRFLOW__CORE__TEST_CONNECTION=Enabled +export AIRFLOW__CORE__LOAD_EXAMPLES=false +``` - ``` bash - export AIRFLOW__CORE__TEST_CONNECTION=Enabled - export AIRFLOW__CORE__LOAD_EXAMPLES=false - export AIRFLOW__CORE__LOAD_DEFAULT_CONNECTIONS=false - ``` -## Start the Apache Airflow web server -1. Run airflow's web server +## Start Apache Airflow - ``` bash +1. Start Airflow Standalone. + + ```bash airflow standalone ``` -2. Access the airflow UI. Visit https://localhost:8080 in the browser and log in with the admin account details shown in the terminal. +2. Open [http://localhost:8080](http://localhost:8080) in a browser. Log in with the `admin` username and the password displayed in the terminal. ![Airflow Password](../images/airflow-console-password.png) -## Define the Apache Airflow connection to Vantage +## Define the Apache Airflow connection to Teradata -1. Click on Admin - Connections -2. Click on + to define a new connection to a Teradata Vantage instance. -3. Assign the new connection the id `teradata_default` with Teradata Vantage instance details. - * Connection Id: teradata_default - * Connection Type: Teradata - * Database Server URL (required): Teradata Vantage instance hostname to connect to. - * Database: database name - * Login (required): database user - * Password (required): database user password +1. In the Airflow UI, select **Admin > Connections**. +2. Click **Add Connection**. +3. Configure the connection using the following details: + * Connection Id: `teradata_default` + * Connection Type: `Teradata` + * Database Server URL: Teradata instance hostname. + * Database: Database name. + * Login: Database user. + * Password: Database user password. +4. Save the connection. +5. Open the saved connection and test it. -Refer [Teradata Connection](https://airflow.apache.org/docs/apache-airflow-providers-teradata/stable/connections/teradata.html) for more details. +Refer to the [Teradata Connection](https://airflow.apache.org/docs/apache-airflow-providers-teradata/stable/connections/teradata.html) documentation for more information. -## Define DAG in Apache Airflow -DAGs in airflow are defined as python files. The DAG below transfers data from Teradata-supplied public blob containers to a Teradata Vantage instance. Copy the python code below and save it as `airflow-azure-to-teradata-transfer-operator-demo.py` under the directory $AIRFLOW_HOME/dags. +## Define a DAG in Apache Airflow -This DAG is a very simple example that covers: +Airflow DAGs are defined in Python files. The following DAG transfers CSV data from a Teradata-provided public Azure Blob Storage container to Teradata. -- Droping the destination table if it exists -- Transfer of the data stored in object storage -- Get the number of transferred records -- Write the number of transferred records to the log +1. Create the DAG directory and open a new Python file: -Refer [Azure Blob Storage To Teradata Operator](https://airflow.apache.org/docs/apache-airflow-providers-teradata/stable/_api/airflow/providers/teradata/transfers/azure_blob_to_teradata/index.html) for more information on `Azure Blob Storage to Teradata` Transfer Operator. + ```bash + mkdir -p "$AIRFLOW_HOME/dags" + nano "$AIRFLOW_HOME/dags/airflow-azure-to-teradata-transfer-operator-demo.py" + ``` -``` python +2. Copy the following code into the file: -from __future__ import annotations + ```python + from __future__ import annotations -import datetime + import datetime -from airflow import DAG -from airflow.operators.bash import BashOperator -from airflow.providers.teradata.operators.teradata import TeradataOperator -from airflow.providers.teradata.transfers.azure_blob_to_teradata import AzureBlobStorageToTeradataOperator + from airflow import DAG + from airflow.operators.bash import BashOperator + from airflow.providers.teradata.operators.teradata import TeradataOperator + from airflow.providers.teradata.transfers.azure_blob_to_teradata import AzureBlobStorageToTeradataOperator -DAG_ID = "example_azure_blob_to_teradata_transfer_operator" -CONN_ID = "teradata_default" -with DAG( - dag_id=DAG_ID, - start_date=datetime.datetime(2020, 2, 2), - schedule="@once", - catchup=False, - default_args={"teradata_conn_id": CONN_ID}, -) as dag: - # Drop table if it exists - drop_table_if_exists = TeradataOperator( - task_id="drop_table_if_exists", - sql="DROP table example_blob_teradata_csv;", - ) - # Transfer data from Azure blob storage to Teradata Vantage instance - transfer_data_csv = AzureBlobStorageToTeradataOperator( - task_id="transfer_data_blob_to_teradata_csv", - blob_source_key="/az/akiaxox5jikeotfww4ul.blob.core.windows.net/td-usgs/CSVDATA/09380000/2018/06/", - public_bucket=True, - teradata_table="example_blob_teradata_csv", - teradata_conn_id="teradata_default", - trigger_rule="always", - ) - # Get the number of records transferred from azure blob to teradata table - read_data_table_csv = TeradataOperator( - task_id="read_data_table_csv", - sql="SELECT count(1) from example_blob_teradata_csv;", - ) - # Print number of records in table - print_number_of_records = BashOperator( - task_id='print_number_of_records', - bash_command="echo {{ ti.xcom_pull(task_ids='read_data_table_csv') }}", - ) - ( - drop_table_if_exists - >> transfer_data_csv - >> read_data_table_csv - >> print_number_of_records - ) + DAG_ID = "example_azure_blob_to_teradata_transfer_operator" + CONN_ID = "teradata_default" + + with DAG( + dag_id=DAG_ID, + start_date=datetime.datetime(2020, 2, 2), + schedule="@once", + catchup=False, + default_args={"teradata_conn_id": CONN_ID}, + ) as dag: + # Drop the destination table + drop_table_if_exists = TeradataOperator( + task_id="drop_table_if_exists", + sql="DROP TABLE example_blob_teradata_csv;", + ) + + # Transfer data from Azure Blob Storage to Teradata + transfer_data_csv = AzureBlobStorageToTeradataOperator( + task_id="transfer_data_blob_to_teradata_csv", + blob_source_key="/az/akiaxox5jikeotfww4ul.blob.core.windows.net/td-usgs/CSVDATA/09380000/2018/06/", + public_bucket=True, + teradata_table="example_blob_teradata_csv", + teradata_conn_id="teradata_default", + trigger_rule="always", + ) + + # Get the number of records transferred to the Teradata table + read_data_table_csv = TeradataOperator( + task_id="read_data_table_csv", + sql="SELECT COUNT(*) FROM example_blob_teradata_csv;", + ) + + # Write the number of records to the task log + print_number_of_records = BashOperator( + task_id="print_number_of_records", + bash_command="echo {{ ti.xcom_pull(task_ids='read_data_table_csv') }}", + ) + + ( + drop_table_if_exists + >> transfer_data_csv + >> read_data_table_csv + >> print_number_of_records + ) + ``` + +3. Save the file and exit the editor: + + ```text + Ctrl+O + Enter + Ctrl+X + ``` + +This DAG performs the following operations: + +* Attempts to drop the destination table. +* Transfers data from the public Azure Blob Storage container to Teradata. +* Retrieves the number of transferred records. +* Writes the number of transferred records to the task log. + +Refer to the [Azure Blob Storage to Teradata Operator](https://airflow.apache.org/docs/apache-airflow-providers-teradata/stable/_api/airflow/providers/teradata/transfers/azure_blob_to_teradata/index.html) documentation for more information. + +## Load the DAG + +After saving the DAG file in the `$AIRFLOW_HOME/dags` directory, Airflow automatically processes it and displays it on the **DAGs** page. The DAG may take a few minutes to appear. + +To check for DAG import errors, open another terminal, activate the virtual environment, set `AIRFLOW_HOME`, and run: + +```bash +source airflow_env/bin/activate +export AIRFLOW_HOME=~/airflow-azure-quickstart +airflow dags list-import-errors ``` -## Load DAG +Refresh the Airflow UI after the DAG has been processed. -When the DAG file is copied to $AIRFLOW_HOME/dags, Apache Airflow displays the DAG in the UI under the DAGs section. It will take 2 to 3 minutes to load the DAG in the Apache Airflow UI. +## Run the DAG -## Run DAG +1. On the **DAGs** page, locate `example_azure_blob_to_teradata_transfer_operator`. +2. Click the **Trigger DAG** icon on the right side of the DAG row. +3. In the dialog box, select **Single Run**, keep the default data interval, and click **Trigger**. +4. Open the DAG to monitor the task execution in the **Grid** view. -Run the dag as shown in the image below. +![Run DAG](../images/dag.png) -![Run dag](../images/dag.png) +## Transfer data from a private Azure Blob Storage container to Teradata -## Transfer data from Private Blob Storage Container to Teradata instance -To successfully transfer data from a Private Blob Storage Container to a Teradata instance, the following prerequisites are necessary. +To transfer data from a private Azure Blob Storage container to Teradata, complete the following prerequisites: -* An Azure account. You can start with a [free account](https://azure.microsoft.com/free/). -* Create an [Azure storage account](https://docs.microsoft.com/en-us/azure/storage/common/storage-quickstart-create-account?tabs=azure-portal) -* Create a [blob container](https://learn.microsoft.com/en-us/azure/storage/blobs/blob-containers-portal) under Azure storage account -* [Upload](https://learn.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-portal) CSV/JSON/Parquest format files to blob container -* Create a Teradata Authorization object with the Azure Blob Storage Account and the Account Secret Key +* Create an [Azure account](https://azure.microsoft.com/free/). +* Create an [Azure storage account](https://docs.microsoft.com/en-us/azure/storage/common/storage-quickstart-create-account?tabs=azure-portal). +* Create a [blob container](https://learn.microsoft.com/en-us/azure/storage/blobs/blob-containers-portal) in the Azure storage account. +* [Upload](https://learn.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-portal) CSV, JSON, or Parquet files to the blob container. +* Create a Teradata authorization object using the Azure storage account name and access key. - ``` sql - CREATE AUTHORIZATION azure_authorization USER 'azuretestquickstart' PASSWORD 'AZURE_BLOB_ACCOUNT_SECRET_KEY' + ```sql + CREATE AUTHORIZATION azure_authorization + USER 'azuretestquickstart' + PASSWORD 'AZURE_BLOB_ACCOUNT_ACCESS_KEY'; ``` :::note - Replace `AZURE_BLOB_ACCOUNT_SECRET_KEY` with Azure storage account `azuretestquickstart` [access key](https://learn.microsoft.com/en-us/azure/storage/common/storage-account-keys-manage?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json&bc=%2Fazure%2Fstorage%2Fblobs%2Fbreadcrumb%2Ftoc.json&tabs=azure-portal) + Replace `azuretestquickstart` with the Azure storage account name and `AZURE_BLOB_ACCOUNT_ACCESS_KEY` with its [access key](https://learn.microsoft.com/en-us/azure/storage/common/storage-account-keys-manage?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json&bc=%2Fazure%2Fstorage%2Fblobs%2Fbreadcrumb%2Ftoc.json&tabs=azure-portal). ::: -* Modify `blob_source_key` with YOUR-PRIVATE-OBJECT-STORE-URI in `transfer_data_csv` task and add `teradata_authorization_name` field with Teradata Authorization Object name +* In the `transfer_data_csv` task, replace `YOUR-PRIVATE-OBJECT-STORE-URI` with the URI of the private container and add the `teradata_authorization_name` parameter with the Teradata authorization object name. - ``` python + ```python transfer_data_csv = AzureBlobStorageToTeradataOperator( - task_id="transfer_data_blob_to_teradata_csv", - blob_source_key="YOUR-OBJECT-STORE-URI", - teradata_table="example_blob_teradata_csv", - teradata_conn_id="teradata_default", - teradata_authorization_name="azure_authorization", - trigger_rule="always", - ) + task_id="transfer_data_blob_to_teradata_csv", + blob_source_key="YOUR-PRIVATE-OBJECT-STORE-URI", + teradata_table="example_blob_teradata_csv", + teradata_conn_id="teradata_default", + teradata_authorization_name="azure_authorization", + trigger_rule="always", + ) ``` - ## Summary -This guide details the utilization of the Airflow Teradata Provider’s Azure Cloud Transfer Operator to seamlessly transfer CSV, JSON, and Parquet data from Microsoft Azure Blob Storage to Teradata Vantage, facilitating streamlined data operations between these platforms. + +This guide demonstrated how to use the Airflow Teradata Provider’s Azure Blob Storage to Teradata Transfer Operator to transfer CSV, JSON, and Parquet data from Microsoft Azure Blob Storage to Teradata. ## Further reading -* [Apache Airflow DAGs reference](https://airflow.apache.org/docs/apache-airflow/stable/core-concepts/dags.html) + +* [Apache Airflow DAGs](https://airflow.apache.org/docs/apache-airflow/stable/core-concepts/dags.html) * [Teradata Authorization](https://docs.teradata.com/r/Enterprise_IntelliFlex_VMware/SQL-Data-Definition-Language-Syntax-and-Examples/Authorization-Statements-for-External-Routines/CREATE-AUTHORIZATION-and-REPLACE-AUTHORIZATION) -* [Install WSL on windows](https://learn.microsoft.com/en-us/windows/wsl/install) +* [Install WSL on Windows](https://learn.microsoft.com/en-us/windows/wsl/install) \ No newline at end of file