{"id":6110,"date":"2023-05-30T11:04:47","date_gmt":"2023-05-30T11:04:47","guid":{"rendered":"https:\/\/bentego.com\/azure-uzerinde-data-pipeline-olusturma\/"},"modified":"2023-05-30T11:04:47","modified_gmt":"2023-05-30T11:04:47","slug":"azure-uzerinde-data-pipeline-olusturma","status":"publish","type":"post","link":"https:\/\/bentego.com\/tr\/azure-uzerinde-data-pipeline-olusturma\/","title":{"rendered":"Azure \u00fczerinde Data Pipeline Olu\u015fturma"},"content":{"rendered":"<p style=\"text-align: left;\">Merhabalar bu yaz\u0131mda sizlere Bulut Servis Sa\u011flay\u0131c\u0131lar\u0131ndan olan <strong class=\"kn ew\">Azure<\/strong> \u00fczerinde bir <strong class=\"kn ew\">Data Pipeline<\/strong> olu\u015fturma s\u00fcrecini anlataca\u011f\u0131m. Gelin isterseniz ilk \u00f6nce projemizin mimarisine bakal\u0131m. <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:1050\/1*5P8E-uh4BIKhoFiYVzL6lA.png\"><\/p>\n<p id=\"b6c9\" class=\"pw-post-body-paragraph kl km ev kn b ko kp kq kr ks kt ku kv kw kx ky kz la lb lc ld le lf lg lh li eo bj\" style=\"text-align: left;\" data-selectable-paragraph=\"\">Mimarimiz yukar\u0131da g\u00f6rm\u00fc\u015f oldu\u011funuz gibidir. Veri ak\u0131\u015f\u0131 anlat\u0131m\u0131na ge\u00e7meden \u00f6nce <strong class=\"kn ew\">Azure<\/strong> \u00fczerinde kulland\u0131\u011f\u0131m\u0131z servisleri k\u0131saca bir tan\u0131yal\u0131m. <\/p>\n<p id=\"476d\" class=\"pw-post-body-paragraph kl km ev kn b ko kp kq kr ks kt ku kv kw kx ky kz la lb lc ld le lf lg lh li eo bj\" style=\"text-align: left;\" data-selectable-paragraph=\"\"><strong class=\"kn ew\">Azure Resource Group \u2192 Microsoft Azure<\/strong> bulut platformunda kaynaklar\u0131n\u0131z\u0131 y\u00f6netmek i\u00e7in kullan\u0131lan bir yap\u0131d\u0131r. <strong class=\"kn ew\">Azure<\/strong>&#8216;da olu\u015fturdu\u011funuz kaynaklar, sanal makineler, depolama hesaplar\u0131n\u0131, a\u011f yap\u0131land\u0131rmalar\u0131n\u0131, uygulamalar\u0131 ve di\u011fer hizmetleri mant\u0131ksal bir grup i\u00e7inde toplaman\u0131z\u0131 sa\u011flar.<\/p>\n<p id=\"9c9e\" class=\"pw-post-body-paragraph kl km ev kn b ko kp kq kr ks kt ku kv kw kx ky kz la lb lc ld le lf lg lh li eo bj\" style=\"text-align: left;\" data-selectable-paragraph=\"\"><strong class=\"kn ew\">Azure Data Factory \u2192 Microsoft Azure<\/strong> bulut platformunda veri entegrasyonu ve veri i\u015fleme i\u015flerini otomatikle\u015ftirmek i\u00e7in kullan\u0131lan bir hizmettir. <strong class=\"kn ew\">Azure Data Factory<\/strong>, farkl\u0131 veri kaynaklar\u0131 aras\u0131nda<strong class=\"kn ew\"> veri hareketini<\/strong>, <strong class=\"kn ew\">d\u00f6n\u00fc\u015f\u00fcm\u00fcn\u00fc<\/strong> ve <strong class=\"kn ew\">i\u015flenmesini<\/strong> sa\u011flayarak<strong class=\"kn ew\"> veri entegrasyonunu<\/strong> kolayla\u015ft\u0131r\u0131r.<\/p>\n<p id=\"cad0\" class=\"pw-post-body-paragraph kl km ev kn b ko kp kq kr ks kt ku kv kw kx ky kz la lb lc ld le lf lg lh li eo bj\" style=\"text-align: left;\" data-selectable-paragraph=\"\"><strong class=\"kn ew\">Azure Synapse Analytics \u2192 Microsoft Azure<\/strong> bulut platformunda, <strong class=\"kn ew\">verilerinizi analiz etmek, i\u015flemek ve raporlamak<\/strong> i\u00e7in kullanabilece\u011finiz g\u00fc\u00e7l\u00fc bir veri analiti\u011fi \u00e7\u00f6z\u00fcm\u00fcd\u00fcr<strong class=\"kn ew\">.Azure Synapse Analytics<\/strong>, veri ambar\u0131, veri entegrasyonu, veri sorgulama ve<strong class=\"kn ew\"> b\u00fcy\u00fck veri analiti\u011fi<\/strong> gibi i\u015flemleri<strong class=\"kn ew\"> tek bir platformda<\/strong> birle\u015ftirir.<\/p>\n<p id=\"c68a\" class=\"pw-post-body-paragraph kl km ev kn b ko kp kq kr ks kt ku kv kw kx ky kz la lb lc ld le lf lg lh li eo bj\" style=\"text-align: left;\" data-selectable-paragraph=\"\"><strong class=\"kn ew\">Azure Data Lake \u2192 <\/strong>B\u00fcy\u00fck veri depolama ve analizi i\u00e7in kullan\u0131lan bir hizmettir. <strong class=\"kn ew\">Azure<\/strong> bulut platformunda,<strong class=\"kn ew\"> yap\u0131land\u0131r\u0131lm\u0131\u015f<\/strong> ve<strong class=\"kn ew\"> yap\u0131land\u0131r\u0131lmam\u0131\u015f<\/strong> b\u00fcy\u00fck veri k\u00fctlelerini <strong class=\"kn ew\">g\u00fcvenli ve \u00f6l\u00e7eklenebilir<\/strong> bir \u015fekilde <strong class=\"kn ew\">depolamak<\/strong> i\u00e7in kullan\u0131l\u0131r.<\/p>\n<p id=\"aef6\" class=\"pw-post-body-paragraph kl km ev kn b ko kp kq kr ks kt ku kv kw kx ky kz la lb lc ld le lf lg lh li eo bj\" style=\"text-align: left;\" data-selectable-paragraph=\"\"><strong class=\"kn ew\">Azure SQL Database \u2192 Microsoft Azure<\/strong> bulut platformunda bar\u0131nd\u0131r\u0131lan ili\u015fkisel veritaban\u0131 hizmetidir. Geleneksel<strong class=\"kn ew\"> SQL Server<\/strong> veritaban\u0131n\u0131n<strong class=\"kn ew\"> bulut tabanl\u0131 bir s\u00fcr\u00fcm\u00fc<\/strong> olarak d\u00fc\u015f\u00fcn\u00fclebilir. <\/p>\n<p id=\"4502\" class=\"pw-post-body-paragraph kl km ev kn b ko kp kq kr ks kt ku kv kw kx ky kz la lb lc ld le lf lg lh li eo bj\" style=\"text-align: left;\" data-selectable-paragraph=\"\">Mimariye bakt\u0131\u011f\u0131m\u0131zda ilk k\u0131s\u0131mda <strong class=\"kn ew\">On-Premise<\/strong> tarafta ger\u00e7ekle\u015fen i\u015flemlerimiz mevcut. Gelin isterseniz ilk olarak lokalimizde \u00e7al\u0131\u015fan python koduna ve \u00e7\u0131kt\u0131s\u0131na bir bakal\u0131m. <\/p>\n<blockquote>\n<p data-selectable-paragraph=\"\"><span class=\"hljs-keyword\">import<\/span> spotipy<br \/>\n<span class=\"hljs-keyword\">from<\/span> spotipy.oauth2 <span class=\"hljs-keyword\">import SpotifyClientCredentials<br \/>\n import<\/span> pandas <span class=\"hljs-keyword\">as<\/span> pd<br \/>\n<span class=\"hljs-keyword\">from<\/span> datetime <span class=\"hljs-keyword\">import<\/span> date<br \/>\n<span class=\"hljs-keyword\">import<\/span> configparser<\/p>\n<p>parser = configparser.ConfigParser()<br \/>\nparser.read( <span class=\"hljs-string\">&#8220;conf.ini&#8221;<\/span>)<\/p>\n<p>client_credentials_manager = SpotifyClientCredentials(<br \/>\nclient_id = parser.get(<span class=\"hljs-string\">&#8220;<\/span>credentials<span class=\"hljs-string\">&#8220;, &#8220;CLIENT_ID&#8221;<\/span>),<br \/>\n<span class=\"hljs-string\"> client_secret<\/span>= parser.get(&#8220;credentials <span class=\"hljs-string\">&#8220;, &#8220;CLIENT_SECRET&#8221;<\/span>)<br \/>\n)<\/p>\n<p>sp = spotipy.Spotify(client_credentials_manager = client_credentials_manager)<\/p>\n<p>playlist_link = <span class=\"hljs-string\">&#8216;https:\/\/open.spotify.com\/playlist\/37i9dQZF1EIWxkuBxGv3mp&#8217;<\/span><\/p>\n<p>playlist_URI = playlist_link.split(<span class=\"hljs-string\">&#8220;\/&#8221;<\/span>)[<span class=\"hljs-number\">-1<\/span>]<br \/>\ndata = sp.playlist_tracks(playlist_URI)<br \/>\ndate_str = <span class=\"hljs-built_in\">str<\/span>(date.today())<\/p>\n<p>album_list = []<\/p>\n<p><span class=\"hljs-keyword\">for<\/span> row <span class=\"hljs-keyword\">in<\/span> data[ <span class=\"hljs-string\">&#8220;items&#8221;<\/span>]:<br \/>\nalbum_id = row[ <span class=\"hljs-string\">&#8220;track&#8221;<\/span>][ <span class=\"hljs-string\">&#8220;album&#8221;<\/span>][ <span class=\"hljs-string\">&#8220;id&#8221;<\/span>]<br \/>\nalbum_name = row[ <span class=\"hljs-string\">&#8220;track&#8221;<\/span>][ <span class=\"hljs-string\">&#8220;album&#8221;<\/span>][ <span class=\"hljs-string\">&#8220;name&#8221;<\/span>]<br \/>\nalbum_release_date = row[ <span class=\"hljs-string\">&#8220;track&#8221;<\/span>][ <span class=\"hljs-string\">&#8220;<\/span>album <span class=\"hljs-string\">&#8220;<\/span>][ &#8220;release_date&#8221;]<br \/>\nalbum_total_tracks = row[ <span class=\"hljs-string\">&#8220;track&#8221;<\/span>][ <span class=\"hljs-string\">&#8220;album<\/span> <span class=\"hljs-string\">&#8220;][ &#8220;total_tracks &#8220;<\/span>]<br \/>\nalbum_url = row[ <span class=\"hljs-string\">&#8220;track&#8221;<\/span>][ <span class=\"hljs-string\">&#8220;<\/span> <span class=\"hljs-string\">album<\/span>&#8220;][ &#8220;external_urls&#8221;][ <span class=\"hljs-string\">&#8220;spotify<\/span> &#8220;]<br \/>\nalbum_element = {<br \/>\n <span class=\"hljs-string\"> &#8220;album_id&#8221;<\/span>: album_id,<br \/>\n <span class=\"hljs-string\"> &#8220;isim&#8221;<\/span>: alb\u00fcm_ad\u0131,<br \/>\n <span class=\"hljs-string\"> &#8220;album_release_date&#8221;<\/span>: alb\u00fcm_release_date,<br \/>\n <span class=\"hljs-string\"> &#8220;album_total_tracks&#8221;<\/span>: album_total_tracks,<br \/>\n <span class=\"hljs-string\"> &#8220;album_url&#8221;<\/span>: album_url<br \/>\n}<br \/>\nalbum_list.append(album_element)<\/p>\n<p>artist_list = []<\/p>\n<p><span class=\"hljs-keyword\">for<\/span> row <span class=\"hljs-keyword\">in<\/span> data[<span class=\"hljs-string\">&#8220;items&#8221;<\/span>]:<br \/>\n <span class=\"hljs-keyword\"> for<\/span> key, value <span class=\"hljs-keyword\">in<\/span> row.items():<br \/>\n <span class=\"hljs-keyword\"> if<\/span> key == <span class=\"hljs-string\">&#8220;track&#8221;<\/span>:<br \/>\n <span class=\"hljs-keyword\"> for<\/span> sanat\u00e7\u0131 <span class=\"hljs-keyword\">in<\/span> value[<span class=\"hljs-string\">&#8220;sanat\u00e7\u0131lar&#8221;<\/span>]:<br \/>\nsanat\u00e7\u0131_dict = {<br \/>\n <span class=\"hljs-string\"> &#8220;artist_id&#8221;<\/span>: artist[<span class=\"hljs-string\">&#8220;id&#8221;<\/span>],<br \/>\n <span class=\"hljs-string\"> &#8220;artist_name&#8221;<\/span>: artist[<span class=\"hljs-string\">&#8220;name&#8221;<\/span>],<br \/>\n <span class=\"hljs-string\"> &#8220;external_url&#8221;<\/span>: artist[<span class=\"hljs-string\">&#8220;href&#8221;<\/span>]<br \/>\n}<br \/>\nartist_list.append(artist_dict)<\/p>\n<p>song_list = []<\/p>\n<p><span class=\"hljs-keyword\">for<\/span> row <span class=\"hljs-keyword\">in<\/span> data[ <span class=\"hljs-string\">&#8220;items&#8221;<\/span>]:<br \/>\nsong_id = row[ <span class=\"hljs-string\">&#8220;track&#8221;<\/span>][ <span class=\"hljs-string\">&#8220;id&#8221;<\/span>]<br \/>\nsong_name = row[ <span class=\"hljs-string\">&#8220;track&#8221;<\/span>][ <span class=\"hljs-string\">&#8220;name&#8221;<\/span>]<br \/>\nsong_duration = row[ <span class=\"hljs-string\">&#8220;track&#8221;<\/span>][ <span class=\"hljs-string\">&#8220;duration_ms&#8221;<\/span>]<br \/>\nsong_url = row[ <span class=\"hljs-string\">&#8220;track&#8221;<\/span>][ <span class=\"hljs-string\">&#8220;external_urls&#8221;<\/span>][ <span class=\"hljs-string\">&#8220;spotify<\/span> &#8220;]<br \/>\nsong_popularity = row[ <span class=\"hljs-string\">&#8220;track&#8221;<\/span>][ <span class=\"hljs-string\">&#8220;popularity&#8221;<\/span>]<br \/>\nsong_added = row[ <span class=\"hljs-string\">&#8220;added_at&#8221;<\/span>]<br \/>\nalbum_id = row[ <span class=\"hljs-string\">&#8220;track&#8221;<\/span>][ <span class=\"hljs-string\">&#8220;album&#8221;<\/span>][ <span class=\"hljs-string\">&#8220;id&#8221;<\/span>]<br \/>\nartist_id = row[ <span class=\"hljs-string\">&#8220;track&#8221;<\/span>][ <span class=\"hljs-string\">&#8220;album&#8221;<\/span>][ <span class=\"hljs-string\">&#8220;artists&#8221;<\/span>][ <span class=\"hljs-number\">0<\/span>][ <span class=\"hljs-string\">&#8220;id&#8221;<\/span>]<br \/>\nsong_element = {<br \/>\n <span class=\"hljs-string\"> &#8220;song_id&#8221;<\/span>: song_id,<br \/>\n <span class=\"hljs-string\"> &#8220;\u015fark\u0131_ad\u0131&#8221;<\/span>: \u015fark\u0131_ad\u0131,<br \/>\n <span class=\"hljs-string\"> &#8220;duration_ms&#8221;<\/span>: song_duration,<br \/>\n <span class=\"hljs-string\"> &#8220;url&#8221;<\/span>: song_url,<br \/>\n <span class=\"hljs-string\"> &#8220;pop\u00fclerlik&#8221;<\/span>: song_popularity,<br \/>\n <span class=\"hljs-string\"> &#8220;song_added&#8221;<\/span>: song_added,<br \/>\n <span class=\"hljs-string\"> &#8220;album_id&#8221;<\/span>: album_id,<br \/>\n <span class=\"hljs-string\"> &#8220;artist_id&#8221;<\/span>: artist_id<br \/>\n}<br \/>\nsong_list.append(song_element)<\/p>\n<p>album_df = pd.DataFrame.from_dict(album_list)<br \/>\nalbum_df = album_df.drop_duplicates(subset = [<span class=\"hljs-string\">&#8220;album_id&#8221;<\/span>])<\/p>\n<p>artist_df = pd.DataFrame.from_dict(artist_list)<br \/>\nartist_df = artist_df.drop_duplicates(subset = [<span class=\"hljs-string\">&#8220;artist_id&#8221;<\/span>])<\/p>\n<p>song_df = pd.DataFrame.from_dict(song_list)<br \/>\nalbum_df[<span class=\"hljs-string\">&#8220;release_date<\/span><span class=\"hljs-string\">&#8220;] = pd.to_datetime(album_df[&#8220;album_release_date&#8221;<\/span>])<br \/>\nsong_df[<span class=\"hljs-string\">&#8220;song_added<\/span><span class=\"hljs-string\">&#8220;] = pd.to_datetime(song_df[&#8220;song_added&#8221;<\/span>])<\/p>\n<p>song_df.to_parquet<span class=\"hljs-string\">(f &#8220;data\\\\<span class=\"hljs-subst\">{date_str}<\/span><\/span>_song_ds.parquet&#8221;,engine=&#8221;<span class=\"hljs-string\">fastparquet<\/span><span class=\"hljs-string\">&#8220;<\/span>)<br \/>\nalbum_df.to_parquet<span class=\"hljs-string\">(f &#8220;data\\\\<span class=\"hljs-subst\">{date_str}<\/span><\/span>_album_ds.parquet&#8221;,engine=&#8221;fastparquet&#8221;)<br \/>\nartist_df.to_parquet<span class=\"hljs-string\">(f &#8220;data\\\\<span class=\"hljs-subst\">{date_str}<\/span><\/span>_artist_ds.parquet<span class=\"hljs-string\">&#8220;,engine=&#8221;fastparquet&#8221;<\/span>)<\/p><\/blockquote>\n<h3><strong>Conf.ini<\/strong><\/h3>\n<blockquote>\n<p data-selectable-paragraph=\"\">[credentials]<br \/>\nCLIENT_ID = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX<br \/>\nCLIENT_SECRET = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX<\/p>\n<\/blockquote>\n<p data-selectable-paragraph=\"\"><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:843\/1*H_UxtPvGdTGTN14Vi3nOwg.png\"><\/p>\n<p id=\"eb98\" class=\"pw-post-body-paragraph kl km ev kn b ko kp kq kr ks kt ku kv kw kx ky kz la lb lc ld le lf lg lh li eo bj\" data-selectable-paragraph=\"\">G\u00f6rm\u00fc\u015f oldu\u011funuz <strong class=\"kn ew\">Python<\/strong> kodu <strong class=\"kn ew\">Spotify API<\/strong>&#8216;na istekte bulunarak d\u00f6nen sonu\u00e7tan 3 farkl\u0131 veri seti elde ederek bunlar\u0131 <strong class=\"kn ew\">parke <\/strong>format\u0131nda belirtilen dizine kaydediyor.<\/p>\n<p id=\"f9e4\" class=\"pw-post-body-paragraph kl km ev kn b ko kp kq kr ks kt ku kv kw kx ky kz la lb lc ld le lf lg lh li eo bj\" data-selectable-paragraph=\"\">Evet lokalimizdeki i\u015flemleri b\u00f6ylelikle bitiyoruz. \u015eimdi <strong class=\"kn ew\">Azure <\/strong>\u00fczerindeki servislerimizi olu\u015fturarak i\u015flemlerimize devam edelim. <\/p>\n<h3><strong class=\"kn ew\">Kaynak Grubu<\/strong> Olu\u015fturma \u0130\u015flemi:<\/h3>\n<p data-selectable-paragraph=\"\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:1050\/1*8He4AbwUII1F1yMXF7pOJw.png\"><\/p>\n<h3><strong class=\"kn ew\">Azure Veri G\u00f6l\u00fc<\/strong> Olu\u015fturma \u0130\u015flemi:<\/h3>\n<p><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:929\/1*xB-lVd6HTUSfK_8vJpPr8g.png\"><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:1050\/1*YIp9voASTPcanzvyCHveiw.png\"><\/p>\n<h3><strong class=\"kn ew\">Azure Data Factory <\/strong>Olu\u015fturma \u0130\u015flemi:<\/h3>\n<p><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:1050\/1*4OMx4YLapUrdoR8Zot4kSA.png\"><\/p>\n<h3><strong class=\"kn ew\">Azure Synapse Analytics <\/strong>Olu\u015fturma \u0130\u015flemi:<\/h3>\n<p data-selectable-paragraph=\"\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:987\/1*TCHOUTfB_S9ccj3WeHZNnw.png\"><\/p>\n<p data-selectable-paragraph=\"\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:996\/1*3SWNho0Q9KxykNTcNUd2Wg.png\"><\/p>\n<h3><strong class=\"kn ew\">Azure SQL Veritaban\u0131 <\/strong>Olu\u015fturma \u0130\u015flemi:<\/h3>\n<p data-selectable-paragraph=\"\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:1050\/1*xKbbvi_J2TzGvMKXsHVoVg.png\"><\/p>\n<p data-selectable-paragraph=\"\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:1050\/1*BB7pXpH1EUKyagVnIojvZQ.png\"><\/p>\n<p style=\"text-align: left;\" data-selectable-paragraph=\"\">Gerekli servisleri olu\u015fturdu\u011fumuza g\u00f6re <strong class=\"kn ew\">Azure Data Factory Studio <\/strong>ekran\u0131na giderek <strong class=\"kn ew\">Manage<\/strong> sekmesinden <strong class=\"kn ew\">Integration Runtimes(IR)<\/strong> k\u0131sm\u0131na gelerek lokalimizle ba\u011flant\u0131 sa\u011flayacak yeni bir tanesini olu\u015fturaca\u011f\u0131z.<\/p>\n<h3><strong class=\"kn ew\">Self-Hosted IR<\/strong> Olu\u015fturma \u0130\u015flemi:<\/h3>\n<p><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:1050\/1*Uv99elh3b2lCsh9xPF6fVw.png\"><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:933\/1*78aNh3npqhOWwSEzk-zVrQ.png\"><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:983\/1*h2vReC5D0O2zfhCwe-LvIQ.png\"><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:929\/1*GjxhLHTxtfVGsNmPAXPDow.png\"><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:932\/1*teBErOXKVtLzPkG9Nw353g.png\"><\/p>\n<p style=\"text-align: left;\"><strong class=\"kn ew\">Se\u00e7enek 2<\/strong>&#8216;deki link&#8217;e t\u0131klayarak indirme i\u015flemini ger\u00e7ekle\u015ftiriyoruz. \u0130\u015flem bittikten sonra \u00e7\u0131kacak ekrana <strong class=\"kn ew\">Key1<\/strong>&#8216;i kopyalayarak ilgili alana yap\u0131\u015ft\u0131r\u0131yoruz. <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:1050\/1*XLQr_qa9OVe8-XycIYT2wA.png\"><\/p>\n<p data-selectable-paragraph=\"\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:1050\/1*oza8oqksX6vy6K71oKlAvQ.png\"><\/p>\n<p data-selectable-paragraph=\"\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:1050\/1*QK2qd2fjpedOf62jlvAvRA.png\"><\/p>\n<p id=\"1208\" class=\"pw-post-body-paragraph kl km ev kn b ko kp kq kr ks kt ku kv kw kx ky kz la lb lc ld le lf lg lh li eo bj\" style=\"text-align: left;\" data-selectable-paragraph=\"\">Ba\u015far\u0131l\u0131 bir \u015fekilde lokalimiz ile ba\u011flant\u0131 sa\u011flayacak ve ilgili i\u015flemleri orada ger\u00e7ekle\u015ftirecek olan <strong class=\"kn ew\">IR<\/strong>&#8216;\u0131 olu\u015fturmu\u015f olduk.<\/p>\n<p id=\"e974\" class=\"pw-post-body-paragraph kl km ev kn b ko kp kq kr ks kt ku kv kw kx ky kz la lb lc ld le lf lg lh li eo bj\" style=\"text-align: left;\" data-selectable-paragraph=\"\"><strong class=\"kn ew\">Data Factory<\/strong> \u00fczerinde olu\u015fturaca\u011f\u0131m\u0131z Pipeline da lokalimizde ki parke dosyalar\u0131n\u0131 kullanabilmek i\u00e7in<strong class=\"kn ew\"> Linked Service<\/strong> olu\u015fturaca\u011f\u0131z onu da a\u015fa\u011f\u0131daki ad\u0131mlar\u0131 takip ederek olu\u015fturabilirsiniz.<\/p>\n<p data-selectable-paragraph=\"\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:1050\/1*0SnHnnpTyeAFHdIFiUcisQ.png\"><\/p>\n<p data-selectable-paragraph=\"\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:923\/1*xpOUhN1P9pwohR8UTlA2Lg.png\"><\/p>\n<p data-selectable-paragraph=\"\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:852\/1*KGYK6kgqsvo-vsZeQ42UiA.png\"><\/p>\n<p style=\"text-align: left;\" data-selectable-paragraph=\"\">Olu\u015fturaca\u011f\u0131m\u0131z Data Pipeline i\u00e7erisinde bu <strong class=\"kn ew\">LS(Linked Service)&#8217;i <\/strong>kullanarak lokal&#8217;deki her bir parke format\u0131 e\u011fer bug\u00fcn\u00fcn tarihi ile ba\u015fl\u0131yorsa onu alarak <strong class=\"kn ew\">Azure Data Lake<\/strong>&#8216;deki belirtti\u011fimiz dizine kopyalayacak.<\/p>\n<h3><strong class=\"kn ew\">DP_Extract_OnpremToADL2:<\/strong><\/h3>\n<p><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:1050\/1*QKJN0-gB4O6Lbv_SCFayuQ.png\"><\/p>\n<p style=\"text-align: left;\">Yukar\u0131da g\u00f6rm\u00fc\u015f oldu\u011funuz <strong class=\"kn ew\">Data Pipeline<\/strong>&#8216;\u0131 a\u00e7\u0131klamak gerekirse yapt\u0131\u011f\u0131 i\u015f <strong class=\"kn ew\">Get Metadata<\/strong>&#8216;y\u0131 kullanarak lokal&#8217;deki her <strong class=\"kn ew\">parke <\/strong>dosyas\u0131n\u0131n dosyas\u0131n\u0131 ismini <strong class=\"kn ew\">ForEach Loop<\/strong>&#8216;unda d\u00f6nd\u00fcrek e\u011fer bug\u00fcn\u00fcn tarihiyle ba\u015fl\u0131yorsa kopyalama i\u015flemini ger\u00e7ekle\u015ftirecek e\u011fer de\u011filse hi\u00e7bir i\u015flem yapmayacak.Bu kontrol\u00fc yapan Activity <strong class=\"kn ew\">&#8216;If Condition&#8217; <\/strong>ve ko\u015fulu yapan kod ise a\u015fa\u011f\u0131daki gibidir.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:965\/1*AgXLljZQHSk0TggJTxu9Jg.png\"><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:1050\/1*9aVinaN8N_mTU0VYdMQBog.png\"><\/p>\n<p style=\"text-align: left;\">Data Pipeline&#8217;\u0131 \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131m\u0131zda ba\u015far\u0131l\u0131 bir \u015fekilde \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6rmekteyiz. <strong class=\"kn ew\">Azure Data Lake<\/strong> \u00fczerindeki belirtti\u011fimiz dizini kontrol ederek veriler ba\u015far\u0131l\u0131 bir \u015fekilde gelmi\u015f mi \u015fimdi ona bakal\u0131m.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:1050\/1*nET4rlIQE4JvEtJoWECnbA.png\"><\/p>\n<p id=\"5cc9\" class=\"pw-post-body-paragraph kl km ev kn b ko kp kq kr ks kt ku kv kw kx ky kz la lb lc ld le lf lg lh li eo bj\" style=\"text-align: left;\" data-selectable-paragraph=\"\">Lokalimizdeki veri setlerinin ba\u015far\u0131l\u0131 bir \u015fekilde kopyaland\u0131\u011f\u0131n\u0131 g\u00f6rmekteyiz.<\/p>\n<p id=\"797d\" class=\"pw-post-body-paragraph kl km ev kn b ko kp kq kr ks kt ku kv kw kx ky kz la lb lc ld le lf lg lh li eo bj\" style=\"text-align: left;\" data-selectable-paragraph=\"\">Bir sonraki a\u015famam\u0131z <strong class=\"kn ew\">Azure Synapse Analytics<\/strong> \u00fczerinde <strong class=\"kn ew\">Spark Pool<\/strong> olu\u015fturarak veri temizleme ve d\u00f6n\u00fc\u015ft\u00fcrme i\u015flemi uygulayaca\u011f\u0131z.<\/p>\n<p style=\"text-align: left;\" data-selectable-paragraph=\"\"><strong class=\"kn ew\">Spark Pool<\/strong> Olu\u015fturma \u0130\u015flemi:<\/p>\n<p data-selectable-paragraph=\"\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:1050\/1*XuJstL2qptYGIteyrJ9ceg.png\"><\/p>\n<p data-selectable-paragraph=\"\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:1050\/1*LU2DF6wi5nMfX-kStVtlgQ.png\"><\/p>\n<p data-selectable-paragraph=\"\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:1050\/1*Oq_ZXEN6RWab9gtKp779iA.png\"><\/p>\n<p data-selectable-paragraph=\"\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:1050\/1*1nEb36z936EiJoG8MMX76g.png\"><\/p>\n<blockquote>\n<p data-selectable-paragraph=\"\"><span class=\"hljs-keyword\">from<\/span> notebookutils <span class=\"hljs-keyword\">import<\/span> mssparkutils<br \/>\n<span class=\"hljs-keyword\">from<\/span> pyspark.sql.functions import *<br \/>\n<span class=\"hljs-keyword\">from<\/span> pyspark.sql.types <span class=\"hljs-keyword\">import<\/span> *<\/p>\n<p>accountname= <span class=\"hljs-string\">&#8220;bentegostg<\/span> <span class=\"hljs-string\">&#8221;<br \/>\nsourcecontainer= &#8220;raw&#8221;<\/span><br \/>\nLinkedService= <span class=\"hljs-string\">&#8220;bentego-synapse-ws-WorkspaceDefaultStorage&#8221;<\/span><br \/>\nsourceFile_location= <span class=\"hljs-string\">&#8220;ingest&#8221;<\/span><br \/>\ndestinationcontainer=<span class=\"hljs-string\">&#8220;rafine&#8221;<\/span><\/p>\n<p>spark.conf<span class=\"hljs-built_in\">.set<\/span>(<span class=\"hljs-string\">&#8220;spark.storage.synapse.linkedServiceName&#8221;<\/span>,<span class=\"hljs-string\">LinkedService<\/span>)<br \/>\nspark.conf.<span class=\"hljs-built_in\">set<\/span>(<span class=\"hljs-string\">&#8220;fs.azure.account.oauth.provider.typ&#8221;<\/span>,&#8221;com.microsoft.azure.synapse.tokenlibrary.LinkedServiceBasedTokenProvider&#8221;)<br \/>\n<span class=\"hljs-string\"> spark.<\/span>conf.<span class=\"hljs-built_in\">set<\/span>(&#8220;spark.sql.parquet.writeLegacyFormat<span class=\"hljs-string\">&#8220;, &#8220;true&#8221;<\/span>)<\/p>\n<p>SongCustomSchema = StructType([<br \/>\nStructField( <span class=\"hljs-string\">&#8220;song_id&#8221;<\/span>, StringType(), <span class=\"hljs-literal\">True<\/span>),<br \/>\nStructField( <span class=\"hljs-string\">&#8220;song_name&#8221;<\/span>, StringType(), <span class=\"hljs-literal\">True<\/span>),<br \/>\nStructField( <span class=\"hljs-string\">&#8220;duration_ms&#8221;<\/span>, LongType(), <span class=\"hljs-literal\">True<\/span>),<br \/>\nStructField( <span class=\"hljs-string\">&#8220;url&#8221;<\/span>, StringType(), <span class=\"hljs-literal\">True<\/span>),<br \/>\nStructField( <span class=\"hljs-string\">&#8220;pop\u00fclerlik&#8221;<\/span>, LongType(), <span class=\"hljs-literal\">True<\/span>),<br \/>\nStructField( <span class=\"hljs-string\">&#8220;song_added&#8221;<\/span>, StringType(), <span class=\"hljs-literal\">True<\/span>),<br \/>\nStructField( <span class=\"hljs-string\">&#8220;album_id&#8221;<\/span>, StringType(), <span class=\"hljs-literal\">True<\/span>),<br \/>\nStructField( <span class=\"hljs-string\">&#8220;artist_id&#8221;<\/span>, StringType(), <span class=\"hljs-literal\">True<\/span>)<br \/>\n]<br \/>\n)<\/p>\n<p>song_df = spark \\<br \/>\n.read \\<br \/>\n.schema(SongCustomSchema) \\<br \/>\n.parquet<span class=\"hljs-string\">(f &#8220;abfss:\/\/<span class=\"hljs-subst\">{sourcecontainer}<\/span><\/span>@<span class=\"hljs-subst\">{accountname}.dfs.core.windows.net\/<span class=\"hljs-subst\">{sourceFile_location}<\/span><\/span>\/2023-05-29_song_ds.parquet&#8221;)<\/p>\n<p>song_df = song_df \\<br \/>\n.withColumn(<span class=\"hljs-string\">&#8220;duration_ms<\/span><span class=\"hljs-string\">&#8220;,col(&#8220;duration_ms&#8221;<\/span>).cast(IntegerType())) \\<br \/>\n.withColumn(<span class=\"hljs-string\">&#8220;pop\u00fclerlik<\/span><span class=\"hljs-string\">&#8220;,col(&#8220;pop\u00fclerlik&#8221;<\/span>).cast(IntegerType())) \\<br \/>\n.drop(col(<span class=\"hljs-string\">&#8220;song_added&#8221;<\/span>))<\/p>\n<p>AlbumCustomSchema = StructType([<br \/>\nStructField( <span class=\"hljs-string\">&#8220;album_id&#8221;<\/span>, StringType(), <span class=\"hljs-literal\">True<\/span>),<br \/>\nStructField( <span class=\"hljs-string\">&#8220;name&#8221;<\/span>, StringType(), <span class=\"hljs-literal\">True<\/span>),<br \/>\nStructField( <span class=\"hljs-string\">&#8220;album_release_date&#8221;<\/span>, StringType(), <span class=\"hljs-literal\">True<\/span>),<br \/>\nStructField( <span class=\"hljs-string\">&#8220;album_total_tracks&#8221;<\/span>, LongType(), <span class=\"hljs-literal\">True<\/span>),<br \/>\nStructField( <span class=\"hljs-string\">&#8220;album_url&#8221;<\/span>, StringType(), <span class=\"hljs-literal\">True<\/span>),<br \/>\nStructField( <span class=\"hljs-string\">&#8220;release_date&#8221;<\/span>, StringType(), <span class=\"hljs-literal\">True<\/span>)<br \/>\n]<br \/>\n)<\/p>\n<p>album_df = spark \\<br \/>\n.read \\<br \/>\n.schema(AlbumCustomSchema) \\<br \/>\n.parquet<span class=\"hljs-string\">(f &#8220;abfss:\/\/<span class=\"hljs-subst\">{sourcecontainer}<\/span><\/span>@<span class=\"hljs-subst\">{accountname}.dfs.core.windows.net\/<span class=\"hljs-subst\">{sourceFile_location}<\/span><\/span>\/2023-05-29_album_ds.parquet&#8221;)<\/p>\n<p>album_df = album_df \\<br \/>\n.withColumn(<span class=\"hljs-string\">&#8220;album_total_tracks&#8221;<\/span>,col(<span class=\"hljs-string\">&#8220;album_total_tracks&#8221;<\/span>).cast(IntegerType())) \\<br \/>\n.withColumn(<span class=\"hljs-string\">&#8220;album_release_date&#8221;<\/span>,to_date(col(<span class=\"hljs-string\">&#8220;album<\/span>_release_date<span class=\"hljs-string\">&#8220;), &#8220;yyyy-MM-dd&#8221;<\/span>)) \\<br \/>\n.drop(<span class=\"hljs-string\">&#8220;release_date&#8221;<\/span>)<\/p>\n<p>ArtistCustomSchema = StructType([<br \/>\nStructField(<span class=\"hljs-string\">&#8220;artist_id&#8221;<\/span>, StringType(), <span class=\"hljs-literal\">True<\/span>),<br \/>\nStructField(<span class=\"hljs-string\">&#8220;artist_name<\/span><span class=\"hljs-string\">&#8220;<\/span>, StringType(), <span class=\"hljs-literal\">True<\/span>),<br \/>\nStructField(&#8220;external_url&#8221;, StringType(), <span class=\"hljs-literal\">True<\/span>),<br \/>\n]<br \/>\n)<\/p>\n<p>artist_df = spark \\<br \/>\n.read \\<br \/>\n.schema(ArtistCustomSchema) \\<br \/>\n.parquet<span class=\"hljs-string\">(f &#8220;abfss:\/\/<span class=\"hljs-subst\">{sourcecontainer}<\/span><\/span>@<span class=\"hljs-subst\">{accountname}.dfs.core.windows.net\/<span class=\"hljs-subst\">{sourceFile_location}<\/span><\/span>\/2023-05-29_artist_ds.parquet&#8221;)<\/p>\n<p>album_df.write \\<br \/>\n.mode(<span class=\"hljs-string\">&#8220;overwrite&#8221;<\/span>) \\<br \/>\n<span class=\"hljs-built_in\">.format<\/span>(<span class=\"hljs-string\">&#8220;parquet<\/span><span class=\"hljs-string\">&#8220;<\/span>) \\<br \/>\n.option(<span class=\"hljs-string\">&#8220;header<\/span><span class=\"hljs-string\">&#8220;<\/span>,&#8221;true&#8221;) \\<br \/>\n.option(<span class=\"hljs-string\">&#8220;inferSchema<\/span>&#8220;, &#8220;true&#8221;) \\<br \/>\n.save<span class=\"hljs-string\">(f &#8220;abfss:\/\/<span class=\"hljs-subst\">{destinationcontainer}<\/span><\/span>@<span class=\"hljs-subst\">{accountname}.dfs.core.windows.net\/album\/&#8221;<\/span>)<\/p>\n<p>artist_df.write \\<br \/>\n.mode(<span class=\"hljs-string\">&#8220;overwrite&#8221;<\/span>) \\<br \/>\n<span class=\"hljs-built_in\">.format<\/span>(<span class=\"hljs-string\">&#8220;parquet<\/span><span class=\"hljs-string\">&#8220;<\/span>) \\<br \/>\n.option(<span class=\"hljs-string\">&#8220;header<\/span><span class=\"hljs-string\">&#8220;<\/span>,&#8221;true&#8221;) \\<br \/>\n.option(<span class=\"hljs-string\">&#8220;inferSchema<\/span>&#8220;, &#8220;true&#8221;) \\<br \/>\n.save<span class=\"hljs-string\">(f &#8220;abfss:\/\/<span class=\"hljs-subst\">{destinationcontainer}<\/span><\/span>@<span class=\"hljs-subst\">{accountname}.dfs.core.windows.net\/artist\/&#8221;<\/span>)<\/p><\/blockquote>\n<p id=\"f874\" class=\"pw-post-body-paragraph kl km ev kn b ko kp kq kr ks kt ku kv kw kx ky kz la lb lc ld le lf lg lh li eo bj\" style=\"text-align: left;\" data-selectable-paragraph=\"\"><strong class=\"kn ew\">Spark Pool<\/strong>&#8216;u olu\u015fturduktan sonra <strong class=\"kn ew\">Developer<\/strong> sekmesinden <strong class=\"kn ew\">Notebook<\/strong> olu\u015fturarak yukar\u0131daki g\u00f6rm\u00fc\u015f oldu\u011funuz kodlar\u0131 yaz\u0131yoruz. Normal <strong class=\"kn ew\">PySpark <\/strong>kodlar\u0131m\u0131z\u0131 yazarak verinin d\u00fczg\u00fcn ve temizlenmi\u015f halini yine Azure Data Lake \u00fczerindeki belirtti\u011fimiz dizinlere yolluyoruz. <\/p>\n<p data-selectable-paragraph=\"\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:1050\/1*39N8ysmt7feQwyJ5V0fxDQ.png\"><\/p>\n<p data-selectable-paragraph=\"\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:1050\/1*BbXtnUXGfKEb53uYp6J6GA.png\"><\/p>\n<p id=\"7625\" class=\"pw-post-body-paragraph kl km ev kn b ko kp kq kr ks kt ku kv kw kx ky kz la lb lc ld le lf lg lh li eo bj\" style=\"text-align: left;\" data-selectable-paragraph=\"\">Kontrol etti\u011fimizde verilerin ba\u015far\u0131l\u0131 \u015fekilde dizinlere yaz\u0131ld\u0131\u011f\u0131n\u0131 g\u00f6rmekteyiz.<\/p>\n<p id=\"df95\" class=\"pw-post-body-paragraph kl km ev kn b ko kp kq kr ks kt ku kv kw kx ky kz la lb lc ld le lf lg lh li eo bj\" style=\"text-align: left;\" data-selectable-paragraph=\"\">Yukar\u0131da olu\u015fturdu\u011fumuz Notebook&#8217;u Data <strong class=\"kn ew\">Factory <\/strong>\u00fczerinde olu\u015fturdu\u011fumuz Data Pipeline i\u00e7erisinden \u00e7a\u011f\u0131rmak i\u00e7in <strong class=\"kn ew\">Azure<\/strong>Data <strong class=\"kn ew\">Factory<\/strong>&#8216;i servisine <strong class=\"kn ew\">Synapse Administrator<\/strong> yetkisi vermemiz gerekli.<\/p>\n<p data-selectable-paragraph=\"\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:1050\/1*49enApMU9bNgnLjt50o99A.png\"><\/p>\n<p data-selectable-paragraph=\"\">\u015eimdi <strong class=\"kn ew\">Azure Data Factory<\/strong> k\u0131sm\u0131na gidirek<strong class=\"kn ew\"> Synapse<\/strong> k\u0131sm\u0131nda olu\u015fturdu\u011fumuz Notebook&#8217;u ba\u011flanabilmesi i\u00e7in yeni bir <strong class=\"kn ew\">Linked Service<\/strong> olu\u015ftural\u0131m.<\/p>\n<p data-selectable-paragraph=\"\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:1050\/1*VriGQ6qGw3nLwjd6qKT2BA.png\"><\/p>\n<p data-selectable-paragraph=\"\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:839\/1*-F2Q6NTzoozfpgEf-kBChA.png\"><\/p>\n<p data-selectable-paragraph=\"\">Ba\u015far\u0131l\u0131 \u015fekilde ba\u011flant\u0131m\u0131z\u0131 olu\u015fturduk. Data Pipeline olu\u015ftururak Notebook&#8217;u birde oradan \u00e7a\u011f\u0131ral\u0131m. <\/p>\n<p data-selectable-paragraph=\"\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:1050\/1*A5ln2q2IS_sXV-7GK5348w.png\"><\/p>\n<p data-selectable-paragraph=\"\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:1050\/1*z5AdNLLvh_E52rgF4fkjMQ.png\"><\/p>\n<p id=\"fd32\" class=\"pw-post-body-paragraph kl km ev kn b ko kp kq kr ks kt ku kv kw kx ky kz la lb lc ld le lf lg lh li eo bj\" style=\"text-align: left;\" data-selectable-paragraph=\"\">Data Pipeline&#8217;\u0131 \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131m\u0131zda ba\u015far\u0131l\u0131 bir \u015fekilde \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6rmekteyiz.<\/p>\n<p id=\"2e0e\" class=\"pw-post-body-paragraph kl km ev kn b ko kp kq kr ks kt ku kv kw kx ky kz la lb lc ld le lf lg lh li eo bj\" style=\"text-align: left;\" data-selectable-paragraph=\"\">\u00c7al\u0131\u015fan <strong class=\"kn ew\">Pyspark Job<\/strong>&#8216;\u0131m\u0131z temizlenmi\u015f ve d\u00f6n\u00fc\u015ft\u00fcr\u00fclm\u00fc\u015f veriyi ba\u015fka bir dizine kaydetmi\u015f oldu. Bu veri setlerini \u015fimdi de <strong class=\"kn ew\">Azure SQL Database<\/strong> k\u0131sm\u0131nda olu\u015fturdu\u011fumuz SpotifyDB&#8217;sinin alt\u0131nda tablolar olu\u015fturarak oraya aktaraca\u011f\u0131z. <strong class=\"kn ew\">Data Factory<\/strong> servisinin <strong class=\"kn ew\">Azure SQL Database<\/strong> servisine eri\u015febilmesi i\u00e7in a\u015fa\u011f\u0131daki ayar\u0131 yapmal\u0131s\u0131n\u0131z. <\/p>\n<div class=\"ls lt go lu bg lv\" style=\"text-align: left;\" tabindex=\"0\" role=\"button\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:1050\/1*yqixhxVVChB9h3woiEyRQw.png\"><\/div>\n<div tabindex=\"0\" role=\"button\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:852\/1*NGH5vRM1_lyGX24T1kn-jw.png\"><\/div>\n<div tabindex=\"0\" role=\"button\"><\/div>\n<div style=\"text-align: left;\" tabindex=\"0\" role=\"button\">Ba\u015far\u0131l\u0131 \u015fekilde ba\u011flant\u0131y\u0131 sa\u011flam\u0131\u015f olduk. \u015eimdi <strong>Azure SQL Veritaban\u0131<\/strong> aktar\u0131m i\u015flemini ger\u00e7ekle\u015ftirecek olan Data Pipeline&#8217;\u0131 olu\u015fturabiliriz. <\/div>\n<div tabindex=\"0\" role=\"button\"><\/div>\n<div tabindex=\"0\" role=\"button\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:1050\/1*6IasbAB6XMCUpAbxl43bIw.png\"><\/div>\n<div tabindex=\"0\" role=\"button\"><\/div>\n<div tabindex=\"0\" role=\"button\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:1050\/1*OflbjbQH_30dCiRL4qck_w.png\"><\/div>\n<div tabindex=\"0\" role=\"button\"><\/div>\n<div style=\"text-align: left;\" tabindex=\"0\" role=\"button\">Olu\u015fturdu\u011fumuz Data Pipeline yukar\u0131daki gibidir ve \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131m\u0131zda da hata almadan i\u015flemi ger\u00e7ekle\u015ftirdi\u011fini g\u00f6rmekteyiz. Gelin bir de ilgili DB&#8217;miz alt\u0131nda tablolar olu\u015fmu\u015f mu ona bir bakal\u0131m. <\/div>\n<div tabindex=\"0\" role=\"button\"><\/div>\n<div tabindex=\"0\" role=\"button\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:1050\/1*1QL0f3_NXqTNeeMvng6nOQ.png\"><\/div>\n<div tabindex=\"0\" role=\"button\"><\/div>\n<p><!--more--><\/p>\n<div tabindex=\"0\" role=\"button\">Evet istedi\u011fimiz tablolar ba\u015far\u0131l\u0131 bir \u015fekilde olu\u015fmu\u015f ve i\u00e7erisindeki veriler istedi\u011fimiz \u015fekilde ve tipte gelmi\u015f g\u00f6z\u00fck\u00fcyor.<\/div>\n<p>Umar\u0131m sizler i\u00e7in faydal\u0131 bir yaz\u0131 olmu\u015ftur. Herhangi bir sorunuz veya \u00f6neriniz var ise benimle ileti\u015fime ge\u00e7ebilirsiniz. Te\u015fekk\u00fcrler, g\u00f6r\u00fc\u015fmek \u00fczere \ud83d\udc4b  <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Merhabalar bu yaz\u0131mda sizlere Bulut Servis Sa\u011flay\u0131c\u0131lar\u0131ndan olan Azure \u00fczerinde bir Data Pipeline olu\u015fturma s\u00fcrecini anlataca\u011f\u0131m. Gelin isterseniz ilk \u00f6nce projemizin mimarisine [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":5922,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[87],"tags":[],"class_list":["post-6110","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Azure \u00fczerinde Data Pipeline Olu\u015fturma - Bentego<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/bentego.com\/tr\/azure-uzerinde-data-pipeline-olusturma\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Azure \u00fczerinde Data Pipeline Olu\u015fturma - Bentego\" \/>\n<meta property=\"og:description\" content=\"Merhabalar bu yaz\u0131mda sizlere Bulut Servis Sa\u011flay\u0131c\u0131lar\u0131ndan olan Azure \u00fczerinde bir Data Pipeline olu\u015fturma s\u00fcrecini anlataca\u011f\u0131m. Gelin isterseniz ilk \u00f6nce projemizin mimarisine [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/bentego.com\/tr\/azure-uzerinde-data-pipeline-olusturma\/\" \/>\n<meta property=\"og:site_name\" content=\"Bentego\" \/>\n<meta property=\"article:published_time\" content=\"2023-05-30T11:04:47+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/bentego.com\/wp-content\/uploads\/2025\/06\/Frame-82__.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2400\" \/>\n\t<meta property=\"og:image:height\" content=\"1600\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Bentego\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Bentego\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/bentego.com\/tr\/azure-uzerinde-data-pipeline-olusturma\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/bentego.com\/tr\/azure-uzerinde-data-pipeline-olusturma\/\"},\"author\":{\"name\":\"Bentego\",\"@id\":\"https:\/\/bentego.com\/tr\/#\/schema\/person\/e38e5868721eddd5493704ec7b5be37c\"},\"headline\":\"Azure \u00fczerinde Data Pipeline Olu\u015fturma\",\"datePublished\":\"2023-05-30T11:04:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/bentego.com\/tr\/azure-uzerinde-data-pipeline-olusturma\/\"},\"wordCount\":1765,\"publisher\":{\"@id\":\"https:\/\/bentego.com\/tr\/#organization\"},\"image\":{\"@id\":\"https:\/\/bentego.com\/tr\/azure-uzerinde-data-pipeline-olusturma\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/bentego.com\/wp-content\/uploads\/2025\/06\/Frame-82__.png\",\"articleSection\":[\"Blog\"],\"inLanguage\":\"tr\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/bentego.com\/tr\/azure-uzerinde-data-pipeline-olusturma\/\",\"url\":\"https:\/\/bentego.com\/tr\/azure-uzerinde-data-pipeline-olusturma\/\",\"name\":\"Azure \u00fczerinde Data Pipeline Olu\u015fturma - Bentego\",\"isPartOf\":{\"@id\":\"https:\/\/bentego.com\/tr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/bentego.com\/tr\/azure-uzerinde-data-pipeline-olusturma\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/bentego.com\/tr\/azure-uzerinde-data-pipeline-olusturma\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/bentego.com\/wp-content\/uploads\/2025\/06\/Frame-82__.png\",\"datePublished\":\"2023-05-30T11:04:47+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/bentego.com\/tr\/azure-uzerinde-data-pipeline-olusturma\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/bentego.com\/tr\/azure-uzerinde-data-pipeline-olusturma\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/bentego.com\/tr\/azure-uzerinde-data-pipeline-olusturma\/#primaryimage\",\"url\":\"https:\/\/bentego.com\/wp-content\/uploads\/2025\/06\/Frame-82__.png\",\"contentUrl\":\"https:\/\/bentego.com\/wp-content\/uploads\/2025\/06\/Frame-82__.png\",\"width\":2400,\"height\":1600},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/bentego.com\/tr\/azure-uzerinde-data-pipeline-olusturma\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/bentego.com\/tr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Azure \u00fczerinde Data Pipeline Olu\u015fturma\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/bentego.com\/tr\/#website\",\"url\":\"https:\/\/bentego.com\/tr\/\",\"name\":\"Bentego\",\"description\":\"Turning data into enterprise value\",\"publisher\":{\"@id\":\"https:\/\/bentego.com\/tr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/bentego.com\/tr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/bentego.com\/tr\/#organization\",\"name\":\"Bentego\",\"url\":\"https:\/\/bentego.com\/tr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/bentego.com\/tr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/bentego.com\/wp-content\/uploads\/2025\/05\/logo-bentego.svg\",\"contentUrl\":\"https:\/\/bentego.com\/wp-content\/uploads\/2025\/05\/logo-bentego.svg\",\"width\":433,\"height\":109,\"caption\":\"Bentego\"},\"image\":{\"@id\":\"https:\/\/bentego.com\/tr\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/bentego.com\/tr\/#\/schema\/person\/e38e5868721eddd5493704ec7b5be37c\",\"name\":\"Bentego\",\"sameAs\":[\"http:\/\/bentego.com\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Azure \u00fczerinde Data Pipeline Olu\u015fturma - Bentego","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/bentego.com\/tr\/azure-uzerinde-data-pipeline-olusturma\/","og_locale":"tr_TR","og_type":"article","og_title":"Azure \u00fczerinde Data Pipeline Olu\u015fturma - Bentego","og_description":"Merhabalar bu yaz\u0131mda sizlere Bulut Servis Sa\u011flay\u0131c\u0131lar\u0131ndan olan Azure \u00fczerinde bir Data Pipeline olu\u015fturma s\u00fcrecini anlataca\u011f\u0131m. Gelin isterseniz ilk \u00f6nce projemizin mimarisine [&hellip;]","og_url":"https:\/\/bentego.com\/tr\/azure-uzerinde-data-pipeline-olusturma\/","og_site_name":"Bentego","article_published_time":"2023-05-30T11:04:47+00:00","og_image":[{"width":2400,"height":1600,"url":"https:\/\/bentego.com\/wp-content\/uploads\/2025\/06\/Frame-82__.png","type":"image\/png"}],"author":"Bentego","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Bentego","Tahmini okuma s\u00fcresi":"9 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/bentego.com\/tr\/azure-uzerinde-data-pipeline-olusturma\/#article","isPartOf":{"@id":"https:\/\/bentego.com\/tr\/azure-uzerinde-data-pipeline-olusturma\/"},"author":{"name":"Bentego","@id":"https:\/\/bentego.com\/tr\/#\/schema\/person\/e38e5868721eddd5493704ec7b5be37c"},"headline":"Azure \u00fczerinde Data Pipeline Olu\u015fturma","datePublished":"2023-05-30T11:04:47+00:00","mainEntityOfPage":{"@id":"https:\/\/bentego.com\/tr\/azure-uzerinde-data-pipeline-olusturma\/"},"wordCount":1765,"publisher":{"@id":"https:\/\/bentego.com\/tr\/#organization"},"image":{"@id":"https:\/\/bentego.com\/tr\/azure-uzerinde-data-pipeline-olusturma\/#primaryimage"},"thumbnailUrl":"https:\/\/bentego.com\/wp-content\/uploads\/2025\/06\/Frame-82__.png","articleSection":["Blog"],"inLanguage":"tr"},{"@type":"WebPage","@id":"https:\/\/bentego.com\/tr\/azure-uzerinde-data-pipeline-olusturma\/","url":"https:\/\/bentego.com\/tr\/azure-uzerinde-data-pipeline-olusturma\/","name":"Azure \u00fczerinde Data Pipeline Olu\u015fturma - Bentego","isPartOf":{"@id":"https:\/\/bentego.com\/tr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/bentego.com\/tr\/azure-uzerinde-data-pipeline-olusturma\/#primaryimage"},"image":{"@id":"https:\/\/bentego.com\/tr\/azure-uzerinde-data-pipeline-olusturma\/#primaryimage"},"thumbnailUrl":"https:\/\/bentego.com\/wp-content\/uploads\/2025\/06\/Frame-82__.png","datePublished":"2023-05-30T11:04:47+00:00","breadcrumb":{"@id":"https:\/\/bentego.com\/tr\/azure-uzerinde-data-pipeline-olusturma\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/bentego.com\/tr\/azure-uzerinde-data-pipeline-olusturma\/"]}]},{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/bentego.com\/tr\/azure-uzerinde-data-pipeline-olusturma\/#primaryimage","url":"https:\/\/bentego.com\/wp-content\/uploads\/2025\/06\/Frame-82__.png","contentUrl":"https:\/\/bentego.com\/wp-content\/uploads\/2025\/06\/Frame-82__.png","width":2400,"height":1600},{"@type":"BreadcrumbList","@id":"https:\/\/bentego.com\/tr\/azure-uzerinde-data-pipeline-olusturma\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/bentego.com\/tr\/"},{"@type":"ListItem","position":2,"name":"Azure \u00fczerinde Data Pipeline Olu\u015fturma"}]},{"@type":"WebSite","@id":"https:\/\/bentego.com\/tr\/#website","url":"https:\/\/bentego.com\/tr\/","name":"Bentego","description":"Turning data into enterprise value","publisher":{"@id":"https:\/\/bentego.com\/tr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/bentego.com\/tr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":"Organization","@id":"https:\/\/bentego.com\/tr\/#organization","name":"Bentego","url":"https:\/\/bentego.com\/tr\/","logo":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/bentego.com\/tr\/#\/schema\/logo\/image\/","url":"https:\/\/bentego.com\/wp-content\/uploads\/2025\/05\/logo-bentego.svg","contentUrl":"https:\/\/bentego.com\/wp-content\/uploads\/2025\/05\/logo-bentego.svg","width":433,"height":109,"caption":"Bentego"},"image":{"@id":"https:\/\/bentego.com\/tr\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/bentego.com\/tr\/#\/schema\/person\/e38e5868721eddd5493704ec7b5be37c","name":"Bentego","sameAs":["http:\/\/bentego.com"]}]}},"_links":{"self":[{"href":"https:\/\/bentego.com\/tr\/wp-json\/wp\/v2\/posts\/6110","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bentego.com\/tr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bentego.com\/tr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bentego.com\/tr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bentego.com\/tr\/wp-json\/wp\/v2\/comments?post=6110"}],"version-history":[{"count":0,"href":"https:\/\/bentego.com\/tr\/wp-json\/wp\/v2\/posts\/6110\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/bentego.com\/tr\/wp-json\/wp\/v2\/media\/5922"}],"wp:attachment":[{"href":"https:\/\/bentego.com\/tr\/wp-json\/wp\/v2\/media?parent=6110"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bentego.com\/tr\/wp-json\/wp\/v2\/categories?post=6110"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bentego.com\/tr\/wp-json\/wp\/v2\/tags?post=6110"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}