Direct Discovery에서 다중 테이블 지원

Direct Discovery에서 ANSI SQL 조인 기능을 사용하여 둘 이상의 테이블 또는 보기를 로드할 수 있습니다. 단일 차트에서 모든 계수는 Qlik Sense의 동일한 논리 테이블에서 파생되어야 하지만 조인 문을 통해 연결된 소스에서 가져온 여러 테이블의 조합일 수 있습니다. 하지만 다른 테이블에서 가져온 차원을 동일한 차트에 사용할 수 있습니다.

예를 들어 Direct Discovery에 로드한 테이블을 Where 절 또는 Join 절을 사용하여 연결할 수 있습니다.

  • Direct Discovery는 대규모 데이터 셋이 포함된 메모리 시나리오에서 단일 팩트/다중 차원으로 배포될 수 있습니다.
  • Direct Discovery는 다음 중 하나의 기준에 부합하는 둘 이상의 테이블과 함께 사용할 수 있습니다.
    • 조인 내 키 필드의 집합 크기가 작습니다.
    • 조인 내 키 필드의 집합 크기가 크며, DirectEnableSubquery가 true로 설정되었고 모든 테이블이 Direct Discovery에 조인되었습니다.

      자세한 내용은 Direct Discovery에서 하위 쿼리 사용하기을 참조하십시오.

  • Direct Discovery는 모든 테이블이 Direct Discovery 형식이므로 3NF(제3정규형) 시나리오에 배포하기에는 적합하지 않습니다.

Where 절을 사용하여 Direct Discovery 테이블 연결

이 예제 스크립트에서는 AW2012 데이터베이스에서 데이터를 로드합니다. Where 절에서 공통 ProductSubCategoryID 필드를 사용하여 ProductProductSubcategory 테이블을 연결합니다.

Product_Join: DIRECT QUERY DIMENSION [ProductID], [AW2012].[Production].[Product].[Name] as [Product Name], [AW2012].[Production].[ProductSubcategory].[Name] as [Sub Category Name], Color, [AW2012].[Production].[Product].ProductSubcategoryID as [SubcategoryID] MEASURE [ListPrice] FROM [AW2012].[Production].[Product], [AW2012].[Production].[ProductSubcategory] WHERE [AW2012].[Production].[Product].ProductSubcategoryID = [AW2012].[Production].[ProductSubcategory].ProductSubcategoryID ;

Join On 절을 사용하여 Direct Discovery 테이블 연결

Join On 절을 사용하여 Direct Discovery 테이블을 연결할 수도 있습니다. 이 예제 문에서는 SalesOrderID 필드를 통해 SalesOrderDetail 테이블에 SalesOrderHeader 테이블을 조인하고, Customer ID 필드를 통해 SalesOrderHeader 테이블에 Customer 테이블을 조인합니다.

이 예에서는 동일한 논리 테이블의 계수를 만들기 때문에 동일한 차트에서 사용할 수 있습니다. 예를 들어 SubTotalOrderQty를 계수로 사용하여 차트를 만들 수 있습니다.

Sales_Order_Header_Join: DIRECT QUERY DIMENSION AW2012.Sales.Customer.CustomerID as CustomerID, AW2012.Sales.SalesOrderHeader.SalesPersonID as SalesPersonID, AW2012.Sales.SalesOrderHeader.SalesOrderID as SalesOrderID, ProductID, AW2012.Sales.Customer.TerritoryID as TerritoryID, OrderDate, NATIVE('month([OrderDate])') as OrderMonth, NATIVE('year([OrderDate])') as OrderYear MEASURE SubTotal, TaxAmt, TotalDue, OrderQty DETAIL DueDate, ShipDate, CreditCardApprovalCode, PersonID, StoreID, AccountNumber, rowguid, ModifiedDate FROM AW2012.Sales.SalesOrderDetail JOIN AW2012.Sales.SalesOrderHeader ON (AW2012.Sales.SalesOrderDetail.SalesOrderID = AW2012.Sales.SalesOrderHeader.SalesOrderID) JOIN AW2012.Sales.Customer ON(AW2012.Sales.Customer.CustomerID = AW2012.Sales.SalesOrderHeader.CustomerID);