menu

Thursday, March 31, 2011

Mengetahui Jumlah Kolom pada seluruh tabel pada database

Sebelum memulai merancang SSIS package untuk ETL, hal yang pertama perlu saya ketahui adalah Schema dan struktur database yang akan dijadikan source untuk ditarik datanya. Jumlah row, jumlah column dan size yang besar pada suatu table tentunya akan sangat mempengarui proses transfer data, yang dalam hal ini alokasi waktu dan kapan data tersebut bisa ditarik perlu dipertimbangkan dengan matang.

Andaikata kita menarik suatu table dengan size , jumlah row serta banyak column yang sangat besar dari OLTP (Database Transaksi) BANK pada saat busy work hour...sudah tentu akan mengganggu proses input data dan bisa-bisa dicomplain oleh user yang berada di cabang.

kali ini saya akan membahas dan memberikan contoh tentang cara mengetahui jumlah column pada table dalam database. (note : query ini diuji coba dengan menggunakan database AdventureWork2008RW, SQLSERVER2008R2 Database Engine)

pertama-tama kita perlu mengetahui column pada table dalam database
berikut query-nya

USE AdventureWorks2008R2
SELECT st.name AS table_name,
SCHEMA_NAME(schema_id) AS schema_name,
sc.name AS column_name
FROM sys.tables AS st
INNER JOIN sys.columns sc ON st.OBJECT_ID = sc.OBJECT_ID 
ORDER BY schema_name, table_name;

Setelah kita mengetahui nama table beserta column dan table schema-nya, maka yang kita lakukan disini adalah melakukan counting jumlah column dan di group berdasarkan nama table

with CTE_COLUMN_IN_TABLE
as
(SELECT st.name AS table_name,
SCHEMA_NAME(schema_id) AS schema_name,
sc.name AS column_name
FROM sys.tables AS st
INNER JOIN sys.columns sc ON st.OBJECT_ID = sc.OBJECT_ID 
--ORDER BY schema_name, table_name;
)
, CTE_TOTAL_COUNT_COLUMN as
(
  Select table_name,COUNT(column_name) as column_name FROM CTE_COLUMN_IN_TABLE Group by table_name
)
SELECT * FROM CTE_TOTAL_COUNT_COLUMN  Order By column_name DESC

dan hasilnya
dari sini sudah dapat diketahui bahwa table dengan column terbanyak adalah table SalesOrderHeader







No comments:

Post a Comment