為什麼原始數字不能直接用|資料清洗的三種問題,最後一種最難

主筆 | 2026-09-16 | 自媒體矩陣 內容經營 | 1 minute of reading

本篇目錄(7 節)

上一篇講了六路資料接起來會看到什麼。這一篇講的是接之前的那道工:為什麼原始數字不能直接拿來用。

先講結論:多數人以為資料的敵人是「髒」,其實真正的敵人是「對不齊」。髒的資料看得出來,對不齊的資料每一筆都對,合起來卻是錯的。

我遇到的問題分三種,一種比一種難發現。

第一種:同一篇文章,機器認得出三個不同的它

我這個網站換過站台,網址格式改過;有些連結帶標題,有些不帶;有些連結後面還掛著跳到某個小標的錨點。

對讀者來說這些全部是同一頁。對機器來說,那是三筆不同的紀錄。

EX:

原本文章網址是

domain.com?p=987

後來改為

domain.com/p/987

這種時候就必須要做資料清洗與合併,不然~~~

後果很直接:這篇文章的成績被切成三份。

單獨看每一份都不起眼,於是它在任何排行榜上都排不進去——不是因為它表現差,是因為它被拆開了。

這種髒是最容易發現的一種,因為只要有人手動去查一篇自己熟悉的文章,就會發現數字對不上。麻煩的是它會一直長出新的變體:每一次改網址、每一次搬家、每一次有人用不同方式連進來,就多一種寫法。

這裡有一個看起來很聰明、其實會出事的做法:用關鍵字去模糊比對網址。想找編號 6171 那篇,就去撈網址裡含有 6171 的列。問題是 61710 也含有 6171,還有 6171 後面接別的數字的頁。撈出來的數字會莫名其妙比實際大,而且完全不會報錯。

所以處理方式不是「清一次」,是在中間加一層翻譯:不管進來的是哪一種寫法,都先精確解析出那篇文章的編號,再開始算。

這一層要是沒有,後面所有數字都在對不同的東西加總。

第二種:比率不能相加,所以我不把比率存起來

這一種開始反直覺了。

假設我想知道兩天平均的點擊率。

直覺做法是把第一天的點擊率和第二天的點擊率加起來除以二。這個算法在兩天的曝光量差不多時勉強可用,但只要一天曝光一萬次、另一天曝光十次,答案就會嚴重偏掉——那十次曝光的日子,在平均裡被當成和一萬次一樣重要。

正確做法是回到原始的分子和分母:兩天的點擊數加起來,除以兩天的曝光數加起來。

所以我在資料層只留兩種東西:分子(點擊、收益、次數)和分母(曝光、人數)。所有比率都不存,要看的時候現算。

這條規則寫下來的理由很現實:只要那個比率被存進某張表,遲早會有人(包括我自己,包括 AI)把兩列比率拿去平均,而且算出來的數字看起來很合理,沒有任何地方會報錯。錯誤不會跳出來,它會安靜地躺在報表裡。

同樣的道理延伸出另一條:不同切面的數字不能疊。

這一條我是真的踩過。Google Search Console 的資料拉回來之後,同一天會同時有「全部國家的總計」這一列,和台灣、香港、美國這些單一國家的列。它們並存在同一張表裡。如果不先篩掉其中一種就直接加總,那天的曝光會變成兩倍——而報表不會有任何異常,只是看起來「這個月成長得特別好」。

同一天按國家分是一份完整的量,同一天按裝置分也是一份完整的量,兩者一樣不能相加。

第三種:五個來源都很乾淨,但時間刻度全都不一樣

這是最難的一種,也是我花最多時間的地方。

我手上的資料來源,時間刻度全都不一樣,而且不是我能決定的:

  • Google Search Console:關鍵字這一層最細只到週,而且只保留十六個月,超過就永遠拿不回來。
  • Bing Webmaster Tools:查詢這一層只有週,連國家都不分。
  • GA4:我存的是月。
  • Cloudflare 免費方案的流量紀錄:每日,但只保留七天。抓取程式哪天沒跑成功,那幾天就是永久的洞。
  • AdSense:每日,但「逐篇文章」那個維度只留大約二十天,掉出窗口就再也查不到某一篇當時賺了多少。

這幾行加起來的意思是:這些資料沒有一個共同的時間單位。

除了刻度不一樣,每一家還各有自己的缺角。Google Search Console 的關鍵字表裡根本沒有「哪一頁」這個欄位,所以「某篇文章這個月有多少曝光」不能從關鍵字表硬湊出來,得走另一組資料。Bing 的逐頁資料是一頁一頁去問的,中間哪一頁失敗它不會吭聲,資料看起來完整、其實少了幾頁。至於「被 AI 引用」這件事,目前沒有任何一家提供正式的介面,能拿到的都要人工從後台匯出。

於是有些問題在結構上就問不出來。

第一個問不出來的是「這一篇三年來的真實軌跡」。它跨過網址改版,又撞上 Search Console 十六個月的保留上限——網址可以靠翻譯層合併,但更早的那段資料根本不存在,任何工具都變不出來。

第二個是「這禮拜發生了什麼」。週資料最快也要等一週結算完才看得到;真正即時的只有爬蟲那一路,而它回答的是機器來過,不是人怎麼想。

第三個是「這個月的變化是真的變化,還是每年這時候都這樣」。要回答它得跟去年同月比,而那需要至少兩年的同源資料,我手上只有 Search Console 這一路真的滿足。

所以清洗的本質是判斷,不是計算

如果清洗只是「把髒的洗掉」,那它是純技術工作,寫好程式就結束了。

但第三種問題不是髒。每一家的資料各自都完全正確、都很乾淨,問題出在它們要被放進同一句話裡。而「要不要放進同一句話、放進去之後這句話還能不能算數」,這件事沒有標準答案,是判斷。

舉個具體的:我想說「這篇文章這個月變差了」。Search Console 給我的是四個星期,GA4 給我的是一個完整日曆月,兩者的區間不一樣。要不要就這樣比?可以比,但結論只能說到「方向一致」,不能說到「掉了幾成」。

這個分寸沒有人會幫你把關。程式不會報錯,報表也會照樣長出一個數字。唯一的守門是有人知道這兩個數字的出身不同。

下一篇講另一件也常被誤會是純技術的事:電腦怎麼知道兩個寫法完全不同的詞,其實在問同一件事。

本文關鍵字:資料清洗、Google Search Console、GA4、比率不可加、資料粒度、內容數據分析

本篇摘要

老喬談資料在能用之前要過的那道工。核心主張是多數人以為敵人是髒,其實是對不齊:髒的資料看得出來,對不齊的資料每一筆都對、合起來卻是錯的。第一種問題是同一篇文章被機器認成好幾筆,因為換過站台、網址格式改過、有些連結帶錨點,成績被切成好幾份而排不進任何排行榜;文中點名一個看似聰明其實會出事的做法——用模糊比對找網址,想找編號 6171 會把 61710 也撈進來,數字莫名變大且完全不報錯,正解是精確解析出文章編號再開始算。第二種是比率不能相加:兩天的點擊率直接平均,在一天曝光一萬次、另一天十次時會嚴重偏掉,所以資料層只存分子與分母、比率一律現算,理由是比率一旦存起來遲早被拿去平均而且不會報錯。延伸的實際案例是 Google Search Console 拉回來的資料同一天會有全部國家總計與各單一國家的列並存,不先篩掉一種直接加總,那天曝光會變兩倍而報表只是看起來成長特別好。第三種也是最難的是時間刻度不一致:Search Console 關鍵字層只到週且只留十六個月、Bing Webmaster 查詢層只有週且不分國家、GA4 存月、Cloudflare 免費方案每日但只留七天、AdSense 逐篇維度只留約二十天;此外每家還各有缺角,Search Console 的關鍵字表沒有頁面欄位、Bing 逐頁資料失敗時靜默略過、被 AI 引用沒有任何正式介面只能人工匯出。結論是清洗的本質是判斷不是計算:各家資料都乾淨,問題在它們要被放進同一句話,而程式不會報錯,唯一的守門是有人知道這兩個數字的出身不同。

  • 資料真正的敵人不是髒而是對不齊:髒的資料看得出來,對不齊的資料每一筆都對、合起來卻是錯的
  • 同一篇文章因換站台、網址格式、錨點被機器認成多筆,成績被切成好幾份,排不進排行榜不是因為表現差而是被拆開
  • 用模糊比對找網址會出事:找編號 6171 會連 61710 一起撈進來,數字莫名變大而且完全不會報錯
  • 比率不能相加:兩天點擊率直接平均,在曝光量懸殊時會嚴重偏掉;資料層只存分子與分母,比率一律現算
  • Google Search Console 拉回來的資料裡,同一天有全部國家總計與各單一國家的列並存,不先篩掉一種就加總,曝光會變兩倍而報表毫無異常
  • 五個來源的時間刻度都不一樣:Search Console 關鍵字層到週且留十六個月、Bing 只有週且不分國家、GA4 存月、Cloudflare 免費方案每日但只留七天、AdSense 逐篇維度只留約二十天
  • 每一家還各有缺角:Search Console 關鍵字表沒有頁面欄位、Bing 逐頁資料失敗時靜默略過、被 AI 引用目前沒有任何正式介面只能人工匯出
  • 三個結構上問不出來的問題:單篇三年的真實軌跡、這禮拜發生了什麼、這個月是真變化還是季節性

老喬報|每週一封

訂閱老喬報

近 2,000 位讀者訂閱・免費・隨時可退訂

用 Google 訂閱

或用 email

送出即表示同意隱私權政策。