1. Ana Sayfa
  2. Ürün Geliştirme

Dinamik Rapor Verilerini Saklamak

Dinamik Rapor Verilerini Saklamak
Dinamik Rapor Verilerini Saklamak
+ - 0

Merhabalar. Bu yazımda Dinamik Rapor Verilerini Saklamak konusu üzerine biraz konuşacağız. Belki aradığınız cevap burada yok ama ne nasıl yapılır noktasında biraz fikir vermesi açısından bir içerik olacak. İlk defa bu yazımda soru cevap şeklinde bir ilerleme yapacağım. Bu soru sizden gelmiş veya benim çalışma hayatımda aklıma gelmiş olan veya denk geldiğim bazı konulara istinaden sorusu ve cevabı olacak şekilde yazacağım.

Seri Hakkında..

Bu yeni seride şöyle bir ilerleme yapmayı düşünüyorum. İlk olarak bahsettiğim gibi bir soru ve sorunun olası çözümlerini anlatacağım bir yazı yazacağım. Nedir ne değildir noktasında bir irdeleme yapacağız. Sonrasında ilerleyen zamanlarda bu soruyu çözdüm mü? Nasıl çözdüm veya neden çözmediğim hakkında bir yazı daha yazacağım.

 

Dinamik Rapor Verilerini Saklamak hk.

Geçenlerde bir CRM üzerinde çalışırken farklı farklı platformlardan alınan raporların toplanması konusu oldu. Her platform aynı şekilde rapor vermiyor sonuçta değil mi? Bazılar csv olarak dışa aktarma özelliği verirken bazıları vermiyor. Böyle bir durumda neler yapabiliriz. Gelin buna cevap arayalım.

 

 

SORU: CRM sistemine, 3. parti uygulamalardan topladığımız rapor dosyalarını yükleyeceğiz. Her müşterimiz için farklı farklı platformlardan farklı farklı amaçlar ile alınmış raporlar var. Örneğin. Aylık Reklam Harcamaları, Aylık Erişim Sayıları, Aylık Dönüşüm Oranları, Reklam Görüntülenme Tıklanma Oranları vs. bunların hepsi ve benzerleri farklı platformlardan toplanacak ve CRM’e yüklenecek. Bu verilerden de biz analizler ve raporlar çıkartabilmeliyiz. Raporları sisteme aydan aya aylık yükleyeceğiz ancak geriye dönük olarak örneğin 3 aylık genel raporlar alabilmeliyiz.

 

SORU ANALİZİ: Burada;

1 – Her rapor farklı sayıda kolon, farklı veri tipleri hatta verilerin formatları bile farklı olabilir. Örneğin bir sistemde tarihler gg.aa.yyyy şeklinde olabilirken diğerinde yy-aa-gg olabilir. Birinde ondalık ayracı nokta olabilirken diğerinde virgül olabilir. Burada sisteme aktarmadan önce sağlam bir kontrol gereklidir. Yani veri ayıklama yapmalıyız.

2 – Kolon sayıları çok farklı olabilir. Hazır raporlar genelde kolon seçtirmeden grafiği üretmek için kullanılan dataları çıktı verirler. Burada her zaman yönetim bizde olmaz. Farklı platformlardan alınan aynı nitelikteki raporlar bile çok farklı olabilir.

3 – Raporları içe aktarmadan önce formatlama üzerine düşünmemiz lazım. Yada yapmalı mıyız? Mesela her rapor türü için bir tablo açıp her şeyi oraya mı atmalı? Yada her rapor ayrı bir tablo mu olmalı? Rapor içerikleri veri tabanında json yada xml olarak mı tutulmalı? Bu konu üzerine de iyice düşünmemiz lazım?

4 – Sistemi kullanacak kişiden raporları yüklemeden önce örneğin excel’de açıp sabit bir formata çekmesini isteyebilir miyiz? Her raporu yüklemeden önce excelde tamda bizim istediğimiz formata getirse mesela sonra yüklese bizi ne kadar büyük bir dertten kurtarır değil mi?

 

Yapay Zekaya Sordum…

NELER YAPILABİLİR?

1. Database, Normalizasyon ve Standartlaştırma

  • Veri Normalizasyonu ve Standartlaştırma:
    • Veri Ayıklama ve Dönüştürme: Farklı formatlardaki verileri standart bir formata getirmek için ETL (Extract, Transform, Load) işlemleri kullanılabilir. Bu işlemler, veri temizleme, format dönüştürme ve normalizasyonu içerir. Örneğin, Python’un Pandas kütüphanesi gibi araçlar, veri manipülasyonu için oldukça etkilidir. Örneğin, tarih formatlarını standart bir formata dönüştürmek veya sayısal verilerin uygun bir formatta olup olmadığını kontrol etmek gibi işlemler yapılabilir.
  • Veri Şemaları:
    • Rapor türlerine göre dinamik şemalar tanımlanabilir. Her bir rapor türü için bir veri modeli oluşturulabilir ve gerekli dönüşümler tanımlanabilir. Örneğin, bir reklam harcamaları raporu için farklı bir şema ve bir erişim sayıları raporu için farklı bir şema oluşturulabilir. Bu şemalar, raporların özelliklerini (kolonları) ve bunların veri türlerini (sayısal, metinsel, tarih vb.) içerebilir.
  • Veri Tabanı Tasarımı:
    • Verilerin depolanacağı veri tabanı yapısı, raporların çeşitliliğini ve dinamikliğini desteklemelidir. Veri tabanı tasarımında, rapor türlerine göre ayrı tablolar veya birleştirilmiş bir tablo yapısı kullanılabilir. Her rapor türü için ayrı bir tablo oluşturulması, veri bütünlüğünü ve sorgulama esnekliğini artırabilir. Ayrıca, raporların içeriğini (örneğin, JSON veya XML formatında) bir sütun içinde depolamak da bir seçenek olabilir. Bu, raporların değişken kolon sayılarına ve yapılarına daha iyi uyum sağlayabilir.
  • Kullanıcı Eğitimi ve Rapor Formatı Standartları:
    • Kullanıcıların raporları sisteme yüklemeden önce belirli bir formata getirmelerini sağlamak için eğitim ve standartlar oluşturulabilir. Örneğin, Excel şablonları veya veri giriş formaları gibi standart formatlar oluşturulabilir. Kullanıcılar bu şablonları kullanarak verilerini düzenleyebilir ve istenen formata getirebilirler. Bu, veri bütünlüğünü sağlayabilir ve veri işleme sürecini kolaylaştırabilir.

2. Esnek Veri Tabanı Tasarımı

  • Genel Veri Modeli:
    • Veri modelinin mümkün olduğunca genel ve esnek olması önemlidir. Her rapor türü için ayrı tablolar yerine, raporları ve meta verilerini JSON veya XML sütunlarında saklayabileceğiniz genel bir yapı düşünebilirsiniz. Bu yaklaşım, farklı rapor türlerinin değişken yapısını destekleyebilir ve veri tabanı şemasının daha az karmaşık olmasını sağlayabilir. Özellikle PostgreSQL’in JSON desteği veya MongoDB gibi NoSQL veritabanları, bu tür dinamik veri yapılarını yönetmek için iyi seçenekler olabilir.

    Entity-Attribute-Value (EAV) Modeli:

    • Çok değişkenli veri yapılarını yönetmek için kullanılan bir diğer yöntemdir. Bu modelde, veriler bir entity (varlık), attribute (özellik) ve value (değer) yapılarıyla temsil edilir. Bu sayede, her raporun farklı özellikleri olduğunda bile esneklik sağlanabilir. Ancak, EAV modeli genellikle sorgu karmaşıklığı ve performans sorunlarına yol açabilir, bu yüzden dikkatli kullanılmalıdır. Veritabanı sorguları ve performansınızı etkileyebilecek bu faktörleri göz önünde bulundurarak, EAV modelini kullanmadan önce ihtiyacınızı ve kullanım senaryolarınızı iyice değerlendirmeniz önemlidir.

3. Kullanıcı Dostu İş Akışları

  • Önceden Tanımlı Şablonlar:
    • Kullanıcıların verileri sisteminize kolayca yükleyebilmeleri için her rapor türüne özgü şablonlar oluşturun. Örneğin, Excel tabloları veya CSV dosyaları için hazır şablonlar sağlayarak, kullanıcıların hangi verileri hangi sütunlara yerleştireceklerini önceden belirleyebilirsiniz. Bu, veri yükleme sürecini standartlaştırır ve hata oranını azaltır.

    Otomatik Veri Dönüşümü:

    • Kullanıcıların verileri yüklerken ekstra adımlar atmasını gerektirmek yerine, sistem tarafından otomatik format dönüşümü ve veri temizleme işlemleri gerçekleştirin. Örneğin, kullanıcılar farklı tarih formatlarını kullansalar bile, sistem otomatik olarak tüm tarih verilerini belirli bir standart formata dönüştürebilir. Bu, kullanıcı deneyimini iyileştirir ve veri yükleme sürecini basitleştirir.

    Geri Bildirim ve Doğrulama:

    • Kullanıcılar veri yüklediğinde, sistem otomatik olarak verileri doğrular ve olası hatalar veya eksiklikler konusunda geri bildirimde bulunur. Örneğin, sistem eksik veya hatalı veri girişi tespit ettiğinde, kullanıcıya bu konuda uyarılar gösterebilir ve düzeltme yapmalarını sağlayabilir. Bu, veri kalitesini artırır ve sonradan düzeltme ihtiyacını azaltır. Ayrıca, kullanıcılara yükleme işlemi sırasında ilerleme çubuğu veya durum bildirimleri gibi geri bildirim araçları sağlayarak, kullanıcıların süreci takip etmelerini ve gerektiğinde müdahale etmelerini sağlayabilirsiniz.

4. Esnek Raporlama ve Analiz

  • Dinamik Sorgulama Motoru:
    • Veri yapısının dinamik doğasını desteklemek için, kullanıcıların farklı veri noktaları arasında esnek sorgulamalar yapmasına olanak tanıyan bir sorgulama motoru geliştirmek önemlidir. Bu motor, kullanıcıların özelleştirilmiş sorgular oluşturmasına ve veri tabanındaki geniş veri yelpazesinden istedikleri bilgilere hızlıca erişmelerine olanak tanımalıdır. Örneğin, kullanıcılar belirli bir dönemdeki tüm raporlardan belirli bir veri aralığını çekmek veya belirli kriterlere göre filtrelemek için kolayca sorgular oluşturabilmelidir.

    Özelleştirilebilir Dashboardlar:

    • Kullanıcıların kendi ihtiyaçlarına göre özelleştirebilecekleri ve farklı veri kaynaklarından gelen bilgileri birleştiren dashboardlar sunmak önemlidir. Özelleştirilebilir paneller, kullanıcıların analiz ve raporlama gereksinimlerine göre görsel öğeleri (grafikler, tablolar, metin kutuları vb.) yerleştirebilecekleri ve düzenleyebilecekleri bir ortam sağlamalıdır. Kullanıcılar, bu özelleştirilebilir paneller aracılığıyla kendi analizlerini oluşturabilir, veriler arasındaki ilişkileri keşfedebilir ve işlerini daha iyi anlayabilirler. Bu sayede, kullanıcılar ihtiyaçlarına uygun analitik içgörüler elde edebilir ve hızlı kararlar alabilirler.

 

Sonuç olarak, dinamik rapor verilerini saklamak ve analiz etmek için bir dizi strateji ve yaklaşım önerdik. Bu stratejileri uygulayarak, farklı platformlardan alınan ve farklı formatlarda olan raporları etkili bir şekilde yönetebiliriz. Veri normalizasyonu ve standartlaştırma işlemleri, esnek veri tabanı tasarımı, kullanıcı dostu iş akışları ve esnek raporlama ve analiz araçları kullanarak, veri yönetimi süreçlerini optimize edebilir ve daha değerli analitik içgörüler elde edebiliriz.

Bu stratejilerin uygulanmasıyla, CRM sistemimizde toplanan rapor verilerinin daha tutarlı, erişilebilir ve anlamlı hale gelmesini sağlayabiliriz. Kullanıcıların veri yükleme süreçlerini kolaylaştırarak ve veri doğruluğunu artırarak, daha verimli ve etkili bir raporlama ve analiz ortamı oluşturabiliriz. Bu da, işletme kararlarının daha iyi bilgiye dayalı olarak alınmasına ve iş performansının artırılmasına yardımcı olacaktır.

 

Biterken…

Tabi ki biz bunların hepsini yapmayacağız. Belki de olması gereken en mükemmel yol olmayacak. Bu benim şuan yaşadığım bir soru ve nasıl çözebilirim kafa yoruyorum. Belki de burada olmayan farklı bir yaklaşım üreteceğiz belki de vazgeçeceğiz. Şuan herhangi bir yol seçili değil.

 

Bu sorular, ChatGPT, Gemini ve CoPilot tarafından neredeyse aynı şekilde cevaplandı. Yukarıdaki cevap en açık ve kapsamlısı olarak ChatGPT tarafından verildi. Tabi ki tek sorguda bu kadar detaylı çıktılar vermiyor. Üzerinde biraz çalışmak gerekiyor.

 


Evvet arkadaşlar Dinamik Rapor Verilerini Saklamak yazısının sonunda geldik. Bu yazıda farklı bir şey denemek istedim. Önceleri çoğunlukla işte kod bazlı şeyler arıyorduk. Nasıl yapılır vs diye. Deneyim artıp projeler büyüyünce nasıl yapılır soruları böyle şeylere dönüşüyor. Önceden nasıl kod yazılır düşünürdük. Artık kod yazılır da bu sorunu nasıl çözeriz diye düşünmeye başlıyoruz.

Yukarıdaki Yapay Zekaların Linkleri: ChatGPT, Gemini, CoPilot

Bu yazı ile yeni bir kategori ekledim. Ürün Geliştirme bu gibi tüm yazılarım bu birincil kategori altında olacak.

Bu yazıya tepkiniz ne oldu?

Yazar Hakkında

Lise Ağ Sistemleri ve Yönetimi bölümü, üniversite Bilgisayar Programcılığı bölümü Ön Lisans, Yönetim Bilişim Sistemleri Lisans öğrenimi aldım. Askerlik görevimi tamamladım. Uzmanlık alanım; C# ve SQL Programlama dilleri ile müşteri odaklı, kullanıcı dostu ERP ve CRM gibi sistemleri geliştirmektir. Ayrıca şuanda PHP ve MYSQL alanında projeler geliştirmekteyim. C++, Phyton, Xamarin, MVC gibi konuları öğrenmek ve kendimi geliştirme çabası içerisindeyim. Discord için: https://discord.gg/FBxZeHu9

Değerli yorumlarınızı bekliyorum. :)