테이블 형식 모델의 문자열 스토리지 및 데이터 정렬
적용 대상: SQL Server Analysis Services Azure Analysis Services 패브릭/Power BI Premium
테이블 형식 모델에서 문자열(텍스트 값)은 고도로 압축된 형식으로 저장되며, 이러한 압축으로 인해 전체 또는 부분 문자열을 검색할 때 예기치 않은 결과를 얻게 될 수 있습니다. 또한 문자열 로캘 및 데이터 정렬은 가장 가까운 부모 개체에서 계층적으로 상속되므로 문자열 언어가 명시적으로 정의되어 있지 않은 경우 각 문자열이 저장되는 방식과 문자열이 고유한지 아니면 부모 데이터 정렬에 의해 정의된 유사 문자열과 혼합되는지는 부모의 로캘 및 데이터 정렬에 따라 달라질 수 있습니다.
이 문서에서는 문자열이 압축 및 저장되는 메커니즘을 설명하고 데이터 정렬 및 언어가 테이블 형식 모델의 텍스트 수식 결과에 미치는 영향에 대한 예제를 제공합니다.
스토리지
테이블 형식 모델에서는 모든 데이터가 메모리 사용을 최적화할 수 있도록 고도로 압축됩니다. 따라서 어휘적으로 동일한 것으로 간주될 수 있는 모든 문자열이 한 번만 저장됩니다. 문자열의 첫 번째 인스턴스는 정식 표현으로 사용되며 이후 해당하는 각 문자열은 첫 번째 발생한 인스턴스와 동일한 압축된 값으로 인덱싱됩니다.
중요한 점은 어휘적으로 동일한 문자열을 구성하는 요소가 무엇이냐는 것입니다. 동일한 단어로 간주할 수 있는 두 문자열은 어휘적으로 동일한 것으로 간주됩니다. 예를 들어 영어로 violin 이라는 단어를 사전에서 검색할 경우 사전의 편집 정책에 따라 Violin 또는 violin항목을 찾을 수 있지만, 일반적으로 두 단어는 모두 동일한 것으로 간주되며 대/소문자 차이는 무시됩니다. 테이블 형식 모델에서 두 문자열이 어휘적으로 동일한지 여부를 결정하는 요소는 편집 정책이나 사용자 선호도가 아니라 해당 열에 할당된 로캘 및 데이터 정렬 순서입니다.
따라서 대문자와 소문자를 동일하게 처리할지 다르게 처리할지는 데이터 정렬과 로캘에 따라 결정됩니다. 해당 로캘 내의 특정 단어에 대해 특정 열에서 첫 번째로 발생하는 단어가 해당 단어의 정식 표현으로 처리되고 해당 문자열은 압축되지 않은 형식으로 저장됩니다. 다른 모든 문자열은 첫 번째 발생한 단어를 기준으로 테스트되며, 동일성 테스트 조건을 충족하는 문자열은 첫 번째 발생한 단어의 압축된 값에 할당됩니다. 나중에 압축된 값이 검색될 때 이 값은 첫 번째 발생한 문자열의 압축되지 않은 값을 사용하여 표현됩니다.
예를 통해 이 과정을 명확하게 이해할 수 있습니다. 다음의 "Classification - English" 열은 식물과 나무에 대한 정보를 포함하는 테이블에서 추출한 것입니다. 분류 열에서는 각 식물(식물 이름은 여기에 표시되지 않음)에 대한 일반 범주를 보여 줍니다.
Classification - English |
---|
trEE |
PlAnT |
trEE |
PlAnT |
PlAnT |
트리 |
PlAnT |
trEE |
tree |
PlAnT |
trEE |
대/소문자와 악센트 사용이 일관되지 않은 것은 데이터의 원본이 다양하기 때문일 수 있으며 관계형 데이터베이스에서는 이러한 차이가 있는 그대로 저장됩니다. 그러나 이러한 값은 대/소문자만 다를 뿐 대체적으로는 Plant 또는 Tree중 하나에 해당합니다.
미국 영어의 기본 데이터 정렬과 정렬 순서를 사용하는 테이블 형식 모델로 이러한 값을 로드할 경우 대/소문자는 중요하지 않으므로 전체 열에 대해 두 개의 값만 저장됩니다.
Classification - English |
---|
trEE |
PlAnT |
모델에서 분류 - 영어 열을 사용하는 경우 식물 분류를 표시할 때마다 대문자와 소문자를 다양하게 사용하는 원래 값이 아니라 첫 번째 instance 표시됩니다. 이 데이터 정렬 및 로캘에서는 tree 의 대문자 및 소문자 변형이 모두 동일한 것으로 간주되기 때문입니다. 따라서 한 문자열만 보관되며 시스템에서 발견한 첫 번째 문자열 인스턴스가 저장 인스턴스가 됩니다.
경고
사용자가 판단하는 올바른 형태에 따라 첫 번째로 저장할 문자열을 정의할 수도 있지만 이 과정은 매우 어려울 수 있습니다. 모든 값이 동일한 것으로 간주될 경우 엔진에서 처음 처리될 행을 미리 결정할 수 있는 간단한 방법은 없습니다. 대신 표준 값을 설정해야 하는 경우에는 모델을 로드하기 전에 모든 문자열을 정리해야 합니다.
로캘 및 데이터 정렬 순서
문자열(텍스트 값)을 비교할 때 동일성을 정의하는 요소는 일반적으로 해당 문자열이 해석되는 방식에 대한 culture 특성입니다. 일부 culture에서는 문자의 악센트나 대/소문자에 따라 문자열의 의미가 완전히 달라질 수 있으므로, 특정 언어 또는 영역에서 동일성을 결정할 때는 대개 이러한 차이가 고려됩니다.
일반적으로 사용 중인 컴퓨터는 이미 사용자에게 필요한 culture 및 언어 동작에 맞게 구성되어 있으므로 텍스트 값 정렬 및 비교와 같은 문자열 작업이 예상대로 작동합니다. 언어별 동작을 제어하는 설정은 Windows의 국가 및 언어 설정을 통해 정의됩니다. 애플리케이션에서는 이 설정을 읽고 그에 따라 동작을 변경합니다. 일부 애플리케이션에는 사용자가 애플리케이션의 culture 동작이나 문자열 비교 방식을 변경할 수 있는 기능이 있는 경우도 있습니다.
테이블 형식 model 데이터베이스를 만들 때 데이터베이스는 기본적으로 이러한 culture 및 언어 설정을 언어 식별자 및 데이터 정렬의 형태로 상속합니다.
언어 식별자는 문자열에 사용할 문자 집합을 해당 culture에 따라 정의합니다.
데이터 정렬은 문자 순서와 문자 일치성을 정의합니다.
언어 식별자는 언어뿐만 아니라 언어가 사용되는 국가 또는 지역을 식별한다는 점에 유의해야 합니다. 각 언어 식별자에는 기본 데이터 정렬도 지정되어 있습니다. 언어 식별자에 자세한 내용은 Microsoft에서 할당한 로캘 ID를 참조하십시오. 수동으로 값을 삽입할 때는 10진수 LCID 열에서 올바른 ID를 확인할 수 있습니다. 데이터 정렬의 SQL 개념에 대한 자세한 내용은 COLLATE(Transact-SQL)를 참조하세요. 데이터 정렬 지정자 및 Windows 데이터 정렬 이름의 비교 스타일에 대한 자세한 내용은 Windows 데이터 정렬 이름(Transact-SQL)을 참조하세요. 데이터 정렬 이름(Transact-SQL)SQL Server 문서에서는 Windows 데이터 정렬 이름을 SQL에 사용되는 이름에 매핑합니다.
테이블 형식 model 데이터베이스를 만든 후 모델의 모든 새 개체는 데이터베이스 특성에서 언어 및 데이터 정렬 특성을 상속합니다. 이는 모든 개체에 대해 적용됩니다. 상속 경로는 개체에서 시작되어, 부모에서 상속할 언어 및 데이터 정렬 특성을 확인하고, 특성을 찾을 수 없는 경우 최상위 수준까지 계속 진행하여 데이터베이스 수준에서 언어 및 데이터 정렬 특성을 찾는 방식으로 진행됩니다. 즉, 개체의 언어 및 데이터 정렬 특성을 지정하지 않을 경우 기본적으로 개체는 가장 가까운 부모의 특성을 상속합니다.
열의 경우 생성 시 다음 규칙에 따라 언어 및 데이터 정렬 특성이 상속됩니다.
부모 차원 개체에서 언어 및 데이터 정렬 특성이 검색됩니다. 두 값이 모두 있으면 두 값이 열 특성에 복사되고, 한 값만 있으면 다른 값은 기존 값에서 유추되어 두 값이 모두 할당됩니다. 두 값이 모두 없는 경우에는 다음 단계로 진행합니다.
1단계에 설명된 차원에 대한 프로세스와 동일한 프로세스를 사용하여 데이터베이스 개체가 검색됩니다. 특성을 찾지 못하면 다음 단계로 진행합니다.
1단계에 설명된 차원에 대한 프로세스와 동일한 프로세스를 사용하여 서버 개체가 검색됩니다. 특성을 찾지 못하면 열에서는 Windows 언어 식별자를 사용하고 해당 값에서 데이터 정렬 특성을 유추합니다.
일반적으로 원본 데이터베이스의 언어 식별자 및 데이터 정렬 순서는 값이 테이블 형식 모델 열에 저장되는 방식에 거의 영향을 주지 않습니다. 원본 데이터베이스에서 요청된 값을 변환하거나 필터링하는 경우는 예외입니다.
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기