你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
该 MicrosoftSentinelProvider 类提供了一种与 Microsoft Sentinel 数据湖交互的方法,允许你执行列出数据库、读取表和保存数据等作。 此类旨在处理 Jupyter 笔记本中的 Spark 会话,并提供访问和作存储在 Microsoft Sentinel 数据湖中的数据的方法。
此类是模块的 sentinel.datalake 一部分,提供与 Data Lake 交互的方法。 若要使用此类,请导入它并使用会话创建类 spark 的实例。
from sentinel_lake.providers import MicrosoftSentinelProvider
data_provider = MicrosoftSentinelProvider(spark)
必须具有执行读取和写入数据等作所需的权限。 有关权限的详细信息,请参阅 Microsoft Sentinel data Lake 权限。
Methods
该 MicrosoftSentinelProvider 类提供了几种方法来与 Microsoft Sentinel data lake 进行交互。
下面列出的每个方法假定 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 data lake 中可用的数据库名称(工作区)列表。
list_tables
列出给定数据库中的所有表。
data_provider.list_tables([database_name],[database_id])
Parameters:
-
database_name(str,可选):要从中列出表的数据库(工作区)的名称。 如果未指定系统表数据库,则使用 IF。 -
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缀写入 Lake 层_SPRK_CL,也可以使用后缀写入分析层。
data_provider.save_as_table({DataFrame}, {table_name}, [database_name], [database_id], [write_options])
Parameters:
-
DataFrame(数据帧):要作为表写入的数据帧。 -
table_name(str):要创建或覆盖的表的名称。 -
database_name(str,可选):要在其中保存表的数据库(工作区)的名称。 默认为System tables。 -
database_id(STR,可选,仅分析层):如果工作区名称不唯一,分析层数据库的唯一标识符。 -
write_options(听写,可选):用于编写表格的选项。 支持的选项:- mode:appendoroverwrite(默认值:append) - partitionBy: 按示例划分的列列表: {'mode': 'append', 'partitionBy': ['date']}
Returns:
-
str:写入作的运行 ID。
Note
分区选项仅适用于 Data Lake 层中的系统表数据库(工作区)中的自定义表。 分析层中的表或数据湖层中系统表数据库以外的数据库中的表不受支持。
Examples:
在工作区的 Data Lake 层中 System tables 创建新的自定义表。
data_provider.save_as_table(dataframe, "CustomTable1_SPRK", "System tables")
追加到 Data Lake 层中系统表数据库(工作区)中的表。
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 Monitor 日志中的添加或删除表和列。
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")