Azure Data Factory 및 Azure Synapse Analytics의 조회 작업
적용 대상: Azure Data Factory Azure Synapse Analytics
팁
기업용 올인원 분석 솔루션인 Microsoft Fabric의 Data Factory를 사용해 보세요. Microsoft Fabric은 데이터 이동부터 데이터 과학, 실시간 분석, 비즈니스 인텔리전스 및 보고에 이르기까지 모든 것을 다룹니다. 무료로 새 평가판을 시작하는 방법을 알아봅니다!
조회 작업은 데이터 팩터리 및 Synapse 파이프라인에서 지원하는 데이터 원본에서 데이터 세트를 검색할 수 있습니다. 개체 이름을 하드 코딩하는 대신, 후속 작업에서 작동할 개체를 동적으로 결정하는 데 사용할 수 있습니다. 개체의 예로는 파일과 테이블이 있습니다.
조회 작업은 구성 파일 또는 테이블의 내용을 읽고 반환합니다. 쿼리 또는 저장 프로시저를 실행한 결과도 반환합니다. 출력은 싱글톤 값 또는 특성의 배열일 수 있으며 해당 출력은 후속 복사, 변환 또는 ForEach 작업과 같은 제어 흐름 작업에서 사용될 수 있습니다.
UI를 사용하여 조회 작업 만들기
파이프라인에서 조회 작업을 사용하려면 다음 단계를 완료합니다.
파이프라인 작업 창에서 조회를 검색하고 조회 작업을 파이프라인 캔버스로 끕니다.
아직 선택하지 않은 경우 캔버스에서 새 조회 작업을 선택하고 해당 설정 탭을 선택하여 세부 정보를 편집합니다.
기존 원본 데이터 세트를 선택하거나 새로 만들기 단추를 선택하여 새로 만듭니다.
원본 데이터 세트에서 포함할 행을 식별하는 옵션은 데이터 세트 형식에 따라 달라집니다. 위 예제에서는 구분된 텍스트 데이터 세트에 대한 구성 옵션을 보여 줍니다. 다음은 Azure SQL 테이블 데이터 세트 및 OData 데이터 세트에 대한 구성 옵션의 예입니다.
지원되는 기능
다음을 참고하십시오.
- 조회 작업은 최대 5,000개의 행을 반환할 수 있습니다. 결과 집합에 더 많은 레코드가 있으면 처음 5000행이 반환됩니다.
- 조회 작업 출력은 최대 4MB의 크기를 지원하며 크기가 제한을 초과하면 작업은 실패합니다.
- 시간 제한 전까지 가능한 최대 조회 작업 기간은 24시간입니다.
참고 항목
쿼리 또는 저장 프로시저를 사용하여 데이터를 조회하는 경우 정확히 하나의 결과 집합을 반환하는지 확인해야 합니다. 그렇지 않으면 조회 작업이 실패합니다.
다음은 조회 작업에 지원되는 데이터 원본입니다.
참고 항목
미리 보기로 표시된 모든 커넥터는 사용자가 직접 사용해 보고 피드백을 제공할 수 있음을 의미합니다. 솔루션의 미리 보기 커넥터에 종속성을 적용하려면 Azure 지원에 문의하세요.
구문
{
"name":"LookupActivity",
"type":"Lookup",
"typeProperties":{
"source":{
"type":"<source type>"
},
"dataset":{
"referenceName":"<source dataset name>",
"type":"DatasetReference"
},
"firstRowOnly":<true or false>
}
}
형식 속성
이름 | Description | Type | 필수 여부 |
---|---|---|---|
데이터 세트 | 조회를 위한 데이터 세트 참조를 제공합니다. 자세한 내용은 해당하는 각 커넥터 문서의 데이터 세트 속성 섹션에서 확인하세요. | 키/값 쌍 | 예 |
source | 복사 작업 원본과 동일한 데이터 세트 관련 원본 속성을 포함하고 있습니다. 자세한 내용은 해당하는 각 커넥터 문서의 복사 작업 속성 섹션에서 확인하세요. | 키/값 쌍 | 예 |
firstRowOnly | 첫 번째 행만 반환할 것인지 아니면 모든 행을 반환할 것인지 여부를 나타냅니다. | 부울 | 아니요. 기본값은 true 입니다. |
참고 항목
- ByteArray 형식의 원본 열은 지원되지 않습니다.
- 구조체는 데이터 세트 정의에서 지원되지 않습니다. 텍스트 서식 파일의 경우 헤더 행을 사용하여 열 이름을 입력합니다.
- 조회 원본이 JSON 파일인 경우 JSON 개체의 모양을 변경하는
jsonPathDefinition
설정이 지원되지 않습니다. 전체 개체가 검색됩니다.
조회 작업 결과 사용
조회 결과는 작업 실행 결과의 output
섹션에 반환됩니다.
firstRowOnly
가true
(기본값)로 설정되면 출력 형식은 다음 코드와 같습니다. 조회 결과는 고정된firstRow
키 아래에 있습니다. 결과를 후속 작업에 사용하려면@{activity('LookupActivity').output.firstRow.table}
패턴을 사용합니다.{ "firstRow": { "Id": "1", "schema":"dbo", "table":"Table1" } }
firstRowOnly
가false
로 설정되면 출력 형식은 다음 코드와 같습니다.count
필드는 반환되는 레코드 수를 나타냅니다. 자세한 값은 고정value
배열 아래에 표시됩니다. 이 경우 조회 작업 후에 Foreach 작업이 이어집니다.@activity('MyLookupActivity').output.value
패턴을 사용하여value
배열을 ForEach 작업items
필드에 전달합니다.value
배열의 요소에 액세스하려면@{activity('lookupActivity').output.value[zero based index].propertyname}
구문을 따릅니다. 예제는@{activity('lookupActivity').output.value[0].schema}
입니다.{ "count": "2", "value": [ { "Id": "1", "schema":"dbo", "table":"Table1" }, { "Id": "2", "schema":"dbo", "table":"Table2" } ] }
예시
이 예제에서 파이프라인은 조회 및 복사 작업을 포함하고 있습니다. 복사 작업은 Azure SQL Database 인스턴스의 SQL 테이블에서 Azure Blob 스토리지로 데이터를 복사합니다. SQL 테이블의 이름은 Blob Storage의 JSON 파일에 저장됩니다. 조회 작업은 런타임 시 테이블 이름을 조회합니다. JSON은 이 방법을 사용하여 동적으로 수정됩니다. 따라서 사용자가 파이프라인 또는 데이터 세트를 다시 배포할 필요가 없습니다.
이 예제는 첫 번째 행만 조회합니다. 모든 행을 조회하고 결과를 ForEach 작업과 연결하려면 여러 테이블 대량 복사의 샘플을 참조하세요.
파이프라인
- 조회 작업은 Azure Blob Storage의 위치를 참조하는 LookupDataset를 사용하도록 구성됩니다. 조회 작업은 이 위치에 있는 JSON 파일에서 SQL 테이블의 이름을 읽습니다.
- 복사 작업은 SQL 테이블의 이름인 조회 작업의 출력을 사용합니다. SourceDataset의 tableName 속성은 조회 작업의 출력을 사용하도록 구성됩니다. 복사 작업은 SQL 테이블의 데이터를 Azure Blob Storage의 위치로 복사합니다. 위치는 SinkDataset 속성을 통해 지정합니다.
{
"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"
}
}
조회 데이터 세트
lookup 데이터 세트는 AzureBlobStorageLinkedService 형식으로 지정된 Azure Storage 조회 폴더의 sourcetable.json 파일입니다.
{
"name": "LookupDataset",
"properties": {
"linkedServiceName": {
"referenceName": "AzureBlobStorageLinkedService",
"type": "LinkedServiceReference"
},
"annotations": [],
"type": "Json",
"typeProperties": {
"location": {
"type": "AzureBlobStorageLocation",
"fileName": "sourcetable.json",
"container": "lookup"
}
}
}
}
복사 작업의 원본 데이터 세트
원본 데이터 세트는 SQL 테이블의 이름인 조회 작업의 출력을 사용합니다. 복사 작업은 이 SQL 테이블의 데이터를 Azure Blob Storage의 위치로 복사합니다. 위치는 sink 속성을 통해 지정합니다.
{
"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"
}
}
}
}
복사 작업의 Sink 데이터 세트
복사 작업은 SQL 테이블의 데이터를 Azure Storage에 있는 csv 폴더의 filebylookup.csv 파일에 복사합니다. 이 파일은 AzureBlobStorageLinkedService 속성을 통해 지정합니다.
{
"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 파일에 대해 다음 두 종류의 형식을 사용할 수 있습니다.
개체의 집합
{
"Id":"1",
"schema":"dbo",
"table":"Table1"
}
{
"Id":"2",
"schema":"dbo",
"table":"Table2"
}
개체의 배열
[
{
"Id": "1",
"schema":"dbo",
"table":"Table1"
},
{
"Id": "2",
"schema":"dbo",
"table":"Table2"
}
]
제한 사항 및 해결 방법
조회 활동 및 제안된 해결 방법의 몇 가지 제한 사항은 다음과 같습니다.
제한 사항 | 해결 방법 |
---|---|
조회 작업에는 최대 5,000개의 행 및 최대 4MB의 크기가 있습니다. | 최대 행 수 또는 최대 크기를 초과하지 않는 데이터를 검색하는 내부 파이프라인을 통해 외부 파이프라인을 반복하는 두 수준의 파이프라인을 설계합니다. |
관련 콘텐츠
Azure Data Factory 및 Synapse 파이프라인에서 지원하는 다른 제어 흐름 작업을 참조하세요.