數(shù)據(jù)倉庫—數(shù)倉治理
本文目錄
數(shù)據(jù)治理
統(tǒng)一流程參考模型
為什么要治理
DMBOK的數(shù)據(jù)治理框架
數(shù)倉治理
治理的分類
數(shù)據(jù)源治理
數(shù)倉模型治理
數(shù)據(jù)服務(wù)治理
上下游約定
數(shù)倉評價(如何評價一個數(shù)據(jù)倉庫的好壞)
數(shù)據(jù)準(zhǔn)確性
時效性
覆蓋性
建構(gòu)層次清晰
數(shù)據(jù)準(zhǔn)確一致
性能指標(biāo)
成本指標(biāo)
易用性指標(biāo)
需求響速度
穩(wěn)定性
總結(jié)
知識星球
數(shù)據(jù)倉庫系列文章(部分已出,持續(xù)更新)
數(shù)倉架構(gòu)發(fā)展史 數(shù)倉建模方法論 數(shù)倉建模分層理論 數(shù)倉建模—寬表的設(shè)計 數(shù)倉建?!笜?biāo)體系 數(shù)據(jù)倉庫之拉鏈表 數(shù)倉—數(shù)據(jù)集成 數(shù)倉—數(shù)據(jù)集市 數(shù)倉—商業(yè)智能系統(tǒng) 數(shù)倉—埋點(diǎn)設(shè)計與管理 數(shù)倉—ID Mapping 數(shù)倉—OneID 數(shù)倉—AARRR海盜模型 數(shù)倉—總線矩陣 數(shù)倉—數(shù)據(jù)安全 數(shù)倉—數(shù)據(jù)質(zhì)量 數(shù)倉—數(shù)倉建模和業(yè)務(wù)建模
數(shù)據(jù)治理
元數(shù)據(jù)管理 數(shù)據(jù)質(zhì)量 數(shù)據(jù)模型 安全管理 主數(shù)據(jù)管理 數(shù)據(jù)生命周期
數(shù)據(jù)治理(Data Governance),是一套持續(xù)改善管理機(jī)制,通常包括了數(shù)據(jù)架構(gòu)組織、數(shù)據(jù)模型、政策及體系制定、技術(shù)工具、數(shù)據(jù)標(biāo)準(zhǔn)、數(shù)據(jù)質(zhì)量、影響度分析、作業(yè)流程、監(jiān)督及考核流程等內(nèi)容。
統(tǒng)一流程參考模型

為什么要治理

不論是金融行業(yè)、通訊行業(yè)、地產(chǎn)行業(yè)、傳統(tǒng)制造業(yè)以及農(nóng)業(yè),其信息化的發(fā)展基本都遵循了“諾蘭模型”。筆者認(rèn)為企業(yè)信息化大致經(jīng)歷了初期的煙囪式系統(tǒng)建設(shè)、中期的集成式系統(tǒng)建設(shè)和后期的數(shù)據(jù)管理式系統(tǒng)建設(shè)三個大的階段,可以說是一個先建設(shè)后治理的過程。
數(shù)據(jù)質(zhì)量層次不齊
“數(shù)據(jù)資產(chǎn)化”的概念已經(jīng)被大多數(shù)人理解和接受。不論是企業(yè)、政府還是其他組織機(jī)構(gòu),對于的數(shù)據(jù)資產(chǎn)的管理越來越重視。然而,數(shù)據(jù)并不等于資產(chǎn),也就是說不是所有數(shù)據(jù)都是數(shù)據(jù)資產(chǎn),數(shù)據(jù)中也有垃圾數(shù)據(jù)。我們需要治理的是能夠?yàn)槠髽I(yè)創(chuàng)造價值的數(shù)據(jù)資產(chǎn),而不是全部數(shù)據(jù)。
數(shù)據(jù)交換和共享困難
企業(yè)信息化建設(shè)初期缺乏整體的信息化規(guī)劃,系統(tǒng)建設(shè)大多都是以業(yè)務(wù)部門驅(qū)動的單體架構(gòu)系統(tǒng)或套裝軟件,數(shù)據(jù)分散在這些架構(gòu)不統(tǒng)一、開發(fā)語言不一致、數(shù)據(jù)庫多樣化的系統(tǒng)中,甚至還有大量的數(shù)據(jù)存放在員工的個人電腦中,導(dǎo)致在企業(yè)內(nèi)部形成了一個個的“信息孤島”。 這些“孤島”之間缺乏有效的連接通道,數(shù)據(jù)不能互聯(lián)互通,不能按照用戶的指令進(jìn)行有意義的交流,數(shù)據(jù)的價值不能充分發(fā)揮。只有聯(lián)通數(shù)據(jù),消除這些“信息孤島”,才能實(shí)現(xiàn)數(shù)據(jù)驅(qū)動業(yè)務(wù)、數(shù)據(jù)驅(qū)動管理,才能真正釋放數(shù)據(jù)價值。
打通各個業(yè)務(wù)線之間的數(shù)據(jù)建設(shè),很多公司都是統(tǒng)一建設(shè)
缺乏有效的管理機(jī)制
許多企業(yè)都認(rèn)識到了數(shù)據(jù)的重要性,并嘗試通過生產(chǎn)系統(tǒng)的業(yè)務(wù)流來控制數(shù)據(jù)流,但由于缺乏有效的管理機(jī)制和某些人為的因素,在數(shù)據(jù)流轉(zhuǎn)過程中,存在數(shù)據(jù)維護(hù)錯誤、數(shù)據(jù)重復(fù)、數(shù)據(jù)不一致、數(shù)據(jù)不完整的情況,導(dǎo)致了產(chǎn)生了大量的垃圾數(shù)據(jù)。數(shù)據(jù)產(chǎn)權(quán)不明確,管理職責(zé)混亂,管理和使用流程不清晰,是造成數(shù)據(jù)質(zhì)量問題的重要因素。
存在數(shù)據(jù)安全隱患
近年來,隨著大數(shù)據(jù)的發(fā)展,諸如此類的數(shù)據(jù)安全事件多不勝數(shù)。數(shù)據(jù)資產(chǎn)管理上,正在由傳統(tǒng)分散式的人工管理向計算機(jī)集中化管理方向發(fā)展,數(shù)據(jù)的安全問題愈來愈受到人們的關(guān)注。
發(fā)現(xiàn)問題嚴(yán)重滯后
影響不清晰
數(shù)據(jù)變更對下游的影響不清晰,無法確認(rèn)影響范圍
DMBOK的數(shù)據(jù)治理框架
DMBOK是由數(shù)據(jù)管理協(xié)會(DAMA)編撰的關(guān)于數(shù)據(jù)管理的專業(yè)書籍,一本DAMA 數(shù)據(jù)管理辭典。對于企業(yè)數(shù)據(jù)治理體系的建設(shè)有一定的指導(dǎo)性
注:DAMA 是數(shù)據(jù)管理協(xié)會的簡稱,是一個全球性數(shù)據(jù)管理和業(yè)務(wù)專業(yè)志愿人士組成的非營利協(xié)會,致力于數(shù)據(jù)管理的研究和實(shí)踐。

數(shù)據(jù)控制:在數(shù)據(jù)管理和使用層面之上進(jìn)行規(guī)劃、監(jiān)督和控制。
數(shù)據(jù)架構(gòu)管理:定義數(shù)據(jù)資產(chǎn)管理藍(lán)圖。
數(shù)據(jù)開發(fā):數(shù)據(jù)的分析、設(shè)計、實(shí)施、測試、部署、維護(hù)等工作。
數(shù)據(jù)操作管理:提供從數(shù)據(jù)獲取到清除的技術(shù)支持。
數(shù)據(jù)安全管理:確保隱私、保密性和適當(dāng)?shù)脑L問權(quán)限等。
數(shù)據(jù)質(zhì)量管理:定義、監(jiān)測和提高數(shù)據(jù)質(zhì)量。
參考數(shù)據(jù)和主數(shù)據(jù)管理:管理數(shù)據(jù)的黃金版本和副本。
數(shù)據(jù)倉庫和商務(wù)智能管理:實(shí)現(xiàn)報告和分析。
文件和內(nèi)容管理:管理數(shù)據(jù)庫以外的數(shù)據(jù)
元數(shù)據(jù)管理:元數(shù)據(jù)的整合、控制以及提供元數(shù)據(jù)。
數(shù)倉治理
節(jié)約機(jī)器資源(存在很多廢棄的邏輯和表,占用了大量的存儲資源和計算資源) 節(jié)約人力資源(降低了開發(fā)和維護(hù)的成本) 數(shù)據(jù)資產(chǎn)沉淀
這個是一個長期的工作,類似于代碼重構(gòu)
治理的分類
粗治理
臨時表的處理 無訪問信息的表(統(tǒng)一管理元數(shù)據(jù)和adhoc 以及調(diào)度) 無下游依賴的表(得有調(diào)度系統(tǒng))
細(xì)治理
專項(xiàng)性質(zhì)的治理方案,主要針對有人負(fù)責(zé)的項(xiàng)目
運(yùn)行時間長的任務(wù) 存儲空間空間過大的表
數(shù)據(jù)源治理
據(jù)源,顧名思義就是數(shù)據(jù)的來源,互聯(lián)網(wǎng)公司的數(shù)據(jù)來源隨著公司的規(guī)模擴(kuò)張而呈遞增趨勢,同時自不同的業(yè)務(wù)源,比如埋點(diǎn)采集,客戶上報等。
數(shù)據(jù)源管理
配置了大量的重復(fù)數(shù)據(jù)源
數(shù)據(jù)源監(jiān)控
可以監(jiān)控數(shù)據(jù)量和數(shù)據(jù)質(zhì)量
數(shù)據(jù)同步
數(shù)據(jù)同步是指不同數(shù)據(jù)存儲系統(tǒng)之間要進(jìn)行數(shù)據(jù)遷移,比如在hdfs上,大多業(yè)務(wù)和應(yīng)用因?yàn)樾实脑虿豢梢灾苯訌腍DFS上獲取數(shù)據(jù),因此需要將hdfs上匯總后的數(shù)據(jù)同步至其他的存儲系統(tǒng),比如mysql sqoop可以做到這一點(diǎn),但是Sqoop太過繁重,而且不管數(shù)據(jù)量大小,都需要啟動MapReduce來執(zhí)行,而且需要Hadoop集群的每臺機(jī)器都能訪問業(yè)務(wù)數(shù)據(jù)庫;阿里開源的dataX是一個很好的解決方案。
數(shù)倉模型治理
數(shù)據(jù)劃分及命名空間約定
表的命名就涉及到數(shù)據(jù)域的劃分,因?yàn)楸淼拿枰獙?shù)據(jù)域囊括進(jìn)去
根據(jù)業(yè)務(wù)劃分?jǐn)?shù)據(jù)并約定命名,建議針對業(yè)務(wù)名稱結(jié)合數(shù)據(jù)層次約定相關(guān)命名的英文縮寫,這樣可以給后續(xù)數(shù)據(jù)開發(fā)過程中,對項(xiàng)目空間、表、字段等命名做為重要參照。 按業(yè)務(wù)劃分:命名時按主要的業(yè)務(wù)劃分,以指導(dǎo)物理模型的劃分原則、命名原則及使用的ODS project。例如,按業(yè)務(wù)定義英文縮寫,阿里的“淘寶”英文縮寫可以定義為“tb”。 按數(shù)據(jù)域劃分:命名時按照CDM層的數(shù)據(jù)進(jìn)行數(shù)據(jù)域劃分,以便有效地對數(shù)據(jù)進(jìn)行管理,以及指導(dǎo)數(shù)據(jù)表的命名。例如,“交易”數(shù)據(jù)的英文縮寫可定義為“trd”。-** 按業(yè)務(wù)過程劃分**:當(dāng)一個數(shù)據(jù)域由多個業(yè)務(wù)過程組成時,命名時可以按業(yè)務(wù)流程劃分。業(yè)務(wù)過程是從數(shù)據(jù)分析角度看客觀存在的或者抽象的業(yè)務(wù)行為動作。例如,交易數(shù)據(jù)域中的“退款”這個業(yè)務(wù)過程的英文縮寫可約定命名為“rfd_ent”。 表命名規(guī)范需清晰、一致,表命名需易于下游的理解和使用 下線表的統(tǒng)一命名
常規(guī)表的命名
分層前綴[dwd|dws|ads|bi]_業(yè)務(wù)域_主題域_XXX_粒度 業(yè)務(wù)域、主題域我們都可以用詞根的方式枚舉清楚,不斷完善,粒度也是同樣的,主要的是時間粒度、日、月、年、周等,使用詞根定義好簡稱。
中間表
中間表一般出現(xiàn)在Job中,是Job中臨時存儲的中間數(shù)據(jù)的表,中間表的作用域只限于當(dāng)前Job執(zhí)行過程中,Job一旦執(zhí)行完成,該中間表的使命就完成了,是可以刪除的(按照自己公司的場景自由選擇,以前公司會保留幾天的中間表數(shù)據(jù),用來排查問題)。
統(tǒng)一指標(biāo)和字段命名
相同的字段在不同表中的字段名必須相同。 核心指標(biāo)要進(jìn)行邏輯收口以及在元數(shù)據(jù)上進(jìn)行維護(hù)
公共處理邏輯下沉及單一
底層公用的處理邏輯應(yīng)該在數(shù)據(jù)調(diào)度依賴的底層進(jìn)行封裝與實(shí)現(xiàn),不要讓公用的處理邏輯暴露給應(yīng)用層實(shí)現(xiàn),不要讓公共邏輯在多處同時存在。
核心模型與擴(kuò)展模型分離
建立核心模型與擴(kuò)展模型體系,核心模型包括的字段支持常用核心的業(yè)務(wù),擴(kuò)展模型包括的字段支持個性化或是少量應(yīng)用的需要。在必須讓核心模型與擴(kuò)展模型做關(guān)聯(lián)時,不能讓擴(kuò)展字段過度侵入核心模型,以免破壞了核心模型的架構(gòu)簡潔性與可維護(hù)性。
層次調(diào)用約定
應(yīng)用層應(yīng)優(yōu)先調(diào)用公共層數(shù)據(jù),必須存在中間層數(shù)據(jù),不允許應(yīng)用層跨過中間層從ODS層重復(fù)加工數(shù)據(jù)。 一方面,中間層團(tuán)隊(duì)?wèi)?yīng)該積極了解應(yīng)用層數(shù)據(jù)的建設(shè)需求,將公用的數(shù)據(jù)沉淀到公共層,為其他團(tuán)隊(duì)提供數(shù)據(jù)服務(wù) 另一方面,應(yīng)用層團(tuán)隊(duì)也應(yīng)積極配合中間層團(tuán)隊(duì)進(jìn)行持續(xù)的數(shù)據(jù)公共建設(shè)的改造。必須避免出現(xiàn)過度的引用ODS層、不合理的數(shù)據(jù)復(fù)制以及子集合冗余。
垃圾的數(shù)倉就會出現(xiàn)大量的跨層調(diào)用,所以可以通過跨層調(diào)用ods 表率來衡量數(shù)倉的建設(shè)
組合原則
將維度所描述業(yè)務(wù)相關(guān)性強(qiáng)的字段在一個物理維表實(shí)現(xiàn)。
相關(guān)性強(qiáng)是指經(jīng)常需要一起查詢或進(jìn)行報表展現(xiàn)、兩個維度屬性間是否存在天然的關(guān)系等。例如,商品基本屬性和所屬品牌。
數(shù)據(jù)拆分
對于維度屬性過多,涉及源較多的維度表(例如會員表),可以做適當(dāng)拆分
數(shù)據(jù)的水平和垂直拆分是按照訪問熱度分布和數(shù)據(jù)表非空數(shù)據(jù)值、零數(shù)據(jù)值在行列二維空間上分布情況進(jìn)行劃分的。
核心表
拆分為核心表和擴(kuò)展表。核心表相對字段較少,刷新產(chǎn)出時間較早,優(yōu)先使用。擴(kuò)展表字段較多,且可以冗余核心表部分字段,刷新產(chǎn)出時間較晚,適合數(shù)據(jù)分析人員使用。
數(shù)據(jù)冗余
數(shù)據(jù)記錄數(shù)較大的維度表(例如商品表),可以適當(dāng)冗余一些子集合,以減少下游掃描數(shù)據(jù)量
sql 規(guī)范
任務(wù)注釋
name: 任務(wù)名和表名保持一致 description:任務(wù)描述,該任務(wù)的主要內(nèi)容 target:目標(biāo)表名,一般一個任務(wù)只輸出一個目標(biāo)表 author:創(chuàng)建者,和創(chuàng)建日期, modify:內(nèi)容變更記錄,變更人,變更日期,變更原因 ,這個從版本控制中也可以找到,但是這些這里更直觀一些。
sql 模板
sql 的寫法,sql 結(jié)構(gòu)
數(shù)據(jù)服務(wù)治理
報表治理
接口治理
上下游約定
由于數(shù)倉的特性和定位,它就需要強(qiáng)依賴上游的業(yè)務(wù)系統(tǒng),當(dāng)然也會有一些下游系統(tǒng),所以定好上下游的規(guī)范,變更的通知機(jī)制是非常有必要的。
上游約定
對于數(shù)倉來說,最重要的就是數(shù)據(jù)了,數(shù)倉中的數(shù)據(jù),主要來源是業(yè)務(wù)系統(tǒng),就是公司各種業(yè)務(wù)數(shù)據(jù),所以數(shù)倉需要不斷的將業(yè)務(wù)系統(tǒng)數(shù)據(jù)同步到自身平臺來,所以一旦上游業(yè)務(wù)系統(tǒng)發(fā)生變化,數(shù)倉也要同步變化,不然,這種同步操作很可能失敗。
表結(jié)構(gòu)變更
上游的表結(jié)構(gòu)經(jīng)常會發(fā)生變化,新增字段、修改字段、刪除字段(除非真的不用這個字段了,通常會選擇標(biāo)識為棄用)。 表結(jié)構(gòu)最好要維護(hù)清楚,表名、字段名、字段類型、字段描述,都整理清楚,不使用的字段要么刪除,要么備注好,當(dāng)業(yè)務(wù)頻繁發(fā)生變化或者迭代優(yōu)化的時候,很容易出現(xiàn),我寫了半天的代碼,最后發(fā)現(xiàn)表用的不對,字段用的不對,這就尷尬了。 對于這種變化,人工處理的話,就是手動在數(shù)倉對應(yīng)的表中增加、修改字段,然后修改同步任務(wù);這個最好可以搞成自動化的,比如,自動監(jiān)控上游表結(jié)構(gòu)的變更,變化后,自動去修改數(shù)倉中的表結(jié)構(gòu),自動修改同步任務(wù)。
枚舉值
業(yè)務(wù)系統(tǒng)中會有很多的常量,用來標(biāo)識一些狀態(tài)或者類型,這種值經(jīng)常會新增,數(shù)倉中會對這些值做些處理,比如轉(zhuǎn)換成維度,會翻譯成對應(yīng)的中文,而實(shí)際上這種映射關(guān)系,我們是不知道的,只有業(yè)務(wù)開發(fā)才知道,所以最好可以讓他們維護(hù)一張枚舉值表,我們?nèi)ネ竭@張表。
create_time & update_time
正常來說,create_time,當(dāng)這條記錄插入后,就不會再變了,但是某種情況下,哈哈,開發(fā)同學(xué)會去更新它;update_time,當(dāng)這條記錄變化后,這個時間也要變,有的開發(fā)同學(xué)不去更新它 所以在做增量操作的時候,一定和開發(fā)說好這兩個字段的定義和使用場景。
is_delete & is_valid
有些場景下,我們需要刪除某些數(shù)據(jù),一般不會物理刪除,會通過一個字段來做邏輯刪除,請和開發(fā)同學(xué)溝通好,使用固定的一個字段,并確認(rèn)該字段雙方的理解是一致的,不然后面又很多坑
下游約定
對于數(shù)倉來說,一般的郵件、報表、可視化平臺都是下游,所以當(dāng)我們在數(shù)倉中進(jìn)行某些重構(gòu)、優(yōu)化操作的時候,也需要通知他們。 主要就是對數(shù)倉模型做好維護(hù),表的使用場景、字段描述等。對上游的要求,自己也要做好,因?yàn)樽约阂彩巧嫌巍?/section>
數(shù)倉評價(如何評價一個數(shù)據(jù)倉庫的好壞)

其實(shí)對整個數(shù)倉而言,我們關(guān)注的就三個點(diǎn),準(zhǔn)確性、時效性、穩(wěn)定性
面試官說這些都是一些原則,比較虛,有沒有可衡量的指標(biāo)?就是一個數(shù)據(jù)倉庫建好了,用這些指標(biāo)評價它好不好,有不好的要指出來,指導(dǎo)它改進(jìn)。
指標(biāo)項(xiàng)
失敗的離線任務(wù)個數(shù) 沒有按時完成的任務(wù)個數(shù) ODS 同步超時的任務(wù)個數(shù)
數(shù)據(jù)準(zhǔn)確性
對外的報表提供反饋機(jī)制,對數(shù)據(jù)準(zhǔn)確性進(jìn)行跟蹤 數(shù)檢平臺的整個平臺的數(shù)據(jù)準(zhǔn)確性進(jìn)行監(jiān)控(到后期能不能利用機(jī)器學(xué)習(xí)去監(jiān)控,否則你要定制大量的規(guī)則)
時效性
針對數(shù)倉的對外提供的數(shù)據(jù)能否滿足失效性的需求 監(jiān)控數(shù)倉任務(wù)的運(yùn)行時長進(jìn)行優(yōu)化 能否快速響應(yīng)業(yè)務(wù)的數(shù)據(jù)需求
覆蓋性
我們主要指的是對數(shù)據(jù)域的覆蓋情況
建構(gòu)層次清晰
縱向的數(shù)據(jù)分層,橫向的主題劃分,業(yè)務(wù)過程劃分,讓整個層次結(jié)構(gòu)清晰易理解
數(shù)據(jù)準(zhǔn)確一致
定義一致性指標(biāo)、統(tǒng)一命名規(guī)范、統(tǒng)一業(yè)務(wù)含義、統(tǒng)一計算口徑,專業(yè)的建模團(tuán)隊(duì)
性能指標(biāo)
通過統(tǒng)一的規(guī)劃設(shè)計,選用合理的數(shù)據(jù)模型,清晰統(tǒng)一的規(guī)范,并且考慮數(shù)據(jù)的使用場景,使得整體性能更好
需要持續(xù)不斷的業(yè)務(wù)邏輯重構(gòu),是整體的sql 水平上升,提倡優(yōu)化精神
成本指標(biāo)
避免煙囪式的重復(fù)建設(shè),節(jié)約計算、存儲、人力成本。
易用性指標(biāo)
復(fù)雜邏輯前置,降低業(yè)務(wù)方的使用門檻
通過冗余維度和事實(shí)表,進(jìn)行公共計算邏輯下沉,明細(xì)與匯總共存等為業(yè)務(wù)提供靈活性
需求響速度
數(shù)倉建設(shè)的好,底層設(shè)施完善,報表開發(fā)人員就可以快速響應(yīng)業(yè)務(wù)方的需求,跟上業(yè)務(wù)方快速試錯、快速嘗試的節(jié)奏
穩(wěn)定性
穩(wěn)定性影響了時效性,也就是決定了我們的數(shù)據(jù)能不能按時產(chǎn)出,衡量穩(wěn)定性的方式,我們可以使用三個9,或者四個9,甚至是用每天失敗的任務(wù)數(shù)除以總的任務(wù)數(shù),我們的主要目標(biāo)是得出一個相對合理的指標(biāo),從而不斷的去優(yōu)化它。
總結(jié)
數(shù)據(jù)治理和代碼重構(gòu)一樣,是一個慢活,但是它不能不做,因?yàn)閿?shù)據(jù)治理可以提高整個數(shù)倉的管理效率,從而更好的服務(wù)業(yè)務(wù) 數(shù)據(jù)治理需要一些數(shù)據(jù)去指導(dǎo),同理它的成果需要從數(shù)據(jù)方面去衡量,所以在整個過程中需要數(shù)據(jù)去證明它的價值與意義 數(shù)倉本身也需要自身的指標(biāo)去衡量,我們可以通過數(shù)據(jù)治理,使得數(shù)倉的指標(biāo)得到改善,這樣我們也可以證明數(shù)據(jù)治理的意義。
知識星球
其實(shí)知識星球我以前就建立了,當(dāng)時覺得自己沒有那么多的精力維護(hù),不能很好的幫助有需要的同學(xué)們,所以一直沒有開放。最近很多同學(xué)私聊我學(xué)習(xí)路線,個人精力也是有限,并不能及時解答所有同學(xué)的問題。
通過調(diào)查,大部分同學(xué)表示愿意加入知識星球,我也覺得這樣讓大家的提問更加有層次和意義,而不是問一些比較膚淺和不太合適的問題,有問題也能自己先查詢一下,這樣更好的交流和解答疑問,提升時間利用率。
這里生成了50張5折優(yōu)惠券,先到先得,領(lǐng)完為止(星球人數(shù)每增加50人,價格上漲10元)。
