本申請涉及代碼解析領域,特別涉及一種支持sas語言解析與執行的大數據分析方法、裝置及應用。
背景技術:
1、sas語言是一種用于統計分析和數據處理的編程語言,是由sas軟件研究所開發,在科研、金融、醫療衛生、政府等眾多領域廣泛應用。sas語言能夠高效地處理大規模數據集,進行數據清洗、轉換、合并等操作,例如,在處理海量的金融交易數據時,可以快速地篩選出特定時間段、特定交易類型的數據,并進行格式轉換和整合,為后續的分析提供準確的數據基礎;且涵蓋了各種統計分析方法,如描述性統計、回歸分析、聚類分析、因子分析等,以醫學研究為例,可用于分析患者的臨床數據,通過回歸分析探究疾病與各種因素(如年齡、性別、生活習慣等)之間的關系,為疾病的診斷和治療提供依據,因此在金融領域常被用于風險評估、投資組合分析和市場趨勢預測等場景,在醫療衛生領域常被用于疾病監測、臨床研究和醫療質量評估等場景。
2、sas語言在語法結構上包括用于數據輸入、處理和輸出的數據步(data?step)、提供各種統計分析和數據處理過程的過程步(proc?step)以及用于允許用戶定義和使用宏的宏語言,但是目前市面上僅有sas軟件可以兼容sas語言,導致sas語言的使用受到限制。
3、因此急需一種可對?sas?語言進行轉換執行并實現自由編譯?sas?語言的方案,以滿足海量數據分析的需求。
技術實現思路
1、本申請方案提供一種支持sas語言解析與執行的大數據分析方法、裝置及應用,以解決現有技術中?sas?語言無法被sas軟件以外的軟件兼容和自由編譯的問題,通過對sas語言的解析并結合sas語言實現了海量數據分析。
2、為實現以上目的,第一方面,本方案提供了一種支持sas語言解析與執行的大數據分析方法,包括以下步驟:
3、獲取待運行sas代碼,其中待運行sas代碼由sas語言表示;
4、識別待運行sas代碼中的關鍵詞段并根據關鍵詞段進行分詞處理得到分詞結果,其中針對分詞結果中的宏代碼字段,將mac字段存入系統mac庫中,自定義字段存入自定義mac庫中,其中針對分詞結果中的宏變量,將宏觀變量存入系統宏變量庫中,自定義的局部變量存入自定義宏變量庫中;
5、將分詞結果按照待運行sas代碼的代碼順序逐步放入預運行代碼池中,其中針對分詞結果中的宏代碼字段,從系統mac庫或自定義mac庫中獲取對應的代碼,其中針對分詞結果中的宏變量,從系統宏變量庫或者自定義宏變量庫中獲取變量值;
6、以分號對待運行代碼池中的代碼進行逐句切分得到單句代碼,分析每句代碼的含義以獲取運行方式,當識別到待運行代碼池中再次出現相同功能詞時,執行兩個相同功能詞之間的單句代碼組成的代碼段,并在執行完畢后清除已執行的代碼段;當識別到出現同功能詞對應的結束指令成對出現時,執行所有代碼段,并在執行完畢后清除已執行的代碼段。
7、第二方面,本方案提供了支持sas語言解析與執行的大數據分析平臺,以c++語言編譯進行代碼的執行,包括以下:
8、sas代碼獲取單元,用于獲取待運行sas代碼,其中待運行sas代碼由sas語言表示;
9、分詞單元,用于識別待運行sas代碼中的關鍵詞段并根據關鍵詞段進行分詞處理得到分詞結果,其中針對分詞結果中的宏代碼字段,將mac字段存入系統mac庫中,自定義字段存入自定義mac庫中,其中針對分詞結果中的宏變量,將宏觀變量存入系統宏變量庫中,自定義的局部變量存入自定義宏變量庫中;
10、宏代碼處理單元,用于將分詞結果按照待運行sas代碼的代碼順序逐步放入預運行代碼池中,其中針對分詞結果中的宏代碼字段,從系統mac庫或自定義mac庫中獲取對應的代碼,其中針對分詞結果中的宏變量,從系統宏變量庫或者自定義宏變量庫中獲取變量值;
11、執行單元,用于以分號對待運行代碼池中的代碼進行逐句切分得到單句代碼,分析每句代碼的含義以獲取運行方式,當識別到待運行代碼池中再次出現相同功能詞時,執行兩個相同功能詞之間的單句代碼組成的代碼段,并在執行完畢后清除已執行的代碼段;當識別到出現同功能詞對應的結束指令成對出現時,執行所有代碼段,并在執行完畢后清除已執行的代碼段。
12、第三方面,本方案提供了一種可讀存儲介質,所述可讀存儲介質中存儲有計算機程序,所述計算機程序包括用于控制過程以執行過程的程序代碼,所述過程包括第一方面提到的支持sas語言解析與執行的大數據分析方法。
13、區別于現有技術,本發明的主要貢獻和創新點如下:
14、本方案通過c++語言實現了對sas語言的解析和執行,填補了國內主流數據統計分析軟件在?sas?代碼編譯方面的空白,可在不依托于sas軟件的前提下實現sas的功能,為sas?代碼的應用和遷移提供了可能,打破了對特定?sas?軟件的依賴,拓展了?sas?代碼的使用場景。
15、與現有開源的數據統計分析軟件(如?python/r)相比,本申請的方案能夠有效減少內存占用,克服了硬件配置和代碼效率的部分限制,確保程序在處理海量數據時依然能夠流暢運行,顯著縮短數據處理耗時,提高運行效率,解決了在單機電腦上處理大數據集的技術難題,突破了普通開源統計分析軟件在處理大數據集時的限制(如單個數據集超過10g?時無法打開),可對超過常規大小的大數據集進行打開、編譯和計算操作,極大地拓展了單機數據處理能力。
16、本申請的一個或多個實施例的細節在以下附圖和描述中提出,以使本申請的其他特征、目的和優點更加簡明易懂。
1.一種支持sas語言解析與執行的大數據分析方法,其特征在于,包括以下步驟:
2.根據權利要求1所述的支持sas語言解析與執行的大數據分析方法,其特征在于,在獲取待運行sas代碼后創建臨時文件路徑、調用系統mac庫和系統宏變量庫以及創建自定義mac庫和自定義宏變量庫,系統mac庫中包括預先定義好的宏指令和函數,系統宏變量庫中存儲系統預定義的宏變量。
3.根據權利要求1所述的支持sas語言解析與執行的大數據分析方法,其特征在于,關鍵詞段包括功能詞和宏代碼字段,其中功能詞包括數據定義詞、運算邏輯詞、關鍵字、變量名、字符串以及數字,宏代碼字段以%開頭表示。
4.根據權利要求1所述的支持sas語言解析與執行的大數據分析方法,其特征在于,mac字段包括%macro、%if/%else、%substr和%do,針對于“%if/%else”,當進入宏%macro時,若首次定位到關鍵詞%if,則標記為a=0并逐詞存入詞庫臨時池,如果再次遇到%if,則標記為a+1;若定位到%else?%if時,則a不變;若定位到%else,則判斷a是否為0,當a>0時,則a-1并繼續逐詞存入詞庫臨時池,當a=0時,將詞庫臨時池的內容存入相應的自定義mac庫中macro對應的子macro中并清空詞庫臨時池;
5.根據權利要求1所述的支持sas語言解析與執行的大數據分析方法,其特征在于,自定義字段表示為“%macro?self_mac;...%mend”,當定位到自定義字段時,將?self_mac存入自定義mac庫中,如macro后在%mend之前出現另一個%macro,則需要將第二個macro存入?自定義mac庫的相應的子macro中,子macro中的宏變量需要存入自定義宏變量庫的子宏變量中。
6.根據權利要求1所述的支持sas語言解析與執行的大數據分析方法,其特征在于,識別到“%let?x?=()”,若%let?與=之間有一個分詞,則將=前的分詞與=后的宏變量值存入自定義宏變量庫中,若出現兩個以上分詞則返回報錯。
7.根據權利要求1所述的支持sas語言解析與執行的大數據分析方法,其特征在于,通過libname建立存放執行結果的數據庫同外部數據邏輯庫的鏈接,或者將存放執行結果的數據庫虛擬成外部數據邏輯庫。
8.一種支持sas語言解析與執行的大數據分析平臺,以c++語言編譯進行代碼的執行,其特征在于,包括以下:
9.根據權利要求8所述的支持sas語言解析與執行的大數據分析平臺,其特征在于,通過libname建立外部數據邏輯庫,將存放執行結果的數據庫和支持sas語言解析與執行的大數據分析平臺的一個外部數據邏輯庫關聯起來;或者,將存放執行結果的數據庫地址虛擬到支持sas語言解析與執行的大數據分析平臺中。
10.一種可讀存儲介質,其特征在于,所述可讀存儲介質中存儲有計算機程序,所述計算機程序包括用于控制過程以執行過程的程序代碼,所述過程包括根據權利要求1到7任一所述的支持sas語言解析與執行的大數據分析方法。