取消
顯示的結果
而不是尋找
你的意思是:

FiscalYear開始時間是不正確的

JJ_LVS1
新的貢獻者三世

嗨,我想創建一個日曆維度包括一個財年財政的4月1日開始。我使用fiscalyear庫,設置開始4月但它堅持設置4月至7月。

12.1運行時

我的代碼snipet是:

start_date = ' 2016-01-01 ' end_date =日期(date.today ()。一年,12日31日)+ relativedelta = 5(年)fiscalyear.setup_fiscal_calendar (start_month = 4) df =火花。sql (f”選擇序列(TO_TIMESTAMP (“{start_date}”), TO_TIMESTAMP (“{end_date}”),間隔為1天)DATETIME”)。withColumn (DATETIME, F.explode (F.col (DATETIME))) #散裝的定義udf udf_f_y = udf(λ細胞:fiscalyear.FiscalDateTime(細胞。年,電池。月,CELL.day .fiscal_year) #財政DateTime對象f_y udf_f_m = udf(λ細胞:fiscalyear.FiscalDateTime(細胞。年,電池。月,CELL.day .fiscal_month) #財政DateTime對象f_m udf_f_m_str = udf(λ細胞:“M”+ str(細胞).zfill(2) 2 #使用zfill變成02和“M”附加到前麵udf_f_q = udf(λ細胞:fiscalyear.FiscalDateTime(細胞。年,電池。月,CELL.day .fiscal_quarter) #財政DateTime對象f_q udf_f_d = udf(λ細胞:fiscalyear.FiscalDateTime(細胞。年,電池。月,CELL.day .fiscal_day) #財政DateTime對象f_d # df = df財政列。withColumn (FISCAL_YEAR_INTEGER udf_f_y (F.col (DATETIME))) df = df。withColumn (FISCAL_QUARTER_INTEGER udf_f_q (F.col (DATETIME))) df = df。withColumn (FISCAL_MONTH_INTEGER udf_f_m (F.col (DATETIME))) df = df。withColumn (FISCAL_DAY_INTEGER udf_f_d (F.col (DATETIME))) df = df。withColumn (“FISCAL_YEAR_STRING”, F。concat_ws (“F。lit("FY"), F.col("FISCAL_YEAR_INTEGER").cast("STRING").substr(3, 4))) df = df.withColumn("FISCAL_QUARTER_STRING", F.concat_ws("_", F.col("FISCAL_YEAR_STRING"), F.concat_ws("", F.lit( "Q" ), F.col("FISCAL_QUARTER_INTEGER")) ) ) df = df.withColumn("FISCAL_MONTH_STRING", F.concat_ws("_", F.col("FISCAL_YEAR_STRING"), udf_f_m_str(F.col("FISCAL_MONTH_INTEGER"))))

不確定它與使用udf和λ細胞因為我手動測試用以下我正確地得到財政月4月1:

從pyspark.sql進口fiscalyear。函數從pyspark.sql進口坳。功能導入to_timestamp # # # #測試fiscalyear圖書館# # # # # #設置財政年度開始4月(4月)fiscalyear。START_MONTH = 4 # #創建FiscalDateTime對象代表df = fiscalyear日曆日期。FiscalDateTime(2023 4 1) #日曆日期轉換為一個財政年度fiscal_year = df。fiscal_year fiscal_month = df。fiscal_month打印(fiscal_year fiscal_month) 2024 1

誰能提供任何見解?謝謝你看。

3回複3

匿名
不適用

@Jason約翰遜:

似乎fiscalyear圖書館使用實際上是設置開始月7月(7月)而不是4月(4月)的目的。這或許是一個錯誤或圖書館的已知問題。

為了解決這一問題,您可以手動調整日期的月輸入補償偏移量。例如,你可以減去3月的平移回到4月開始日期:

start_date = ' 2016-01-01 ' start_date = f ' {start_date [5]} {int (start_date [7]) 3:02d} {start_date [7:]}’# start_date為現在“2016-04-01”

同樣,你可以減去3月的財政年度計算得到正確的財政月:

udf_f_m = udf(λ細胞:fiscalyear.FiscalDateTime(細胞。年,電池。月,CELL.day)。fiscal_month - 3)

這些調整,您的代碼應該正確地生成一個日曆維度財年4月開始。

JJ_LVS1
新的貢獻者三世

謝謝你的回複。不知道為什麼我沒有想到這樣做。我將添加這些變化,看結果如何。

Vidula_Khanna
主持人
主持人

嗨@Jason約翰遜

謝謝你發布你的問題在我們的社區!我們很高興幫助你。

幫助我們建立一個充滿活力和足智多謀的社區通過識別和突出的貢獻。馬克最好的答案和表達你的欣賞!

歡迎來到磚社區:讓學習、網絡和一起慶祝

加入我們的快速增長的數據專業人員和專家的80 k +社區成員,準備發現,幫助和合作而做出有意義的聯係。

點擊在這裏注冊今天,加入!

參與令人興奮的技術討論,加入一個組與你的同事和滿足我們的成員。

Baidu
map