適用於:SQL Server 2019 (15.x)
Important
MICROSOFT SQL Server 2019 巨量數據叢集已淘汰。 SQL Server 2019 巨量數據叢集的支援已於 2025 年 2 月 28 日結束。 如需詳細資訊,請參閱 Microsoft SQL Server 平臺上的公告部落格文章和巨量數據選項。
PROSE 程式代碼加速器會為您的數據整頓工作產生可讀取的 Python 程式代碼。 您可以在 Azure Data Studio 內的筆記本中工作時,將產生的程式代碼與手寫的程式代碼混合在一起。
本文提供如何使用程式代碼加速器的概觀。
Note
使用範例的程式合成,也稱為 PROSE,是使用 AI 產生人類可讀取程式代碼的Microsoft技術。 其方式是分析使用者的意圖和數據、產生數個候選程式,以及使用排名演算法挑選最佳程式。 若要深入瞭解 PROSE 技術,請流覽 PROSE 首頁。
程式碼加速器已安裝於 Azure Data Studio。 您可以像筆記本中的其他任何 Python 套件一樣匯入它。 依照慣例,我們會將其匯入為 cx for short。
import prose.codeaccelerator as cx
在目前的版本中,程式代碼加速器可以智慧地產生下列工作的 Python 程式代碼:
- 將數據文件讀取到 Pandas 或 Pyspark 數據框架。
- 修正數據框架中的數據類型。
- 尋找代表字串清單中的模式的正規表示式。
若要取得程式碼加速器方法的一般概觀,請參閱 檔。
將數據從檔案讀取至數據框架
讀取檔案到數據框架牽涉到查看檔案的內容,並判斷要傳遞至數據載入連結庫的正確參數。
根據檔案的複雜度,識別正確的參數可能需要數個反覆專案。
PROSE 程式代碼加速器藉由分析數據檔的結構並自動產生程式碼來載入檔案,來解決此問題。 一般而言,產生的程式代碼會正確剖析數據。 在少數情況下,您可能需要調整程序代碼以符合您的需求。
請考慮下列範例:
import prose.codeaccelerator as cx
# Call the ReadCsvBuilder builder to analyze the file content and generate code to load it
builder = cx.ReadCsvBuilder(r'C:/911.txt')
#Set target to pyspark if generating code to use pyspark library
#builder.Target = "pyspark"
#Get the code generated to fix the data types
builder.learn().code()
先前的程式代碼區塊會列印下列 Python 程式代碼,以讀取分隔的檔案。 請注意 PROSE 如何自動判斷需略過的行數,以及標題、引號字符、分隔符等的配置。
import pandas as pd
def read_file(file):
names = ["lat",
"lng",
"desc",
"zip",
"title"]
df = pd.read_csv(file,
skiprows = 11,
header = None,
names = names,
quotechar = "\"",
delimiter = "|",
index_col = False,
dtype = str,
na_values = [],
keep_default_na = False,
skipinitialspace = True)
return df
程式代碼加速器可以產生程式代碼,以將分隔符、JSON 和固定寬度檔案載入數據框架。 若要讀取固定寬度檔案, ReadFwfBuilder 可以選擇性地採用人類可讀取的架構檔案,以便剖析以取得數據行位置。 若要深入了解,請參閱文件。
修正數據框架中的數據類型
通常,pandas 或 pyspark 數據框中有錯誤的數據類型。 因為數據行中有一些不符合規範的值,因此會發生不正確的數據類型。 因此,整數會讀取為浮點數或字串,而日期會讀取為字串。 手動修正數據類型所需的工作,與數據行數目成正比。
您可以在這些情況下使用 DetectTypesBuilder 。 它會分析數據並產生程式代碼來修正數據類型。 程式代碼可作為起點。 您可以視需要檢閱、使用或修改。
import prose.codeaccelerator as cx
builder = cx.DetectTypesBuilder(df)
#Set target to pyspark if working with pyspark
#builder.Target = "pyspark"
#Get the code generated to fix the data types
builder.learn().code()
若要深入了解,請參閱文件。
識別字串中的模式
| Row | Name | BirthDate |
|---|---|---|
| 0 | 貝特拉姆杜普萊西斯 | 1995 |
| 1 | Naiara Moravcikova | Unknown |
| 2 | Jihoo Spel | 2014 |
| 3 | 維亞查斯勞·戈丹·希拉蕊奧 | 22-Apr-67 |
| 4 | Maya de Villiers | 19-Mar-60 |
根據數據量和數據中的多樣性,針對數據行中不同模式撰寫正則表示式可能非常耗時的工作。
FindPatternsBuilder是功能強大的程式代碼加速工具,可藉由產生字串清單的正則表示式來解決上述問題。
import prose.codeaccelerator as cx
builder = cx.FindPatternsBuilder(df['BirthDate'])
#Set target to pyspark if working with pyspark
#builder.Target = "pyspark"
builder.learn().regexes
以下是 針對上述數據所產生的 FindPatternsBuilder 正則表達式。
^[0-9]{2}-[A-Z][a-z]+-[0-9]{2}$
^[0-9]{2}[\s][A-Z][a-z]+[\s][0-9]{4}$
^[0-9]{4}$
^Unknown$
除了產生正則表達式之外, FindPatternsBuilder 也可以根據產生的 regex 來產生值叢集的程式代碼。 它也可以判斷數據行中的所有值都符合產生的正則表達式。 若要深入瞭解並查看其他有用的案例,請參閱 PROSE 程式代碼加速器 SDK Microsoft。