Azure data factory Azure数据工厂的后端?

Azure data factory Azure数据工厂的后端?,azure-data-factory,azure-data-factory-2,Azure Data Factory,Azure Data Factory 2,当我们在Azure Data Factory中创建管道和发布时,许多信息都保存在内部。当我们创建管道并触发它们时,历史会保存在某个地方。具体在哪里以及如何访问它。我指的不是监视器页面,而是该页面从何处获取数据? 可能是我在文档中遗漏了它,无法找到它 谢谢 -Akshay您可以获得的所有信息都是ADF中为您显示的功能。这是内置功能 如果您确实想知道这些数据的确切位置,则需要持久化它们。请参阅本文件中的内容: 数据工厂只存储45天的管道运行数据。如果你想 使用Azure Monitor将管道运行数

当我们在Azure Data Factory中创建管道和发布时,许多信息都保存在内部。当我们创建管道并触发它们时,历史会保存在某个地方。具体在哪里以及如何访问它。我指的不是监视器页面,而是该页面从何处获取数据? 可能是我在文档中遗漏了它,无法找到它

谢谢
-Akshay

您可以获得的所有信息都是ADF中为您显示的功能。这是内置功能

如果您确实想知道这些数据的确切位置,则需要持久化它们。请参阅本文件中的内容:

数据工厂只存储45天的管道运行数据。如果你想 使用Azure Monitor将管道运行数据保持45天以上, 您不仅可以路由诊断日志进行分析,还可以持久化 将它们存储到存储帐户中,这样您就可以获得 您选择的持续时间


您可以将日志信息与诊断日志一起存储。请查看此日志或此第三方日志。

我们可以从Azure Data Factory活动日志中查看所有操作日志:

我不确定日志存储在哪里,但您可以使用PowerShell下载ADF日志

您可以使用从输出中看到的Id值运行cmdlet,并使用cmdlet的-DownloadLogsoption下载日志文件

例如:

 Save-AzureRmDataFactoryLog -ResourceGroupName "ADF" -DataFactoryName "LogProcessingFactory" -Id "841b77c9-d56c-48d1-99a3-8c16c3e77d39" -DownloadLogs -Output "C:\Test"

希望这有所帮助。

Azure Data Factory管道运行元数据存储在Azure Data Factory web服务器数据库中,可通过Azure SDK访问该数据库。例如,如果可以使用Python,则可以创建数据工厂Python客户端并提取管道运行/活动运行元数据。然后,您可以将响应metedata解析为数据帧并写入数据库表

可以使用以下功能来执行此操作

def adf_logging():
    # Azure subscription ID
    subscription_id = ''
    # Azure resource group
    rg_name = ''
    # The data factory name. It must be globally unique.
    df_name = ''
    credentials = ServicePrincipalCredentials(
                                client_id='',
                                secret='',
                                tenant='')
    # Create a data factory client.
    adf_client = DataFactoryManagementClient(credentials, subscription_id)
    filter_parameters = {"lastUpdatedAfter": "2019-08-06T00:36:44.3345758Z",
                         "lastUpdatedBefore": "2019-08-07T00:49:48.3686473Z"}
    # Extract last 24 hours pipeline run metadata.
    pipeline_runs = adf_client.pipeline_runs.query_by_factory(rg_name, df_name, filter_parameters)
    # Iterate and parse metadata, get log stats.
    cols = ['Pipeline_Name', 'Pipeline_Run_Id', 'Pipeline_Run_Status', 
            'Activity_Name', 'Activity_Start_Time', 'Activity_End_Time', 
            'Activity_Run_Status', 'Data_Read',
            'Data_Written', 'Rows_Read', 'Rows_Written', 'Copy_Duration', 
             'Error_Message']
    df_stats = pd.DataFrame(columns=cols)
    for i in pipeline_runs.as_dict()['value']:
        pipeline_name = i['pipeline_name']
        run_id = i['run_id']
        pipeline_run_status = i['status']
        activity_runs = list(adf_client.activity_runs.list_by_pipeline_run(
                                              rg_name, 
                                              df_name, run_id,                                                                 
                                              datetime.now() - timedelta(1),
                                              datetime.now() + timedelta(1)))
        # Parse activity run metadata.
        for activity_run in activity_runs:
            if re.match(r"Lookup_[A-Z]", activity_run.activity_name):
                pass
            elif re.match(r"If_[A-Z]", activity_run.activity_name):
                pass
            elif re.match(r"ForEach_[A-Z]", activity_run.activity_name):
                pass
            elif re.match(r"Success [A-Z]", activity_run.activity_name):
                pass
            else:
                activity_name = activity_run.activity_name
                start_time = activity_run.activity_run_start
                start_time = start_time.replace(tzinfo=None)
                end_time = activity_run.activity_run_end
                end_time = end_time.replace(tzinfo=None)
                activity_run_status = activity_run.status
                data_read = activity_run.output['dataRead'] / (1000*1000)
                data_write = activity_run.output['dataWritten'] / (1000*1000)
                rows_read = activity_run.output['rowsRead']
                rows_write = activity_run.output['rowsCopied']
                copy_duration = activity_run.output['copyDuration']
                error_message = activity_run.output['errors']

                data = {'Pipeline_Name': pipeline_name, 'Pipeline_Run_Id':run_id,
                        'Pipeline_Run_Status': pipeline_run_status,
                        'Activity_Name': activity_name, 
                        'Activity_Start_Time': start_time,
                        'Activity_End_Time': end_time, 
                        'Activity_Run_Status': activity_run_status,
                        'Data_Read': data_read, 'Data_Written': data_write,
                        'Rows_Read': rows_read, 'Rows_Written': rows_write,
                        'Copy_Duration': copy_duration, 
                        'Error_Message': error_message}

                df = pd.DataFrame([data])
                df_stats = df_stats.append(df)

谢谢它使用UI回答“我们如何访问”。“它存储在哪里”仍有疑问。@Akshay我不确定它存储在哪里,但我们可以通过powershell获取管道历史记录或日志。如果我的答案对你有帮助,你能考虑接受它作为答案吗。这可能对其他社区成员有益。谢谢。在有人找到答案之前,我想保留这个问题:)。我已经在MSDN上发布了这些信息。参考。我想你正在寻找这个:链接显示了一种方法,可以访问它45天,这是最大值(默认值)。但是,我正在搜索这些信息存储的位置。JSON、XML、SQL?您希望在管道运行历史记录中找到哪些数据?存储在何处。什么格式?Azure data monitor还可以将数据保存在某个地方或从某个地方获取数据。我正在寻找这些具体信息。感谢Jay提供了一些有关指标的信息,但是这些指标在本地(启用诊断之前)存储在哪里,以何种格式存储?JSON?