TVBS數據架構大解密 (2) — 現代數據棧(Modern Data Stack)

KC (Edison) Lai
dbt-local-taipei
Published in
18 min readMar 27, 2024

在上一篇《TVBS數據架構大解密(1) — 前世今生》我們講到了過去TVBS遇到什麼挑戰,是怎麼思考下一代數據架構,以及ELT所帶來的競爭優勢。這一篇則要更進一步的探討現代數據棧的特性與優勢,TVBS是怎麼進行技術選型,以及最後導入MDS的效益。

MDS通常是指一系列用於數據收集、儲存、轉換的特定技術和服務所堆疊而成的數據架構。相比於過去,MDS具有「以SaaS為基礎」、「ELT的Data Pipelines設計」、「模組化的數據架構」、「以SQL為核心」4項特性。而這4項特性,帶來「易於使用與維護」、「縮短價值實現的時間」、「易於擴展」3項優勢。

至於在MDS技術選型上,TVBS:

  • 使用Airbyte, FivetranBigQuery Data Transfer Service等工具,作為數據擷取及匯入工具
  • 使用BigQuery無縫整合Google生態圈,降低AI使用門檻
  • 使用dbt快速實現DataOps不孤單
  • 使用Looker Studio快速滿足商業分析需求
  • 使用Apache Airflow作為Data Pipelines排程、監控工具

導入MDS後,TVBS獲得「更全面的數據視角」和「更高的數據品質」,這使得我們能夠更好地理解消費者行為和喜好。同時,因為資源有效利用,所以「數據架構成本得到下降」。更重要的是,「團隊進行數據相關任務時變得更靈活」。換句話說,我們可以更快地做出反應,更靈活地調整策略,以滿足不斷變化的需求和市場環境。

什麼是現代數據棧(Modern Data Stack, MDS)?

近幾年隨著雲端數據解決方案的成熟,以及Data Pipelines設計典範逐漸從ETL轉變為ELT,現代數據棧(Modern Data Stack, MDS)也就應運而生。MDS通常是指一系列用於數據收集、儲存、轉換的特定技術和服務所堆疊而成的數據架構。

4項特色

相比於過去,MDS具有以下4項特色:

  • 以SaaS為基礎
  • ELT的Data Pipelines設計
  • 模組化的數據架構
  • 以SQL為核心

以SaaS為基礎

在現代數據架構中的數據平台以及其它工具通常會以雲端服務為主,站在巨人的肩膀上快速建構適合自家團隊的MDS。

ELT的Data Pipelines設計

在現代數據架構中,ELT的Data Pipelines設計能有效地將Extraction-Load和Transformation去耦合,最終獲得更彈性的架構設計。

模組化的數據架構

ELT帶來更彈性的架構,讓團隊可以挑選適合自家的工具。在Extraction-Load部分,除了AirbyteFivetran外,還有其它選項如Stitch, matillion, GCP Datastream等;至於在Transformation部分,除了目前最常見的dbt外,也有開源的SQLMesh,以及Google主導開發的Dataform等選項供選擇。

以SQL為核心

自從Databricks在2020年提出Data Lakehouse後,整個業界就逐步整合旗下Data Warehouse和Data Lake產品與服務,嘗試在自家數據平台上一致化地滿足結構、非結構化數據的處理需求,如常見的統計計算、機器學習建模、特徵工程、LLM推論、語音轉文字等。為了要在單一數據平台進行各式各樣的數據處理任務,這時SQL的重要程度就會越趨上升。更進一步,建構在雲端數據平台的MDS,自然而然地也會是以SQL作為核心。

3項優勢

MDS「以SaaS為基礎」、「ELT的Data Pipelines設計」、「模組化的數據架構」、「以SQL為核心」4項特色,帶來以下3項優勢:

  • 易於使用與維護
  • 縮短價值實現的時間
  • 易於擴展

易於使用與維護

圍繞著MDS而生的工具與數據平台,常以非技術背景的數據從業人員作為主要目標對象。因此,團隊在使用這些工具和平台時,只需透過簡單的幾個點擊步驟加上少量設定配置,並結合數據轉換工具來撰寫SQL,就能快速建構出可擴展的、可維護的MDS,不需要過於擔心複雜的硬體設施問題、計算效率問題等。

縮短價值實現的時間

在Extraction-Load階段,工程師不必從頭學習每個數據來源系統的APIs,只需透過第三方服務就能穩建、持續地將數據移動至數據平台,大幅減少低價值的開發成本,進而轉往更高附加價值的活動,縮短價值實現時間。

易於擴展

由於MDS的原生特性,自帶以下3個面向的「易於擴展」優勢:

  • 在Data Processing部分,如前所述,藉由將Extraction-Load和Transformation去耦合,Extraction-Load部分可以拆開由第三方服務協助處理並維護,這麼做易於根據自家團隊需求,挑選合適的連接器來使用,易於擴展多個數據來源系統。
  • 在Data Practitioners部分,由於MDS設計讓整體技術難度下降,因此組織內有能力讓更多數據從業人員參與其中,這包括組織內部的數據供應者和消費者。
  • 在Use Cases部分,當組織內部數據消費者越多,數據在各式各樣的場域被使用的機會就越多,大家對於數據應用的想像當然也就越多。而MDS以雲端數據平台作為基礎,一致化地使用SQL進行結構、非結構化的各式數據處理,就能很快地滿足各式各樣的數據使用情境。

TVBS現代數據棧

知道MDS的特性與優勢後,接下來就來看看TVBS挑選哪些技術與服務,堆疊我們的MDS:

Data Extraction and Load

在數據抽取與匯入的部分,我們傾向使用現成的服務與工具如Airbyte, Fivetran, BigQuery DTS等,協助將數據原封不動的搬入數據平台中。重點是在使用現成工具的同時,盡可能地不花錢。

Data Platform

我們選擇BigQuery作為我們的數據平台,無縫整合Google生態圈。

Data Transformation

在數據平台裡我們選擇Data Build Tool (dbt)進行數據轉換,協助我們快速實現DataOps,更快地交付品質更好的數據產品至數據消費者手中。

Business Intelligence

我們選擇Looker Studio作為我們的商業智慧分析工具,快速滿足需求。

Data Pipelines Orchestration

在Data Pipelines排程、監控工具我們則是選擇家喻戶曉的Apache Airflow。

接下來,我們會針對數據平台、數據轉換工具和商業智慧分析工具這三項進一步地說明

使用BigQuery無縫整合Google生態圈,降低AI使用門檻

在數據平台選擇上,各家雲端大廠都有提供自家產品,如Azure Synapse Analytics, AWS Redshift, GCP BigQuery。不僅如此,還有Databricks Platform, Snowflake等其它數據平台可供選擇。

Data Products in TVBS

而TVBS最終決定BigQuery作為支撐現代數據架構的平台,主因是看上它「無縫整合Google生態圈」、「Bring AI to Data」2項優勢:

無縫整合Google生態圈

TVBS身在數位媒體產業中,日常營運其實很常使用到Google的產品與服務,如Google Ad Manager、Google Search Console、和YouTube等。

作為GCP明星產品,BigQuery與其它Google產品有很好地整合,可以協助團隊輕易地在BigQuery取得原始數據,而這是其它數據平台無法提供的。舉例來說,BigQuery與Google Search ConsoleGoogle Analytics 4皆有原生整合。不僅如此,透過BigQuery Data Transfer Service,更可以將YouTube Channel, Google Play, Google Ad Manager等Google相關系統服務的數據匯入BigQuery。

我們發現在事件追蹤設計、UTM參數清單、數據驗證等情境下,還是需要依靠試算表SaaS維護。不僅僅是上述數據來源系統,BigQuery還與Google Sheets有很好地整合,幫助我們將人工維護的數據,應用於Data Pipelines當中,例如將Google Sheets作為BigQuery裡的外部表格將BigQuery轉換過後的表格,匯出至Google Sheets

Bring AI to Data

BigQuery ML democratizes the use of ML by empowering data analysts, the primary data warehouse users, to build and run models using existing business intelligence tools and spreadsheets — Advantages of BigQuery ML

BigQuery ML結合Object Tables功能,讓我們有機會以SQL完成結構化、非結構化的ML/AI應用分析,大幅降低技術隔閡。BigQuery ML支援以下四種模型種類:

  • Internally Trained Models:在BigQuery內部訓練的模型,如Matrix Factorization, Time Series, PCA等。
  • Externally Trained Models:在Vertex AI訓練的模型,如Autoencoder, AutoMLRandom Forest等。
  • Remote Models:指的是部署於Vertex AI的模型,或是GCP的AI相關應用服務,如GenAI, NLP, Machine Translation, Audio Transcription等。
  • Imported Models:在BigQuery外部進行模型訓練並在BigQuery內部進行預測、推論的模型。

底下說明如何在BigQuery中透過SQL與LLM互動,進行正、負向文本情緒分析:

select
*
from ml.generate_text(
model `mydataset.llm_model`,
(
select
concat(
'Classify the sentiment of the following text as positive or negative.Text:',
input_column,
'Sentiment:'
) as prompt,
from `mydataset.input_table`
),
struct(
0.1 as temperature,
1000 as max_output_tokens,
0.1 as top_p,
10 as top_k
)
)

不僅上述功能,BigQuery亦支援JSON數據格式,讓我們更輕易地處理半結構化數據。

總而言之,BigQuery幫助TVBS透過SQL一致化地滿足各式各樣的數據轉換、ML模型訓練和推論、AI應用等。

使用dbt快速實現DataOps不孤單

MDS在「數據轉換」領域的相關工具並不多,儘管還有SQLMeshDataform,最廣為使用的還是Data Build Tool(dbt)

GitHub Star History: dbt vs. SQLMesh vs. Dataform

值得注意的是,從thoughtworks定期更新的Technology Radar中可以發現dbt在2023年9月正式進入「採用階段」。換句話說,thoughtworks強烈建議科技產業應該採用此項目。

直至今日,TVBS已使用dbt每日執行了300多個數據模型和600多個數據測試:

dbt Data Models Lineage Graph in TVBS

隨著使用dbt越久,我們發現它「學習曲線低」、「支持DataOps的一系列功能」、「熱絡的開源社群」的優勢,幫助我們在TVBS快速實現DataOps不孤單,更快地交付品質更好的數據產品:

學習曲線低

dbt本質上是建立於SQL之上,再結合Jinja模板引擎和YAML,補足原SQL所缺乏的語言特性,使之變得動態和彈性。因此,對於那些原本就會SQL的工程師、分析師等,學習曲線相對低很多。

不僅如此,dbt還提供一套CLI工具,如dbt run, dbt retry, dbt build等,以及數據模型挑選語法,協助開發者進行複雜的Data Pipelines設計。

dbt = SQL + Jinja + YAML + CLI

綜上所述,dbt很好地幫助我們大幅降低數據工程的技術門檻,使團隊運作效率更快,並且更容易找到合適的外部夥伴加入團隊,或是培養內部夥伴參與數據工程任務開發。

支持DataOps的一系列功能

TVBS使用dbt不僅僅只是因為其學習曲線低,更因為它提供了一系列的功能,幫助我們建立DataOps流程與文化。舉例來說,dbt提供dbt test指令用於驗證數據品質,如age欄位不能包含負值、phone欄位不能是空值等。

不只如此,dbt還提供了dbt docs generate指令用以建立dbt專案文件,協助下游數據消費者探索和了解為他們精心策劃的數據集經歷了哪些處理和測試、每項欄位的描述、數據擁有者等。

dbt Project Documentation Site (擷取自dbt官網)

更進一步地,在dbt Cloud中更提供了CI機制。而如果有客製化需求,也可以在原有的CI/CD流程上自行加入dbt相關步驟;另一方面,dbt Cloud IDE上也有Data Lineage功能,協助dbt開發者:

  • 進行根本原因分析(Root Cause Analysis)
  • 了解上游數據模型變化對於下游的影響
  • 進行高層次的Data Pipelines設計討論
dbt Cloud IDE (擷取自dbt官網)

這些功能都可以大大提升TVBS在交付數據產品時的效率和品質,使其能夠更迅速地將數據產品交給組織內部的數據消費者。

熱絡的開源社群

最後,我們還發現dbt Labs很用心的在維繫技術社群,促進dbt蓬勃發展。舉例來說,截至2024年2月底,dbt擁有一個大約6.1萬位成員的Slack工作空間,來自四界各地的dbt開發者都很熱絡的在頻道裡交流,裡頭也都可以找到dbt Labs員工的身影,而且頻道也都是有經過dbt Labs審慎規劃的,包括第三方工具的#tools-xxxx頻道、尋求建議的#advice-xxxx頻道、遍地開花的當地技術社群#local-xxxx頻道等。

截至2024/2/22約有6.1萬位成員在dbt Labs經營的Slack工作空間中

除了線上技術社群外,dbt Labs每年也都會舉辦大型技術研討論Coalesce Conference,邀請夥伴和顧客分享過去導入dbt的經驗。Coalesce Conference 2023的影片請參考此YouTube播放清單

而對於想要貢獻自己的技術在dbt的開發者們,也可以進一步開發dbt套件並發佈於dbt Package Hub,供開源社群使用。知名套件如協助單元測試的dbt-unit-testing、取自Great Expectations的dbt-expectations等。不僅如此,專注於Extraction-Load的公司Fivetran,也一起在dbt技術社群上貢獻,一同協助打造符合自家數據schema的Data Pipelines模板,讓各家組織更快地整合來自四面八方的數據,一致化地理解這些數據並取得洞察。

Fivetran-provided dbt Packages

使用Looker Studio快速滿足商業分析需求

在商業智慧分析工具的選擇,除了Looker Studio外,也有其它諸多選擇如Salesforce的Tableau, Microsoft的Power BI,開源工具則像是Metabase, Apache Superset等。

我們最終選擇Looker Studio是因為看上它「無縫整合Google生態圈」、「介面操作相對易上手」、「提供常見連接器的報表範本」的優勢,協助TVBS快速滿足商業分析需求。

「食尚玩家」Looker Studio報表

無縫整合Google生態圈

同為Google生態圈的產品Looker Studio,官方支援的連接器,比起Microsoft Power BITableau提供的,多了Google Search Console, YouTube, Google Ad Manager 等較適合媒體業務的連接器。

Connectors built and supported by Looker Studio

這些連接器讓我們省去ELT開發成本,快速地透過拖、拉方式就可以滿足TVBS在媒體營運上的商業分析需求。

介面操作相對易上手

會使用Looker Studio除了它無縫整合Google生態圈外,另個原因是因為官方提供40種符合直覺的圖表元件,介面操作相對容易上手,協助組織各營運團隊,自助式地開發商業分析報表。

Visualizations built and supported by Looker Studio

不僅如此,Looker Studio更原生支援Drill Action功能,讓我們可以在同份圖表中以互動的方式就可以切換至不同的數據顆粒度,節省製作多個圖表的時間。

具體來說,TVBS電商很常以日、週、月三種時間尺度來分析營收,過往需要分別製作三個圖表才能滿足。如今透過Drill Action功能,就能在同一份圖表中完成三種時間尺度的分析需求。

提供常見連接器的報表範本

Looker Studio不僅提供媒體產業常見的連接器,讓我們省去了ELT的開發時間成本,透過簡易的操作介面更快地滿足商業分析需求,它還提供相關報表範本,讓我們不需要自行製作報表,就可以完成大部分的商業分析需求。

Looker Studio提供的報表範本

導入MDS後的效益

TVBS在導入MDS後,獲得「更全面的數據視角」和「更高的數據品質」,這使得我們能夠更好地理解消費者行為和喜好。同時,因為資源有效利用,所以「數據架構成本得到下降」。更重要的是,「團隊進行數據相關任務時變得更靈活」。換句話說,我們可以更快地做出反應,更靈活地調整策略,以滿足不斷變化的需求和市場環境。

團隊進行數據相關任務時變得更靈活

導入MDS後,我們感到最大的效益就是組織在進行營運分析相關任務時變得更敏捷了。換句話說,就是導入MDS後,數據團隊每位成員都有能力E2E完成ELT Data Pipelines設計與開發,和最後一哩路的Looker Studio報表製作上。不僅如此,我們也正逐步讓營運端的數據從業人員有能力自助式地完成各自的商業分析需求,而不需仰賴單一數據團隊。

更全面的數據視角

MDS所帶來的第二項效益就是,它協助我們更輕易地取得更多元的數據。除了原有資料庫、Google Analytics、Facebook和Google Search console外,我們還使用BigQuery DTS和Fivetran這兩項工具,協助TVBS取得App Store, Google Play, YouTube等數據來源。而更全面的數據視角,能很好地幫助我們在營運上有更清楚的輪廓,進而做出更好地決策。

更高的數據品質

在更輕易地取得更多元數據的同時,透過MDS產出的數據產品還是能維持在一定的品質控管,這是因為以下兩點:

  • Airbyte, Fivetran, BigQuery DTS等Extraction-Load服務與工具,會協助維護第三方數據來源系統與BigQuery的整合,因此我們不必擔心數據來源系統的APIs改動,進而造成ELT Data Pipelines錯誤。
  • 每日執行的dbt build也幫助我們每天測試數據產品的品質是否真如我們原本所想的那樣。而當發生錯誤時,也能在第一時間發現並進行處理。

數據架構成本得到下降

MDS帶來的最後一項效益是數據架構成本的下降。根據TVBS先前成本計算,如果我們聚焦於「過去透過舊數據架構處理、製作而成的那些商業分析報表需求」可以發現,透過「現代數據架構」來滿足同樣這些需求,比起舊方法,成本可以下降63%。

下一篇《TVBS數據架構大解密 (3) — Next Steps》會說明我們是怎麼思考TVBS在數據架構的下一步的。

全文已取得TVBS同意,特別感謝數位開發中心的夥伴們

TVBS數位開發中心徵才中

--

--