我們一直使用DQBSQL API來執行CRUD在查詢和警報。
這一過程增加了一個鬆弛頻道的一部分作為警報目的地使用警報發布/訂閱元素如下。
今天我得到一個410“走了”錯誤從API試圖添加一個訂閱。
我理解DQBSQL API是預覽,因此主題改變泵的注意,然而我們是一個蕭條的沉重的組織,它是非常有用的!
有誰知道解決方法?
ALERTS_API =域+ / api / 2.0 /預覽/ sql /警報的反應=請求。帖子(ALERTS_API +‘/’+ alertId + /訂閱,頭=頭,data = jsonPayload)
例外:錯誤警報訂閱添加:410;原因:走了
@Jeremy鹽:
410年的錯誤通常表明了資源你試圖訪問已不複存在。可能DQBSQL API消除了支持通過/訂閱元素添加訂閱警報。
一個方法你可以試著直接使用鬆弛API創建一個webhook然後配置webhook警報的目的地。您可以創建一個特定鬆弛webhook頻道,然後配置webhook URL作為警戒的目的地。這將允許你繼續接收警報在鬆弛即使DQBSQL API不再支持添加訂閱。
這裏有一個例子如何創建一個webhook鬆弛通道:
一旦webhook URL,您可以配置警報目的地使用DQBSQL API。你可以通過創建一個警告“Webhook”類型和設置的“目的地”字段Webhook URL。這裏有一個例子如何創建警報webhook目的地使用Python:
ALERTS_API =域+ / api / 2.0 /預覽/ sql /警報”alert_payload ={“名稱”:“我的警戒”,“描述”:“這是我的警告”,“查詢”:“SELECT * FROM my_table”、“類型”:“Webhook”,“目標”:“https://hooks.slack.com/services/XXXXXXX/YYYYYYY/ZZZZZZZ”,“條件”:{“閾值”:10}}=響應請求。帖子(ALERTS_API HEADER =頭,data = json.dumps (alert_payload))
取代webhook的“目的地”字段中創建URL鬆弛。注意,您需要包括鬆弛webhook URL“目的地”字段的字符串,在上麵的示例中所示。
@Jeremy鹽:
410年的錯誤通常表明了資源你試圖訪問已不複存在。可能DQBSQL API消除了支持通過/訂閱元素添加訂閱警報。
一個方法你可以試著直接使用鬆弛API創建一個webhook然後配置webhook警報的目的地。您可以創建一個特定鬆弛webhook頻道,然後配置webhook URL作為警戒的目的地。這將允許你繼續接收警報在鬆弛即使DQBSQL API不再支持添加訂閱。
這裏有一個例子如何創建一個webhook鬆弛通道:
一旦webhook URL,您可以配置警報目的地使用DQBSQL API。你可以通過創建一個警告“Webhook”類型和設置的“目的地”字段Webhook URL。這裏有一個例子如何創建警報webhook目的地使用Python:
ALERTS_API =域+ / api / 2.0 /預覽/ sql /警報”alert_payload ={“名稱”:“我的警戒”,“描述”:“這是我的警告”,“查詢”:“SELECT * FROM my_table”、“類型”:“Webhook”,“目標”:“https://hooks.slack.com/services/XXXXXXX/YYYYYYY/ZZZZZZZ”,“條件”:{“閾值”:10}}=響應請求。帖子(ALERTS_API HEADER =頭,data = json.dumps (alert_payload))
取代webhook的“目的地”字段中創建URL鬆弛。注意,您需要包括鬆弛webhook URL“目的地”字段的字符串,在上麵的示例中所示。
嗨@Suteja卡努裏人,@Vidula卡納
謝謝你的恢複解決方案。
建議的解決方案看起來很好,但由於諸多原因我和另一個選擇使用API的工作。這允許我保留我已經寫更多的自動化,簡化調度和添加其他基地的任務類型。
def create_acl () - > str:“”返回一個ACL是一個json字符串”“can_manage_list = CAN_MANAGE_USERS.split ACL (" ") = " user_id =火花。sql(“選擇current_user()作為用戶”).collect()[0](“用戶”)為用戶can_manage_list:如果用戶= = user_id:繼續如果acl = =”: acl = acl +”[{“user_name”:“用戶+ +”,“permission_level”:“CAN_MANAGE_RUN”}: acl = acl +, {“user_name”:“用戶+ +”,“permission_level”:“CAN_MANAGE_RUN”} ' acl = acl + '] '返回acl def create_alert_task_array(警告:(str) subscription_id: str) - > str:“”“創建一個任務列表,可以分配給工作在創建返回一個json字符串" " #在某種程度上我們可能需要添加在目的地的列表,並將它們添加所有WAREHOUSE_ID =[編輯]sql_tasks =”的警報警報:如果get_alert_id(警報)是沒有:jobs_logger。警告(f 'Could找不到alert_id。“{警報}”沒有被添加到工作”)繼續tmp = ' {“task_key”:“TASK_ +警告+”,‘+’“sql_task”:{‘+’“警告”:{‘+’“alert_id”:“' + get_alert_id(警報)+“”,‘+’“訂閱”:[‘+’{“destination_id”:“+ subscription_id +”}]‘+’},‘+’“warehouse_id”:“+ warehouse_id +”}}如果sql_tasks = =”: sql_tasks =其他tmp: sql_tasks = sql_tasks +”、“+ tmp返回sql_tasks def create_alert_job(名字:str alert_names: (str),安排:str, subscription_id: str):“”“創建一個工作”“”嚐試:嚐試:delete_job_by_name(名字)#可能沒有之前,將增加一個警告,除了異常e: jobs_logger.debug(“保持冷靜,堅持到底:可能沒有之前創建的工作。用戶將被警告,應該發現任何欺騙)最後:task_list = create_alert_task_array (alert_names subscription_id)如果安排! =”:schedule_clause =”“時間表”:{‘+’“quartz_cron_expression”:“+計劃+”,‘+’“timezone_id”:“UTC”,‘+’“pause_status”:“停頓”‘+’},“其他:schedule_clause = "身體= '{“名稱”:“+名字+”,‘+’“任務”:(' + task_list + '], ' + \ schedule_clause + \ '“格式”:“MULTI_TASK”,‘+’“access_control_list”: ' + create_acl() + \ '} ' # '“標簽”:{},' + \ jobs_logger.debug(身體)響應=請求。帖子(JOBS_API + /創建,data =身體,頭=頭)如果反應。status_code = = 200: jobs_logger.info (f“成功創建工作:{名稱}”):如果反應。status_code = = 403: jobs_logger。警告(f 'Authorisation已經失敗,檢查API牌”)jobs_logger.info (response.json())提高異常(f 'Error創建工作{名稱}:錯誤:{response.status_code};原因:{response.reason}”)除了異常e: jobs_logger.warning (“{e}”)