다음을 통해 공유


Azure Data Lake Storage 쿼리 가속을 사용하여 데이터 필터링

이 문서에서는 쿼리 가속을 사용하여 스토리지 계정에서 데이터 하위 집합을 검색하는 방법을 보여 줍니다.

쿼리 가속을 사용하면 애플리케이션 및 분석 프레임워크에서 지정된 작업을 수행하는 데 필요한 데이터만 검색하여 데이터 처리를 획기적으로 최적화하도록 할 수 있습니다. 자세히 알아보려면 Azure Data Lake Storage 쿼리 가속을 참조하세요.

필수 조건

  • Azure Storage에 액세스하려면 Azure 구독이 있어야 합니다. 구독이 아직 없는 경우 시작하기 전에 체험 계정을 만듭니다.

  • 범용 v2 스토리지 계정. 스토리지 계정 만들기를 참조하세요.

  • 이중 암호화는 지원되지 않습니다.

  • JSON 파일을 쿼리하는 경우 이 파일의 각 레코드 크기는 1MB보다 작아야 합니다.

  • SDK 관련 필수 구성 요소를 보려면 탭을 선택합니다.

    해당 없음


환경 설정

1단계: 패키지 설치

Az 모듈 버전 4.6.0 이상을 설치합니다.

Install-Module -Name Az -Repository PSGallery -Force

이전 버전의 Az에서 업데이트하려면 다음 명령을 실행합니다.

Update-Module -Name Az

2단계: 문 추가

해당 없음

필터를 사용하여 데이터 검색

SQL을 사용하여 쿼리 가속 요청에서 행 필터 조건자 및 열 프로젝션을 지정할 수 있습니다. 다음 코드는 스토리지의 CSV 파일을 쿼리하고 세 번째 열이 Hemingway, Ernest 값과 일치하는 데이터의 모든 행을 반환합니다.

  • SQL 쿼리에서 BlobStorage 키워드는 쿼리 중인 파일을 나타내는 데 사용됩니다.

  • 열 참조는 첫 번째 열이 _1_N으로 지정됩니다. 원본 파일에 머리글 행이 포함되어 있으면 머리글 행에 지정된 이름으로 열을 참조할 수 있습니다.

Function Get-QueryCsv($ctx, $container, $blob, $query, $hasheaders) {
    $tempfile = New-TemporaryFile
    $informat = New-AzStorageBlobQueryConfig -AsCsv -HasHeader:$hasheaders
    Get-AzStorageBlobQueryResult -Context $ctx -Container $container -Blob $blob -InputTextConfiguration $informat -OutputTextConfiguration (New-AzStorageBlobQueryConfig -AsCsv -HasHeader) -ResultFile $tempfile.FullName -QueryString $query -Force
    Get-Content $tempfile.FullName
}

$container = "data"
$blob = "csv/csv-general/seattle-library.csv"
Get-QueryCsv $ctx $container $blob "SELECT * FROM BlobStorage WHERE _3 = 'Hemingway, Ernest, 1899-1961'" $false

특정 열 검색

열의 하위 집합으로 결과의 범위를 지정할 수 있습니다. 이렇게 하면 지정된 계산을 수행하는 데 필요한 열만 검색할 수 있습니다. 네트워크를 통해 전송되는 데이터가 더 적기 때문에 애플리케이션 성능이 향상되고 비용이 절감됩니다.

참고 항목

결과 범위를 지정할 수 있는 최대 열 수는 49입니다. 결과에 49개가 넘는 열이 포함되어야 하는 경우 SELECT 식에 와일드카드 문자(*)를 사용합니다(예: SELECT *).

이 코드는 데이터 집합의 모든 책에 대해 BibNum 열만 검색합니다. 또한 원본 파일의 머리글 행에 있는 정보를 사용하여 쿼리의 열을 참조합니다.

Function Get-QueryCsv($ctx, $container, $blob, $query, $hasheaders) {
    $tempfile = New-TemporaryFile
    $informat = New-AzStorageBlobQueryConfig -AsCsv -HasHeader:$hasheaders
    Get-AzStorageBlobQueryResult -Context $ctx -Container $container -Blob $blob -InputTextConfiguration $informat -OutputTextConfiguration (New-AzStorageBlobQueryConfig -AsCsv -HasHeader) -ResultFile $tempfile.FullName -QueryString $query -Force
    Get-Content $tempfile.FullName
}

$container = "data"
$blob = "csv/csv-general/seattle-library-with-headers.csv"
Get-QueryCsv $ctx $container $blob "SELECT BibNum FROM BlobStorage" $true

다음 코드에서는 행 필터링 및 열 프로젝션을 동일한 쿼리로 결합합니다.

Get-QueryCsv $ctx $container $blob $query $true

Function Get-QueryCsv($ctx, $container, $blob, $query, $hasheaders) {
    $tempfile = New-TemporaryFile
    $informat = New-AzStorageBlobQueryConfig -AsCsv -HasHeader:$hasheaders
    Get-AzStorageBlobQueryResult -Context $ctx -Container $container -Blob $blob -InputTextConfiguration $informat -OutputTextConfiguration (New-AzStorageBlobQueryConfig -AsCsv -HasHeader) -ResultFile $tempfile.FullName -QueryString $query -Force
    Get-Content $tempfile.FullName
}

$container = "data"
$query = "SELECT BibNum, Title, Author, ISBN, Publisher, ItemType
            FROM BlobStorage
            WHERE ItemType IN
                ('acdvd', 'cadvd', 'cadvdnf', 'calndvd', 'ccdvd', 'ccdvdnf', 'jcdvd', 'nadvd', 'nadvdnf', 'nalndvd', 'ncdvd', 'ncdvdnf')"

다음 단계