# のマルチテーブル サポートDirect Discovery

Direct Discovery を使用すると、ANSI SQL 結合機能を使って複数のテーブルやビューをロードできます。

単一チャートの中のメジャーは、すべて、Qlik Sense 内の同じ論理テーブルから派生したものでなければなりませんが、派生元には、join ステートメントを介してリンクされたソースからの複数のテーブルの組み合わせを使用できます。ただし、軸については、同じチャートの中で他の複数のテーブルから取得した複数の軸を使用できます。

例えば、Where 節または Join 節のいずれかを使用して、Direct Discovery でロードしたテーブルをリンクできます。

* 大きなデータセットを使用するメモリ シナリオでは、Direct Discovery を 1 事実/複数軸で展開できます。
* Direct Discovery は、以下の基準のいずれかを満たす複数のテーブルで使用できます。
  * 結合に使用するキー項目の濃度が低い。

  * 結合に使用するキー項目の濃度が高く、DirectEnableSubquery が true に設定されており、すべてのテーブルが Direct Discovery で結合されている。

    詳細については、「[でのサブクエリの使用Direct Discovery](https://help.qlik.com/ja-JP/sense/May2025/Subsystems/Hub/Content/Sense_Hub/DirectDiscovery/using-subqueries-direct-discovery.htm)」を参照してください。
* Direct Discovery は、すべてのテーブルが Direct Discovery 形式の第 3 正規形シナリオでの展開には適していません。

## Where 節を使用した Direct Discovery テーブルのリンク

このスクリプト例では、AW2012 データベースからデータをロードします。Product と ProductSubcategory の 2 つのテーブルは、共通の ProductSubCategoryID 項目を使用して Where 節でリンクされています。

```

      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 テーブルのリンク

Direct Discovery テーブルは、Join On 節を使用してリンクすることもできます。このステートメント例では、SalesOrderID 項目を介して SalesOrderHeader テーブルを SalesOrderDetail テーブルに結合し、さらに Customer ID 項目を介して Customer テーブルを SalesOrderHeader テーブルに結合します。

この例では、同じ論理テーブルからメジャーを作成するため、それらのメジャーを同じチャートに使用できます。例えば、SubTotal と OrderQty を メジャーとしてチャートを作成することができます。

```
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);
```