Direct Discovery içinde çoklu tablo desteği

Direct Discovery özelliğini birden fazla tablo yüklemek ya da ANSI SQL join fonksiyonunu kullanarak görüntülemek için kullanabilirsiniz. Tek bir grafikte, tüm ölçümler QlikView içerisindeki aynı mantıksal tablodan türetilmelidir; ancak, bu join deyimleri üzerinden kaynakta birbirine bağlı, çok sayıda tablonun bir kombinasyonu olabilir. Ancak, aynı grafikteki diğer tablolardan alınmış boyutları kullanabilirsiniz.

Örneğin, Direct Discovery ile yüklenen tabloları bir Where cümlesi ya da bir Join cümlesi kullanarak birbirine bağlayabilirsiniz.

  • Direct Discovery, büyük veri kümelerini içeren tek olgulu/çok boyutlu bir bellek içi senaryosunda dağıtılabilir.
  • Direct Discovery, aşağıdaki kriterlerden herhangi biriyle eşleşen birden fazla tablo ile kullanılabilir:
    • Join içindeki anahtar alanın önemliliği düşüktür.
    • Join içindeki anahtar alanın önemliliği yüksektir; DirectEnableSubquery 'true' olarak ayarlanmıştır ve tüm tablolar Direct Discovery ile birleştirilmiştir.

      Bkz. Direct Discovery ile alt sorguları kullanma

  • Direct Discovery, tüm tabloların Direct Discovery biçiminde olduğu Üçüncü Normal Biçim senaryosunda dağıtıma uygun değildir.

Direct Discovery tablolarını Where cümlesi ile bağlama

Bu örnek kodda, AW2012 veritabanından verileri yüklüyoruz. Product ve ProductSubcategory tabloları, ortak ProductSubCategoryID alanı kullanılarak bir Where cümlesiyle birbirine bağlanır.

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 ;

Direct Discovery tablolarını Join On cümleleri ile bağlama

Direct Discovery tablolarını bağlamak için Join On cümlelerini de kullanabilirsiniz. Bu örnek deyimde SalesOrderHeader tablosunu SalesOrderDetail tablosuna SalesOrderID alanı üzerinden birleştiriyoruz ve ayrıca Customer tablosuyla SalesOrderHeader tablosunu Customer ID alanı üzerinden birleştiriyoruz.

Bu örnekte, aynı mantıksal tablodan ölçümler oluşturuyoruz; bu da bunları aynı grafikte kullanabileceğimiz anlamına geliyor. Örneğin, hesaplama olarak SubTotal ve OrderQty kullanılan bir grafik oluşturabilirsiniz.

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);
Note: FROM cümlesinde tablolara takma isim ile başvurulması mümkün değildir, tam tablo adını kullanmanız gerekir.