RSS
 

Google Trends’i keşfedin

17 Nov

Google Trends istatistik meraklılarının olduğu kadar bitirim girişimciler için de oldukça kullanışlı bir servis.

Senaryo icabı girişimcimiz yeni bir blog açmayı planlıyor ancak “pırlanta” ve “dekorasyon” konuları arasında kararsız kalmış, hangisinin daha fazla trafik çekeceğini bulmak istiyor olsun.

http://trends.google.com/ adresine giriyoruz. Arama alanına “dekorasyon, pırlanta” yazıp aratıyoruz. Virgüllerle ayırmak şartıyla daha fazla kelime de girilebilir.

Ülke, yıl-ay kriterleri de girebilirsiniz. Bu örnekte ben Türkiye, 2011 seçtim.

Aşağıdaki grafikte kelimelerin trendini görebileceğiniz gibi il bazında sıralamayı da Google cömertçe sunuyor.

Altın değerindeki bu bilgileri ücretsiz olarak kullanabilmek büyük nimet, kıymetini bilene…

 

Yurtiçi Kargo’dan sosyal sorumluluk örneği

25 Oct

 

 

Yurtiçi Kargo’dan örnek bir davranış!

Tüm Yurtiçi Kargo şubelerine gelen yardım gönderilerini ücresiz olarak Van Afet Koordinasyon Merkezi aracılığı ile ihtiyaç sahiplerine ulaştırıyorlar.

Siz de evinizde fazla olan battaniye, elbise, pil vs ne aklınıza gelirse Yurtiçi Kargo ile ücretsiz olarak depremzedelere gönderebilirsiniz.

Yurtiçi Kargo’yu tebrik ediyorum…

Yurtiçi Kargo Şubeleri

 
No Comments

Posted in Türkçe

 

Informatica Dersleri – Aggregator Transformation

24 Oct

Aggregator Transformation, kayıtlar üzerinde kümeleme (aggregate) hesaplama işlemlerini yapabilmemizi sağlar. Aggregate fonksiyonlarını hatırlayalım;

AVG: Ortalama
COUNT: NULL olmayan kayıt sayısı
FIRST: NULL olmayan ilk kayıt
LAST: NULL olmayan son kayıt
MAX: En büyük değer
MEDIAN: Sayısal serinin orta noktasındaki değer
                 Satır1= 2, Satır2=9, Satır3=15 –> MEDIAN(KOLON) = 9
                 Satır1= 2, Satır2=9, Satır3=15, Satır4=16 –> MEDIAN(KOLON) = (9+15)/2 = 12
MIN: En küçük değer
PERCENTILE
STDDEV
SUM: Toplam
VARIANCE

Bazı kümeleme fonksiyonlarının açıklamaları biraz karışık oldukları için yazmadım. Küçük bir araştırma ile bu fonksiyonların ne işe yaradığını ve nasıl kullanıldıklarını bulabilirsiniz.

Aşağıda ekran görüntülerini göreceğiniz Aggregator Transformation’da BAKIYE bilgisini SUBE kolonuna göre gruplayarak MAX, MIN, AVG ve SUM değerlerini buldum.

Info: Aggregate fonksiyonları filtreleyerek kullanabilirsiniz. Bakiyesi 1000′den büyük olan kayıtların ortalaması için; AVG(BAKIYE, BAKIYE>1000)

Son olarak, Aggregator Transformation GROUP BY özelliğini kullanarak kaynak tablodaki SUBE ve HES_NO kolonlarını DISTINCT olarak hedef tabloya nasıl atılabileceğini paylaşıyorum;

<< Filter Transformation
 

SQL Server “SELECT * FROM” Keyboard Shortcut

20 Oct

Think that how many times you write “SELECT * FROM” a day.

You can select data from a table with one key Ctrl+5

Let’s create an SP under master DB. If this SP is under master DB, we can use shortcut property in all DBs.

USE master
 
CREATE proc sp_select
@TABLE_NAME VARCHAR(100),
@COUNT VARCHAR(10) = NULL
AS
BEGIN
 IF EXISTS (SELECT NULL FROM sys.objects WHERE TYPE IN ('U','V') AND name=@TABLE_NAME)
 BEGIN
  IF @COUNT IS NULL
   SET @COUNT=1000
  EXEC('select top ' + @COUNT + ' * from ' + @TABLE_NAME + '(nolock)')
 END
 ELSE
  print 'Table not found.'
END
GO

bbb

SP is created, now we have to assign shortcut to this Stored Procedure; Tools > Options > Environment > Keyboard

We assigned “Ctrl+5” to sp_select as seen in the picture above.

Now, just write table or view name, select the text and hit Ctrl+5.

MY_TABLE_NAME --Selects TOP 1000

or

MY_TABLE_NAME, 50 --Selects TOP 50
 

Informatica Executive Vice President Girish Pancha and Me

14 Oct

Yesterday I met Mr. Pancha at Corporate Data Management Event in Istanbul which is sponsored by Informatica, Komtaş and Ereteam.

 

Oğlum 22 haftalık (Video)

13 Oct
 
No Comments

Posted in Türkçe

 

Informatica: Target table does not allow INSERT/UPDATE/DELETE

12 Oct

Rows are rejected and in the log detail, error message is;

WRT_8119 Target table [TARGET_TABLE_NAME] does not allow INSERT Row # in bad file
or
WRT_8119 Target table [TARGET_TABLE_NAME] does not allow UPDATE Row # in bad file
or
WRT_8119 Target table [TARGET_TABLE_NAME] does not allow DELETE Row # in bad file

I recommend to change “Treat source rows as” attribute to “Data driven

This error occurs because of the incoordinate between “Treat source rows as” and target table’s relational writer properties

When Insert is selected, but Update is selected at “Treat source rows as” property, it will get the error;

WRT_8119 Target table [TARGET_TABLE_NAME] does not allow UPDATE Row # in bad file

 

Informatica Dersleri – Filter Transformation

12 Oct

Giren ve kayıt sayısı eşit olmadığı için aktif transformation’dur. Adından da anlayabileceğiniz gibi kayıtları filtrelemek için kullanılır.

Bir örnek üzerinde görelim, Informatica PowerCenter Designer > Edit Transformations > Properties > Filter Condition

Filter Condition’dan TRUE dönen kayıtlar Filter Transformation’dan geçer, diğerleri filtrelenmiş olur.

Bu örnekte isim MEHMET ise BAKIYE>=1000 olan kayıtlar, isim MEHMET değilse BAKIYE<1000 olan kayıtlar için TRUE değeri döndürüyoruz. Yani bu kritere uymayan kayıtları filtrelemiş oluyoruz.

Info: Filtrelenecek kayıtlardan biran önce kurtulup daha az kayıtla işlemleri tamamlayabilmek için mümkün olduğunca mapping’in başında kullanılmalıdır.

İhtiyaç durumuna göre Filter Transformation’a alternatif olarak kaynak tabloya Source Filter da tanımlanabilir. Source Filter, datayı kaynakta filtreleyeceği için daha performanslı çalışacaktır.

Session > Edit > Mapping > Sources > Properties > Source Filter

Yukarıda işlediğimiz örnekte, kaynak tabloda 50000 kayıt var. Filtremiz 18590 satırın hedefe geçmesine izin veriyor. Filter Transformation kullanarak filtreleme ve aktarım işini toplam 22 saniyede tamamladık. Filter Transformation’ı kaldırıp filtreleme işlemini Source Filter’da yaptığımızda ise aktarım işi toplam 16 saniyede tamamlandı.

Ama bu hiçbir zaman Filter Transformation kullanılmaması gerektiği anlamına gelmiyor. Sadece ihtiyaca göre alternatif olarak Source Filter’ın kullanılabileceğini göstermek için bu karşılaştırmayı yaptım.

<< Expression Transformation Aggregator Transformation >> 
 

Informatica Dersleri – Expression Transformation

11 Oct

Pasif bir transformation’dur, yani giren-çıkan satır sayısı eşittir.

Expression Transformation kullanarak data üzerinde yapılabilecek bazı işlemler;

  • Manipulation (değiştirme) işlemleri(LTRIM, CONCAT, UPPER, vs)
  • Conversion (dönüştürme)  işlemleri(TO_CHAR, TO_DECIMAL, TO_DATE, vs)
  • Data temizleme ve düzenleme işlemleri(ISNULL, REPLACESTR, vs)
  • Matematiksel işlemler (LOG, POWER, vs)

 

Basit bir örnek üzerinde görelim;

Informatica PowerCenter Designer > Edit Transformations > Ports

BALANCE_IN portunu “Input”, BALANCE_VAR portunu “Variable”, BALANCE_OUT portunu “Output” olarak işaretliyoruz. Yukarıdaki resimde de gördüğünüz gibi hesaplama işlemini Variable olarak işaretlediğimiz port üzerinde yapıyoruz. Aslında hesaplamayı direk BALANCE_OUT portu üzerinde de yapabilirdik;

Info: Matematiksel fonksiyonlar, herzaman string fonksiyonlardan daha performanslıdır. Özellikle büyük data barındıran tablolar için Expression Transformation’da mümkün olduğunca string fonksiyonları kullanılmamalıdır.

İsimlendirme standartları açısından kolon isimlerinin sonuna Input için “_IN”, Output için “_OUT”, Local Variable için “_VAR” eklemenizde fayda var.

<< Update Strategy Transformation Filter Transformation >>
 

Informatica Dersleri – Update Strategy Transformation

07 Oct

Update Strategy Transformation kaynak tablodaki kayıtları, hedef tabloya aktarırken etiketlemek için kullanılır.

4 çeşit etiket türü bulunur;

 DD_INSERT (0): Insert edilecek kayıtlar.
 DD_UPDATE (1): Güncellenecek kayıtlar.
 DD_DELETE (2): Silinecek kayıtlar.
 DD_REJECT (3): Reddedilecek, dikkate alınmayacak olan kayıtlar.

Bir örnekle inceleyelim, Informatica PowerCenter Designer > Edit Transformations > Properties > Update Strategy Expression > Value

IIF ( (BALANCE &gt; 1000), DD_INSERT, DD_REJECT )

BALANCE kolonu 1000′den büyük olan kayıtları INSERT, küçük olanları REJECT olarak işaretlemiş oluyoruz.

Info: Performans açısından REJECT kullanmak yerine eğer mümkünse kaynak tabloya Source Filter tanımlamak daha doğru olacaktır.

Bu örnek oldukça basit, muhtemelen ihtiyaçlarınız daha gelişmiş seviyede olacaktır. Kaynak tablodaki kayıtların hedef tabloda bulunup bulunmamasına göre UPDATE veya INSERT olarak işaretlemek gibi. Bunu yapabilmek için Lookup Transformation kullanmamız gerekecek. Lookup Transformation dersimizde detaylı olarak inceleyeceğiz.

UPDATE veya DELETE olarak işaretlenen kayıtların hedef tabloda güncellenebilmesi veya silinebilmesi için hedef tabloda KEY kolon bulunuyor olmalı. Aksi takdirde kayıtlar Reject edilecek ve “WRT_8116 Target table [DEV_TRG_TBL] has no keys specified” hatası alınacaktır.

Kayıtlarımızı INSERT / UPDATE / DELETE / REJECT olarak işaretledik. Peki bu flagleri nasıl kullanacağız?

Designer’dan Workflow Manager’a geçiyoruz. Session > Edit > Mapping > Targets > Properties

Insert: INSERT olarak işaretlenmiş kayıtları hedef tabloya yükler.
Update as Update: UPDATE olarak işaretlenmiş kayıtları hedef tabloda günceller.
Update as Insert: UPDATE olarak işaretlenmiş kayıtları hedef tabloya yeni kayıt olarak yükler.
Update else Insert: UPDATE olarak işaretlenmiş kayıtları hedef tabloda var olan kayıtlar için günceller, hedef tabloda bulunmayan kayıtları hedef tabloya yükler.
Delete: DELETE olarak işaretlenmiş kayıtları hedef tabloda siler. Bu seçenek seçilmez ise DELETE olarak işaretlenmiş kayıtlar Reject edilir.

<< Informatica Dersleri Expression Transformation >>