{"id":5700,"date":"2024-10-18T12:26:16","date_gmt":"2024-10-18T03:26:16","guid":{"rendered":"https:\/\/blog.since2020.jp\/?p=5700"},"modified":"2024-10-21T12:10:06","modified_gmt":"2024-10-21T03:10:06","slug":"snowflake-slack","status":"publish","type":"post","link":"https:\/\/since2020.jp\/media\/snowflake-slack\/","title":{"rendered":"Snowflake\u306e\u30b3\u30b9\u30c8\u3092Slack\u306b\u901a\u77e5\u3059\u308b\u65b9\u6cd5"},"content":{"rendered":"\n<p>Snowflake\u3092\u5229\u7528\u3059\u308b\u969b\u3001\u30b3\u30b9\u30c8\u7ba1\u7406\u306f\u975e\u5e38\u306b\u91cd\u8981\u3067\u3059\u3002\u6bce\u65e5\u306e\u4f7f\u7528\u91cf\u3084\u6708\u3054\u3068\u306e\u4f7f\u7528\u91cf\u3092\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u3067\u628a\u63e1\u3067\u304d\u308b\u3053\u3068\u3067\u3001\u4e88\u7b97\u5185\u3067\u306e\u9069\u5207\u306a\u30ea\u30bd\u30fc\u30b9\u7ba1\u7406\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002\u3053\u306e\u8a18\u4e8b\u3067\u306f\u3001Snowflake\u306e\u4f7f\u7528\u30b3\u30b9\u30c8\u3092\u81ea\u52d5\u7684\u306bSlack\u306b\u901a\u77e5\u3059\u308b\u65b9\u6cd5\u306b\u3064\u3044\u3066\u3001\u5177\u4f53\u7684\u306a\u5b9f\u88c5\u624b\u9806\u3092\u7d39\u4ecb\u3057\u307e\u3059\u3002Slack\u3068Snowflake\u306e\u9023\u643a\u306b\u3088\u308a\u3001\u65e5\u6b21\u30fb\u6708\u6b21\u306e\u30b3\u30b9\u30c8\u3092\u30c1\u30fc\u30e0\u5168\u4f53\u3067\u7d20\u65e9\u304f\u78ba\u8a8d\u3067\u304d\u3001\u4e88\u7b97\u8d85\u904e\u3092\u9632\u3050\u52b9\u679c\u304c\u671f\u5f85\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n<h2>\u306f\u3058\u3081\u306b<\/h2>\n<p><span style=\"font-family: arial, helvetica, sans-serif\">Snowflake\u3092\u5229\u7528\u3059\u308b\u969b\u3001\u30b3\u30b9\u30c8\u7ba1\u7406\u306f\u975e\u5e38\u306b\u91cd\u8981\u3067\u3059\u3002\u6bce\u65e5\u306e\u4f7f\u7528\u91cf\u3084\u6708\u3054\u3068\u306e\u4f7f\u7528\u91cf\u3092\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u3067\u628a\u63e1\u3067\u304d\u308b\u3053\u3068\u3067\u3001\u4e88\u7b97\u5185\u3067\u306e\u9069\u5207\u306a\u30ea\u30bd\u30fc\u30b9\u7ba1\u7406\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002\u3053\u306e\u8a18\u4e8b\u3067\u306f\u3001Snowflake\u306e\u4f7f\u7528\u30b3\u30b9\u30c8\u3092\u81ea\u52d5\u7684\u306bSlack\u306b\u901a\u77e5\u3059\u308b\u65b9\u6cd5\u306b\u3064\u3044\u3066\u3001\u5177\u4f53\u7684\u306a\u5b9f\u88c5\u624b\u9806\u3092\u7d39\u4ecb\u3057\u307e\u3059\u3002Slack\u3068Snowflake\u306e\u9023\u643a\u306b\u3088\u308a\u3001\u65e5\u6b21\u30fb\u6708\u6b21\u306e\u30b3\u30b9\u30c8\u3092\u30c1\u30fc\u30e0\u5168\u4f53\u3067\u7d20\u65e9\u304f\u78ba\u8a8d\u3067\u304d\u3001\u4e88\u7b97\u8d85\u904e\u3092\u9632\u3050\u52b9\u679c\u304c\u671f\u5f85\u3067\u304d\u307e\u3059\u3002<\/span><!-- notionvc: dfa95224-f7e3-49db-91c1-14177f478eea --><\/p>\n\n<h2>\u524d\u63d0\u6761\u4ef6<\/h2>\n<p><span style=\"font-family: arial, helvetica, sans-serif\">Slack\u3067Webhook URL\u3092\u4f5c\u6210\u3057\u3066\u304a\u304f\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002Slack\u306e\u8a2d\u5b9a\u753b\u9762\u304b\u3089Webhook URL\u3092\u53d6\u5f97\u3057\u3066\u304f\u3060\u3055\u3044\u3002<!-- notionvc: b07adbdf-c7f5-41ed-ba1b-d0cb9a7efddd --><\/span><\/p>\r\n<p><img decoding=\"async\" src=\"https:\/\/since2020.jp\/media\/wp-content\/uploads\/2024\/10\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2024-10-18-12.17.37.png\" alt=\"\" width=\"1598\" height=\"456\" class=\"alignnone size-full wp-image-5701\" srcset=\"https:\/\/since2020.jp\/media\/wp-content\/uploads\/2024\/10\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2024-10-18-12.17.37.png 1598w, https:\/\/since2020.jp\/media\/wp-content\/uploads\/2024\/10\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2024-10-18-12.17.37-300x86.png 300w, https:\/\/since2020.jp\/media\/wp-content\/uploads\/2024\/10\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2024-10-18-12.17.37-1024x292.png 1024w, https:\/\/since2020.jp\/media\/wp-content\/uploads\/2024\/10\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2024-10-18-12.17.37-768x219.png 768w, https:\/\/since2020.jp\/media\/wp-content\/uploads\/2024\/10\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2024-10-18-12.17.37-1536x438.png 1536w\" sizes=\"(max-width: 1598px) 100vw, 1598px\" \/><\/p>\r\n<p><span style=\"font-family: arial, helvetica, sans-serif\">Snowflake\u306e\u7ba1\u7406\u8005\u6a29\u9650\u304c\u5fc5\u8981\u3067\u3059\u3002<\/span><!-- notionvc: 72ae0b7f-4ac1-4bd4-b798-d4925be5566e --><\/p>\n\n<h2>\u624b\u9806<\/h2>\n<p><span style=\"font-family: arial, helvetica, sans-serif\"><strong>1.Slack Webhook URL\u306e\u79d8\u5bc6\u7ba1\u7406<\/strong> <\/span><\/p>\r\n<p><span style=\"font-family: arial, helvetica, sans-serif\">\u307e\u305a\u3001Webhook URL\u306e\u6a5f\u5bc6\u60c5\u5831\u3092Snowflake\u306eSecret\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306b\u4fdd\u5b58\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u30b3\u30fc\u30c9\u5185\u3067URL\u3092\u76f4\u63a5\u8a18\u8ff0\u3059\u308b\u3053\u3068\u306a\u304f\u5b89\u5168\u306bWebhook\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<\/span><\/p>\r\n<div class=\"hcb_wrap\">\r\n<pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>CREATE OR REPLACE SECRET slack_webhook_snowflake_cost\r\nTYPE = GENERIC_STRING\r\nSECRET_STRING = '';\r\n# \u4f8b: &lt;https:\/\/hooks.slack.com\/services\/&gt; \u306e\u5f8c\u3092 SECRET_STRING \u306b\u5165\u308c\u308b<\/code><\/pre>\r\n<\/div>\r\n<p><strong><span style=\"font-family: arial, helvetica, sans-serif\"><span data-token-index=\"0\" class=\"notion-enable-hover\">2.Webhook\u901a\u77e5\u30a4\u30f3\u30c6\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u306e\u4f5c\u6210<\/span> <\/span><\/strong><\/p>\r\n<p><span style=\"font-family: arial, helvetica, sans-serif\">Webhook\u901a\u77e5\u3092\u9001\u4fe1\u3059\u308b\u305f\u3081\u306eSnowflake\u901a\u77e5\u30a4\u30f3\u30c6\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/span><!-- notionvc: 5a6640d2-076f-4382-95ad-f46e402d5c23 --><\/p>\r\n<div class=\"hcb_wrap\">\r\n<pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>CREATE OR REPLACE NOTIFICATION INTEGRATION slack_webhook_snowflake_cost_str\r\nTYPE = WEBHOOK\r\nENABLED = TRUE\r\nWEBHOOK_URL = '&lt;https:\/\/hooks.slack.com\/services\/&gt;'\r\nWEBHOOK_SECRET = YOUR_SCHEMA.slack_webhook_snowflake_cost\r\nWEBHOOK_HEADERS = ('Content-type' = 'application\/json');\r\n<\/code><!-- notionvc: 35e7910d-edc7-4dd6-a12a-c5c1186deea0 --><\/pre>\r\n<\/div>\r\n<p><strong><span data-token-index=\"0\" class=\"notion-enable-hover\" style=\"font-family: arial, helvetica, sans-serif\">3.\u30b3\u30b9\u30c8\u30c7\u30fc\u30bf\u3092Slack\u306b\u9001\u4fe1\u3059\u308b <\/span><\/strong><\/p>\r\n<p><span style=\"font-family: arial, helvetica, sans-serif\">Snowflake\u306e\u4f7f\u7528\u91cf\u30c7\u30fc\u30bf\u3092Slack\u306b\u901a\u77e5\u3059\u308b\u30b9\u30c8\u30a2\u30c9\u30d7\u30ed\u30b7\u30fc\u30b8\u30e3\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002\u3053\u306e\u30d7\u30ed\u30b7\u30fc\u30b8\u30e3\u3067\u306f\u3001\u65e5\u6b21\u304a\u3088\u3073\u6708\u6b21\u306e\u4f7f\u7528\u6599\u91d1\u3092\u62bd\u51fa\u3057\u3001\u305d\u308c\u3092Slack\u306b\u9001\u4fe1\u3057\u307e\u3059\u3002<\/span><!-- notionvc: 26bbe1fd-a593-46fd-8e45-bd59ff07efba --><\/p>\r\n<div class=\"hcb_wrap\">\r\n<pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>CREATE OR REPLACE PROCEDURE notify_snowflake_cost()\r\nRETURNS STRING\r\nLANGUAGE SQL\r\nAS\r\n$$\r\nCALL system$send_snowflake_notification(\r\nsnowflake.notification.application_json(\r\nWITH usage_data AS (\r\nSELECT\r\naccount_name,\r\nROUND(SUM(usage_in_currency), 2) AS usage_in_currency,\r\nMIN(usage_date) AS usage_start_date\r\nFROM snowflake.organization_usage.usage_in_currency_daily\r\nWHERE usage_date = current_date()\r\nGROUP BY account_name\r\n),\r\nmonthly_usage_data AS (\r\nSELECT\r\naccount_name,\r\nROUND(SUM(usage_in_currency), 2) AS monthly_usage_in_currency\r\nFROM snowflake.organization_usage.usage_in_currency_daily\r\nWHERE EXTRACT(MONTH FROM usage_date) = EXTRACT(MONTH FROM current_date())\r\nAND EXTRACT(YEAR FROM usage_date) = EXTRACT(YEAR FROM current_date())\r\nGROUP BY account_name\r\n)\r\nSELECT\r\nOBJECT_CONSTRUCT(\r\n'channel', 'webhook_notifications_test',\r\n'text', 'snowflake organization usage',\r\n'attachments', ARRAY_CONSTRUCT(\r\nOBJECT_CONSTRUCT(\r\n'color', 'good',\r\n'fields', ARRAY_CONSTRUCT(\r\nOBJECT_CONSTRUCT(\r\n'title', '\u4e88\u7b97\u984d',\r\n'value', '50000.0 US\u30c9\u30eb'\r\n),\r\nOBJECT_CONSTRUCT(\r\n'title', '\u5229\u7528\u6599\u91d1\uff08\u672c\u65e5\uff09',\r\n'value', usage_in_currency || ' US\u30c9\u30eb'\r\n),\r\nOBJECT_CONSTRUCT(\r\n'title', '\u5229\u7528\u958b\u59cb\u65e5\u6642',\r\n'value', usage_start_date || 'T07:00:00Z'\r\n),\r\nOBJECT_CONSTRUCT(\r\n'title', '\u4eca\u6708\u306e\u5229\u7528\u6599\u91d1',\r\n'value', monthly_usage_in_currency || ' US\u30c9\u30eb'\r\n)\r\n)\r\n)\r\n)\r\n)::string\r\nFROM usage_data, monthly_usage_data\r\n),\r\nsnowflake.notification.integration('slack_webhook_snowflake_cost_str')\r\n);\r\n$$;\r\n\r\n#\u5b9f\u884c\u3092\u6bce\u65e5\u306b\u8a2d\u5b9a\u3059\u308b\r\nCREATE OR REPLAC TASK daily_snowflake_cost_notification\r\nWAREHOUSE = 'LOOKER_WH'\r\nSCHEDULE = 'USING CRON 0 10 * * * UTC' -- \u6bce\u65e5UTC\u306e\u5348\u524d10\u6642\u3001\u65e5\u672c\u6642\u9593\u306e\u5348\u5f8c19\u6642\r\nAS\r\nCALL notify_snowflake_cost();<\/code><\/pre>\r\n<\/div>\r\n<p><!-- notionvc: cb696923-96ab-47f3-89d6-71e182ace10f --><\/p>\n\n<h2>\u5b9f\u969b\u306e\u901a\u77e5\u4f8b<\/h2>\n<p><span style=\"font-family: arial, helvetica, sans-serif\">\u3053\u306e\u3088\u3046\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u5f62\u5f0f\u3082\u81ea\u7531\u306b\u5909\u66f4\u53ef\u80fd\u3067\u3059\u3002<\/span><\/p>\r\n<p><img decoding=\"async\" src=\"https:\/\/since2020.jp\/media\/wp-content\/uploads\/2024\/10\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2024-10-17-18.59.52.png\" alt=\"\" width=\"1360\" height=\"434\" class=\"alignnone size-full wp-image-5702\" srcset=\"https:\/\/since2020.jp\/media\/wp-content\/uploads\/2024\/10\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2024-10-17-18.59.52.png 1360w, https:\/\/since2020.jp\/media\/wp-content\/uploads\/2024\/10\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2024-10-17-18.59.52-300x96.png 300w, https:\/\/since2020.jp\/media\/wp-content\/uploads\/2024\/10\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2024-10-17-18.59.52-1024x327.png 1024w, https:\/\/since2020.jp\/media\/wp-content\/uploads\/2024\/10\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2024-10-17-18.59.52-768x245.png 768w\" sizes=\"(max-width: 1360px) 100vw, 1360px\" \/><\/p>\n\n<h2>\u307e\u3068\u3081<\/h2>\n<p><span style=\"font-family: arial, helvetica, sans-serif\">Snowflake\u306e\u30b3\u30b9\u30c8\u3092\u628a\u63e1\u3057\u3001Slack\u306b\u901a\u77e5\u3059\u308b\u3053\u3068\u3067\u3001\u52b9\u7387\u7684\u306a\u30b3\u30b9\u30c8\u7ba1\u7406\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002\u3053\u306e\u65b9\u6cd5\u3092\u4f7f\u3048\u3070\u3001\u7279\u5b9a\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3084\u7d44\u7e54\u5358\u4f4d\u3067\u65e5\u6b21\u30fb\u6708\u6b21\u306e\u4f7f\u7528\u72b6\u6cc1\u3092\u7c21\u5358\u306b\u78ba\u8a8d\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002\u307e\u305f\u3001Snowflake\u306e\u901a\u77e5\u6a5f\u80fd\u3068Webhook\u3092\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u4ed6\u306e\u30b7\u30b9\u30c6\u30e0\u3068\u306e\u9023\u643a\u3082\u30b9\u30e0\u30fc\u30ba\u306b\u884c\u3048\u307e\u3059\u3002<\/span><\/p>\r\n<p><span style=\"font-family: arial, helvetica, sans-serif\">\u3053\u306e\u624b\u6cd5\u306f\u3001\u30b3\u30b9\u30c8\u7ba1\u7406\u3060\u3051\u3067\u306a\u304f\u3001\u30ea\u30bd\u30fc\u30b9\u306e\u6700\u9069\u5316\u3084\u4e88\u7b97\u30aa\u30fc\u30d0\u30fc\u9632\u6b62\u306b\u3082\u5f79\u7acb\u3064\u305f\u3081\u3001\u305c\u3072\u5c0e\u5165\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002<\/span><\/p>\r\n<p><!-- notionvc: 8f88f13b-32d1-4f17-85f5-e990f7d10b27 --><\/p>","protected":false},"excerpt":{"rendered":"<p>Snowflake\u3092\u5229\u7528\u3059\u308b\u969b\u3001\u30b3\u30b9\u30c8\u7ba1\u7406\u306f\u975e\u5e38\u306b\u91cd\u8981\u3067\u3059\u3002\u6bce\u65e5\u306e\u4f7f\u7528\u91cf\u3084\u6708\u3054\u3068\u306e\u4f7f\u7528\u91cf\u3092\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u3067\u628a\u63e1\u3067\u304d\u308b\u3053\u3068\u3067\u3001\u4e88\u7b97\u5185\u3067\u306e\u9069\u5207\u306a\u30ea\u30bd\u30fc\u30b9\u7ba1\u7406\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002\u3053\u306e\u8a18\u4e8b\u3067\u306f\u3001Snowflake\u306e\u4f7f\u7528\u30b3\u30b9\u30c8\u3092\u81ea\u52d5\u7684 [&hellip;]<\/p>\n","protected":false},"author":87,"featured_media":5508,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"content-type":"","swell_btn_cv_data":"","footnotes":"","_wp_rev_ctl_limit":""},"categories":[1249],"tags":[218,216,148,757],"class_list":["post-5700","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-knowledge","tag-slack","tag-snowflake","tag-sql","tag-webhook"],"_links":{"self":[{"href":"https:\/\/since2020.jp\/media\/wp-json\/wp\/v2\/posts\/5700","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/since2020.jp\/media\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/since2020.jp\/media\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/since2020.jp\/media\/wp-json\/wp\/v2\/users\/87"}],"replies":[{"embeddable":true,"href":"https:\/\/since2020.jp\/media\/wp-json\/wp\/v2\/comments?post=5700"}],"version-history":[{"count":0,"href":"https:\/\/since2020.jp\/media\/wp-json\/wp\/v2\/posts\/5700\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/since2020.jp\/media\/wp-json\/wp\/v2\/media\/5508"}],"wp:attachment":[{"href":"https:\/\/since2020.jp\/media\/wp-json\/wp\/v2\/media?parent=5700"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/since2020.jp\/media\/wp-json\/wp\/v2\/categories?post=5700"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/since2020.jp\/media\/wp-json\/wp\/v2\/tags?post=5700"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}