Aracılığıyla paylaş


Azure Veri Gezgini'nde yinelenen verileri işleme

Buluta veri gönderen cihazlar, verilerin yerel önbelleğini korur. Veri boyutuna bağlı olarak, yerel önbellek verileri günler, hatta aylar boyunca depoluyor olabilir. Analitik veritabanlarınızı önbelleğe alınan verileri yeniden göndererek analiz veritabanında yinelenen verilere neden olan hatalı cihazlara karşı korumak istiyorsunuz. Yinelenenler, sorgu tarafından döndürülen kayıt sayısını etkileyebilir. Bu, olayları sayma gibi kesin bir kayıt sayısına ihtiyacınız olduğunda geçerlidir. Bu konuda, bu tür senaryolar için yinelenen verileri işlemeye yönelik en iyi yöntemler özetlenmiştir.

Veri yineleme için en iyi çözüm, yinelemeyi önlemektir. Mümkünse, veri işlem hattı boyunca veri taşımayla ilişkili maliyetlerden tasarruf sağlayan ve sisteme alınan yinelenen verilerle başa çıkarılırken kaynak harcamasını önleyen sorunu veri işlem hattında daha önce düzeltin. Ancak, kaynak sistemin değiştirilebildiği durumlarda, bu senaryoyla ilgilenmenin çeşitli yolları vardır.

Yinelenen verilerin etkisini anlama

Yinelenen verilerin yüzdesini izleyin. Yinelenen verilerin yüzdesi bulunduktan sonra sorunun kapsamını ve iş etkisini analiz edebilir ve uygun çözümü seçebilirsiniz.

Yinelenen kayıtların yüzdesini belirlemek için örnek sorgu:

let _sample = 0.01; // 1% sampling
let _data =
DeviceEventsAll
| where EventDateTime between (datetime('10-01-2018 10:00') .. datetime('10-10-2018 10:00'));
let _totalRecords = toscalar(_data | count);
_data
| where rand()<= _sample
| summarize recordsCount=count() by hash(DeviceId) + hash(EventId) + hash(StationId)  // Use all dimensions that make row unique. Combining hashes can be improved
| summarize duplicateRecords=countif(recordsCount  > 1)
| extend duplicate_percentage = (duplicateRecords / _sample) / _totalRecords  

Yinelenen verileri işlemeye yönelik çözümler

1. Çözüm: Yinelenen verileri kaldırma

İş gereksinimlerinizi ve yinelenen verilere toleransı anlayın. Bazı veri kümeleri, yinelenen verilerin belirli bir yüzdesiyle yönetilebilir. Yinelenen verilerin büyük bir etkisi yoksa, bu verilerin varlığını yoksayabilirsiniz. Yinelenen verileri kaldırmama avantajı, alım işleminde veya sorgu performansında ek yük yoktur.

Çözüm 2: Sorgu sırasında yinelenen satırları işleme

Bir diğer seçenek de sorgu sırasında verilerdeki yinelenen satırları filtrelemektir. Toplanan arg_max() işlev, yinelenen kayıtları filtrelemek ve zaman damgasına (veya başka bir sütuna) göre son kaydı döndürmek için kullanılabilir. Yinelenenleri kaldırma işlemi sorgu zamanında gerçekleştiğinden bu yöntemi kullanmanın avantajı daha hızlı alımdır. Ayrıca, tüm kayıtlar (yinelenenler dahil) denetim ve sorun giderme için kullanılabilir. işlevini kullanmanın arg_max dezavantajı, veriler her sorgulandığında ek sorgu süresi ve CPU'ya yük yüklenmesidir. Sorgulanan verilerin miktarına bağlı olarak, bu çözüm işlevsiz veya bellek tüketen hale gelebilir ve diğer seçeneklere geçmeyi gerektirir.

Aşağıdaki örnekte, benzersiz kayıtları belirleyen bir sütun kümesi için alınan son kaydı sorgulayacağız:

DeviceEventsAll
| where EventDateTime > ago(90d)
| summarize hint.strategy=shuffle arg_max(EventDateTime, *) by DeviceId, EventId, StationId

Bu sorgu, tabloyu doğrudan sorgulamak yerine bir işlevin içine de yerleştirilebilir:

.create function DeviceEventsView
{
    DeviceEventsAll
    | where EventDateTime > ago(90d)
    | summarize arg_max(EventDateTime, *) by DeviceId, EventId, StationId
}

Çözüm 3: Yinelenenleri kaldırma için gerçekleştirilmiş görünümleri kullanma

Gerçekleştirilmiş görünümler, take_any()arg_min()/arg_max()/ toplama işlevleri kullanılarak yinelenenleri kaldırma için kullanılabilir (bkz.gerçekleştirilmiş görünüm oluşturma komutunda 4. örnek).

Not

Gerçekleştirilmiş görünümler, küme kaynaklarını kullanma maliyetiyle birlikte gelir ve bunlar göz ardı edilemez. Daha fazla bilgi için bkz. Gerçekleştirilmiş görünüm performansıyla ilgili dikkat edilmesi gerekenler.

Çözüm 4: Yinelenenleri kaldırmak için geçici silmeyi kullanma

Geçici silme , tek tek kayıtları silme özelliğini destekler ve bu nedenle yinelenenleri silmek için kullanılabilir. Bu seçenek yalnızca seyrek silme işlemleri için önerilir ve sürekli olarak tüm gelen kayıtların yinelenenlerini kaldırmanız gerekiyorsa önerilmez.

Yinelenen verileri kaldırma için gerçekleştirilmiş görünümler ile geçici silme arasında seçim yapma

Yinelenenleri kaldırma için gerçekleştirilmiş görünümler veya geçici silme arasında seçim yapmanıza yardımcı olabilecek birkaç önemli nokta vardır:

  • Yönetim ve düzenleme: Gerçekleştirilmiş görünümler tam olarak yönetilen bir çözümdür. Bir görünüm bir kez tanımlanır ve sistem tüm gelen kayıtların yinelenenleri kaldırma işlemini işler. Geçici silme için düzenleme ve yönetim gerekir. Bu nedenle, gerçekleştirilmiş görünümler kullanım örneğinize uygunsa, her zaman bu seçeneği belirlemeniz gerekir.
  • Yinelenenleri kaldırılan kayıtlar: Geçici silme ile, yinelenen kayıtlar önce bir tabloya eklenir ve sonra silinir; bu nedenle, alma ve geçici silme işlemleri arasında tablo yinelenenler içerir. Gerçekleştirilmiş görünümlerde, görünüme girmeden önce yinelenenleri kaldırıldığından görünümdeki kayıtlar her zaman yinelenenleri kaldırılır.
  • Sıklık: Tablonun sürekli olarak yinelenenleri kaldırması gerekiyorsa gerçekleştirilmiş görünümleri kullanın. Yinelenenlerin seyrek olacağını düşünüyorsanız ve bunları alma sırasında tanımlayabilirseniz, geçici silme işlemi genellikle gerçekleştirilmiş görünümlerden daha iyi performans gösterir. Örneğin, alımlarınızın normalde yineleme içermediği, ancak bazen yinelenenleri içerdiği bilinen bir akışı aldığınızı varsayabilirsiniz. Bu senaryoda, geçici silme kullanarak bu yinelenenleri işlemek, sürekli olarak tüm kayıtları yinelenenleri kaldırmaya çalışacak gerçekleştirilmiş bir görünüm tanımlamaktan daha iyidir.

Çözüm 5: ingest-by kapsam etiketleri

Alma sırasında yinelenenleri önlemek için 'ingest-by:' kapsam etiketleri kullanılabilir. Bu, yalnızca her alma toplu işleminin yinelemeleri olmamasının garanti edildiği ve yinelenenlerin yalnızca aynı alım toplu işleminin birden çok kez alındığı durumlarda beklendiği kullanım durumlarında geçerlidir.

Özet

Veri yinelemesi birden çok şekilde işlenebilir. İşletmeniz için doğru yöntemi belirlemek için fiyatları ve performansı dikkate alarak seçenekleri dikkatle değerlendirin.