該 MicrosoftSentinelProvider 類提供了一種與 Microsoft Sentinel 數據湖交互的方法,允許您執行列出數據庫、讀取數據表和保存數據等操作。 這個類別的設計目的是要與 Jupyter 筆記本中的 Spark 工作階段搭配使用,並提供存取和操作儲存在 Microsoft Sentinel 資料湖中資料的方法。
這個類別是模組的一部分 sentinel.datalake ,提供與資料湖互動的方法。 若要使用此類別,請匯入它,並使用會話建立 spark 類別的實例。
from sentinel_lake.providers import MicrosoftSentinelProvider
data_provider = MicrosoftSentinelProvider(spark)
您必須具備必要的權限,才能執行讀取和寫入資料等作業。 如需許可權的詳細資訊,請參閱 Microsoft Sentinel 資料湖許可權。
Methods
此 MicrosoftSentinelProvider 類別提供數個方法來與 Microsoft Sentinel 資料湖互動。
下面列出的每個方法都 MicrosoftSentinelProvider 假設已匯入類別,並且已使用會話建立 spark 實例,如下所示:
from sentinel_lake.providers import MicrosoftSentinelProvider
data_provider = MicrosoftSentinelProvider(spark)
list_databases
列出所有可用的資料庫/Microsoft Sentinel 工作區。
data_provider.list_databases()
Returns:
-
list[str]:Microsoft Sentinel 資料湖中可用的資料庫名稱 (工作區) 清單。
list_tables
列出指定資料庫中的所有資料表。
data_provider.list_tables([database_name],[database_id])
Parameters:
-
database_name(str,選擇性):要從中列出資料表的資料庫 (工作區) 名稱。 如果未指定,則會使用系統表格資料庫。 -
database_id(str,選擇性):如果工作區名稱不是唯一的,則資料庫的唯一識別碼。
Returns:
-
list[str]:指定資料庫中的表格名稱清單。
Examples:
列出系統表資料庫中的所有表:
data_provider.list_tables()
列出特定資料庫中的所有資料表。 如果您的工作區名稱不是唯一的,請指定資料庫的 :database_id
data_provider.list_tables("workspace1", database_id="ab1111112222ab333333")
read_table
從 Lake 中的資料表載入 DataFrame。
data_provider.read_table({table}, [database_name], [database_id])
Parameters:
-
table_name(str):要讀取的表格名稱。 -
database_name(str,可選):包含資料表的資料庫(工作區)名稱。 預設為System tables。 -
database_id(str,選擇性):如果工作區名稱不是唯一的,則資料庫的唯一識別碼。
Returns:
-
DataFrame:包含指定資料表中資料的資料框。
Example:
df = data_provider.read_table("EntraGroups", "Workspace001")
save_as_table
將 DataFrame 寫入為受控資料表。 您可以使用資料表名稱中的尾碼寫 _SPRK 入湖層,或使用 _SPRK_CL 尾碼寫入分析層。
data_provider.save_as_table({DataFrame}, {table_name}, [database_name], [database_id], [write_options])
Parameters:
-
DataFrame(DataFrame):要寫入為表格的 DataFrame。 -
table_name(str):要建立或覆寫的資料表名稱。 -
database_name(str,可選):要儲存資料表的資料庫(工作區)名稱。 預設為System tables。 -
database_id(STR,可選,僅分析層級):如果工作區名稱不獨特,分析層級中資料庫的唯一識別碼。 -
write_options(dict,可選):寫入表格的選項。 支援的選項: - mode:append或overwrite(預設值:append) - partitionBy: 要分割的列清單範例: {'mode': 'append', 'partitionBy': ['date']}
Returns:
-
str:寫入作業的執行識別碼。
Note
分割選項僅適用於資料湖層中系統資料表資料庫 (工作區) 中的自訂資料表。 分析層中的資料表或資料湖層中系統資料表資料庫以外的資料庫中的資料表不支援它。
Examples:
在工作區的資料 System tables 湖層中建立新的自訂資料表。
data_provider.save_as_table(dataframe, "CustomTable1_SPRK", "System tables")
附加至資料湖層中系統資料表資料庫 (工作區) 中的資料表。
write_options = {
'mode': 'append'
}
data_provider.save_as_table(dataframe, "CustomTable1_SPRK", write_options=write_options)
在分析層中建立新的自訂資料表。
data_provider.save_as_table(dataframe, "CustomTable1_SPRK_CL", "analyticstierworkspace")
附加或覆寫至分析層中的現有自訂資料表。
write_options = {
'mode': 'append'
}
data_provider.save_as_table(dataframe, "CustomTable1_SPRK_CL", "analyticstierworkspace", write_options)
附加至系統資料表資料庫,並在資料行上 TimeGenerated 進行分割。
data_loader.save_as_table(dataframe, "table1", write_options: {'mode': 'append', 'partitionBy': ['TimeGenerated']})
delete_table
從湖層中刪除資料表。 您可以使用資料表名稱中的尾碼, _SPRK 從湖層刪除資料表。 您無法使用此函式從分析層刪除資料表。 若要刪除分析層中的自訂資料表,請使用 Log Analytics API 函式。 如需詳細資訊,請參閱 新增或刪除 Azure 監視器記錄中的資料表和資料行。
data_provider.delete_table({table_name}, [database_name], [database_id])
Parameters:
-
table_name(str):要刪除的表格名稱。 -
database_name(str,可選):包含資料表的資料庫(工作區)名稱。 預設為System tables。 -
database_id(str,選擇性):如果工作區名稱不是唯一的,則資料庫的唯一識別碼。
Returns:
-
dict:包含刪除作業結果的字典。
Example:
data_provider.delete_table("customtable_SPRK", "System tables")