Excel'de Artımlı Veri Kaynağı Alım Stratejisi


0

Her hafta üçüncü bir uygulama tarafından yenilenen bir tablo içeren bir senaryodayım. Veritabanına ODBC bağlantısı kullanarak tüm verileri Excel'de biriktirmem gerekiyor.

merak ediyorum

Yaklaşım 1: Excel'i her güncelleme için sonuç eklemeye zorlamanın bir yolu var mı (bu güncelleme haftayı belirten bir parametreye göre tetiklenir)? Bağlantının dinamik bir referans kullanarak yükleyeceği tabloyu tanımlamaya çalıştım, ancak ilk defa bir kez sabitlendiğinde, tablo konumu hiçbir zaman yeniden tanımlanmadı

Yaklaşım 2 : Haftalık tüm sonuçları bir hazırlama masasında toplamak için bir ETL kullanın ve ardından Excel'i gerçek zamanlı olarak bağlayın. Ancak, eski verileri önbelleğe almak için bir mekanizmaya ihtiyacım olacak, çünkü Excel'in açıldığı zaman katlanarak büyüyemem. 10 yıl sonra, Excel'in 10 yıl boyunca verileri göstermeden önce açılışta güncellenmesi gerektiğini düşünün. Alınan verileri depolamanın ve yeni verileri seçerek (bir şeyin sorgusu / filtresi ile) gerçek zamanlı olarak (kitap açıldığında) arttırmanın bir yolu var mı?

Teşekkürler

EDIT: Belki bu şekilde sormak daha iyidir: Büyümeye devam eden ve Excel tarafından gerçek zamanlı olarak okunması gereken bir masa için en uygun strateji nedir? Sadece birkaç ay sonra kesinlikle tüm verileri almak istemiyorum ...


Evet, doğru anladıysam bu bir sorun olacak. 'Eski' verilere ne oldu? EG, içeriği silmek isteseydiniz, bütün zamandaki TÜM içerik bir sonraki yenileme işleminde tekrar görünür mü? Öyleyse, Excel’deki VERİ sekmesi üzerinden mi bağlanıyorsunuz? Öyleyse, verileri tarihe veya kimliğe veya benzerine göre kolayca kısıtlayabilirsiniz (sorguda erişebildiğinize bağlı olarak)? Eğer böyle bir veri miktarını sınırlandırabilirseniz, yaklaşım 1 işe yarayacaktır
Dave

Eski veriler her uygulamada Üçüncü Uygulamam tarafından her zaman silinir. Bu yüzden yaklaşımı 1 (ideal) yönetirsem, Excel'de yakalanır ve daha sonra bağlantıdan çıkarılır, böylece Excel'i sürekli olarak tutarım. Şimdi Veri sekmesi ve ODBC üzerinden bağlanıyorum. Sorguyu değiştiren verileri kısıtlayabilirim, ancak Excel'e her güncelleme için üzerine / yenileme yerine ekleme yapmam gerektiğini söylemeliyim.
Whimusical

Oh anlıyorum ve şimdi eski verileri nasıl saklayacağınızı mı soruyorsunuz? Bu durumda, üçüncü parti uygulamasının işini yaptıktan sonra çalışan küçük bir makro yazabilirsiniz. Kelimenin tam anlamıyla, içeriği Çalışma Sayfası2'ye kopyalayacaktır. Bu sizin kodunuz olduğundan, eklemek isteyip istemediğinizi kontrol edebilirsiniz. Peşinde olduğun şey bu mu?
Dave,

Üçüncü uygulamam, verileri geçici bir tabloda bırakıyor. Geriye doğru yapmak, tablodan güncel sonuçlara ulaşmak (Excel'in çok makrosunu kullanmak dışında) eklemek için mükemmel bir yol var mı?
Whimusical

Üzgünüm, sadece tarif ettiğim yolu biliyorum. 3. parti uygulamasının bir şey yapmasına izin verin, (örneğin) Sayfa1'de yeni veriler oluşturun. Bundan sonra, uygulamanız bu verileri Sayfa1'den kopyalar ve Sayfa2'deki tablonun üstüne ekler (geçmiş verileriniz)
Dave

Yanıtlar:


2

Bunu çözmek için Excel için Power Query Add-In'i kullanırdım. Bir SQL sorgusundan varolan bir tabloya eklenen sonuçları işleyebilir.

http://office.microsoft.com/en-au/excel-help/append-queries-HA104149760.aspx?CTT=5&origin=HA103993872

Verileri Excel Veri Modeli biçiminde (bir Excel Tablosunda değil) saklarsanız, veriler yüksek oranda sıkıştırılır - bu biçimde 160 milyon satır depolayan (64-bit Excel ile) insanların raporları vardır. Daha sonra verilere tekrar Pivot Tablolar ve / veya Küp Formülleriyle Excel'e erişebilirsiniz.


0

Seçilen cevabı biraz eksik buldum (ama harika bir başlangıç ​​:)

En son PowerQuery'yi kullanarak (Nov2014'ten başlayarak, veri modeline yükleme yapmanın yanı sıra çalışma kitabına da yükleyebilirsiniz)

Burada, Kaynak verileri yalnızca Excel'deki bir tablodur, ancak bir SQL DB içeren herhangi bir yerden çekebilirsiniz.

Adım bir. İlk yük oluştur. Sorgu FROM olarak adlandırılmıştır (Bu ad, tablo adından devralınır: FROM)

let
    //Load from Table FROM
    Source = Excel.CurrentWorkbook(){[Name="FROM"]}[Content],
    AddCustom = Table.AddColumn(Source, "Load Date", each DateTimeZone.UtcNow())
in
    AddCustom

Veri modeline VE çalışma sayfasına yükleyin. Çalışma tablosu tablosu varsayılan olarak FROM_2 olarak adlandırılır .

FROM sorgusunu şu şekilde güncelleyin:

let
    //Load from Table FROM
    Source = Excel.CurrentWorkbook(){[Name="FROM"]}[Content],
    AddCustom = Table.AddColumn(Source, "Load Date", each DateTimeZone.UtcNow()),
    //Load from Table FROM_2  (this is just a copy of what's in the DataModel)
    Custom1 = Excel.CurrentWorkbook(){[Name="FROM_2"]}[Content],
    ChangedType = Table.TransformColumnTypes(Custom1 ,{{"Load Date", type datetimezone}}),
    //Append the two Loads.  The New data and the existing loads in the DataModel
    Append = Table.Combine({ChangedType,AddCustom})
in
    Append

Dolayısıyla şimdi, örneğin, DataModel'e veya FROM_2 tablosuna işaret eden bir Özet tablo ekleyebilirsiniz. DataModel içindeki verileri başka sütunlar ekleyebileceğiniz başka bir tabloya ihtiyacınız olursa, FROM_2 tablosuna işaret eden başka bir Sorgu oluşturabilirsiniz.

Çalışma sayfasında bir tabloyu ara adım olarak kullandığınızdan, bunun çok fazla veri için ölçekleneceğinden şüpheliyim.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.