---
title: 'Analiz İş Akışı'
source: 'https://academia.sh/tr/kurslar/veri-analitigine-giris/analiz-is-akisi'
course: 'Veri Analitiğine Giriş'
language: tr
updated: '2026-08-17T18:08:46+00:00'
license: 'CC BY-SA 4.0'
---

# Analiz İş Akışı

Soru, veri, çözümleme, bulgu ve iletişim adımlarından oluşan beş adımlık akış, 12 kararla birlikte koşturuluyor: kararların 10'u ait olduğu adımdan sonra görülüyor. Kararlar görüldükçe yazıldığında akış 10 geri dönüş ve 33 adım ziyareti üretiyor, her karar ait olduğu adımda yazıldığında 5 dönüş ve 15 ziyarete, bir ön bakış eklendiğinde 1 dönüş ve 8 ziyarete iniyor. Kalan tek dönüş kapanmaz, çünkü içeriği ham veride değil çözümlemenin çıktısındadır. Muhasebe kararı değişince aynı akış 33 yerine 15 ziyaret verir.

Önceki iki ders bir izlenim bırakmış olabilir: önce soru seçilir, sonra türü belirlenir, sonra veri
yeter mi diye bakılır, sonra hesap yapılır. Sıralı bir liste gibi görünüyor. Gerçekte bu liste bir
kez baştan sona koşmaz. Birinci dersteki 30 günlük pencere, ancak tabloya bakılıp okuma
döngüsünün aylık olduğu görüldükten sonra savunulabilir hale geldi; ikinci dersteki derinlik şartı,
ancak soru kümesi yazıldıktan sonra bir sayı kazandı.

Bu ders akışı beş adımda kurar ve akışın doğrusal olmadığını bir sayıyla gösterir. Ölçü **geri
dönüş sayısıdır**: sonraki bir adımda görülen bir karar yüzünden kaç kez önceki bir adıma dönmek
gerekti. Yanına ikinci bir sayı konur: akışın beş adımı toplam kaç kez koşturuldu.

- **AK12.** Akış beş adımdır: **soru**, **veri**, **çözümleme**, **bulgu**, **iletişim**. Akış da
  kararlar da **kurgudur**; kararlar önceki iki dersin abone sayımından alınmıştır.
- **AK13.** Bir **geri dönüş**, sonraki bir adımda görülen bir kararın ait olduğu adıma dönülmesi
  ve aradaki adımların yeniden koşturulmasıdır.
- **AK14.** **Adım ziyareti** şöyle sayılır: akış bir kez baştan sona koşarsa 5 ziyaret olur; $f$
  adımından $a$ adımına bir dönüş $f - a + 1$ ziyaret ekler. Bu bir **muhasebe kararıdır** ve
  dersin sonunda değiştirilecektir.
- **AK15.** Bir karar **önceden yazılabilir** sayılır: ait olduğu adımda, sonraki adımın çıktısına
  bakılmadan yazılabiliyorsa. Yazılamıyorsa kararın içeriği ancak sonraki adımda öğrenilir.
- **AK16.** Süre ölçülmez. Sayılan şey dönüş ve ziyarettir.

## Beş Adım

**Soru** adımı sorulacak şeyi ölçülebilir duruma getirir: hangi tanım, hangi ölçüm günü, sonuç
hangi kararı besleyecek, kim okuyacak. Birinci dersin bütün konusu bu adımdı.

**Veri** adımı sorunun istediği alanları bulur ve kümenin gerçek durumunu görür: hangi alan dolu,
hangi satır yinelenmiş, hangi değer eksik. İkinci dersin envanteri bu adımın çıktısıdır.

**Çözümleme** adımı süzer, gruplar, özetler; sayı burada çıkar. Tablo tasarımı ve sorgu yazımı
Veritabanı Temelleri kursunda kuruldu, burada tekrarlanmaz; bu adımda ölçülen şey sözdizimi değil,
süzme ve gruplama kararlarıdır.

**Bulgu** adımı sayıyı bir cümleye çevirir: kırılım, sıralama, karşılaştırma. **İletişim** adımı
bulguyu bir karara bağlar ve okuyacak tarafa yazar. Son iki adım karar üretmez, kararları tüketir
— ve tam bu yüzden orada görülen eksik bir karar akışı en başa gönderir.

## Kararlar Nerede Doğar, Nerede Görülür

```js
// akis.mjs — bes adimli analiz akisi ve akisi geriye donduren kararlar. MODELDIR:
// kararlar onceki iki dersin abone sayimindan alinmis, akis kurgudur.
export const ADIM = ["soru", "veri", "cozumleme", "bulgu", "iletisim"];

// ait: kararin yazilmasi gereken adim. gorulur: kararin fark edildigi adim.
// onceden: karar, ait oldugu adimda veriye bakmadan yazilabilir mi.
export const KARARLAR = [
  { ad: "etkin abone tanimi", ait: 1, gorulur: 1, onceden: true },
  { ad: "olcum gunu", ait: 1, gorulur: 1, onceden: true },
  { ad: "okuma penceresi 30 gun", ait: 1, gorulur: 2, onceden: false },
  { ad: "kapali sozlesmeden gelen okuma", ait: 1, gorulur: 2, onceden: false },
  { ad: "bolge kirilimi istenecek", ait: 1, gorulur: 4, onceden: true },
  { ad: "raporu okuyacak taraf", ait: 1, gorulur: 5, onceden: true },
  { ad: "karsilastirma donemi", ait: 1, gorulur: 5, onceden: true },
  { ad: "bolgesi bos satirlar", ait: 2, gorulur: 3, onceden: false },
  { ad: "yinelenen abone kaydi", ait: 2, gorulur: 3, onceden: false },
  { ad: "basamak alani metin mi sayi mi", ait: 2, gorulur: 3, onceden: true },
  { ad: "siralama olcutu oran mi sayi mi", ait: 3, gorulur: 4, onceden: true },
  { ad: "esik yakininda siralama oynak", ait: 3, gorulur: 4, onceden: false },
];

// Icerigi ham veriye bakinca ogrenilen kararlar: bir on bakis bunlari one ceker.
export const VERIDEN = new Set(["okuma penceresi 30 gun", "kapali sozlesmeden gelen okuma",
  "bolgesi bos satirlar", "yinelenen abone kaydi"]);

// Bir geri donus, gorulur adimindan ait adimina donmek ve arasini yeniden kosmaktir.
export const donus = (k) => k.gorulur - k.ait;
export const bedel = (k) => k.gorulur - k.ait + 1;
export const politika = (yazili, onBakis = false) => {
  const d = KARARLAR.filter((k) => donus(k) > 0 && !(yazili && k.onceden)
    && !(onBakis && VERIDEN.has(k.ad)));
  return { donus: d.length, liste: d,
    ziyaret: ADIM.length + (onBakis ? 1 : 0) + d.reduce((s, k) => s + bedel(k), 0) };
};

const gen = (B) => (h) => h.map((v, j) => (j ? String(v).padStart(B[j])
  : String(v).padEnd(B[0]))).join("");

if (import.meta.url === `file://${process.argv[1]}`) {
  console.log(`akis ${ADIM.length} adim: ${ADIM.join(" -> ")}`);
  console.log(`${KARARLAR.length} karar yazilmasi gerekiyor\n`);
  const y = gen([33, 12, 12, 9, 10]);
  console.log(y(["karar", "ait adim", "gorulur", "mesafe", "onceden"]));
  for (const k of KARARLAR) {
    console.log(y([k.ad, `${k.ait} ${ADIM[k.ait - 1]}`, `${k.gorulur} ${ADIM[k.gorulur - 1]}`,
      donus(k), k.onceden ? "evet" : "hayir"]));
  }
  const g = KARARLAR.filter((k) => donus(k) > 0);
  console.log(`\n${KARARLAR.length} kararin ${g.length} tanesi ait oldugu adimdan sonra goruluyor`);
  console.log(`bunlarin ${g.filter((k) => VERIDEN.has(k.ad)).length} tanesinin icerigi ham veriye ` +
    `bakinca ogrenilir: ${g.filter((k) => VERIDEN.has(k.ad)).map((k) => k.ad).join("; ")}`);
}
```

```
akis 5 adim: soru -> veri -> cozumleme -> bulgu -> iletisim
12 karar yazilmasi gerekiyor

karar                                ait adim     gorulur   mesafe   onceden
etkin abone tanimi                     1 soru      1 soru        0      evet
olcum gunu                             1 soru      1 soru        0      evet
okuma penceresi 30 gun                 1 soru      2 veri        1     hayir
kapali sozlesmeden gelen okuma         1 soru      2 veri        1     hayir
bolge kirilimi istenecek               1 soru     4 bulgu        3      evet
raporu okuyacak taraf                  1 soru  5 iletisim        4      evet
karsilastirma donemi                   1 soru  5 iletisim        4      evet
bolgesi bos satirlar                   2 veri 3 cozumleme        1     hayir
yinelenen abone kaydi                  2 veri 3 cozumleme        1     hayir
basamak alani metin mi sayi mi         2 veri 3 cozumleme        1      evet
siralama olcutu oran mi sayi mi   3 cozumleme     4 bulgu        1      evet
esik yakininda siralama oynak     3 cozumleme     4 bulgu        1     hayir

12 kararin 10 tanesi ait oldugu adimdan sonra goruluyor
bunlarin 4 tanesinin icerigi ham veriye bakinca ogrenilir: okuma penceresi 30 gun; kapali sozlesmeden gelen okuma; bolgesi bos satirlar; yinelenen abone kaydi
```

Tablo iki sütunla okunur. Sol sütun kararın nereye ait olduğunu, sağ sütun nerede görüldüğünü
söyler. On iki kararın yalnız ikisi doğduğu yerde görülüyor: etkin abone tanımı ve ölçüm günü.
Kalan onu, ait olduğu adımdan sonra ortaya çıkıyor.

Mesafe sütunu dönüşlerin eşit olmadığını yazıyor. Kapalı sözleşmelerden okuma gelmesi bir adım
geriye götürür; raporu kimin okuyacağının iletişim adımında fark edilmesi dört adım geriye
götürür. İkincisinin görülme yeri sorunun ne olduğuyla değil, akışın hangi adımında birinin ilk kez
"bu kimin için" diye sormasıyla ilgilidir.

Son iki adımda görülen beş karar da dikkat çekicidir. Bulgu ve iletişim adımları hiçbir karar
üretmiyor — tablonun `ait adim` sütununda 4 ve 5 hiç geçmiyor. Ama beş karar orada **görülüyor**.
Karar tüketen adımlar, üretmedikleri kararların eksikliğini fark eden adımlardır.

## Üç Çalışma Biçimi

Aynı akış, aynı 12 karar, tek fark: kararların ne zaman yazıldığı. Birinci biçimde her karar
görüldüğü anda yazılır. İkinci biçimde her adımda, o adıma ait olan ve önceden yazılabilen kararlar
adımdan çıkmadan yazılır. Üçüncü biçim ikinciye bir şey ekler: soru adımından çıkmadan önce ham
veriye bir kez bakılır. Bu bakış bir adım ziyareti maliyetindedir ve bir çözümleme değildir —
yalnız alanların dolu olup olmadığını, hangi değerlerin geçtiğini gösterir.

```js
// dongu.mjs — ayni akis, iki calisma bicimi: geri donus ve adim ziyareti yan yana.
import { ADIM, KARARLAR, VERIDEN, donus, bedel, politika } from "./akis.mjs";

const A = politika(false), B = politika(true), C = politika(true, true);
const gen = (C) => (h) => h.map((v, j) => (j ? String(v).padStart(C[j])
  : String(v).padEnd(C[0]))).join("");

const y = gen([34, 11, 11, 13, 11]);
console.log(y(["calisma bicimi", "geri donus", "ziyaret", "adim basina", "en uzak"]));
for (const [ad, p] of [["kararlar gorulunce yazilir", A], ["kararlar adiminda yazilir", B],
  ["adiminda yazilir + on bakis", C]]) {
  console.log(y([ad, p.donus, p.ziyaret, (p.ziyaret / ADIM.length).toFixed(1),
    Math.max(...p.liste.map(donus))]));
}

const z = gen([13, 10, 10, 10]);
console.log("\n" + z(["donulen adim", "bicim 1", "bicim 2", "bicim 3"]));
for (let a = 1; a <= ADIM.length; a++) {
  const s = (p) => p.liste.filter((k) => k.ait === a).length;
  console.log(z([`${a} ${ADIM[a - 1]}`, s(A), s(B), s(C)]));
}

console.log(`\ntoplam ziyaret ${A.ziyaret} -> ${B.ziyaret}, geri donus ${A.donus} -> ${B.donus}`);
const uzun = A.liste.filter((k) => donus(k) >= 3);
console.log(`bicim 1'de mesafesi 3 ve uzeri ${uzun.length} donus, ` +
  `${A.ziyaret - ADIM.length} fazla ziyaretin ${uzun.reduce((s, k) => s + bedel(k), 0)} tanesini yiyor`);
console.log(`ikinci bicimde kalan ${B.donus} donus: ${B.liste.map((k) => k.ad).join("; ")}`);
console.log(`bu ${B.donus} karar ${KARARLAR.filter((k) => !k.onceden).length} onceden ` +
  `yazilamayan kararin tamamidir; yazarak degil ancak bakarak ogrenilir`);
console.log(`\non bakis ${VERIDEN.size} karari one cekiyor, bedeli 1 ziyaret: ` +
  `${B.donus} donus ${C.donus} donuse, ${B.ziyaret} ziyaret ${C.ziyaret} ziyarete iniyor`);
console.log(`ucuncu bicimde kalan tek donus: ${C.liste.map((k) => k.ad).join("; ")} ` +
  `— icerigi ham veride degil, cozumlemenin ciktisinda`);

// Ikinci bir muhasebe karari: geri donus arayi degil yalniz ait oldugu adimi yeniden kosturur.
const ucuz = (p) => ADIM.length + p.donus;
console.log(`\nmuhasebe karari degisirse (yalniz ait adim yeniden kosar): ` +
  `bicim 1 ${ucuz(A)} ziyaret, bicim 2 ${ucuz(B)} ziyaret`);
console.log(`bicim 1 ucuz muhasebeyle ${ucuz(A)}, bicim 2 tam muhasebeyle ${B.ziyaret}: ` +
  `ayni sayi, ayri akis`);
```

```
calisma bicimi                     geri donus    ziyaret  adim basina    en uzak
kararlar gorulunce yazilir                 10         33          6.6          4
kararlar adiminda yazilir                   5         15          3.0          1
adiminda yazilir + on bakis                 1          8          1.6          1

donulen adim    bicim 1   bicim 2   bicim 3
1 soru                5         2         0
2 veri                3         2         0
3 cozumleme           2         1         1
4 bulgu               0         0         0
5 iletisim            0         0         0

toplam ziyaret 33 -> 15, geri donus 10 -> 5
bicim 1'de mesafesi 3 ve uzeri 3 donus, 28 fazla ziyaretin 14 tanesini yiyor
ikinci bicimde kalan 5 donus: okuma penceresi 30 gun; kapali sozlesmeden gelen okuma; bolgesi bos satirlar; yinelenen abone kaydi; esik yakininda siralama oynak
bu 5 karar 5 onceden yazilamayan kararin tamamidir; yazarak degil ancak bakarak ogrenilir

on bakis 4 karari one cekiyor, bedeli 1 ziyaret: 5 donus 1 donuse, 15 ziyaret 8 ziyarete iniyor
ucuncu bicimde kalan tek donus: esik yakininda siralama oynak — icerigi ham veride degil, cozumlemenin ciktisinda

muhasebe karari degisirse (yalniz ait adim yeniden kosar): bicim 1 15 ziyaret, bicim 2 10 ziyaret
bicim 1 ucuz muhasebeyle 15, bicim 2 tam muhasebeyle 15: ayni sayi, ayri akis
```

Beş adımlık akış, birinci biçimde 33 kez koşuyor. Adım başına 6,6 ziyaret demek, akışı "beş adımlı
bir süreç" diye anlatmanın şemayı tarif ettiği, işi tarif etmediği anlamına gelir. İkinci biçimde
sayı 15'e, adım başına 3,0'a iniyor. Aradaki 18 ziyaret farkı, hiçbir ek veri toplamadan, yalnız
kararların ne zaman yazıldığı değiştirilerek kazanılıyor.

Kazancın nerede toplandığı üçüncü satır grubunda yazılı. Mesafesi üç ve üzeri olan üç dönüş,
birinci biçimdeki 28 fazla ziyaretin 14'ünü yiyor: dönüşlerin üçte biri bedelin yarısını taşıyor.
Üçü de aynı çeşit karardır — bölge kırılımı istenecek mi, raporu kim okuyacak, hangi dönemle
karşılaştırılacak. Hiçbiri veri hakkında bir şey sormaz; üçü de sorunun kime ve ne için sorulduğunu
sorar ve üçü de ilk adımda, hiçbir tabloya bakmadan yazılabilir.

## Sıfıra İnmeyen Dönüş

İkinci biçimde geri dönüş beşte duruyor ve beşi de kümenin bir özelliğidir: okuma penceresi, kapalı
sözleşmeden gelen okuma, bölgesi boş satırlar, yinelenen abone kaydı, eşik yakınında sıralamanın
oynak olması. Hiçbiri masa başında yazılamaz; okuma döngüsünün aylık olduğu birinci dersin çapraz
tablosu basıldığında görüldü, sıralamanın 0,0005 farkla döndüğü bölge tablosu basıldığında görüldü.

Üçüncü biçim bu beşin dördünü öne çekiyor. Ön bakış bir ziyaret ödüyor ve karşılığında 15 ziyareti
8'e, beş dönüşü **bire** indiriyor. İlk iki adıma hiç dönülmüyor. Kazanç dört kararın tümünün ham
veride görünür olmasından geliyor: boş bir alan, yinelenmiş bir kimlik ya da bir tarih dağılımı,
hiçbir hesap yapmadan bakınca görülür.

Kalan tek dönüş kapanmıyor ve kapanamaz. Sıralamanın eşik yakınında oynak olması ham veride
durmaz; çözümleme koşup bölge oranları hesaplandıktan sonra ortaya çıkar. **Bir kararın hangi
adımda öğrenilebileceği, o kararın içeriğine bağlıdır ve çalışma düzeniyle değiştirilemez.** Akış
doğrusal değildir; düzensizlikten değil, **bilginin sırasından** dolayı doğrusal değildir. Bu
yüzden "önce soruyu doğru tanımla" öğüdü yarım bir öğüttür — tanımın bir bölümü ancak veri
görüldükten, bir bölümü ancak hesap koştuktan sonra yazılabilir. Yapılabilecek şey, her kararı
öğrenilebildiği en erken adıma çekmek ve geri kalanının döneceğini bilerek yer açmaktır.

Son iki satır dersin kendi sayısına aynı testi uyguluyor. AK14 bir muhasebe kararıydı: dönüş
aradaki bütün adımları yeniden koşturur. İkinci bir muhasebe kararı da savunulabilir — yalnız
kararın ait olduğu adım yeniden koşar, aradakiler bozulmamışsa dokunulmaz. Bu karar altında birinci
biçim 15, ikinci biçim 10 ziyaret üretir. Yani **birinci biçim ucuz muhasebeyle 15, ikinci biçim
tam muhasebeyle 15 çıkar.** İki ayrı çalışma biçimi, iki ayrı muhasebe kararıyla aynı sayıyı verir.
Hangi 15 olduğu yazılmadıkça bu sayı hiçbir şey söylemez — dersin kendi ölçüsü de kursun kuralına
tabidir.

## Özet

- Analiz akışı beş adımdır: soru, veri, çözümleme, bulgu, iletişim. Bulgu ve iletişim adımları
  karar üretmez, tüketir; ama eksik kararı fark eden adımlar da onlardır.
- Bu koşumda 12 kararın 10'u ait olduğu adımdan sonra görülür; yalnız ikisi doğduğu yerde görülür.
- Kararlar görüldükçe yazıldığında akış 10 geri dönüş ve 33 adım ziyareti üretir, adım başına 6,6.
  Her karar ait olduğu adımda yazıldığında 5 dönüş ve 15 ziyarete, ham veriye bir ön bakış
  eklendiğinde 1 dönüş ve 8 ziyarete iner.
- Kazanç uzun dönüşlerde toplanır: mesafesi üç ve üzeri üç dönüş, fazla ziyaretin 14'ünü yer ve
  üçü de sorunun kime sorulduğuyla ilgilidir, veriyle değil.
- Kapanmayan tek dönüşün içeriği ham veride değil çözümlemenin çıktısındadır; bir kararın hangi
  adımda öğrenilebileceği çalışma düzeniyle değiştirilemez.
- Ziyaret sayısı da bir muhasebe kararına bağlıdır: birinci biçim ucuz muhasebeyle 15, ikinci biçim
  tam muhasebeyle 15 verir; hangi 15 olduğu yazılmadan sayı okunamaz.

## Sonraki Adım

Bu ders akışı tek bir kişinin koşturduğunu varsaydı. Gerçekte akışın adımları çoğu zaman farklı
işleri olan kişiler arasında bölünür ve bölünme yeri sonucun ne olacağını değiştirir. Aynı soru —
etkin abone sayısı düşüyor mu — ölçmekle görevli birinin elinde bir sayıya, kararı bağlamakla
görevli birinin elinde bir eşiğe, geleceğe genellemekle görevli birinin elinde bir tahmin
aralığına dönüşür. Üçü de aynı tabloyu okur ve üçü de farklı bir çıktı teslim eder. Sonraki ders
bu üç iş tanımını ayırır ve aynı sorunun üç elde nasıl üç ayrı sayıya döndüğünü yan yana basar.
