Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Menggunakan SSIS, Bagaimana cara menemukan kota dengan populasi terbesar?

Sepenuhnya setuju dengan @PaulStock bahwa agregat sebaiknya diserahkan ke sistem sumber. Agregat di SSIS adalah komponen yang memblokir sepenuhnya seperti semacam dan saya telah sudah membuat argumen saya tentang hal itu .

Tetapi ada kalanya melakukan operasi tersebut di sistem sumber tidak akan berhasil. Yang terbaik yang bisa saya lakukan adalah pada dasarnya menggandakan proses data. Ya, ih tapi saya tidak pernah bisa menemukan cara untuk melewati kolom tanpa terpengaruh. Untuk skenario Min/Max, saya ingin itu sebagai opsi tetapi jelas sesuatu seperti Sum akan menyulitkan komponen untuk mengetahui apa baris "sumber" yang akan diikatnya.

2005

Implementasi tahun 2005 akan terlihat seperti ini. Performa Anda tidak akan bagus, bahkan beberapa kali lipat dari bagus karena Anda akan memiliki semua transformasi pemblokiran ini selain harus memproses ulang data sumber Anda.

Gabung bergabung

2008

Pada tahun 2008, Anda memiliki opsi untuk menggunakan Pengelola Koneksi Cache yang akan membantu menghilangkan transformasi pemblokiran, setidaknya di tempat yang penting, tetapi Anda masih harus membayar biaya pemrosesan ganda data sumber Anda.

Seret dua aliran data ke kanvas. Yang pertama akan mengisi manajer koneksi cache dan seharusnya menjadi tempat agregat berlangsung.

Sekarang setelah cache memiliki data agregat di sana, lepaskan tugas pencarian di aliran data utama Anda dan lakukan pencarian terhadap cache.

Tab pencarian umum

Pilih pengelola koneksi cache

Petakan kolom yang sesuai

Sukses besar

Tugas skrip

Pendekatan ketiga yang dapat saya pikirkan, 2005 atau 2008, adalah menulisnya sendiri. Sebagai aturan umum, saya mencoba menghindari tugas skrip tetapi ini adalah kasus yang mungkin masuk akal. Anda harus menjadikannya transformasi skrip asinkron tetapi cukup tangani agregasi Anda di sana. Lebih banyak kode untuk dipelihara, tetapi Anda dapat menyelamatkan diri dari kesulitan memproses ulang data sumber Anda.

Akhirnya, sebagai peringatan umum, saya akan menyelidiki apa dampak ikatan terhadap solusi Anda. Untuk kumpulan data ini, saya mengharapkan sesuatu seperti Guelph tiba-tiba membengkak dan mengikat Toronto tetapi jika ya, apa yang harus dilakukan paket itu? Saat ini, keduanya akan menghasilkan 2 baris untuk Ontario tetapi apakah itu perilaku yang dimaksudkan? Script, tentu saja, memungkinkan Anda untuk menentukan apa yang terjadi dalam kasus ikatan. Anda mungkin dapat mempertahankan solusi 2008 di atas kepalanya dengan menyimpan data "normal" dan menggunakannya sebagai kondisi pencarian Anda dan menggunakan agregat untuk menarik kembali hanya salah satu ikatan. 2005 mungkin dapat melakukan hal yang sama hanya dengan menempatkan agregat sebagai sumber kiri untuk gabungan gabungan

Suntingan

Jason Horner punya ide bagus dalam komentarnya. Pendekatan yang berbeda adalah menggunakan transformasi multicast dan melakukan agregasi dalam satu aliran dan menyatukannya kembali. Saya tidak tahu bagaimana membuatnya bekerja dengan serikat pekerja, tetapi kita bisa menggunakan sort dan merge join seperti di atas. Ini mungkin pendekatan yang lebih baik karena menyelamatkan kita dari kesulitan memproses ulang data sumber.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sintaks periksa semua prosedur tersimpan?

  2. Bagaimana Saya Dapat Mengurutkan Kolom 'Nomor Versi' Secara Umum Menggunakan Kueri SQL Server

  3. Menyimpan Tipe Data Biner di SQL Server

  4. Kebiasaan Buruk:Menghindari NULL di SQL Server

  5. SQL Server 2016