QlikWorld 2020 글로벌 컨퍼런스 데이터를 최대한 활용하는 방법을 알아 보려면 가입하십시오. 서두르세요. 지금 등록하면 할인된 가격으로 제공됩니다.

의미 연결

일반적으로 선택은 원하는 필드 값을 클릭함으로써 명시적으로 수행됩니다. 그러나 의미 연결을 통해 간접적으로 선택을 수행하는 방법도 있습니다. 의미 연결은 필드 값과 비슷하지만 개체 자체가 아니라 개체 간의 관계를 나타낸다는 점이 다릅니다. 의미 연결은 버튼의 목록으로 표시됩니다.

의미 연결을 클릭하면 다른 필드에 대한 선택이 수행됩니다.

의미 테이블의 규칙

참고: 의미 테이블은 테이블 뷰어에 표시되지 않습니다.

의미 연결은 개체 간의 관계를 포함하는 테이블을 로드하여 만듭니다.

  • 이 테이블은 정확히 3개 또는 4개의 열을 포함해야 합니다.
  • 의미 테이블은 다른 필드의 필드 값 관계나 동일한 필드의 필드 값 관계를 포함해야 합니다. 두 가지 유형을 혼합할 수는 없습니다.
  • 의미 테이블을 로드하는 LOAD 또는 SELECT 문 앞에는 semantic 한정자를 지정하여 논리 테이블이 아님을 표시해야 합니다.

일반적으로 4개의 열이 사용되는데, 첫째 열은 다른 필드 값과 관련된 필드 값을 포함하고, 셋째 열은 관련된 필드 값을 포함합니다. 둘째 열은 관계의 이름을 포함해야 하고 마지막으로 넷째 열은 역 관계의 이름을 포함해야 합니다.

3개의 열이 사용되는 경우 역 관계에 대한 명시적인 이름을 지정할 수 없습니다. 이 경우 둘째 열에 지정하는 이름이 관계와 역 관계에 모두 사용됩니다. 이때는 이름의 앞이나 뒤에 화살표가 표시됩니다.

동일한 필드의 필드 값 관계인 경우 첫째 열과 셋째 열에 동일한 이름이 있어야 합니다. 또한 둘째 열과 넷째 열의 이름, 즉 관계의 유형도 동일해야 합니다. 그러나 다른 필드의 필드 값 관계인 경우 모든 열이 다른 이름을 포함해야 합니다.

데이터에서 의미 테이블 추출

의미 테이블이 반드시 QlikView 외부의 테이블이어야 하는 것은 아닙니다. 하지만 별도의 LOAD 문을 통해 기존 개체의 테이블에서 이 테이블을 추출하는 것이 좀 더 유연한 방법입니다.

QlikView 예제 디렉터리에 있는 presidents 예제에서 PredecessorSuccessor 연결을 생성하는 스크립트는 다음과 같습니다.

Directory presidents;

LOAD * from presdnts.csv (ansi, txt, delimiter

is ',', embedded labels);

Semantic LOAD

No -1 as No,

'Successor' as Relation,

No,

'Predecessor' as Relation

from presdnts.csv (ansi, txt, delimiter is ',',

embedded labels) where No > 1;

두 번째 LOAD 문은 오른쪽과 비슷한 테이블을 만들며, 이 테이블은 의미 테이블로 로드됩니다. 첫 번째 레코드는 존재하지 않는 0번째 대통령과 첫 번째 대통령을 연결하므로 where 절을 사용해서 첫 번째 레코드를 생략했습니다.

LOAD 문에는 No라는 레이블이 지정된 필드 두 개와 Relation이라는 레이블이 지정된 필드 두 개가 있습니다. 내부 테이블을 로드할 때 이러한 LOAD 문을 사용하면 스크립트 실행 오류가 발생합니다. 단일 내부 테이블에 대한 로드 프로시저에서 동일한 이름의 필드를 허용하지 않기 때문입니다. 이에 해당하는 SELECT 문도 불가능합니다. 대부분의 ODBC 드라이버에서도 동일한 이름의 필드를 허용하지 않기 때문입니다. presidents 테이블이 데이터베이스에 있는 경우 다음과 같은 구조를 사용해야 합니다.

Connect to DataBase;

SELECT * from presdnts;

Alias No2 as No, Relation2 as Relation;

Semantic SELECT

No -1 as No,

'Successor' as Relation,

No as No2,

'Predecessor' as Relation2

from presdnts where No > 1;

대통령 예제는 의미 연결을 사용하는 방법을 보여주기 위해 간단히 예로 든 것입니다. 가계도에서 사촌, 형제, 할머니 등에 의미 연결을 사용하거나 회사 직원 명부에서 superior, reports to, secretary 등에 의미 연결을 사용할 수도 있습니다.

관련된 값을 관계 이름으로 사용

관련된 필드 값을 관계의 이름으로 사용하는 것이 이해하기 쉬운 경우가 있습니다. 대통령 예제에서 모든 전임자를 한 열에 넣고 모든 후임자를 다른 열에 넣는 경우를 가정해 보겠습니다.

이러한 연결을 만들려면 다음과 같은 스크립트가 필요합니다.

LOAD

No as DuplicateOfNo,

FirstName & ' ' & LastName as Name,

*

from presdnts.csv;

Semantic LOAD

No -1 as No,

FirstName & ' ' & LastName as Successor,

No as DuplicateOfNo,

'Dummy1'

from presdnts.csv where No > 1;

Semantic LOAD

No +1 as No,

FirstName &' ' & LastName as Predecessor,

No as DuplicateOfNo,

'Dummy2'

from presdnts.csv;

의미 연결을 클릭하면 셋째 열 DuplicateOfNo의 필드에서 선택이 수행되며 의미 테이블에서 이 열은 항상 의미 연결에 표시되는 대통령의 번호가 됩니다.

처음에는 명확하게 보이지 않을 수 있지만 위의 구조에서 역 관계는 거의 의미가 없습니다. 이는 대통령의 이름을 표시하며 이를 클릭하는 경우 표시된 대통령의 전임자와 후임자를 선택하게 됩니다. 이를 Dummy1Dummy2라고 하고 첫째 관계(둘째 열)만 사용하는 것도 이 때문입니다.

더미 관계는 목록 상자에 나오지 않아야 하기 때문에 둘째 열과 넷째 열을 다른 유형의 관계로 처리해야 합니다. 즉, 첫째 열과 셋째 열에 다른 필드 이름이 있어야 합니다. 이것이 대통령의 번호 NoDuplicateOfNo라는 두 열이 필요한 이유입니다.

관계가 있는 두 개의 다른 목록 상자가 필요하기 때문에 두 개의 다른 semantic 문을 사용해야 합니다.

이 예제는 세 열 의미 테이블로도 만들 수 있지만 사용자가 역 관계의 목록 상자를 이해하기 어려울 것입니다.