{"id":181,"date":"2020-01-08T22:13:54","date_gmt":"2020-01-08T22:13:54","guid":{"rendered":"https:\/\/snowflake.pavlik.us\/?p=181"},"modified":"2025-04-26T01:00:40","modified_gmt":"2025-04-26T01:00:40","slug":"field-comparisons-using-snowflake","status":"publish","type":"post","link":"https:\/\/snowflake.pavlik.us\/index.php\/2020\/01\/08\/field-comparisons-using-snowflake\/","title":{"rendered":"Field Comparisons Using Snowflake"},"content":{"rendered":"\n<h4 class=\"wp-block-heading\">Use cases for bulk field comparisons<\/h4>\n\n\n\n<p>There are a lot of reasons why it may be necessary to compare the values of some but not all fields in two tables. In billing reconciliation, one table may contain raw line items, and another table may contain lines in billing statements. Another common reason would be to verify that fields are accurate after undergoing transformation from the source system to a table optimized for analytics. <\/p>\n\n\n\n<p>Obviously when moving and transforming data a lot can happen along the way. Probably the most common problem is missing rows, but there are any number of other problems: updates out of sync, data corruption, transformation logic errors, etc.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">How to compare fields across tables in Snowflake<\/h4>\n\n\n\n<p>Fortunately, Snowflake&#8217;s super-fast table joining provides a great way to check for missing rows or differences in key fields between the tables. Without getting into Venn diagrams with inner, outer, left, right, etc., suffice it to say we&#8217;re going to discuss what is perhaps the least used join: the <strong>full outer exclusive of inner join<\/strong>. I&#8217;ve seen this type of join called other names, but this is what it does:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"721\" src=\"https:\/\/snowflake.pavlik.us\/wp-content\/uploads\/2020\/01\/outer_join_excluding_middle.png\" alt=\"\" class=\"wp-image-530\" style=\"width:478px;height:auto\" srcset=\"https:\/\/snowflake.pavlik.us\/wp-content\/uploads\/2020\/01\/outer_join_excluding_middle.png 1024w, https:\/\/snowflake.pavlik.us\/wp-content\/uploads\/2020\/01\/outer_join_excluding_middle-300x211.png 300w, https:\/\/snowflake.pavlik.us\/wp-content\/uploads\/2020\/01\/outer_join_excluding_middle-768x541.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Think of it this way for the present use case: The excluded inner join excludes the rows with key fields that compare properly. In other words, if our reconciliation process on key fields between tables A and B is perfect, an inner join will return all rows. Turning that on its head, the inverse of an inner join (a full join exclusive of inner join) will return only the rows that have key field compare mismatches.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Snowflake performance for massive-scale field comparisons<\/h4>\n\n\n\n<p>The TPCH Orders tables used as a source has 150 million rows in it. Using this approach to compare four field values on 150 million rows, the equivalent of doing 600 million comparisons completed in ~12 seconds on an extra large cluster. This level of performance exceeds by orders of magnitude typical approaches such as using an ETL platform to perform comparisons and write a table of mismatched rows.<\/p>\n\n\n\n<p>We can see how this works in the following Snowflake worksheet:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\n-- Set the context\nuse warehouse TEST;\nuse database TEST;\ncreate or replace schema FIELD_COMPARE;\nuse schema FIELD_COMPARE;\n\n-- Note: This test goes more quickly and consumes the same number of credits by temporarily\n--       scaling the TEST warehouse to extra large. The test takes only a few minutes.\n--       Remember to set the warehouse to extra small when done with the table copies and query.\n--       The test will work on an extra small warehouse, but it will run slower and consume the\n--       same number of credits as running on an extra large and finishing quicker.\nalter warehouse TEST set warehouse_size = &#039;XLARGE&#039;;\n\n-- Get some test data, in this case 150 million rows from TPCH Orders\ncreate table A as select * from SNOWFLAKE_SAMPLE_DATA.TPCH_SF100.ORDERS;\ncreate table B as select * from SNOWFLAKE_SAMPLE_DATA.TPCH_SF100.ORDERS;\n\n-- Quick check to see if the copy looks right.\nselect * from A limit 10;\nselect * from B limit 10;\n\n-- We will now check to be sure the O_ORDERKEY, O_CUSTKEY, O_TOTALPRICE, and O_ORDERDATE fields\n-- compare properly between the two tables. The query result will be any comparison problems.\n-- Because we have copied table A and B from the same source, they should be identical. We expect\n-- That the result set will have zero rows. \nselect A.O_ORDERKEY      as A_ORDERKEY,\n       A.O_CUSTKEY       as A_CUSTKEY,\n       A.O_ORDERSTATUS   as A_ORDERSTATUS,\n       A.O_TOTALPRICE    as A_TOTALPRICE,\n       A.O_ORDERDATE     as A_ORDERDATE,\n       A.O_ORDERPRIORITY as A_ORDERPRIORITY,\n       A.O_CLERK         as A_CLERK,\n       A.O_SHIPPRIORITY  as A_SHIPPRIORITY,\n       A.O_COMMENT       as A_COMMENT,\n       B.O_ORDERKEY      as B_ORDERKEY,\n       B.O_CUSTKEY       as B_CUSTKEY,\n       B.O_ORDERSTATUS   as B_ORDERSTATUS,\n       B.O_TOTALPRICE    as B_TOTALPRICE,\n       B.O_ORDERDATE     as B_ORDERDATE,\n       B.O_ORDERPRIORITY as B_ORDERPRIORITY,\n       B.O_CLERK         as B_CLERK,\n       B.O_SHIPPRIORITY  as B_SHIPPRIORITY,\n       B.O_COMMENT       as B_COMMENT\nfrom A\nfull outer join B\non A.O_ORDERKEY   = B.O_ORDERKEY   and\n   A.O_CUSTKEY    = B.O_CUSTKEY    and\n   A.O_TOTALPRICE = B.O_TOTALPRICE and\n   A.O_ORDERDATE  = B.O_ORDERDATE \nwhere A.O_ORDERKEY   is null or \n      B.O_ORDERKEY   is null or\n      A.O_CUSTKEY    is null or\n      B.O_CUSTKEY    is null or\n      A.O_TOTALPRICE is null or\n      B.O_TOTALPRICE is null or\n      A.O_ORDERDATE  is null or\n      B.O_ORDERDATE  is null;\n\n-- Now we want to start changing some data to show comparison problems and the results. Here are some ways to do it.\n\n-- Get two random clerks\nselect * from B tablesample(2);\n\n-- Count the rows for these clerks - it should be about 3000 rows \nselect count(*) from B where O_CLERK = &#039;Clerk#000065876&#039; or O_CLERK = &#039;Clerk#000048376&#039;; \n\n-- Now we can force some comparison problems. Perform one or more of the following:\n-- NOTE: *** Do one or more of the following three changes or choose your own to force comparison problems. ***\n\n-- Force comparison problem 1: Change about 3000 rows to set the order price to zero.\nupdate B set O_TOTALPRICE = 0 where where O_CLERK = &#039;Clerk#000065876&#039; or O_CLERK = &#039;Clerk#000048376&#039;;\n\n-- Force comparison problem 2: Delete about 3000 rows.\ndelete from B where O_CLERK = &#039;Clerk#000065876&#039; or O_CLERK = &#039;Clerk#000048376&#039;;\n\n-- Force comparison problem 3: Insert a new row in only one table.\ninsert into B (O_ORDERKEY, O_CUSTKEY, O_ORDERSTATUS, O_TOTALPRICE, O_ORDERDATE) values (12345678, 12345678, &#039;O&#039;, 99.99, &#039;1999-12-31&#039;);\n\n-- Now run the same join above to see the results. You if you make any changes to the joined fields, you should see rows.\n-- INSERT of a row to table B will show up as ONE row, A side all NULL and B side with values.\n-- UPDATE of a row to table B will show up as TWO rows, one row A side with values and B side with all NULL, and one row the other way\n-- DELETE of a row in table B will show up as ONE row, values in the A side and B side all NULL \n\n-- Clean up:\ndrop table A;\ndrop table B;\ndrop schema FIELD_COMPARE;\nalter warehouse TEST set warehouse_size = &#039;XSMALL&#039;;\nalter warehouse TEST suspend;\n\n\n<\/pre><\/div>","protected":false},"excerpt":{"rendered":"<p>Use cases for bulk field comparisons There are a lot of reasons why it may be necessary to compare the values of some but not all fields in two tables. In billing reconciliation, one table may contain raw line items, and another table may contain lines in billing statements. Another common reason would be to [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[22,21,10],"class_list":["post-181","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-field-comparisons","tag-snowsql","tag-table-joins"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\r\n<title>Field Comparisons Using Snowflake - Snowflake in the Carolinas<\/title>\r\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\r\n<link rel=\"canonical\" href=\"https:\/\/snowflake.pavlik.us\/index.php\/2020\/01\/08\/field-comparisons-using-snowflake\/\" \/>\r\n<meta property=\"og:locale\" content=\"en_US\" \/>\r\n<meta property=\"og:type\" content=\"article\" \/>\r\n<meta property=\"og:title\" content=\"Field Comparisons Using Snowflake - Snowflake in the Carolinas\" \/>\r\n<meta property=\"og:description\" content=\"Use cases for bulk field comparisons There are a lot of reasons why it may be necessary to compare the values of some but not all fields in two tables. In billing reconciliation, one table may contain raw line items, and another table may contain lines in billing statements. Another common reason would be to [&hellip;]\" \/>\r\n<meta property=\"og:url\" content=\"https:\/\/snowflake.pavlik.us\/index.php\/2020\/01\/08\/field-comparisons-using-snowflake\/\" \/>\r\n<meta property=\"og:site_name\" content=\"Snowflake in the Carolinas\" \/>\r\n<meta property=\"article:published_time\" content=\"2020-01-08T22:13:54+00:00\" \/>\r\n<meta property=\"article:modified_time\" content=\"2025-04-26T01:00:40+00:00\" \/>\r\n<meta property=\"og:image\" content=\"https:\/\/snowflake.pavlik.us\/wp-content\/uploads\/2020\/01\/outer_join_excluding_middle.png\" \/>\r\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\r\n\t<meta property=\"og:image:height\" content=\"721\" \/>\r\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\r\n<meta name=\"author\" content=\"Greg Pavlik\" \/>\r\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\r\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Greg Pavlik\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\r\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/snowflake.pavlik.us\\\/index.php\\\/2020\\\/01\\\/08\\\/field-comparisons-using-snowflake\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/snowflake.pavlik.us\\\/index.php\\\/2020\\\/01\\\/08\\\/field-comparisons-using-snowflake\\\/\"},\"author\":{\"name\":\"Greg Pavlik\",\"@id\":\"https:\\\/\\\/snowflake.pavlik.us\\\/#\\\/schema\\\/person\\\/019455f4675665b6cf5edea31ec44d7b\"},\"headline\":\"Field Comparisons Using Snowflake\",\"datePublished\":\"2020-01-08T22:13:54+00:00\",\"dateModified\":\"2025-04-26T01:00:40+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/snowflake.pavlik.us\\\/index.php\\\/2020\\\/01\\\/08\\\/field-comparisons-using-snowflake\\\/\"},\"wordCount\":355,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/snowflake.pavlik.us\\\/index.php\\\/2020\\\/01\\\/08\\\/field-comparisons-using-snowflake\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/snowflake.pavlik.us\\\/wp-content\\\/uploads\\\/2020\\\/01\\\/outer_join_excluding_middle.png\",\"keywords\":[\"Field Comparisons\",\"SnowSQL\",\"Table Joins\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/snowflake.pavlik.us\\\/index.php\\\/2020\\\/01\\\/08\\\/field-comparisons-using-snowflake\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/snowflake.pavlik.us\\\/index.php\\\/2020\\\/01\\\/08\\\/field-comparisons-using-snowflake\\\/\",\"url\":\"https:\\\/\\\/snowflake.pavlik.us\\\/index.php\\\/2020\\\/01\\\/08\\\/field-comparisons-using-snowflake\\\/\",\"name\":\"Field Comparisons Using Snowflake - Snowflake in the Carolinas\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/snowflake.pavlik.us\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/snowflake.pavlik.us\\\/index.php\\\/2020\\\/01\\\/08\\\/field-comparisons-using-snowflake\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/snowflake.pavlik.us\\\/index.php\\\/2020\\\/01\\\/08\\\/field-comparisons-using-snowflake\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/snowflake.pavlik.us\\\/wp-content\\\/uploads\\\/2020\\\/01\\\/outer_join_excluding_middle.png\",\"datePublished\":\"2020-01-08T22:13:54+00:00\",\"dateModified\":\"2025-04-26T01:00:40+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/snowflake.pavlik.us\\\/#\\\/schema\\\/person\\\/019455f4675665b6cf5edea31ec44d7b\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/snowflake.pavlik.us\\\/index.php\\\/2020\\\/01\\\/08\\\/field-comparisons-using-snowflake\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/snowflake.pavlik.us\\\/index.php\\\/2020\\\/01\\\/08\\\/field-comparisons-using-snowflake\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/snowflake.pavlik.us\\\/index.php\\\/2020\\\/01\\\/08\\\/field-comparisons-using-snowflake\\\/#primaryimage\",\"url\":\"https:\\\/\\\/snowflake.pavlik.us\\\/wp-content\\\/uploads\\\/2020\\\/01\\\/outer_join_excluding_middle.png\",\"contentUrl\":\"https:\\\/\\\/snowflake.pavlik.us\\\/wp-content\\\/uploads\\\/2020\\\/01\\\/outer_join_excluding_middle.png\",\"width\":1024,\"height\":721},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/snowflake.pavlik.us\\\/index.php\\\/2020\\\/01\\\/08\\\/field-comparisons-using-snowflake\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/snowflake.pavlik.us\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Field Comparisons Using Snowflake\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/snowflake.pavlik.us\\\/#website\",\"url\":\"https:\\\/\\\/snowflake.pavlik.us\\\/\",\"name\":\"Snowflake in the Carolinas\",\"description\":\"Random thoughts on all things Snowflake in the Carolinas\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/snowflake.pavlik.us\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/snowflake.pavlik.us\\\/#\\\/schema\\\/person\\\/019455f4675665b6cf5edea31ec44d7b\",\"name\":\"Greg Pavlik\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d81df729eebf37a042922b17d4a4c834b1e0ccfa9fea1c2c78cb8e95c7e91701?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d81df729eebf37a042922b17d4a4c834b1e0ccfa9fea1c2c78cb8e95c7e91701?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d81df729eebf37a042922b17d4a4c834b1e0ccfa9fea1c2c78cb8e95c7e91701?s=96&d=mm&r=g\",\"caption\":\"Greg Pavlik\"},\"description\":\"Greg is a Senior Sales Engineer at Snowflake Computing, in the Raleigh-Durham area. He's been in data management and security for the twenty years.\"}]}<\/script>\r\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Field Comparisons Using Snowflake - Snowflake in the Carolinas","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/snowflake.pavlik.us\/index.php\/2020\/01\/08\/field-comparisons-using-snowflake\/","og_locale":"en_US","og_type":"article","og_title":"Field Comparisons Using Snowflake - Snowflake in the Carolinas","og_description":"Use cases for bulk field comparisons There are a lot of reasons why it may be necessary to compare the values of some but not all fields in two tables. In billing reconciliation, one table may contain raw line items, and another table may contain lines in billing statements. Another common reason would be to [&hellip;]","og_url":"https:\/\/snowflake.pavlik.us\/index.php\/2020\/01\/08\/field-comparisons-using-snowflake\/","og_site_name":"Snowflake in the Carolinas","article_published_time":"2020-01-08T22:13:54+00:00","article_modified_time":"2025-04-26T01:00:40+00:00","og_image":[{"width":1024,"height":721,"url":"https:\/\/snowflake.pavlik.us\/wp-content\/uploads\/2020\/01\/outer_join_excluding_middle.png","type":"image\/png"}],"author":"Greg Pavlik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Greg Pavlik","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/snowflake.pavlik.us\/index.php\/2020\/01\/08\/field-comparisons-using-snowflake\/#article","isPartOf":{"@id":"https:\/\/snowflake.pavlik.us\/index.php\/2020\/01\/08\/field-comparisons-using-snowflake\/"},"author":{"name":"Greg Pavlik","@id":"https:\/\/snowflake.pavlik.us\/#\/schema\/person\/019455f4675665b6cf5edea31ec44d7b"},"headline":"Field Comparisons Using Snowflake","datePublished":"2020-01-08T22:13:54+00:00","dateModified":"2025-04-26T01:00:40+00:00","mainEntityOfPage":{"@id":"https:\/\/snowflake.pavlik.us\/index.php\/2020\/01\/08\/field-comparisons-using-snowflake\/"},"wordCount":355,"commentCount":0,"image":{"@id":"https:\/\/snowflake.pavlik.us\/index.php\/2020\/01\/08\/field-comparisons-using-snowflake\/#primaryimage"},"thumbnailUrl":"https:\/\/snowflake.pavlik.us\/wp-content\/uploads\/2020\/01\/outer_join_excluding_middle.png","keywords":["Field Comparisons","SnowSQL","Table Joins"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/snowflake.pavlik.us\/index.php\/2020\/01\/08\/field-comparisons-using-snowflake\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/snowflake.pavlik.us\/index.php\/2020\/01\/08\/field-comparisons-using-snowflake\/","url":"https:\/\/snowflake.pavlik.us\/index.php\/2020\/01\/08\/field-comparisons-using-snowflake\/","name":"Field Comparisons Using Snowflake - Snowflake in the Carolinas","isPartOf":{"@id":"https:\/\/snowflake.pavlik.us\/#website"},"primaryImageOfPage":{"@id":"https:\/\/snowflake.pavlik.us\/index.php\/2020\/01\/08\/field-comparisons-using-snowflake\/#primaryimage"},"image":{"@id":"https:\/\/snowflake.pavlik.us\/index.php\/2020\/01\/08\/field-comparisons-using-snowflake\/#primaryimage"},"thumbnailUrl":"https:\/\/snowflake.pavlik.us\/wp-content\/uploads\/2020\/01\/outer_join_excluding_middle.png","datePublished":"2020-01-08T22:13:54+00:00","dateModified":"2025-04-26T01:00:40+00:00","author":{"@id":"https:\/\/snowflake.pavlik.us\/#\/schema\/person\/019455f4675665b6cf5edea31ec44d7b"},"breadcrumb":{"@id":"https:\/\/snowflake.pavlik.us\/index.php\/2020\/01\/08\/field-comparisons-using-snowflake\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/snowflake.pavlik.us\/index.php\/2020\/01\/08\/field-comparisons-using-snowflake\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/snowflake.pavlik.us\/index.php\/2020\/01\/08\/field-comparisons-using-snowflake\/#primaryimage","url":"https:\/\/snowflake.pavlik.us\/wp-content\/uploads\/2020\/01\/outer_join_excluding_middle.png","contentUrl":"https:\/\/snowflake.pavlik.us\/wp-content\/uploads\/2020\/01\/outer_join_excluding_middle.png","width":1024,"height":721},{"@type":"BreadcrumbList","@id":"https:\/\/snowflake.pavlik.us\/index.php\/2020\/01\/08\/field-comparisons-using-snowflake\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/snowflake.pavlik.us\/"},{"@type":"ListItem","position":2,"name":"Field Comparisons Using Snowflake"}]},{"@type":"WebSite","@id":"https:\/\/snowflake.pavlik.us\/#website","url":"https:\/\/snowflake.pavlik.us\/","name":"Snowflake in the Carolinas","description":"Random thoughts on all things Snowflake in the Carolinas","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/snowflake.pavlik.us\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/snowflake.pavlik.us\/#\/schema\/person\/019455f4675665b6cf5edea31ec44d7b","name":"Greg Pavlik","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/d81df729eebf37a042922b17d4a4c834b1e0ccfa9fea1c2c78cb8e95c7e91701?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/d81df729eebf37a042922b17d4a4c834b1e0ccfa9fea1c2c78cb8e95c7e91701?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d81df729eebf37a042922b17d4a4c834b1e0ccfa9fea1c2c78cb8e95c7e91701?s=96&d=mm&r=g","caption":"Greg Pavlik"},"description":"Greg is a Senior Sales Engineer at Snowflake Computing, in the Raleigh-Durham area. He's been in data management and security for the twenty years."}]}},"_links":{"self":[{"href":"https:\/\/snowflake.pavlik.us\/index.php\/wp-json\/wp\/v2\/posts\/181","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/snowflake.pavlik.us\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/snowflake.pavlik.us\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/snowflake.pavlik.us\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/snowflake.pavlik.us\/index.php\/wp-json\/wp\/v2\/comments?post=181"}],"version-history":[{"count":14,"href":"https:\/\/snowflake.pavlik.us\/index.php\/wp-json\/wp\/v2\/posts\/181\/revisions"}],"predecessor-version":[{"id":532,"href":"https:\/\/snowflake.pavlik.us\/index.php\/wp-json\/wp\/v2\/posts\/181\/revisions\/532"}],"wp:attachment":[{"href":"https:\/\/snowflake.pavlik.us\/index.php\/wp-json\/wp\/v2\/media?parent=181"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/snowflake.pavlik.us\/index.php\/wp-json\/wp\/v2\/categories?post=181"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/snowflake.pavlik.us\/index.php\/wp-json\/wp\/v2\/tags?post=181"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}