如何使用Azure Databricks將需求規劃從4.5小時加速到1小時以下
供應鏈分析的重要性
消費者購買行為的快速變化會對供應鏈計劃、庫存管理和業務結果產生重大影響。對消費者驅動需求的準確預測隻是優化盈利能力和其他業務成果的起點。快速調整整個分銷網絡的庫存對於確保供應滿足需求,同時最大限度地降低消費者的運輸成本至關重要。此外,消費者還會兌換季節性優惠、購買附加服務和訂閱服務,這些都會影響產品供應和物流計劃。
ButcherBox的供應鏈分析
ButcherBox麵臨著極其複雜的需求規劃,因為它試圖確保庫存有足夠的交貨時間,滿足高度可變的客戶訂單偏好,引導不可預測的客戶注冊和管理配送物流。它需要一個可預測的解決方案來應對這些挑戰,快速適應並與其他Azure數據資產緊密集成。
ButcherBox數據主管Jimmy Cooper表示:“盡管ButcherBox誕生於雲端,但我們所有的團隊都使用電子表格。“正因為如此,從報告發布的那一刻起,我們就在使用過時的數據。現在我們正在與Azure Databricks合作,這是一個非常不同的世界。”
ButcherBox如何簡化供應鏈分析
ButcherBox使用Azure磚以生成其需求計劃。當Azure數據工廠(ADF)觸發需求計劃運行時,Azure Databricks處理來自Azure數據湖、供應商數據和Hive緩存的供應鏈數據。新的輸出存儲在數據湖中,然後Azure Synapse更新需求計劃生產可視化。
ButcherBox利用Azure Databricks從供應商、內部數據源和曆史數據中攝取所有實時原始數據流。Azure Databricks將這些數據整理成商品、箱子和分發級別,供用戶查看來年的需求。然後,這些數據用於用戶留存建模,並推送到Azure Synapse進行曆史比較。
Apache Spark SQL在Azure Databricks被設計為兼容Apache蜂巢.ButcherBox使用Hive緩存CSV文件中的數據,然後在Azure Databricks中處理緩存的數據,使Demand Plan的計算時間從4.5小時縮短到1小時以內。這使得業務用戶每天早上都可以使用更新的需求計劃來輔助決策。這些數據流的攝入還創建了可信賴的數據集,供其他流程和活動使用。這些新工具和功能幫助ButcherBox快速了解並適應會員行為的變化,特別是在COVID-19大流行期間。
使用Azure Databricks創建您的第一個需求預測
要開始使用Azure Databricks進行需求預測,請下載這個筆記本樣本並將其導入Azure Databricks工作區。
步驟1:加載商店項目銷售數據
我們的訓練數據集是10個不同商店5年的交易數據。我們將定義一個模式,將數據讀入一個DataFrame,然後為後續查詢創建一個臨時視圖。
從pyspark.sql.types進口*#訓練數據集的結構train_schema = StructType([StructField (“日期”DateType ()),StructField (“存儲”IntegerType ()),StructField (“項目”IntegerType ()),StructField (“銷售”IntegerType ())])#將訓練文件讀入數據框架Train = spark.read.csv(' / FileStore /表/ demand_forecast /火車/ train.csv”,頭=真正的,模式= train_schema)#使dataframe可作為臨時視圖查詢train.createOrReplaceTempView (“火車”)
步驟2:檢查數據
在月份級別上聚合數據,我們可以觀察到一個可識別的年度季節性模式,它隨著時間的推移而增長。我們可以選擇重新構造查詢,以查找其他模式,例如每周季節性和總體銷售增長。
步驟3:組裝曆史數據集
從我們之前加載的數據中,我們可以通過查詢“train”臨時視圖來構建Pandas DataFrame,然後刪除任何缺失的值。
#查詢聚合數據到日期(ds)級別sql_statement =“‘選擇CAST(date as date) as ds,銷售額為y從火車WHERE store=1 AND item=1按ds排序“‘#在Pandas數據框架中組裝數據集history_pd = spark.sql(sql_statement).toPandas()#刪除任何丟失的記錄History_pd = History_pd .dropna()
步驟4:建立模型
基於對數據的探索,我們將根據觀察到的增長和季節模式設置模型參數。因此,我們選擇了線性增長模式,並啟用了每周和每年的季節性模式的評估。一旦我們的模型參數設置好了,我們就可以很容易地將模型與曆史數據進行匹配。
#設置模型參數模型=先知(interval_width =0.95,增長=“線性”,daily_seasonality =假,weekly_seasonality =真正的,yearly_seasonality =真正的,seasonality_mode =“乘法”)#擬合模型到曆史數據model.fit (history_pd)
第五步:使用訓練過的模型建立90天的預測
由於我們的模型經過訓練,我們可以用它來建立一個類似於ButcherBox在他們的需求計劃中使用的預測。這可以使用曆史數據快速完成,如下所示。
#定義一個數據集,包括曆史日期和最後可用日期後90天Future_pd = model.make_future_dataframe(時間=90,頻率=' d ',include_history =真正的)#預測數據集Forecast_pd = model.predict(future_pd)
顯示器(forecast_pd)
一旦我們預測了未來的數據集,我們就可以在我們的模型中以圖表的形式產生一般的和季節性的趨勢(如下所示)。
Trends_fig = model.plot_components(forecast_pd)顯示器(trends_fig)
通過加入我們了解更多Azure databrick事件馬上開始做這個三部分培訓係列.