Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
ŞUNLARA UYGULANIR:
Azure Data Factory
Azure Synapse Analytics
İpucu
Microsoft Fabric'daki
Bu öğreticide Azure SQL Veritabanı'dan Azure Synapse Analytics'a
Yüksek seviyede, bu kılavuz aşağıdaki adımları içerir:
- Veri fabrikası oluşturma.
- Azure SQL Veritabanı, Azure Synapse Analytics ve Azure Depolama bağlı hizmetlerini oluşturun.
- Azure SQL Veritabanı ve Azure Synapse Analytics veri kümeleri oluşturun.
- Kopyalanacak tabloları aramak için bir işlem hattı ve gerçek kopyalama işlemini gerçekleştirmek için başka bir işlem hattı oluşturma.
- İşlem hattı çalıştırmasını başlat.
- İşlem hattı ve etkinlik çalıştırmalarını izleme.
Bu öğreticide Azure PowerShell kullanılır. Veri fabrikası oluşturmaya yönelik diğer araçlar/SDK’lar hakkında bilgi edinmek için bkz. Hızlı Başlangıçlar.
Uçtan uca iş akışı
Bu senaryoda, Azure SQL Veritabanı'nın Azure Synapse Analytics'e kopyalamak istediğimiz birkaç tablosu bulunmaktadır. İş akışının işlem hatlarında gerçekleşen adımlarının mantıksal sırası şöyledir:
- İlk işlem hattı, havuz veri depolarına kopyalanması gereken tabloların listesini belirler. Alternatif olarak, havuz veri deposuna kopyalanacak tüm tabloları listeleyen bir meta veri tablosu tutabilirsiniz. İşlem hattı daha sonra veritabanındaki her bir tabloda yinelenen ve veri kopyalama işlemini gerçekleştiren başka bir işlem hattını tetikler.
- İkinci işlem hattı gerçek kopyalama işlemini gerçekleştirir. Tablo listesini bir parametre olarak alır. Listedeki her tablo için, en iyi performans için Blob depolama ve PolyBase aracılığıyla kademeli kopyalama kullanarak, Azure SQL Veritabanı'deki belirli tabloyu Azure Synapse Analytics'teki ilgili tabloya kopyalayın. Bu örnekte, ilk işlem hattı tablo listesini bir parametre değeri olarak geçirir.
Azure aboneliğiniz yoksa başlamadan önce bir free hesabı oluşturun.
Önkoşullar
Not
Azure ile etkileşime geçmek için Azure Az PowerShell modülünü kullanmanızı öneririz. Başlamak için bkz. Azure PowerShell yükleme. Az PowerShell modülüne nasıl geçiş yapılacağını öğrenmek için bkz. AzureRM'den Az Azure PowerShell dağıtma.
- Azure PowerShell. Azure PowerShell yükleme ve yapılandırma başlığındaki yönergeleri izleyin.
- Azure Depolama hesabı. Azure Depolama hesabı, toplu kopyalama işleminde geçici blob depolama olarak kullanılır.
- Azure SQL Veritabanı. Bu veritabanı, kaynak verileri içerir.
- Azure Synapse Analytics. Bu veri ambarı, SQL Veritabanından kopyalanan verileri tutar.
SQL Veritabanı ve Azure Synapse Analytics hazırlama
Kaynak Azure SQL Veritabanı'i hazırlayın:
Azure SQL Veritabanı makalesinde veritabanı oluşturma makalesini izleyerek SQL Veritabanı'nda Adventure Works LT örnek verileriyle bir veritabanı oluşturun. Bu öğretici rehber, bu örnek veritabanındaki tüm tabloları Azure Synapse Analytics'e kopyalama işlemini gerçekleştirir.
Azure Synapse Analytics havuzunu hazırlayın:
Azure Synapse Analytics çalışma alanınız yoksa, oluşturma adımları için Azure Synapse Analytics ile çalışmaya başlama makalesine bakın.
Azure Synapse Analytics'de karşılık gelen tablo şemaları oluşturun. Sonraki bir adımda verileri geçirmek/kopyalamak için Azure Data Factory kullanırsınız.
Azure hizmetleri ile SQL sunucusuna erişim
Hem SQL Veritabanı hem de Azure Synapse Analytics için Azure hizmetlerinin SQL server'a erişmesine izin verin. Azure hizmetlerine erişime izin ver ayarının sunucunuz için ON açıldığından emin olun. Bu ayar, Data Factory hizmetinin Azure SQL Veritabanı verileri okumasına ve Azure Synapse Analytics veri yazmasına olanak tanır. Bu ayarı doğrulamak ve etkinleştirmek için aşağıdaki adımları uygulayın:
- Soldaki Tüm hizmetler’e ve sonra SQL sunucuları’na tıklayın.
- Sunucunuzu seçin ve AYARLAR altındaki Güvenlik Duvarı’na tıklayın.
Firewall ayarları sayfasında,Azure hizmetlerine erişim izni ver içinAÇIK öğesine tıklayın.
Veri fabrikası oluşturma
PowerShell’i başlatın. Bu öğreticinin sonuna kadar Azure PowerShell'i açık bırakın. Kapatıp yeniden açarsanız komutları yeniden çalıştırmanız gerekir.
Aşağıdaki komutu çalıştırın ve Azure portalında oturum açmak için kullandığınız kullanıcı adını ve parolayı girin:
Connect-AzAccountBu hesapla ilgili tüm abonelikleri görmek için aşağıdaki komutu çalıştırın:
Get-AzSubscriptionÇalışmak istediğiniz aboneliği seçmek için aşağıdaki komutu çalıştırın. SubscriptionId değerini Azure aboneliğinizin kimliğiyle değiştirin:
Select-AzSubscription -SubscriptionId "<SubscriptionId>"Bir veri fabrikası oluşturmak için Set-AzDataFactoryV2 cmdlet'ini çalıştırın. Komutu yürütmeden önce yer tutucuları kendi değerlerinizle değiştirin.
$resourceGroupName = "<your resource group to create the factory>" $dataFactoryName = "<specify the name of data factory to create. It must be globally unique.>" Set-AzDataFactoryV2 -ResourceGroupName $resourceGroupName -Location "East US" -Name $dataFactoryNameAaşağıdaki noktaları unutmayın:
Azure veri fabrikasının adı genel olarak benzersiz olmalıdır. Aşağıdaki hata iletisini alırsanız adı değiştirip yeniden deneyin.
The specified Data Factory name 'ADFv2QuickStartDataFactory' is already in use. Data Factory names must be globally unique.Data Factory örnekleri oluşturmak için Azure aboneliğinin Katkıda Bulunanı veya Yöneticisi olmanız gerekir.
Data Factory'nin şu anda kullanılabilir olduğu Azure bölgelerin listesi için aşağıdaki sayfada ilginizi çekebilecek bölgeleri seçin ve ardından Analytics'yi genişleterek Data Factory: Products by region öğesini bulun. Veri fabrikası tarafından kullanılan veri depoları (Azure Depolama, Azure SQL Veritabanı vb.) ve işlem (HDInsight vb.) diğer bölgelerde olabilir.
Bağlı hizmetler oluşturma
Bu öğreticide sırasıyla kaynak, havuz ve hazırlama blob’u için veri depolarınızla bağlantılar içeren üç bağlı hizmet oluşturacaksınız:
Azure SQL Veritabanı kaynak bağlantılı hizmet oluşturma
C:\ADFv2TutorialBulkCopy klasöründe şu içeriğe sahip AzureSqlDatabaseLinkedService.json adlı bir JSON dosyası oluşturun: (Henüz yoksa ADFv2TutorialBulkCopy adlı bir klasör oluşturun.)
Önemli
<Sunucu adı>, <veritabanı adı>, <kullanıcı adı>@<sunucu adı> ve <parola> öğelerini dosyayı kaydetmeden önce Azure SQL Veritabanı değerlerinizle değiştirin.
{ "name": "AzureSqlDatabaseLinkedService", "properties": { "type": "AzureSqlDatabase", "typeProperties": { "connectionString": "Server=tcp:<servername>.database.windows.net,1433;Database=<databasename>;User ID=<username>@<servername>;Password=<password>;Trusted_Connection=False;Encrypt=True;Connection Timeout=30" } } }Azure PowerShell'da ADFv2TutorialBulkCopy klasörüne geçin.
Bağlı hizmeti oluşturmak için Set-AzDataFactoryV2LinkedService cmdlet'ini çalıştırın: AzureSqlDatabaseLinkedService.
Set-AzDataFactoryV2LinkedService -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "AzureSqlDatabaseLinkedService" -File ".\AzureSqlDatabaseLinkedService.json"Örnek çıktı aşağıdaki gibidir:
LinkedServiceName : AzureSqlDatabaseLinkedService ResourceGroupName : <resourceGroupName> DataFactoryName : <dataFactoryName> Properties : Microsoft.Azure.Management.DataFactory.Models.AzureSqlDatabaseLinkedService
Azure Synapse Analytics hedef bağlı hizmetini oluşturun
C:\ADFv2TutorialBulkCopy klasöründe aşağıdaki içeriğe sahip AzureSqlDWLinkedService.json adlı bir JSON dosyası oluşturun:
Önemli
<Sunucu adı>, <veritabanı adı>, <kullanıcı adı>@<sunucu adı> ve <parola> öğelerini dosyayı kaydetmeden önce Azure SQL Veritabanı değerlerinizle değiştirin.
{ "name": "AzureSqlDWLinkedService", "properties": { "type": "AzureSqlDW", "typeProperties": { "connectionString": "Server=tcp:<servername>.database.windows.net,1433;Database=<databasename>;User ID=<username>@<servername>;Password=<password>;Trusted_Connection=False;Encrypt=True;Connection Timeout=30" } } }Bağlı hizmeti oluşturmak için: AzureSqlDWLinkedService, Set-AzDataFactoryV2LinkedService cmdlet'ini çalıştırın.
Set-AzDataFactoryV2LinkedService -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "AzureSqlDWLinkedService" -File ".\AzureSqlDWLinkedService.json"Örnek çıktı aşağıdaki gibidir:
LinkedServiceName : AzureSqlDWLinkedService ResourceGroupName : <resourceGroupName> DataFactoryName : <dataFactoryName> Properties : Microsoft.Azure.Management.DataFactory.Models.AzureSqlDWLinkedService
Geçici Azure Depolama bağlantılı hizmeti oluşturun
Bu öğreticide, PolyBase'i daha iyi bir kopyalama performansı için etkinleştirmek üzere geçici bir hazırlama alanı olarak Azure Blob depolamayı kullanacaksınız.
C:\ADFv2TutorialBulkCopy klasöründe aşağıdaki içeriğe sahip AzureStorageLinkedService.json adlı bir JSON dosyası oluşturun:
Önemli
dosyayı kaydetmeden önce <accountName> ve <accountKey> Azure depolama hesabınızın adı ve anahtarıyla değiştirin.
{ "name": "AzureStorageLinkedService", "properties": { "type": "AzureStorage", "typeProperties": { "connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountName>;AccountKey=<accountKey>" } } }Bağlı hizmeti oluşturmak için: AzureStorageLinkedService, Set-AzDataFactoryV2LinkedService cmdlet'ini çalıştırın.
Set-AzDataFactoryV2LinkedService -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "AzureStorageLinkedService" -File ".\AzureStorageLinkedService.json"Örnek çıktı aşağıdaki gibidir:
LinkedServiceName : AzureStorageLinkedService ResourceGroupName : <resourceGroupName> DataFactoryName : <dataFactoryName> Properties : Microsoft.Azure.Management.DataFactory.Models.AzureStorageLinkedService
Veri kümeleri oluşturma
Bu öğreticide, verilerin depolandığı konumu belirten kaynak ve havuz veri kümelerini oluşturacaksınız:
Kaynak SQL Veritabanı için veri kümesi oluşturma
C:\ADFv2TutorialBulkCopy klasöründe aşağıdaki içeriğe sahip AzureSqlDatabaseDataset.json adlı bir JSON dosyası oluşturun. Daha sonra verileri almak için kopyalama etkinliğindeki SQL sorgusunu kullandığınızdan, "tableName" değeri etkisizdir.
{ "name": "AzureSqlDatabaseDataset", "properties": { "type": "AzureSqlTable", "linkedServiceName": { "referenceName": "AzureSqlDatabaseLinkedService", "type": "LinkedServiceReference" }, "typeProperties": { "tableName": "dummy" } } }AzureSqlDatabaseDataset veri kümesini oluşturmak için Set-AzDataFactoryV2Dataset cmdlet'ini çalıştırın.
Set-AzDataFactoryV2Dataset -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "AzureSqlDatabaseDataset" -File ".\AzureSqlDatabaseDataset.json"Örnek çıktı aşağıdaki gibidir:
DatasetName : AzureSqlDatabaseDataset ResourceGroupName : <resourceGroupname> DataFactoryName : <dataFactoryName> Structure : Properties : Microsoft.Azure.Management.DataFactory.Models.AzureSqlTableDataset
Azure Synapse Analytics'teki bir hedef (sink) için veri kümesi oluşturun.
C:\ADFv2TutorialBulkCopy klasöründe aşağıdaki içeriğe sahip AzureSqlDWDataset.json adlı bir JSON dosyası oluşturun: "tableName" bir parametre olarak ayarlanır; daha sonra bu veri kümesine başvuran kopyalama etkinliği gerçek değeri veri kümesine geçirir.
{ "name": "AzureSqlDWDataset", "properties": { "type": "AzureSqlDWTable", "linkedServiceName": { "referenceName": "AzureSqlDWLinkedService", "type": "LinkedServiceReference" }, "typeProperties": { "tableName": { "value": "@{dataset().DWTableName}", "type": "Expression" } }, "parameters":{ "DWTableName":{ "type":"String" } } } }AzureSqlDWDataset veri kümesini oluşturmak için Set-AzDataFactoryV2Dataset cmdlet'ini çalıştırın.
Set-AzDataFactoryV2Dataset -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "AzureSqlDWDataset" -File ".\AzureSqlDWDataset.json"Örnek çıktı aşağıdaki gibidir:
DatasetName : AzureSqlDWDataset ResourceGroupName : <resourceGroupname> DataFactoryName : <dataFactoryName> Structure : Properties : Microsoft.Azure.Management.DataFactory.Models.AzureSqlDwTableDataset
İşlem hatları oluşturun
Bu öğreticide, iki işlem hattı oluşturacaksınız:
"IterateAndCopySQLTables" işlem hattını oluşturma
Bu işlem hattı parametre olarak tablo listesini alır. Listedeki her tablo için, Azure SQL Veritabanı'deki verileri, aşamalı kopya ve PolyBase yöntemlerini kullanarak Azure Synapse Analytics'e kopyalar.
C:\ADFv2TutorialBulkCopy klasöründe aşağıdaki içeriğe sahip IterateAndCopySQLTables.json adlı bir JSON dosyası oluşturun:
{ "name": "IterateAndCopySQLTables", "properties": { "activities": [ { "name": "IterateSQLTables", "type": "ForEach", "typeProperties": { "isSequential": "false", "items": { "value": "@pipeline().parameters.tableList", "type": "Expression" }, "activities": [ { "name": "CopyData", "description": "Copy data from Azure SQL Database to Azure Synapse Analytics", "type": "Copy", "inputs": [ { "referenceName": "AzureSqlDatabaseDataset", "type": "DatasetReference" } ], "outputs": [ { "referenceName": "AzureSqlDWDataset", "type": "DatasetReference", "parameters": { "DWTableName": "[@{item().TABLE_SCHEMA}].[@{item().TABLE_NAME}]" } } ], "typeProperties": { "source": { "type": "SqlSource", "sqlReaderQuery": "SELECT * FROM [@{item().TABLE_SCHEMA}].[@{item().TABLE_NAME}]" }, "sink": { "type": "SqlDWSink", "preCopyScript": "TRUNCATE TABLE [@{item().TABLE_SCHEMA}].[@{item().TABLE_NAME}]", "allowPolyBase": true }, "enableStaging": true, "stagingSettings": { "linkedServiceName": { "referenceName": "AzureStorageLinkedService", "type": "LinkedServiceReference" } } } } ] } } ], "parameters": { "tableList": { "type": "Object" } } } }İşlem hattını oluşturmak için: IterateAndCopySQLTables, Set-AzDataFactoryV2Pipeline cmdlet'ini çalıştırın.
Set-AzDataFactoryV2Pipeline -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "IterateAndCopySQLTables" -File ".\IterateAndCopySQLTables.json"Örnek çıktı aşağıdaki gibidir:
PipelineName : IterateAndCopySQLTables ResourceGroupName : <resourceGroupName> DataFactoryName : <dataFactoryName> Activities : {IterateSQLTables} Parameters : {[tableList, Microsoft.Azure.Management.DataFactory.Models.ParameterSpecification]}
"GetTableListAndTriggerCopyData" işlem hattını oluşturma
Bu işlem hattı iki adım gerçekleştirir:
- Kopyalanacak tabloların listesini almak için Azure SQL Veritabanı sistem tablosunu arar.
- Gerçek veri kopyalamayı yapmak için "IterateAndCopySQLTables" işlem hattını tetikler.
C:\ADFv2TutorialBulkCopy klasöründe aşağıdaki içeriğe sahip GetTableListAndTriggerCopyData.json adlı bir JSON dosyası oluşturun:
{ "name":"GetTableListAndTriggerCopyData", "properties":{ "activities":[ { "name": "LookupTableList", "description": "Retrieve the table list from Azure SQL database", "type": "Lookup", "typeProperties": { "source": { "type": "SqlSource", "sqlReaderQuery": "SELECT TABLE_SCHEMA, TABLE_NAME FROM information_schema.TABLES WHERE TABLE_TYPE = 'BASE TABLE' and TABLE_SCHEMA = 'SalesLT' and TABLE_NAME <> 'ProductModel'" }, "dataset": { "referenceName": "AzureSqlDatabaseDataset", "type": "DatasetReference" }, "firstRowOnly": false } }, { "name": "TriggerCopy", "type": "ExecutePipeline", "typeProperties": { "parameters": { "tableList": { "value": "@activity('LookupTableList').output.value", "type": "Expression" } }, "pipeline": { "referenceName": "IterateAndCopySQLTables", "type": "PipelineReference" }, "waitOnCompletion": true }, "dependsOn": [ { "activity": "LookupTableList", "dependencyConditions": [ "Succeeded" ] } ] } ] } }getTableListAndTriggerCopyData işlem hattını oluşturmak için Set-AzDataFactoryV2Pipeline cmdlet'ini çalıştırın.
Set-AzDataFactoryV2Pipeline -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "GetTableListAndTriggerCopyData" -File ".\GetTableListAndTriggerCopyData.json"Örnek çıktı aşağıdaki gibidir:
PipelineName : GetTableListAndTriggerCopyData ResourceGroupName : <resourceGroupName> DataFactoryName : <dataFactoryName> Activities : {LookupTableList, TriggerCopy} Parameters :
Boru hattı çalışmasını başlatma ve izleme
Ana "GetTableListAndTriggerCopyData" işlem hattı için bir çalıştırma başlatın ve gelecekte izlemek üzere işlem hattı çalıştırma kimliğini kaydedin. Bu işlemde, "IterateAndCopySQLTables" işlem hattının çalıştırılmasını ExecutePipeline etkinliğinde belirtildiği şekilde tetikler.
$runId = Invoke-AzDataFactoryV2Pipeline -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -PipelineName 'GetTableListAndTriggerCopyData'GetTableListAndTriggerCopyData işlem hattının durumunu sürekli olarak denetlemek için aşağıdaki betiği çalıştırın ve son işlem hattı çalıştırma ve etkinlik çalıştırma sonucunun çıktısını alın.
while ($True) { $run = Get-AzDataFactoryV2PipelineRun -ResourceGroupName $resourceGroupName -DataFactoryName $DataFactoryName -PipelineRunId $runId if ($run) { if ($run.Status -ne 'InProgress') { Write-Host "Pipeline run finished. The status is: " $run.Status -ForegroundColor "Yellow" Write-Host "Pipeline run details:" -ForegroundColor "Yellow" $run break } Write-Host "Pipeline is running...status: InProgress" -ForegroundColor "Yellow" } Start-Sleep -Seconds 15 } $result = Get-AzDataFactoryV2ActivityRun -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -PipelineRunId $runId -RunStartedAfter (Get-Date).AddMinutes(-30) -RunStartedBefore (Get-Date).AddMinutes(30) Write-Host "Activity run details:" -ForegroundColor "Yellow" $resultÖrnek çalıştırmanın çıktısı aşağıdaki gibidir:
Pipeline run details: ResourceGroupName : <resourceGroupName> DataFactoryName : <dataFactoryName> RunId : 0000000000-00000-0000-0000-000000000000 PipelineName : GetTableListAndTriggerCopyData LastUpdated : 9/18/2017 4:08:15 PM Parameters : {} RunStart : 9/18/2017 4:06:44 PM RunEnd : 9/18/2017 4:08:15 PM DurationInMs : 90637 Status : Succeeded Message : Activity run details: ResourceGroupName : <resourceGroupName> DataFactoryName : <dataFactoryName> ActivityName : LookupTableList PipelineRunId : 0000000000-00000-0000-0000-000000000000 PipelineName : GetTableListAndTriggerCopyData Input : {source, dataset, firstRowOnly} Output : {count, value, effectiveIntegrationRuntime} LinkedServiceName : ActivityRunStart : 9/18/2017 4:06:46 PM ActivityRunEnd : 9/18/2017 4:07:09 PM DurationInMs : 22995 Status : Succeeded Error : {errorCode, message, failureType, target} ResourceGroupName : <resourceGroupName> DataFactoryName : <dataFactoryName> ActivityName : TriggerCopy PipelineRunId : 0000000000-00000-0000-0000-000000000000 PipelineName : GetTableListAndTriggerCopyData Input : {pipeline, parameters, waitOnCompletion} Output : {pipelineRunId} LinkedServiceName : ActivityRunStart : 9/18/2017 4:07:11 PM ActivityRunEnd : 9/18/2017 4:08:14 PM DurationInMs : 62581 Status : Succeeded Error : {errorCode, message, failureType, target}"IterateAndCopySQLTables" işlem hattının çalıştırma kimliğini alabilir ve ayrıntılı etkinlik çalıştırma sonucunu aşağıdaki gibi denetleyebilirsiniz.
Write-Host "Pipeline 'IterateAndCopySQLTables' run result:" -ForegroundColor "Yellow" ($result | Where-Object {$_.ActivityName -eq "TriggerCopy"}).Output.ToString()Örnek çalıştırmanın çıktısı aşağıdaki gibidir:
{ "pipelineRunId": "7514d165-14bf-41fb-b5fb-789bea6c9e58" }$result2 = Get-AzDataFactoryV2ActivityRun -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -PipelineRunId <copy above run ID> -RunStartedAfter (Get-Date).AddMinutes(-30) -RunStartedBefore (Get-Date).AddMinutes(30) $result2Azure Synapse Analytics hedefinize bağlanın ve verilerin Azure SQL Veritabanı'ndan düzgün bir şekilde kopyalandığını onaylayın.
İlgili içerik
Bu öğreticide aşağıdaki adımları gerçekleştirdiniz:
- Veri fabrikası oluşturma.
- Azure SQL Veritabanı, Azure Synapse Analytics ve Azure Depolama bağlı hizmetlerini oluşturun.
- Azure SQL Veritabanı ve Azure Synapse Analytics veri kümeleri oluşturun.
- Kopyalanacak tabloları aramak için bir işlem hattı ve gerçek kopyalama işlemini gerçekleştirmek için başka bir işlem hattı oluşturma.
- İşlem hattı çalıştırmasını başlat.
- İşlem hattı ve etkinlik çalıştırmalarını izleme.
Kaynaktan hedefe verileri artımlı olarak koppyalama hakkında bilgi edinmek için aşağıdaki öğreticiye geçin: