如何在 Great_Expectations 中触发 Slack 通知作为验证操作

Posted

技术标签:

【中文标题】如何在 Great_Expectations 中触发 Slack 通知作为验证操作【英文标题】:How to trigger Slack notifications as a Validation Action in Great_Expectations 【发布时间】:2021-09-27 08:53:47 【问题描述】:

我在 Apache Spark 中使用 Databricks 和 Synapse 在 Apache Spark 中有以下 Great_Expectation

ge_df.expect_column_values_to_be_between('load_id', min_value=1000, max_value=1049). 

我已尝试向 Great_Expectation 添加松弛通知,如下所示:

ge_df.expect_column_values_to_be_between('load_id', min_value=1000, max_value=1049, slack_render = "text": (test information,['MY_SLACK_WEBHOOK'])

但是失败了

谁能告诉我哪里出错了?

我也尝试了以下方法,但对我来说有点太高级了:

if not validation_results["success"]:
    num_evaluated = validation_results["statistics"]["evaluated_expectations"]
    num_successful = validation_results["statistics"]["successful_expectations"]
    validation_results_text = json.dumps(
        [result.to_json_dict() for result in validation_results["results"]],
        sort_keys=True,
        indent=4,
    )
    slack_renderer = 
        "text": (
            f"⚠️ Dataset has failed expecations\n"
            f"*Successful Expectations*: `num_successful/num_evaluated`\n"
            f"*Results*: ```\nvalidation_results_text\n```"
        )
    

    response = requests.post(
        os.environ['SLACK_WEBHOOK'],
        data=json.dumps(slack_renderer),
        headers="Content-Type": "application/json",
    )

输入 slack_webhook 时出现错误

KeyError: 'https://hooks.slack.com/services/T1L0WSW9F/B028H2KKPU3/56EZfTdU1oIprsrxxx'
Traceback (most recent call last):

  File "/home/trusted-service-user/cluster-env/env/lib/python3.6/os.py", line 669, in __getitem__
    raise KeyError(key) from None

KeyError: 'https://hooks.slack.com/services/T1L0WSW9F/B028H2KKPU3/56EZfTdU1oIprsrxxx'

我相信问题出在这里:

response = requests.post(
        os.environ['https://hooks.slack.com/services/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'],
        data=json.dumps(slack_renderer),
        headers="Content-Type": "application/json",
    )

非常感谢任何帮助。

【问题讨论】:

我尝试导入以下模块from great_expectations.checkpoint.actions.validate.slack_renderer,但没有成功 【参考方案1】:

通过将 requests.post 更改为使其工作

response = requests.post(
    webhook_url, data=json.dumps(slack_renderer),
    headers='Content-Type': 'application/json',
    )

【讨论】:

以上是关于如何在 Great_Expectations 中触发 Slack 通知作为验证操作的主要内容,如果未能解决你的问题,请参考以下文章

当选中父级时,如何在Kendo TreeView中触发子节点的onCheck事件

在 Windows 10 中触控笔未触发 InkCanvas 事件

如何在 Xamarin UI 测试中触发 Android LongClick

如何在不丢失触摸事件的情况下冻结 UIScrollView 滚动

如何把leapmotion连到手机上

TF卡在各种设备上无法读取,初步判断可能是损坏了,但是想恢复内存数据,该如何操作?