Azure Data Factory ve Azure Synapse Analytics'te arama etkinliği
UYGULANANLAR: Azure Data Factory Azure Synapse Analytics
İpucu
Kuruluşlar için hepsi bir arada analiz çözümü olan Microsoft Fabric'te Data Factory'yi deneyin. Microsoft Fabric , veri taşımadan veri bilimine, gerçek zamanlı analize, iş zekasına ve raporlamaya kadar her şeyi kapsar. Yeni bir deneme sürümünü ücretsiz olarak başlatmayı öğrenin!
Arama etkinliği, veri fabrikası ve Synapse işlem hatları tarafından desteklenen herhangi bir veri kaynağından veri kümesi alabilir. Nesne adını sabit kodlamak yerine sonraki bir etkinlikte hangi nesnelerin üzerinde çalışabileceğini dinamik olarak belirlemek için kullanabilirsiniz. Bazı nesne örnekleri dosyalar ve tablolardır.
Arama etkinliği bir yapılandırma dosyasının veya tablonun içeriğini okur ve döndürür. Ayrıca sorgunun veya saklı yordamın yürütülmesinin sonucunu döndürür. Çıktı, bir tek değer veya sonraki bir kopya, dönüştürme veya ForEach etkinliği gibi denetim akışı etkinliklerinde kullanılabilen bir öznitelik dizisi olabilir.
Kullanıcı arabirimiyle Arama etkinliği oluşturma
İşlem hattında Arama etkinliğini kullanmak için aşağıdaki adımları tamamlayın:
İşlem hattı Etkinlikleri bölmesinde Arama'yı arayın ve arama etkinliğini işlem hattı tuvaline sürükleyin.
Tuvalde henüz seçili değilse yeni Arama etkinliğini ve ayrıntılarını düzenlemek için Ayarlar sekmesini seçin.
Yeni bir veri kümesi oluşturmak için mevcut bir kaynak veri kümesini seçin veya Yeni düğmesini seçin.
Kaynak veri kümesinden eklenecek satırları tanımlama seçenekleri, veri kümesi türüne göre değişir. Yukarıdaki örnekte sınırlandırılmış metin veri kümesinin yapılandırma seçenekleri gösterilmektedir. Aşağıda Azure SQL tablo veri kümesi ve OData veri kümesi için yapılandırma seçenekleri örnekleri verilmiştir.
Desteklenen özellikler
Aşağıdakileri dikkate alın:
- Arama etkinliği en fazla 5000 satır döndürebilir; sonuç kümesi daha fazla kayıt içeriyorsa, ilk 5000 satır döndürülür.
- Arama etkinliği çıkışı boyutu 4 MB'a kadar destekler; boyut sınırı aşarsa etkinlik başarısız olur.
- Arama etkinliğinin zaman aşımından önceki en uzun süresi 24 saattir.
Not
Verileri ararken sorguyu veya saklı yordamı kullandığınızda, bir ve tam bir sonuç kümesi döndürdiğinizden emin olun. Aksi takdirde Arama etkinliği başarısız olur.
Arama etkinliği için aşağıdaki veri kaynakları desteklenir.
Not
Önizleme olarak işaretlenmiş bağlayıcıları deneyebilir ve bunlar hakkındaki görüşlerinizi bize bildirebilirsiniz. Çözümünüzde bir önizleme bağlayıcısı bağımlılığı olmasını istiyorsanız lütfen Azure desteğine başvurun.
Sözdizimi
{
"name":"LookupActivity",
"type":"Lookup",
"typeProperties":{
"source":{
"type":"<source type>"
},
"dataset":{
"referenceName":"<source dataset name>",
"type":"DatasetReference"
},
"firstRowOnly":<true or false>
}
}
Tür özellikleri
Veri Akışı Adı | Açıklama | Tür | Gerekli mi? |
---|---|---|---|
veri kümesi | Arama için veri kümesi başvurusu sağlar. İlgili bağlayıcı makalelerinin Veri kümesi özellikleri bölümünden ayrıntıları alın. | Anahtar/değer çifti | Yes |
kaynak | Kopyalama Etkinliği kaynağıyla aynı veri kümesine özgü kaynak özelliklerini içerir. İlgili bağlayıcı makalelerinin Kopyalama Etkinliği özellikleri bölümünden ayrıntıları alın. | Anahtar/değer çifti | Yes |
firstRowOnly | Yalnızca ilk satırın mı yoksa tüm satırların mı döndürülmeyeceğini gösterir. | Boolean | Hayır Varsayılan değer: true . |
Not
- ByteArray türüne sahip kaynak sütunlar desteklenmez.
- Veri kümesi tanımlarında yapı desteklenmez. Metin biçimi dosyalarında, sütun adını sağlamak için üst bilgi satırını kullanın.
- Arama kaynağınız bir JSON dosyasıysa,
jsonPathDefinition
JSON nesnesini yeniden şekillendirme ayarı desteklenmez. Tüm nesneler alınır.
Arama etkinliği sonucunu kullanma
Arama sonucu, etkinlik çalıştırması sonucunun bölümünde döndürülür output
.
firstRowOnly
(varsayılan) olarak ayarlandığındatrue
, çıkış biçimi aşağıdaki kodda gösterildiği gibi olur. Arama sonucu sabitfirstRow
bir anahtarın altındadır. Sonucu sonraki etkinlikte kullanmak için desenini@{activity('LookupActivity').output.firstRow.table}
kullanın.{ "firstRow": { "Id": "1", "schema":"dbo", "table":"Table1" } }
firstRowOnly
olarak ayarlandığındafalse
, çıkış biçimi aşağıdaki kodda gösterildiği gibidir. Bircount
alan, kaç kaydın döndürüldiğini gösterir. Ayrıntılı değerler sabitvalue
bir dizi altında görüntülenir. Böyle bir durumda, Arama etkinliğini bir Foreach etkinliği izler. Diziyivalue
ForEach etkinlikitems
alanına, desenini@activity('MyLookupActivity').output.value
kullanarak geçirirsiniz. Dizideki öğelerevalue
erişmek için aşağıdaki söz dizimini kullanın:@{activity('lookupActivity').output.value[zero based index].propertyname}
.@{activity('lookupActivity').output.value[0].schema}
bunun bir örneğidir.{ "count": "2", "value": [ { "Id": "1", "schema":"dbo", "table":"Table1" }, { "Id": "2", "schema":"dbo", "table":"Table2" } ] }
Örnek
Bu örnekte işlem hattı iki etkinlik içerir: Arama ve Kopyalama. Kopyalama Etkinliği, Azure SQL Veritabanı örneğinizdeki bir SQL tablosundaki verileri Azure Blob depolama alanına kopyalar. SQL tablosunun adı Blob depolamadaki bir JSON dosyasında depolanır. Arama etkinliği çalışma zamanında tablo adını arar. JSON, bu yaklaşım kullanılarak dinamik olarak değiştirilir. İşlem hatlarını veya veri kümelerini yeniden dağıtmanız gerekmez.
Bu örnekte yalnızca ilk satır için arama gösterilmektedir. Tüm satırlar için arama yapmak ve sonuçları ForEach etkinliğiyle zincirleme yapmak için Birden çok tabloyu toplu kopyalama bölümündeki örneklere bakın.
İşlem Hattı
- Arama etkinliği, Azure Blob depolamadaki bir konuma başvuran LookupDataset'i kullanacak şekilde yapılandırılır. Arama etkinliği, sql tablosunun adını bu konumdaki bir JSON dosyasından okur.
- Kopyalama Etkinliği, SQL tablosunun adı olan Arama etkinliğinin çıkışını kullanır. SourceDataset içindeki tableName özelliği, Arama etkinliğinden elde edilen çıkışı kullanacak şekilde yapılandırılır. Kopyalama Etkinliği verileri SQL tablosundan Azure Blob depolama alanındaki bir konuma kopyalar. Konum, SinkDataset özelliği tarafından belirtilir.
{
"name": "LookupPipelineDemo",
"properties": {
"activities": [
{
"name": "LookupActivity",
"type": "Lookup",
"dependsOn": [],
"policy": {
"timeout": "7.00:00:00",
"retry": 0,
"retryIntervalInSeconds": 30,
"secureOutput": false,
"secureInput": false
},
"userProperties": [],
"typeProperties": {
"source": {
"type": "JsonSource",
"storeSettings": {
"type": "AzureBlobStorageReadSettings",
"recursive": true
},
"formatSettings": {
"type": "JsonReadSettings"
}
},
"dataset": {
"referenceName": "LookupDataset",
"type": "DatasetReference"
},
"firstRowOnly": true
}
},
{
"name": "CopyActivity",
"type": "Copy",
"dependsOn": [
{
"activity": "LookupActivity",
"dependencyConditions": [
"Succeeded"
]
}
],
"policy": {
"timeout": "7.00:00:00",
"retry": 0,
"retryIntervalInSeconds": 30,
"secureOutput": false,
"secureInput": false
},
"userProperties": [],
"typeProperties": {
"source": {
"type": "AzureSqlSource",
"sqlReaderQuery": {
"value": "select * from [@{activity('LookupActivity').output.firstRow.schema}].[@{activity('LookupActivity').output.firstRow.table}]",
"type": "Expression"
},
"queryTimeout": "02:00:00",
"partitionOption": "None"
},
"sink": {
"type": "DelimitedTextSink",
"storeSettings": {
"type": "AzureBlobStorageWriteSettings"
},
"formatSettings": {
"type": "DelimitedTextWriteSettings",
"quoteAllText": true,
"fileExtension": ".txt"
}
},
"enableStaging": false,
"translator": {
"type": "TabularTranslator",
"typeConversion": true,
"typeConversionSettings": {
"allowDataTruncation": true,
"treatBooleanAsNumber": false
}
}
},
"inputs": [
{
"referenceName": "SourceDataset",
"type": "DatasetReference",
"parameters": {
"schemaName": {
"value": "@activity('LookupActivity').output.firstRow.schema",
"type": "Expression"
},
"tableName": {
"value": "@activity('LookupActivity').output.firstRow.table",
"type": "Expression"
}
}
}
],
"outputs": [
{
"referenceName": "SinkDataset",
"type": "DatasetReference",
"parameters": {
"schema": {
"value": "@activity('LookupActivity').output.firstRow.schema",
"type": "Expression"
},
"table": {
"value": "@activity('LookupActivity').output.firstRow.table",
"type": "Expression"
}
}
}
]
}
],
"annotations": [],
"lastPublishTime": "2020-08-17T10:48:25Z"
}
}
Arama veri kümesi
Arama veri kümesi, AzureBlobStorageLinkedService türü tarafından belirtilen Azure Depolama arama klasöründeki sourcetable.json dosyasıdır.
{
"name": "LookupDataset",
"properties": {
"linkedServiceName": {
"referenceName": "AzureBlobStorageLinkedService",
"type": "LinkedServiceReference"
},
"annotations": [],
"type": "Json",
"typeProperties": {
"location": {
"type": "AzureBlobStorageLocation",
"fileName": "sourcetable.json",
"container": "lookup"
}
}
}
}
Kopyalama Etkinliği için kaynak veri kümesi
Kaynak veri kümesi, SQL tablosunun adı olan Arama etkinliğinin çıkışını kullanır. Kopyalama Etkinliği, verileri bu SQL tablosundan Azure Blob depolama alanındaki bir konuma kopyalar. Konum havuz veri kümesi tarafından belirtilir.
{
"name": "SourceDataset",
"properties": {
"linkedServiceName": {
"referenceName": "AzureSqlDatabase",
"type": "LinkedServiceReference"
},
"parameters": {
"schemaName": {
"type": "string"
},
"tableName": {
"type": "string"
}
},
"annotations": [],
"type": "AzureSqlTable",
"schema": [],
"typeProperties": {
"schema": {
"value": "@dataset().schemaName",
"type": "Expression"
},
"table": {
"value": "@dataset().tableName",
"type": "Expression"
}
}
}
}
Kopyalama Etkinliği için havuz veri kümesi
Kopyalama Etkinliği verileri SQL tablosundan Azure Depolama'daki csv klasöründeki filebylookup.csv dosyasına kopyalar. Dosya AzureBlobStorageLinkedService özelliği tarafından belirtilir.
{
"name": "SinkDataset",
"properties": {
"linkedServiceName": {
"referenceName": "AzureBlobStorageLinkedService",
"type": "LinkedServiceReference"
},
"parameters": {
"schema": {
"type": "string"
},
"table": {
"type": "string"
}
},
"annotations": [],
"type": "DelimitedText",
"typeProperties": {
"location": {
"type": "AzureBlobStorageLocation",
"fileName": {
"value": "@{dataset().schema}_@{dataset().table}.csv",
"type": "Expression"
},
"container": "csv"
},
"columnDelimiter": ",",
"escapeChar": "\\",
"quoteChar": "\""
},
"schema": []
}
}
sourcetable.json
sourcetable.json dosyası için aşağıdaki iki biçim türünü kullanabilirsiniz.
Nesne kümesi
{
"Id":"1",
"schema":"dbo",
"table":"Table1"
}
{
"Id":"2",
"schema":"dbo",
"table":"Table2"
}
Nesneler dizisi
[
{
"Id": "1",
"schema":"dbo",
"table":"Table1"
},
{
"Id": "2",
"schema":"dbo",
"table":"Table2"
}
]
Sınırlamalar ve geçici çözümler
Arama etkinliğinin bazı sınırlamaları ve önerilen geçici çözümler aşağıdadır.
Sınırlama | Geçici çözüm |
---|---|
Arama etkinliği en fazla 5.000 satıra ve en fazla 4 MB boyuta sahiptir. | Dış işlem hattının en yüksek satır veya boyutu aşmayan verileri alan bir iç işlem hattı üzerinde yinelendiği iki düzeyli bir işlem hattı tasarlayın. |
İlgili içerik
Azure Data Factory ve Synapse işlem hatları tarafından desteklenen diğer denetim akışı etkinliklerine bakın: