Ana içeriğe geç Tamamlayıcı içeriğe geç

SQL dönüştürmeleri ekleme

SQL tabanlı tabloları dönüştürme görevlerine dahil edebilirsiniz. SQL dönüştürmesi, karmaşık veya basit dönüşümleri tanımlamak için bir SQL SELECT sorgusunu bir işlem hattına girmenize olanak tanır. Sorguyu, ilk yükleme veya artımlı yükleme gerçekleştirilirse çalışacak şekilde uyarlamak için makroları da kullanabilirsiniz.

Bir dönüştürme görevi oluşturma hakkında daha fazla bilgi için bkz. Verileri dönüştürme.

SQL dönüştürmesi ekleme

Bir Dönüştür görevi merkezine SQL dönüştürmesi eklemek için:

  1. Dönüştür'de sorguya dahil edilecek veri kümelerini seçin ve SQL dönüştürmesi ekle'ye tıklayın.

    SQL dönüştürmesi ekle seçeneği, dönüşüm için ayarları girebileceğiniz yerde görüntülenir.

  2. Ad alanında hedef veri kümesi için bir ad girin.

    Ayrıca Açıklama'ya daha uzun bir açıklama da girebilirsiniz.

  3. Materyalleştirme alanında, dönüştürülen çıktının materyalleştirilip materyalleştirilmeyeceğini seçin. Ayarı veri görevi ayarlarından devralmayı seçebilirsiniz.

    • Açık, tablolar oluşturacak ve ilişkili ELT işlemlerini yönetecektir.

    • Kapalı, dönüşümleri anında gerçekleştiren görünümler oluşturur.

  4. Artımlı yükleme, makrolar kullanılarak işlenen veri kümesini azaltmak için filtreler veya başka koşullar uygulayarak sorguyu artımlı bir veri yüklemesi için ayarlamanıza olanak tanır. Artımlı yükleme yalnızca veriler tablolar olarak somutlaştırılmışsa kullanılabilir.

    • Artan yük Açık olduğunda

      Görevin ilk yürütülmesi, sorgunun tüm sonuçlarını hedef tablonuza ekleyerek bir ilk yükleme gerçekleştirecektir. Sonraki yürütmeler, filtrelerden veya artımlı işleme için tanımladığınız belirli koşullardan yararlanarak artımlı yüklemeler gerçekleştirecektir. Artımlı yükleme sırasında, görev verileri yalnızca güncelleme veya ekleme olarak işler, silme işlemleri yönetilmez.

    • Artan yük Kapalı olduğunda

      Görevin ilk yürütülmesi, sorgunun tüm sonuçlarını hedef tablonuza ekleyerek bir ilk yükleme gerçekleştirecektir. Sonraki yürütmeler, hedef tablonuzla karşılaştırarak ve yeni, değiştirilmiş veya silinmiş kayıtları işleyerek sorgunun tüm sonuçlarını işleyecektir.

    Bilgi notuSorgu, hedefte bulunması gereken tüm kayıtları seçiyorsa Artımlı yüklemeyi kapalı olarak ayarlayın. Seçilmeyen kayıtlar hedefte silinir.
  5. SQL dönüştürmesini oluşturmaya hazır olduğunuzda Ekle'ye tıklayın.

    SQL dönüştürmesini düzenle seçeneği görüntülenir.

  6. SQL tabanlı tabloyu döndürecek sorguyu SELECT sorgusu içine yazın.

    Sorgu yalnızca seçtiğiniz kaynak veri kümelerinden okunabilir, ancak Ekle seçeneğiyle daha fazla kaynak veri kümesi ekleyebilirsiniz.

    Veri kümeleri'nden ve Sütunlar'dan seçebilirsiniz.

  7. Artımlı yükleme kullanılıyorsa sorguyu ilk yükleme veya artımlı yükleme yapıldığında çalışacak şekilde uyarlamak için Makroları kullanabilirsiniz.

    Daha fazla bilgi için bk. Sorguyu yük türüne uyarlamak için makroları kullanma.

  8. SELECT sorgusundaki parametreleri ayrıştırmak için Parametreleri ayıkla'ya tıklayın.

    Parametreler kaynak veya hedef nesnelerle eşlenmelidir. Geçmiş tür 2 yapılarına

    • (_history) eşleyebilirsiniz

    • Mevcut yapılar

    • Hedef nesneler

      Hedef nesneleri yalnızca bir parametre artımlı bir makro içinde tanımlandığında eşleyebilirsiniz.

    İpucu notuDaha kolay okunan bir sorgu elde etmek için bir parametreyi bir başvuru ile değiştirebilirsiniz. Parametre'deki değeri değiştirirseniz, SELECT sorgusu'ndaki başvuru da değişir.
  9. Sorgu çıktısının meta verilerini önizlemek için Tabloyu açıkla'ya tıklayın.

    Verilerin bir örneğini kullanarak sonuçların önizlemesini de görüntüleyebilirsiniz.

    Verileri önizleme

  10. Tabloda birincil bir anahtar bulunduğundan emin olun.

    Meta veri ayarlarını da düzenleyebilirsiniz.

    • Anahtar sütununda birincil anahtarları ayarlayın.

    • Null değer atanabilir sütununda sütuna null değer atanıp atanamayacağını ayarlayın.

    • Sütun adını, anahtarı, null değer atanabilir ve veri türünü ayarlamak için bir sütun seçin ve Düzenle'ye tıklayın.

  11. Sorgunun sonuçları beklentilerinizi karşıladığında Tamam'a tıklayın. Veri kümesi şimdi hedefler listesine eklenir ve veri kümesini önizleyebilirsiniz.

Verileri önizleme

Verilerin bir örneğini kullanarak sonuçların önizlemesini görüntüleyebilirsiniz.

Bilgi notuVeri önizlemesi, Qlik Yönetim Konsolu bölümünde kiracı düzeyinde etkinleştirilmelidir. Verileri Veri Entegrasyonu içinde görüntüleme seçeneğini Ayarlar'da Özellik kontrolü altında bulabilirsiniz.

Verilerin önizlemesini görebilmeniz için aşağıdaki rollere sahip olmanız gerekir:

  • Veri bağlantısının bulunduğu alanda Verileri görüntüleyebilir.

  • Veri projesinin bulunduğu alanda Görüntüleyebilir.

Sonuçların önizlemesini görüntülemek için:

  • Verileri görüntüle'ye tıklayın.

Verilerin bir örneğini kullanan sonuçlar görüntülenir. Satır sayısı ile örneğe eklemek istediğiniz satır sayısın ayarlayabilirsiniz.

Örnek verileri iki şekilde filtreleyebilirsiniz:

  • Alınacak örnek verileri filtrelemek için filtre seçeneğini kullanın.

    Örneğin, ${OrderYear}>2023 filtresini kullanırsanız ve Satır sayısı 10 olarak ayarlanmışsa 2024'ten 10 sipariş örneği alırsınız.

  • Örnek verileri belirli bir sütuna göre filtreleyin.

    Bu yalnızca mevcut örnek verileri etkileyecektir. Yalnızca 2024'ten siparişleri dahil etmek için filtre kullandıysanız ve sütun filtresini 2022'den siparişleri gösterecek şekilde ayarladıysanız sonuç boş bir örnek olacaktır.

Örnek verileri belirli bir sütuna göre sıralayabilirsiniz. Sıralama yalnızca mevcut örnek verileri etkileyecektir. Yalnızca 2024'ten siparişleri dahil etmek için filtre kullandıysanız ve sıralamayı tersine çevirdiyseniz örnek veriler yalnızca 2024'ten siparişler içerecektir.

Sorguyu yük türüne uyarlamak için makroları kullanma

Artımlı yükleme kullanılıyorsa sorguyu ilk yükleme veya artımlı yükleme yapıldığında çalışacak şekilde uyarlamak için Makroları kullanabilirsiniz.

Makroyu seçin ve sorguyu ilgili cümlenin içine ekleyin.

  • Q_RUN_INCREMENTAL, yalnızca artımlı bir yükleme gerçekleştirildiğinde çalıştırılan bir sorgu yerleştirebileceğiniz bir cümle ekler.

  • Q_RUN_INITIAL_LOAD, yalnızca ilk yükleme gerçekleştirildiğinde çalıştırılan bir sorgu yerleştirebileceğiniz bir cümle ekler.

Her makro ile sorgunun tamamını belirtmeniz gerekmez. Kullanım durumunuza göre kod ayarlayabilir veya ekleyebilirsiniz.

Kullanım durumu: Tarih aralığını kullanarak artan filtre:

Bu kullanım durumunda, bir dizi sipariş verisinin özel SQL ile dönüştürülmesi gerekir. Bu büyük bir veri kümesi olduğundan, artımlı yüklemenin yalnızca son 12 saatteki siparişleri dikkate almasını sağlamak için artımlı filtrelemeyi dahil etmek istersiniz.

Bu temel sorgudur:

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT , OD.LAST_UPDATE_DTM FROM “mydb”.”myStorageTask”.”ORDER” O JOIN “mydb”.”myStorageTask”.”ORDER_DETAIL” OD ON O.ORDER_ID = OD.ORDER_ID

Bu, yalnızca son 12 saat içinde eklenen emirleri dikkate aldığınız artımlı çalıştırma sırasında uygulanacak filtredir:

WHERE OD.UPDATE_DTM > DATEADD(hour, -12, CURRENT_TIMESTAMP())
İpucu notuSQL tabanlı bir tablo uygularken, tablo adlarının ${TABLE} gösterimi ile değiştirilmesi önerilir. Bu, örneğin geliştirme aşamasından üretim aşamasına geçerken ortamdan ortama değişebilecek veritabanı ve şema adlarının sabit kodlanmasını önler.

Bu, filtre makrosunu kullanan ve tablo adları ${TABLE} gösterimiyle değiştirilen tam sorgudur:

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT , OD.LAST_UPDATE_DTM FROM ${ORDER} O JOIN ${ORDER_DETAIL} OD ON O.ORDER_ID = OD.ORDER_ID {{#QLIK_FUNC_IF Q_RUN_INCREMENTAL}} WHERE OD.UPDATE_DTM > DATEADD(hour, -12, CURRENT_TIMESTAMP() ) {{/QLIK_FUNC_IF}}

Bu, bir ilk yük sorgusuyla sonuçlanır:

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT , OD.LAST_UPDATE_DTM FROM ${ORDER} O JOIN ${ORDER_DETAIL} OD ON O.ORDER_ID = OD.ORDER_ID

Ayrıca artan yük sorgusu:

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT , OD.LAST_UPDATE_DTM FROM ${ORDER} O JOIN ${ORDER_DETAIL} OD ON O.ORDER_ID = OD.ORDER_ID WHERE OD.UPDATE_DTM > DATEADD(hour, -12, CURRENT_TIMESTAMP() )

Kullanım durumu: Hedefteki verileri kullanarak artan filtre :

Bu kullanım durumunda, bir dizi sipariş verisinin özel SQL ile dönüştürülmesi gerekir. Siparişler büyük bir veri kümesi olduğundan, artımlı yüklemenin yalnızca hedef tablodaki verilerden daha yeni olan sipariş ayrıntıları kayıtlarını dikkate almasını sağlamak için artımlı filtrelemeyi dahil etmek istersiniz. Ayrıca bir satırın ilk yüklemede mi yoksa artımlı yüklemede mi işlendiğini de işaretlemek istersiniz.

Bilgi notuBu örnekte de görebileceğiniz gibi, makrolar sorgunun herhangi bir bölümünü ilk yükleme veya artımlı yükleme için ayarlamak üzere kullanılabilir.

Bu temel sorgudur:

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT , OD.LAST_UPDATE_DTM FROM “mydb”.”myStorageTask”.”ORDER” O JOIN “mydb”.”myStorageTask”.”ORDER_DETAIL” OD ON O.ORDER_ID = OD.ORDER_ID

Bu, artımlı çalıştırma sırasında uygulanacak filtredir. "ORDERS_DERIVED" hedef veri kümesinin adıdır.

WHERE OD.UPDATE_DTM > = (SELECT MAX(LAST_UPDATE_DTM) FROM “mydb”,”myTrasformTask”.”ORDERS_DERIVED” )
İpucu notuArtımlı yükleme, dönüştürme görevi tarafından oluşturulan hedef nesnelere bir ${TABLE} gösterimini de eşleyebilir.

Bu, filtre makrosunu kullanan ve tablo adları ${TABLE} gösterimiyle değiştirilen tam sorgudur. LOADED_BY, yükleme ilk ise INIT olarak ve yükleme artımlı ise INCR olarak ayarlanır:

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT, OD.LAST_UPDATE_DTM, {{#QLIK_FUNC_IF Q_RUN_INITIAL_LOAD}} ‘INIT’ as LOADED_BY {{/QLIK_FUNC_IF}} {{#QLIK_FUNC_IF Q_RUN_INCREMENTAL}} ‘INCR’ as LOADED_BY {{/QLIK_FUNC_IF}} FROM ${ORDER} O JOIN ${ORDER_DETAIL} OD ON O.ORDER_ID = OD.ORDER_ID {{#QLIK_FUNC_IF Q_RUN_INCREMENTAL}} WHERE OD.UPDATE_DTM >= (SELECT MAX(LAST_UPDATE_DTM) FROM ${TARGET_TABLE} ) {{/QLIK_FUNC_IF}}

Bu, bir ilk yük sorgusuyla sonuçlanır:

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT, OD.LAST_UPDATE_DTM, ‘INIT’ as LOADED_BY FROM ${ORDER} O JOIN ${ORDER_DETAIL} OD ON O.ORDER_ID = OD.ORDER_ID

Ayrıca artan yük sorgusu:

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT, OD.LAST_UPDATE_DTM, ‘INCR’ as LOADED_BY FROM ${ORDER} O JOIN ${ORDER_DETAIL} OD ON O.ORDER_ID = OD.ORDER_ID WHERE OD.UPDATE_DTM >= (SELECT MAX(LAST_UPDATE_DTM) FROM ${TARGET_TABLE} )

En iyi uygulama

  • SQL dönüştürmesi eklediğinizde birincil anahtar otomatik olarak oluşturulmaz. Veri kümesi sekmesinde veri kümesine bir anahtar ekleyin.

  • Dönüştürülmüş çıktıda sütun başlıklarını manuel olarak oluşturmayın.

  • Sorgu her çalıştırıldığında farklı sütunlar döndürebileceğinden, * ile SEÇ kullanmayın. Şemada bir değişiklik olduysa sorguyu buna göre değiştirin ve Tabloyu açıkla işlemini gerçekleştirin. Ardından sütunları düzenleyebilir ve tabloları değiştirebilirsiniz.

Bu sayfa size yardımcı oldu mu?

Bu sayfa veya içeriği ile ilgili bir sorun; bir yazım hatası, eksik bir adım veya teknik bir hata bulursanız, bize bildirin, düzeltelim!