{"templateName":"quickstart-page-template","allowedRenditionsWidth":["320","480","640","768","960","1200","1440","1920"],"cssClassNames":"page basicpage summit-page","description":"This is a guide to get familiar with Snowflake's support for unstructured data","language":"en","title":"Getting Started with Unstructured Data","analyticsPageType":"quickstart-page-template","analyticsCategory":"general","analyticsSubCategory":"","excludeFromAnalytics":false,":itemsOrder":["root"],":items":{"root":{"gridClassNames":"aem-Grid aem-Grid--12 aem-Grid--default--12","columnClassNames":{"markup_editor_1950346551":"aem-GridColumn aem-GridColumn--default--12","experiencefragment-banner":"aem-GridColumn aem-GridColumn--default--12","experiencefragment-header":"aem-GridColumn aem-GridColumn--default--12","responsivegrid":"aem-GridColumn aem-GridColumn--default--12","experiencefragment-footer":"aem-GridColumn aem-GridColumn--default--12","modal_container":"aem-GridColumn aem-GridColumn--default--12","markup_editor":"aem-GridColumn aem-GridColumn--default--12"},"columnCount":12,":itemsOrder":["experiencefragment-banner","experiencefragment-header","markup_editor_1950346551","responsivegrid","modal_container","experiencefragment-footer","markup_editor"],":items":{"experiencefragment-banner":{"id":"experiencefragment-a865810d71","localizedFragmentVariationPath":"/content/experience-fragments/snowflake-site/language-masters/en/site/pushdown-banner/master/jcr:content","configured":true,":itemsOrder":["root","image","cq:metadata"],":items":{"root":{"gridClassNames":"aem-Grid aem-Grid--12 aem-Grid--default--12","columnClassNames":{"pushdown_banner_copy":"aem-GridColumn aem-GridColumn--default--12"},"layout":"RESPONSIVE_GRID","columnCount":12,"id":"container-e65db264b9",":itemsOrder":["pushdown_banner_copy"],":items":{"pushdown_banner_copy":{"id":"pushdown-banner-633cc6b353","contentHeadline":"Snowflake World Tour hits your city","contentDescription":"See how leading teams deploy agents at scale. Find a stop near you. Register free.","contentJustifyContent":"center","linkStyle":"text-white","linkCTA":{"id":"link-cta","heapButtonClasses":["pushdown_banner"],"showOutboundIcon":false,"buttonLink":{"valid":true,"attributes":{"target":"_blank"},"url":"/en/world-tour/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Register now"},":type":"snowflake-site/components/pushdown-banner","appliedCssClassNames":"snowflake-pushdown-banner-text-white snowflake-pushdown-banner-background-black"}},":type":"snowflake-site/components/container"},"image":{":type":"nt:unstructured"},"cq:metadata":{":type":"nt:unstructured"}},":type":"snowflake-site/components/experiencefragment","classNames":"aem-xf"},"experiencefragment-header":{"id":"experiencefragment-f7ead92216","localizedFragmentVariationPath":"/content/experience-fragments/snowflake-site/language-masters/en/site/mega-nav-header/master/jcr:content","configured":true,":itemsOrder":["root","image","cq:targetMetadata"],":items":{"root":{"gridClassNames":"aem-Grid aem-Grid--12 aem-Grid--default--12","columnClassNames":{"mega_header":"aem-GridColumn aem-GridColumn--default--12","markup_editor":"aem-GridColumn aem-GridColumn--default--12"},"layout":"RESPONSIVE_GRID","columnCount":12,"id":"container-6d180f8911",":itemsOrder":["markup_editor","mega_header"],":items":{"markup_editor":{"id":"markup-editor-138cb02d28","title":" ","cssContent":".footer-nav__link-group .snowflake-button-container,.subnav__item--button,.snowflake-card-v2-advanced-button .snowflake-button-container{justify-content:flex-start}.mega-nav__sign-in.snowflake-button-container{display:none}@media screen and (min-width:768px){.mega-nav__sign-in.snowflake-button-container{display:inline-block;font-family:'Texta',sans-serif;font-weight:800 !important}}@media screen and (min-width:1024px) and (max-width:1199px){.snowflake-mega-nav-header-buttons-container .snowflake-button-blue .snowflake-button-container{font-size:13px !important}.snowflake-language-navigation .language-icon{width:18px !important;height:18px !important;margin-right:4px !important}}.mega-nav__sign-in svg{display:none}.nav-item__platform-parent-why-sf.snowflake-mega-nav-nav-item\u003Ea:hover,.nav-item__platform-parent.snowflake-mega-nav-nav-item\u003Ea:hover{background-color:transparent !important}.nav-platform-sidebar .snowflake-mega-nav-nav-item:hover.blue-icon .snowflake-mega-nav-nav-item-icon__inner{background-color:var(--ui-01) !important}@media screen and (min-width:1024px){.snowflake-mega-nav-navigation-dropdown{overflow:hidden}.meganav-platform-features{padding-left:64px}.meganav-platform-features::before{content:'';transform:translateX(-64px);display:block;z-index:0;width:100%;height:100%;position:absolute;top:0;background:#f7f9fa}.nav-item--si.snowflake-mega-nav-nav-item\u003Ea:hover{background-color:transparent}.nav-item--si{border-bottom:1px solid #ccc;padding-bottom:16px;margin-bottom:8px}.nav-item__platform-parent{border-bottom:1px solid #ccc;margin-bottom:8px;padding-bottom:16px}.nav-item__platform-parent-why-sf .snowflake-mega-nav-nav-item-description::after{content:'What Snowflake can do for you \u003E';display:block;color:var(--ui-01);margin-top:16px}.nav-item__platform-parent .snowflake-mega-nav-nav-item-description::after{content:'View the platform \u003E';display:block;color:var(--ui-01);margin-top:16px}}@media screen and (min-width:1367px){.snowflake-mega-nav-nav-item-description{font-size:13px !important;line-height:20px !important}.snowflake-mega-nav-nav-item-title-wrapper\u003E.snowflake-mega-nav-nav-item-title{font-size:17px !important}.nav-item__platform-parent-why-sf .snowflake-mega-nav-nav-item-title,.nav-item__platform-parent .snowflake-mega-nav-nav-item-title{font-size:24px !important;line-height:32px !important;margin-bottom:8px !important}.nav-item__platform-parent-why-sf .snowflake-mega-nav-nav-item-description,.nav-item__platform-parent .snowflake-mega-nav-nav-item-description{font-size:14px !important;line-height:20px !important}}html.wf-texta-n9-loading .display-1-v2{font-size:48px!important;line-height:50px!important;letter-spacing:-.5px!important;font-family:sans-serif!important}html.wf-texta-n9-loading .heading-4-v2{font-size:18px!important;line-height:24px!important;font-family:sans-serif!important}@media screen and (min-width:768px){html.wf-texta-n9-loading .display-2-v2{font-size:48px!important;line-height:50px!important;font-family:sans-serif!important}html.wf-texta-n9-loading .display-1-v2{font-size:55.5px!important;line-height:54px!important;letter-spacing:-.5px!important;font-family:sans-serif!important}html.wf-lato-n4-loading .body-2,html.wf-lato-n4-loading .heading-5-v2,html.wf-lato-n4-loading .snowflake-card-v2-advanced-text .snowflake-text p{font-size:15.5px!important;font-family:sans-serif!important}html.wf-texta-n9-loading .heading-2,html.wf-texta-n9-loading .heading-2-v2{font-size:34px!important;line-height:38px!important;letter-spacing:-.75px!important;font-family:sans-serif!important}html.wf-texta-n8-loading .heading-6-v2.snowflake-mega-nav-navigation-title{font-size:13.5px!important;font-family:sans-serif!important}html.wf-texta-n8-loading .heading-4,html.wf-texta-n8-loading .snowflake-button-container,html.wf-texta-n8-loading .snowflake-button-regular .snowflake-button-container{font-size:13px!important;line-height:20px!important;letter-spacing:.25px!important;font-family:sans-serif!important}}@media screen and (min-width:1024px){html.wf-lato-n4-loading .snowflake-mega-nav-nav-item-description{font-size:11.5px!important;font-family:sans-serif!important}html.wf-lato-n4-loading .body-2,html.wf-lato-n4-loading .text-size-regular .snowflake-text li,html.wf-lato-n4-loading .text-size-regular .snowflake-text p,html.wf-lato-n4-loading .text-size-regular .snowflake-text span[data-testid=text-content],html.wf-lato-n4-loading .text-size-regular.cq-Editable-dom li,html.wf-lato-n4-loading .text-size-regular.cq-Editable-dom p,html.wf-lato-n4-loading .text-size-regular.cq-Editable-dom span[data-testid=text-content]{font-size:13.5px!important;font-family:sans-serif!important}html.wf-texta-n8-loading .snowflake-button-compact .snowflake-button-container{font-size:12px!important;letter-spacing:0!important;line-height:18px!important}}@media screen and (min-width:1367px){html.wf-lato-n4-loading .hp-hero__eyebrow a\u003Eb:first-child{font-size:11px!important;font-family:sans-serif!important}html.wf-texta-n8-loading .hp-hero__eyebrow a{font-size:13px!important;font-family:sans-serif!important}html.wf-texta-n9-loading .display-2-v2{font-size:61px!important;line-height:60px!important;font-family:sans-serif!important}html.wf-texta-n9-loading .display-1-v2{font-size:74.5px!important;line-height:74px!important;letter-spacing:-.75px!important;font-family:sans-serif!important}html.wf-texta-n9-loading .heading-2,html.wf-texta-n9-loading .heading-2-v2{font-size:41px!important;letter-spacing:-.75px!important;font-family:sans-serif!important}html.wf-texta-n9-loading .heading-3-v2{font-family:sans-serif!important;letter-spacing:-.75px!important;font-size:33.75px!important}html.wf-texta-n9-loading .heading-4-v2{font-size:19.5px!important;line-height:26px!important;font-family:sans-serif!important}html.wf-texta-n8-loading .heading-6-v2{font-size:12px!important;font-family:sans-serif!important}html.wf-texta-n8-loading .heading-6-v2.snowflake-mega-nav-navigation-title{font-size:14px!important;font-family:sans-serif!important}html.wf-lato-n4-loading .body-1,html.wf-lato-n4-loading .cq-Editable-dom[data-cq-data-path*=text] ol\u003Eli,html.wf-lato-n4-loading .snowflake-text li,html.wf-lato-n4-loading .snowflake-text p,html.wf-lato-n4-loading .text-size-large .snowflake-text li,html.wf-lato-n4-loading .text-size-large .snowflake-text p,html.wf-lato-n4-loading .text-size-large .snowflake-text span[data-testid=text-content],html.wf-lato-n4-loading .text-size-large.cq-Editable-dom li,html.wf-lato-n4-loading .text-size-large.cq-Editable-dom p,html.wf-lato-n4-loading .text-size-large.cq-Editable-dom span[data-testid=text-content],html.wf-lato-n4-loading.cq-Editable-dom[data-cq-data-path*=text]\u003Ep,html.wf-lato-n4-loading.cq-Editable-dom[data-cq-data-path*=text]\u003Eul\u003Eli{font-size:17.5px!important;font-family:sans-serif!important}html.wf-lato-n4-loading .body-2,html.wf-lato-n4-loading .text-size-regular .snowflake-text li,html.wf-lato-n4-loading .text-size-regular .snowflake-text p,html.wf-lato-n4-loading .text-size-regular .snowflake-text span[data-testid=text-content],html.wf-lato-n4-loading .text-size-regular.cq-Editable-dom li,html.wf-lato-n4-loading .text-size-regular.cq-Editable-dom p,html.wf-lato-n4-loading .text-size-regular.cq-Editable-dom span[data-testid=text-content],html.wf-texta-n8-loading .snowflake-button-link .snowflake-button-container,html.wf-texta-n8-loading .snowflake-button-link-back .snowflake-button-container{font-size:15.5px!important;font-family:sans-serif!important}html.wf-lato-n4-loading .body-3,html.wf-lato-n4-loading .text-size-small .snowflake-text li,html.wf-lato-n4-loading .text-size-small .snowflake-text p,html.wf-lato-n4-loading .text-size-small .snowflake-text span[data-testid=text-content],html.wf-lato-n4-loading .text-size-small.cq-Editable-dom li,html.wf-lato-n4-loading .text-size-small.cq-Editable-dom p,html.wf-lato-n4-loading .text-size-small.cq-Editable-dom span[data-testid=text-content]{font-size:13.5px!important;font-family:sans-serif!important}}#industryPlatformSection,.sc-hero{background-position:top left;background-size:20% auto}.bwalignc,.bwalignr{list-style-position:inside}.snowflake-text p sup{font-size:10px}#industryPlatformSection .industry-platform__row .snowflake-flexible-column-container-items,.button-group-pair\u003E.container\u003E.cmp-container\u003E.aem-container,.snowflake-hero-system-content-container{gap:16px}.agenda-item p,.button-group-pair\u003E.container\u003E.cmp-container\u003E.aem-container\u003Ediv,.partner-details p{margin:0!important}.button-group-pair\u003E.container\u003E.cmp-container\u003E.aem-container::after,.button-group-pair\u003E.container\u003E.cmp-container\u003E.aem-container::before,.hide-logo .snowflake-case-study-card-logo,.partner-page__powered-by-logo,.sc-hero div.code-toolbar\u003E.toolbar,.snowflake-card-v2-advanced.no-link .snowflake-card-v2-advanced-button,.snowflake-partner-hero-card-badge-container{display:none!important}.section--card-mobile-carousel .snowflake-flexible-column-container-items-with-carousel{max-width:100%!important}@media screen and (min-width:768px){.button-group-pair .snowflake-button-container.inline-button--desktop,.button-group-pair\u003E.container\u003E.cmp-container\u003E.aem-container\u003Ediv{width:auto!important;display:inline-block!important}.button-group-pair\u003E.container\u003E.cmp-container\u003E.aem-container{align-items:center;justify-content:flex-start!important}.button-group-pair.center\u003E.container\u003E.cmp-container\u003E.aem-container{justify-content:center!important}.section--card-mobile-carousel{margin-left:var(--tablet-portrait-margin,48px)!important;margin-right:var(--tablet-portrait-margin,48px);width:calc(100% - 96px)!important;width:calc(100% - var(--tablet-portrait-margin) * 2)!important}}@media screen and (min-width:1024px){.section--card-mobile-carousel{margin-left:var(--tablet-horizontal-margin,48px)!important;margin-right:var(--tablet-horizontal-margin,48px);width:calc(100% - 96px)!important;width:calc(100% - var(--tablet-horizontal-margin) * 2)!important}.snowflake-mega-nav-header-mobile-icon{display:none!important}}@media screen and (min-width:1367px){.section--card-mobile-carousel{margin-left:var(--desktop-margin,6.5%)!important;margin-right:var(--desktop-margin,6.5%);width:87%!important;width:calc(100% - var(--desktop-margin) * 2)!important}.logo-container{min-width:143px}.sc-hero__headline .heading-1-v2{font-size:60px}.snowflake-mega-nav-navigation-title{font-size:17px}.snowflake-mega-nav-dropdown-footer-wrapper .snowflake-title-v2 .snowflake-title-v2-line:first-child{font-size:16px!important;line-height:24px!important}}.hero--home{overflow:hidden;background-color:var(--ui-01);z-index:2}.hp-hero__subheadline{width:90%}.hero--home .snowflake-button-container{transition:.3s}.hero--home .snowflake-button-primary a:hover,.hero--home .snowflake-button-secondary a:hover,.hero--home .snowflake-button-white a:hover{transition:.3s;background-color:var(--ui-02)!important;color:var(--ui-05)!important}.hero--home .snowflake-button-secondary a:hover{border-color:var(--ui-05)!important}.hero--home .snowflake-button-primary a:hover,.hero--home .snowflake-button-white a:hover{border-color:var(--ui-02)!important}.bwalignc,.hp-hero__eyebrow{text-align:center}.hp-hero__eyebrow a{display:inline-flex;flex-direction:column;justify-content:center;cursor:pointer;padding:8px;border-radius:var(--spacing-01);gap:8px;align-items:center;background-color:#45aee3;color:var(--ui-03);font-family:Texta,sans-serif;font-weight:800;font-size:16px;line-height:22px;transition:background-color .3s}.hp-hero__eyebrow a:hover{background-color:#7fc6ea;text-decoration:none;transition:background-color .3s}.hp-hero__eyebrow a\u003Eb:first-child{text-transform:uppercase;white-space:nowrap;display:inline-block;background-color:var(--ui-02);color:var(--ui-05);font-size:12px!important;line-height:16px!important;font-family:Lato,sans-serif;font-weight:500!important;padding:3px 6px;border-radius:2px;letter-spacing:1px}@media screen and (min-width:767px){.hp-hero__eyebrow{text-align:left}.hp-hero__eyebrow a{flex-direction:row;text-align:left}}.hero--home__inner .offset-video,.hero--home__inner .snowflake-experience-fragment,.offset-video__bg-image{max-height:200px;overflow:hidden}.hero--home__inner .offset-video .wistia-responsive-padding{padding-top:100%}.hero--home__inner .snowflake-experience-fragment,.offset-video__bg-image{position:absolute!important;top:0;left:0;width:100%}.offset-video__bg-image{z-index:-1}@media screen and (min-width:768px){.hero--home__inner .snowflake-experience-fragment,.offset-video,.offset-video__bg-image{position:absolute!important;max-height:none;top:0;left:0;width:250%;padding-bottom:250%;transform:translate(0,-50%);height:0}.workloads_7.unistore{max-width:317px}}.promo-banner--homepage{z-index:2}.homepage-banner-offset-container::after{content:\"\";display:block;position:absolute;bottom:0;z-index:1;left:0;width:100%;height:80%;background:#fff}.section--quicklinks .snowflake-button-full-width a{padding-left:24px!important;padding-right:24px!important;transition:box-shadow .25s cubic-bezier(.4,0,.2,1);text-align:left;display:flex;justify-content:center;align-items:center}.section--quicklinks .snowflake-button-full-width a:hover{box-shadow:0 16px 16px 0 rgb(0 0 0 / .16);transition:box-shadow .25s cubic-bezier(.4,0,.2,1)}.section--quicklinks .snowflake-button-container:focus-visible a::before,.section--quicklinks .snowflake-button-full-width a::before{content:\"\";width:23px;height:23px;flex-shrink:0;margin-right:12px;display:inline-block;background-size:cover;background-repeat:no-repeat;background-position:center}#industryPartnerSlider .snowflake-navigation-icon.swiper-button-disabled,#partnerResources .section--resource-hub a svg,.button-tabs span.snowflake-tabs-navigation-item:after,.customer-card--hide-cta .snowflake-case-study-card-button,.dot-tabs span.snowflake-tabs-navigation-item::after,.partner-sidebar__mobile-expand,html:not(.aem-AuthorLayer-initial):not(.aem-AuthorLayer-Edit) .tab-content:not(.is-active){display:none}.section--quicklinks .snowflake-button-full-width a.pricing::before{background-image:url(https://www.snowflake.com/content/dam/snowflake-site/general/icons/decorative-icons/pricing-icon.svg)}.section--quicklinks .snowflake-button-full-width a.snowflake_on_snowflake::before{background-image:url(https://www.snowflake.com/content/dam/snowflake-site/general/icons/navigation/nav-icon_snowflake-bug.svg)}.section--quicklinks .snowflake-button-full-width a.virtual_hands_on_labs::before{background-image:url(https://www.snowflake.com/content/dam/snowflake-site/general/icons/navigation/nav-icon__training.svg)}.section--quicklinks .snowflake-button-full-width a.weekly_demo::before{background-image:url(https://www.snowflake.com/content/dam/snowflake-site/general/icons/navigation/nav-icon__webinars.svg)}@media screen and (min-width:1024px){.hero--home__inner .snowflake-experience-fragment,.offset-video,.offset-video__bg-image{left:-50%}.section--quicklinks .snowflake-flexible-column-container-items{gap:24px}.snowflake-quote-item-inner{padding:32px 24px 24px!important}}#communitiesOuter_overflowBottomGray::after{max-height:100px}#caseStudyOuter_overflowBottomMidBlue::after{max-height:180px}#caseStudyInner .snowflake-case-study-card .snowflake-wistia-video{border-radius:0!important}#caseStudyInner .snowflake-case-study-card{box-shadow:none!important;border-radius:0}#caseStudyInner{max-width:1200px;margin:0 auto;box-shadow:rgb(152 162 179 / .1) 0 10px 20px 0,rgb(152 162 179 / .25) 0 2px 6px 0;border-radius:8px;overflow:hidden;position:relative;z-index:1}.case-study__logo-bar\u003E.snowflake-flexible-column-container-items{background:#f7f9fa;padding:32px 16px 40px}.case-study__logo-bar .cmp-image__image{width:90%;margin:0 auto;max-width:240px}.hp-platform__text-group\u003E.container\u003E.cmp-container\u003E.aem-container\u003Ediv:not(:first-child),.sc-sidebar__group .snowflake-button-link{margin-top:8px}.workloads_7.unistore{margin-left:auto;margin-right:auto}#homepageFootnotesInner .snowflake-simple-stat-disclaimer .snowflake-text p{color:#fff!important}.snowflake-simple-stat-disclaimer .snowflake-text p\u003Ea{border-bottom:1px solid var(--ui-03);color:var(--text-03)}.snowflake-card-v2-advanced{color:inherit}#workloadCardGridOuter .snowflake-card-v2-base-front{gap:0}.video-modal.snowflake-modal-window-open-inner{background-color:#fff0;padding:8px;border:none}.snowflake-container-arrow-dotted-faded .snowflake-container-arrow-dotted-faded-image{width:40%!important;max-width:420px;top:4%!important}.list--blue-bullets ul{margin:0!important;padding:0!important;list-style-type:none}.list--blue-bullets li{margin:0;padding:0 0 0 32px;position:relative}.list--blue-bullets li::before{content:\"\";display:block;border-radius:100%;background:#29b5e8;width:18px;height:18px;position:absolute;top:4px;left:0;border:5px solid #e5f2f7;box-sizing:border-box}.list--blue-bullets li:not(:last-child){margin-bottom:1rem}.logo-tabs .snowflake-navigation-container,.snowflake-simple-stat-content:empty,.summit-speaker-card .snowflake-card-v2-advanced-text{margin-bottom:0}#techResourceInner,#techResourceOuter,div.overflow-bottom--blue,div.overflow-bottom--gray,div.overflow-bottom--mid-blue,div.overflow-bottom--white,div.overflow-top--blue,div.overflow-top--gray,div.overflow-top--mid-blue,div.overflow-top--white,div[id$=overflowBottomGray],div[id$=overflowBottomMidBlue],div[id$=overflowTopBlue],div[id$=overflowTopGray]{position:relative}div.overflow-bottom--blue::after,div.overflow-bottom--gray::after,div.overflow-bottom--mid-blue::after,div.overflow-bottom--white::after,div.overflow-top--blue::after,div.overflow-top--gray::after,div.overflow-top--mid-blue::after,div.overflow-top--white::after,div[id$=overflowBottomGray]::after,div[id$=overflowBottomMidBlue]::after,div[id$=overflowBottomWhite]::after,div[id$=overflowTopBlue]::after,div[id$=overflowTopGray]::after,div[id$=overflowTopWhite]::after{content:\"\";display:block;position:absolute;left:0;width:100%;height:40%}div.overflow-top--blue::after,div.overflow-top--gray::after,div.overflow-top--mid-blue::after,div.overflow-top--white::after,div[id$=overflowTopBlue]::after,div[id$=overflowTopGray]::after,div[id$=overflowTopWhite]::after{top:0}div.overflow-bottom--blue::after,div.overflow-bottom--gray::after,div.overflow-bottom--mid-blue::after,div.overflow-bottom--white::after,div[id$=overflowBottomGray]::after,div[id$=overflowBottomMidBlue]::after,div[id$=overflowBottomWhite]::after{bottom:0}div.overflow-bottom--white::after,div.overflow-top--white::after,div[id$=overflowBottomWhite]::after,div[id$=overflowTopWhite]::after{background:#fff!important}div.overflow-bottom--gray::after,div.overflow-top--gray::after,div[id$=overflowBottomGray]::after,div[id$=overflowTopGray]::after{background:#f6f9fa!important}div.overflow-bottom--mid-blue::after,div.overflow-top--mid-blue::after,div[id$=overflowBottomMidBlue]::after,div[id$=overflowTopMidBlue]::after{background:#11567f!important}div.overflow-bottom--blue::after,div.overflow-top--blue::after,div[id$=overflowBottomBlue]::after,div[id$=overflowTopBlue]::after{background:#259edc!important}.snowflake-premium-content-banner.promo-banner--no-shadow{box-shadow:none!important}#industryPartnerSlider .cmp-image__image,#industryPartnerSlider .section--partner-tabs .snowflake-image-container .cmp-image__image,#partnerSidebar,.has-shadow .cmp-image__image{box-shadow:0 10px 20px 0 rgb(152 162 179 / .1),0 2px 6px 0 rgb(152 162 179 / .25)}.content-chip--has-desc{align-items:flex-start;padding:20px!important}.content-chip--has-desc .snowflake-content-chip-image{max-width:100px}.content-chip--has-desc .snowflake-content-chip-image__image{aspect-ratio:1}.content-chip--has-desc .snowflake-title-v2-line:first-child{font-size:18px!important}.content-chip--has-desc .snowflake-title-v2-line:nth-child(2){color:#000!important;font-weight:500!important;font-size:16px!important;line-height:22px!important;margin-top:2px!important}.content-chip--has-desc .snowflake-content-chip-button{margin-top:6px!important;font-size:18px!important;display:none}.square-image .snowflake-content-chip-image{aspect-ratio:1;max-width:120px}.section--logo-bar.smaller-logos .snowflake-image-container .cmp-image__image{max-width:200px;margin:0 auto}.snowflake-card-v2-advanced-tag,.snowflake-content-chip-tag{padding:3px 6px!important}.sc-overview__webinar-promo-banner .snowflake-content-chip-button,.snowflake-card-v2-advanced-title:first-child,.summit-pricing-block__aside ul{margin-top:0}.dot-tabs .snowflake-navigation-container .snowflake-tabs-navigation-item{width:40px;height:40px;display:flex;justify-content:center;align-items:center;margin:0!important}.dot-tabs .snowflake-navigation-container .snowflake-tabs-navigation-item p{width:12px;height:12px;background:var(--ui-12);border-radius:100%}.dot-tabs .snowflake-navigation-container .snowflake-tabs-navigation-item p,.logo-tabs .snowflake-navigation-container .snowflake-tabs-navigation-item p{font-size:0!important}.dot-tabs .snowflake-navigation-container .snowflake-tabs-navigation-item.active p{background:var(--ui-01)}.button-tabs .snowflake-navigation-container .swiper-wrapper{padding:8px 0}.button-tabs .snowflake-navigation-container .swiper-slide{margin:0 6px}.button-tabs .snowflake-navigation-container .snowflake-tabs-navigation-item{padding:8px 24px;background-color:#f6f9fa;border-radius:48px;margin:0}.button-tabs .snowflake-navigation-container .snowflake-tabs-navigation-item p{text-transform:uppercase;font-family:Texta,sans-serif;font-weight:700}.button-tabs .border-top{border-top:1px solid #ccc}.button-tabs .snowflake-navigation-container .snowflake-tabs-navigation-item.active{background-color:var(--ui-01);box-shadow:0 2px 6px 0 rgb(152 162 179 / .25),0 10px 20px 0 rgb(152 162 179 / .1)}.button-tabs .snowflake-navigation-container .snowflake-tabs-navigation-item.active p{color:#fff}.button-tabs.has-icons .snowflake-navigation-container .snowflake-tabs-navigation-item p::before{content:\"\";display:inline-block;width:20px;height:20px;background-size:contain;background-repeat:no-repeat;background-position:center center;margin-right:12px;vertical-align:middle;margin-top:-3px}.logo-tabs .snowflake-navigation-container .snowflake-tabs-navigation-item{width:220px;padding-bottom:50%;height:0;margin:0 8px!important;background-size:cover;background-repeat:no-repeat;opacity:.5;transition:opacity .3s}.logo-tabs .snowflake-navigation-container .snowflake-tabs-navigation-item:hover{opacity:.75;transition:opacity .3s}.logo-tabs .snowflake-navigation-container .snowflake-tabs-navigation-item.active{opacity:1;transition:opacity .3s}.dot-tabs .aem-container.cmp-tabs,.logo-tabs .aem-container.cmp-tabs{display:flex;flex-direction:column-reverse}.snowflake-icon.is-center{margin:0 auto;display:block}#industryPartnerSlider .snowflake-flexible-column-container-items,#partnerLogoSquare .snowflake-flexible-column-container-items{gap:24px}#techResourceOuter::after{content:\"\";display:block;position:absolute;top:0;left:0;width:100%;height:40%;background:#f6f9fa}#techResourceInner{z-index:1}.partner-tier-tag h6{display:inline-block!important;padding:2px 6px;border-radius:2px;color:#666}.partner-tier-tag.registered h6{background-color:#f6f9fa}.partner-tier-tag.elite h6{background-color:#11567f;color:#fff}.partner-tier-tag.premier h6{background-color:#b14c77;color:#fff}.partner-tier-tag.select h6{background-color:#5094a0;color:#fff}.partner-details\u003Espan{display:flex;gap:24px}.partner-details a{color:inherit!important;font-weight:400!important}.partner-details p::before{content:\"\";display:inline-block;vertical-align:middle;width:16px;height:16px;background-repeat:no-repeat;background-position:center;transform:translateY(-1px);background-size:auto 90%;margin-right:6px}.partner-details__location::before{background-image:url(\"data:image/svg+xml,%3Csvg width='13' height='18' viewBox='0 0 13 18' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M6.25 17.7531C6.4375 17.7531 6.6 17.6844 6.7375 17.5531C6.875 17.4219 6.95 17.2531 6.95 17.0531C6.95 16.8531 7.075 16.4281 7.3 15.7969C7.5875 15.0281 7.925 14.3156 8.30625 13.6406C8.8 12.7781 9.3125 12.1031 9.85 11.6094C10.75 10.7969 11.4125 9.96563 11.85 9.12188C12.2875 8.27813 12.5063 7.40313 12.5063 6.49063C12.5063 5.36563 12.2187 4.31563 11.6437 3.33438C11.0937 2.40313 10.3438 1.65938 9.4 1.10938C8.43125 .534376 7.375 .246876 6.24375 .246876C5.1125 .246876 4.06875 .534376 3.0875 1.10938C2.15625 1.65938 1.4125 2.40313 .862498 3.33438C.287498 4.31563 0 5.36563 0 6.49063C0 7.47188 .262499 8.42813 .787499 9.35938C1.14375 10.0031 1.65625 10.6656 2.3125 11.3344C2.75625 11.8031 3.24375 12.4781 3.78125 13.3656C4.225 14.0969 4.63125 14.8594 5 15.6656C5.35 16.3844 5.53125 16.8531 5.55625 17.0656C5.55625 17.2594 5.625 17.4156 5.7625 17.5531C5.9 17.6844 6.0625 17.7531 6.25 17.7531ZM6.16875 14.9156C5.775 14.0656 5.325 13.2469 4.825 12.4594C4.275 11.5594 3.7625 10.8719 3.28125 10.3969C2.625 9.71563 2.1375 9.05938 1.825 8.43438C1.5125 7.80313 1.35625 7.16563 1.35625 6.50313C1.35625 5.61563 1.575 4.80313 2.0125 4.05313C2.45 3.30313 3.04375 2.71563 3.7875 2.27813C4.5375 1.84063 5.35 1.62188 6.2375 1.62188C7.125 1.62188 7.9375 1.84063 8.6875 2.27813C9.4375 2.71563 10.0312 3.30313 10.475 4.04688C10.9187 4.80313 11.1375 5.62188 11.1375 6.50313C11.1375 7.90313 10.3937 9.26563 8.9125 10.5969C8.35 11.1094 7.8125 11.7906 7.3 12.6406C6.88125 13.3344 6.50625 14.0969 6.16875 14.9219V14.9156ZM6.26875 8.36563C6.65625 8.36563 7.01875 8.26563 7.35625 8.07188C7.69375 7.87813 7.95625 7.60938 8.14375 7.28438C8.3375 6.95313 8.43125 6.59063 8.43125 6.19688C8.43125 5.80313 8.33125 5.43438 8.1375 5.10313C7.9375 4.76563 7.675 4.50313 7.3375 4.31563C7 4.12813 6.6375 4.02813 6.24375 4.02813C5.85 4.02813 5.4875 4.12813 5.15625 4.32188C4.825 4.52188 4.56875 4.78438 4.375 5.12188C4.18125 5.45938 4.0875 5.82188 4.0875 6.20938C4.0875 6.59688 4.1875 6.95938 4.38125 7.29688C4.58125 7.63438 4.84375 7.89688 5.18125 8.08438C5.51875 8.27813 5.88125 8.37188 6.26875 8.37188V8.36563ZM6.24375 7.50313C5.8875 7.50313 5.575 7.37188 5.31875 7.11563C5.0625 6.85938 4.93125 6.55313 4.93125 6.19063C4.93125 5.82813 5.0625 5.52188 5.31875 5.26563C5.575 5.00938 5.88125 4.87813 6.24375 4.87813C6.60625 4.87813 6.9125 5.00938 7.16875 5.26563C7.425 5.52188 7.55625 5.82813 7.55625 6.19063C7.55625 6.55313 7.425 6.85938 7.16875 7.11563C6.9125 7.37188 6.60625 7.50313 6.24375 7.50313Z' fill='%2329B5E8'/%3E%3C/svg%3E%0A\")}.partner-details__website::before{background-image:url(\"data:image/svg+xml,%3Csvg width='18' height='16' viewBox='0 0 18 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M2.61587 2.96889C2.61587 2.75109 2.79633 2.57062 3.01413 2.57062C3.23192 2.57062 3.41238 2.75109 3.41238 2.96889C3.41238 3.18669 3.23192 3.36716 3.01413 3.36716C2.79633 3.36716 2.61587 3.18669 2.61587 2.96889ZM4.21512 2.96889C4.21512 2.75109 4.39558 2.57062 4.61338 2.57062C4.83117 2.57062 5.01163 2.75109 5.01163 2.96889C5.01163 3.18669 4.83117 3.36716 4.61338 3.36716C4.39558 3.36716 4.21512 3.18669 4.21512 2.96889ZM5.81438 2.96889C5.81438 2.75109 5.99484 2.57062 6.21264 2.57062C6.43043 2.57062 6.61089 2.75109 6.61089 2.96889C6.61089 3.18669 6.43043 3.36716 6.21264 3.36716C5.99484 3.36716 5.81438 3.18669 5.81438 2.96889ZM17.2518 .697559H1.19085C.811258 .697559 .506348 1.0025 .506348 1.38209V14.6179C.506348 14.9975 .811258 15.3024 1.19085 15.3024H17.2518C17.6314 15.3024 17.9363 14.9975 17.9363 14.6179V1.38209C17.9363 1.0025 17.6314 .697559 17.2518 .697559ZM16.5673 2.06035V3.90853H1.86914V2.06035H16.5673ZM1.86914 13.9334V4.78593H16.5673V13.9334H1.86914Z' fill='%2329B5E8'/%3E%3C/svg%3E%0A\")}#partnerSidebar{border-radius:4px;background-color:#fff;padding:24px 24px 32px;border-bottom:6px solid #29b5e8}#partnerSidebar h5,.newsletter-disclaimer p{font-size:14px!important}#partnerSidebar ul{margin-top:0;list-style-type:none;padding:0;display:flex;flex-wrap:wrap;gap:8px}#partnerSidebar li{border:1px solid;border-radius:2px;padding:0 4px!important;font-size:11px!important;letter-spacing:.25px;text-transform:uppercase}div.snowflake-partner-hero-card{width:100%;margin:0}.partner-details__logo{max-width:380px;margin:0 auto}@media screen and (max-width:767px){.left-alignment .hp-hero__subheadline{margin-left:auto;margin-right:auto}.left-alignment .hp-hero__headline .snowflake-title-v2-line,.left-alignment .hp-hero__subheadline .snowflake-title-v2-line{text-align:center}.hero--home__inner .snowflake-flexible-column-container-items-top-padding-large{padding-top:var(--spacing-02)}.section--logo-bar\u003E.snowflake-flexible-column-container-items{display:flex;flex-wrap:wrap;flex-direction:row;justify-content:center;gap:8px}.section--logo-bar\u003E.snowflake-flexible-column-container-items\u003Ediv{width:calc(33.33% - 8px)}.partner-sidebar__mobile-expand{display:inline-block;color:#249edc;border-color:#249edc!important}#partnerSidebar li:nth-child(n+6),.summit-nav__links .snowflake-button-tertiary{display:none}.sc-body__sidebar{background-color:#f6f9fa;padding:24px}.sc-body__content{padding:0 24px 24px}.summit-speaker-card .snowflake-card-v2-advanced-content{padding:24px}}#partnerResources h6,.snowflake-tabs-navigation-item p.body-1{font-size:16px!important}#partnerResources .section--resource-hub{padding:0 16px}#partnerResources .section--resource-hub a,.bwalignl{text-align:left}@media screen and (max-width:1023px){.hero--workload .snowflake-hero-system-media-container{width:100%}}.section--timely-content .snowflake-content-chip,.snowflake-mega-nav-dropdown-footer-wrapper{align-items:center}.section--timely-content .snowflake-content-chip-image{max-width:94px}.section--timely-content .snowflake-content-chip-image__inner{line-height:0}.section--timely-content .snowflake-content-chip-image__image{aspect-ratio:1;height:auto}.section--workload-overview .workload-overview__headline{max-width:280px;margin:0 auto}#industryPartnerSlider .swiper-slide{margin-top:0!important;padding:0 12px}#industryPartnerSlider .snowflake-tabs-navigation-item{margin-left:0!important;margin-right:0!important}#industryPartnerSlider .snowflake-premium-content-banner-background-grad-white .snowflake-premium-content-banner{box-shadow:none}#industryPartnerSlider .logo-slider__slide .aem-container{display:flex;padding:0 8px!important;flex-wrap:wrap;gap:16px!important;justify-content:center}#industryPartnerSlider .logo-slider__slide .aem-container\u003Ediv{width:48%;max-width:200px}#useCaseTabs{padding-top:24px;padding-bottom:24px;padding-right:24px}#useCaseTabs .tab-content.is-active{display:block}#useCaseTabs .vert-tab{border-bottom:1px solid #a0bbcc;padding-bottom:16px}#useCaseTabs .vert-tab p{display:inline-block}#useCaseTabs .vert-tab p:hover{cursor:pointer}#useCaseTabs .vert-tab p,#useCaseTabs .vert-tab.is-active p.not-active{color:#249edc}#useCaseTabs .vert-tab p.is-active,#useCaseTabs .vert-tab.is-active p{color:#000}#industryPlatformSection{background-image:url(/adobe/dynamicmedia/deliver/dm-aid--db074ad5-7122-4c51-87a3-76c3aa466182/double-arrow-bg%403x.png);background-repeat:no-repeat}.snowflake-text p.featured-quote__source{font-weight:900!important;text-transform:uppercase;font-size:16px!important;margin-top:2rem!important}.snowflake-text p.featured-quote__title{margin-top:0!important;font-size:16px!important}.snowflake-case-study-card-logo img{width:auto!important;height:100px!important;transform:translateX(-15%)}.snowflake-quote-item-quote-text{font-weight:600!important}#customerStoryStatsInner\u003E.container\u003E.cmp-container\u003E.aem-container{display:flex;flex-direction:row}#customerStoryStat1,#customerStoryStat2{max-width:240px}#storyHighlights{border-radius:4px;padding:1rem}.sc-overview__webinar-promo-banner .snowflake-content-chip-content .snowflake-title-v2-line,.summit-pricing-block__tile .black-blue-text-color .snowflake-title-v2-line{color:#000!important}.snowflake-youtube-embedded-wrapper{border-radius:var(--small-border-radius)}#arcticNavItem::before,#offset::before,#open-source::before{color:var(--text-05);font-family:Texta,sans-serif!important}#offset,.sc-architecture-caption{margin-top:16px}.hero--press .snowflake-title-v2-line{text-transform:none!important}@media screen and (min-width:768px){.subpage-timely-content__inner\u003E.snowflake-flexible-column-container-items{box-shadow:0 10px 20px 0 rgb(152 162 179 / .1),0 2px 6px 0 rgb(152 162 179 / .25);padding:var(--spacing-04);border-radius:4px;overflow:hidden}#partnerLogoSquare{padding:0 0 0 48px}.hero--workload .snowflake-container{max-width:1440px;margin:0 auto!important;align-items:center}#industryPartnerSlider.snowflake-flexible-column-container-2-column-40-60\u003E.snowflake-flexible-column-container-items{grid-template-columns:minmax(40%,4fr) minmax(0,6fr)}#industryPartnerSlider .swiper-slide{padding:0 24px}.sc-body{padding:48px}.sc-body\u003E.snowflake-flexible-column-container-items{grid-template-columns:7fr 3fr;gap:124px}}.snowflake-button-container.has-icon{display:inline-flex;justify-content:center;align-items:center;text-align:left}.snowflake-button-container.has-icon::before{content:\"\";display:inline-block;width:20px;height:20px;margin-right:12px;background-size:contain;background-repeat:no-repeat;background-position:center}.snowflake-button-container.is-video::before{background-image:url(\"data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M9 1.28663C13.2523 1.28663 16.7134 4.74768 16.7134 9C16.7134 13.2523 13.2523 16.7134 9 16.7134C4.74768 16.7198 1.28663 13.2588 1.28663 9C1.28663 4.74124 4.74768 1.28663 9 1.28663ZM9 0C4.0336 0 0 4.0336 0 9C0 13.9664 4.0336 18 9 18C13.9728 18 18 13.9664 18 9C18 4.0336 13.9728 0 9 0Z' fill='white'/%3E%3Cpath d='M7.75106 6.18211C7.42941 6.16925 7.16565 6.42658 7.16565 6.74823V11.2772C7.16565 11.7082 7.65457 11.9848 8.02126 11.7597L11.7975 9.4952C12.1578 9.27647 12.1578 8.74252 11.7975 8.52379L8.02126 6.25931C7.93763 6.21428 7.84756 6.18211 7.75106 6.18211Z' fill='white'/%3E%3C/svg%3E%0A\")}.snowflake-button-container.is-github::before{background-image:url(\"data:image/svg+xml,%3Csvg width='20' height='21' viewBox='0 0 20 21' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M10 .651794C4.475 .651794 0 5.12679 0 10.6518C0 15.0768 2.8625 18.8143 6.8375 20.1393C7.3375 20.2268 7.525 19.9268 7.525 19.6643C7.525 19.4268 7.5125 18.6393 7.5125 17.8018C5 18.2643 4.35 17.1893 4.15 16.6268C4.0375 16.3393 3.55 15.4518 3.125 15.2143C2.775 15.0268 2.275 14.5643 3.1125 14.5518C3.9 14.5393 4.4625 15.2768 4.65 15.5768C5.55 17.0893 6.9875 16.6643 7.5625 16.4018C7.65 15.7518 7.9125 15.3143 8.2 15.0643C5.975 14.8143 3.65 13.9518 3.65 10.1268C3.65 9.03929 4.0375 8.13929 4.675 7.43929C4.575 7.18929 4.225 6.16429 4.775 4.78929C4.775 4.78929 5.6125 4.52679 7.525 5.81429C8.325 5.58929 9.175 5.47679 10.025 5.47679C10.875 5.47679 11.725 5.58929 12.525 5.81429C14.4375 4.51429 15.275 4.78929 15.275 4.78929C15.825 6.16429 15.475 7.18929 15.375 7.43929C16.0125 8.13929 16.4 9.02679 16.4 10.1268C16.4 13.9643 14.0625 14.8143 11.8375 15.0643C12.2 15.3768 12.5125 15.9768 12.5125 16.9143C12.5125 18.2518 12.5 19.3268 12.5 19.6643C12.5 19.9268 12.6875 20.2393 13.1875 20.1393C17.1375 18.8143 20 15.0643 20 10.6518C20 5.12679 15.525 .651794 10 .651794Z' fill='%23249EDC'/%3E%3C/svg%3E%0A\")}.snowflake-button-container.is-quickstart::before{background-image:url(\"data:image/svg+xml,%3Csvg width='15' height='21' viewBox='0 0 15 21' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M13.8489 2.79368H11.6439V2.38493C11.6439 1.71368 11.1451 .967427 10.4251 .967427H8.94762C8.80887 .359927 8.37387 .299927 7.89762 .299927H7.23012C6.85512 .299927 6.26637 .299927 6.08637 .967427H4.68387C3.94887 .967427 3.35637 1.74368 3.35637 2.38493V2.79368H1.15137C.738867 2.79368 .401367 3.13118 .401367 3.54368V20.2537C.401367 20.6662 .738867 21.0037 1.15137 21.0037H13.8489C14.2614 21.0037 14.5989 20.6662 14.5989 20.2537V3.54368C14.5989 3.13118 14.2614 2.79368 13.8489 2.79368ZM4.29387 2.38493C4.29387 2.18243 4.54137 1.90493 4.68387 1.90493H6.50262C6.76137 1.90493 6.97137 1.69493 6.97137 1.43618C6.97137 1.33868 6.97887 1.27868 6.98637 1.24118C7.05012 1.23368 7.15512 1.23368 7.23387 1.23368H7.90137C7.95012 1.23368 8.00637 1.23368 8.05137 1.23368C8.05512 1.27868 8.05887 1.34243 8.05887 1.43243C8.05887 1.69118 8.26887 1.90118 8.52762 1.90118H10.4289C10.5301 1.90118 10.7101 2.14493 10.7101 2.38118V2.78993H4.29762V2.38118L4.29387 2.38493ZM13.0989 19.4999H1.90137V4.29368H13.0989V19.5037V19.4999Z' fill='%23249EDC'/%3E%3Cpath d='M3.82512 16.0424H11.1751C11.4339 16.0424 11.6439 15.8324 11.6439 15.5736V6.88486C11.6439 6.62611 11.4339 6.41611 11.1751 6.41611H3.82512C3.56637 6.41611 3.35637 6.62611 3.35637 6.88486V15.5736C3.35637 15.8324 3.56637 16.0424 3.82512 16.0424ZM4.29387 15.1049V13.3686H10.7064V15.1049H4.29387ZM10.7101 7.35361V12.4311H4.29762V7.35361H10.7101Z' fill='%23249EDC'/%3E%3Cpath d='M6.16512 9.35989H8.83887C9.09762 9.35989 9.30762 9.14989 9.30762 8.89114C9.30762 8.63239 9.09762 8.42239 8.83887 8.42239H6.16512C5.90637 8.42239 5.69637 8.63239 5.69637 8.89114C5.69637 9.14989 5.90637 9.35989 6.16512 9.35989Z' fill='%23249EDC'/%3E%3Cpath d='M6.16512 11.3624H8.83887C9.09762 11.3624 9.30762 11.1524 9.30762 10.8937C9.30762 10.6349 9.09762 10.4249 8.83887 10.4249H6.16512C5.90637 10.4249 5.69637 10.6349 5.69637 10.8937C5.69637 11.1524 5.90637 11.3624 6.16512 11.3624Z' fill='%23249EDC'/%3E%3C/svg%3E%0A\")}.snowflake-button-container.is-download::before{background-image:url(\"data:image/svg+xml,%3Csvg width='16' height='18' viewBox='0 0 16 18' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M15.2017 17.1637H.798265C.364425 17.1637 0 16.7993 0 16.3655V12.3568C0 11.923 .364425 11.5585 .798265 11.5585C1.2321 11.5585 1.59653 11.923 1.59653 12.3568V15.5498H14.4035V12.3568C14.4035 11.923 14.7679 11.5585 15.2017 11.5585C15.6356 11.5585 16 11.923 16 12.3568V16.3655C16 16.7993 15.6529 17.1637 15.2017 17.1637Z' fill='%23249EDC'/%3E%3Cpath d='M7.94793 12.9642C7.84381 12.9642 7.73969 12.9468 7.63557 12.8947C7.34056 12.7733 7.14967 12.4783 7.14967 12.1485L7.18437 .938127C7.18437 .504287 7.5488 .139862 7.98264 .139862C8.41648 .139862 8.7809 .504287 8.7809 .938127L8.7462 10.257L12.8416 6.33509C13.154 6.02273 13.6746 6.04008 13.9696 6.35244C14.282 6.66481 14.2646 7.18542 13.9523 7.48043L8.50325 12.7386C8.36442 12.8774 8.15617 12.9642 7.94793 12.9642Z' fill='%23249EDC'/%3E%3Cpath d='M7.94793 12.9642C7.73969 12.9642 7.54881 12.8947 7.39262 12.7386L2.03037 7.53249C1.718 7.22012 1.70065 6.71687 2.01301 6.40451C2.32538 6.09214 2.82863 6.07479 3.141 6.38715L8.50325 11.5932C8.81562 11.9056 8.83297 12.4088 8.52061 12.7212C8.36442 12.8774 8.15617 12.9642 7.94793 12.9642Z' fill='%23249EDC'/%3E%3C/svg%3E%0A\")}.snowflake-button-container.is-expand::before{background-image:url(\"data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M6.64375 10.9125C6.9375 11.2062 6.93125 11.6812 6.64375 11.9687L2.57502 16H3.79375C4.20625 16 4.54376 16.3375 4.54376 16.75C4.54376 17.1625 4.20625 17.5 3.79375 17.5H.756264C.556264 17.5 .36876 17.4187 .22501 17.2812C.22501 17.2812 .206248 17.25 .193748 17.2375C.143748 17.1812 .100004 17.1125 .0625038 17.0437C.0375038 16.9687 .0187492 16.8937 .0187492 16.8187C.0187492 16.8 .0062561 16.7813 .0062561 16.7625V13.725C.0187561 13.3125 .356257 12.9875 .768757 12.9937C1.16876 13 1.48752 13.325 1.50002 13.725V14.9688L5.5875 10.9187C5.88125 10.6312 6.35 10.6312 6.64375 10.9187V10.9125ZM17.5063 .743732C17.5063 .543732 17.425 .356235 17.2875 .218735C17.2875 .218735 17.2562 .199998 17.2437 .193748C17.1875 .137498 17.1188 .0937347 17.0438 .0624847C16.9688 .0374847 16.8938 .0187492 16.8188 .0187492C16.8 .0187492 16.7813 .00623703 16.7625 .00623703H13.725C13.3125 .00623703 12.975 .343745 12.975 .756245C12.975 1.16874 13.3125 1.50623 13.725 1.50623H14.9688L11.1312 5.37498C10.8437 5.67498 10.8563 6.14999 11.1563 6.43124C11.45 6.71249 11.9063 6.70624 12.1938 6.43124L16.0125 2.575V3.79375C16.0125 4.20625 16.35 4.54372 16.7625 4.54372C17.175 4.54372 17.5125 4.20625 17.5125 3.79375V.756245L17.5063 .743732ZM16.7562 12.9688C16.3437 12.9688 16.0063 13.3063 16.0063 13.7188V14.8937L12.1938 10.925C11.9063 10.625 11.4375 10.6188 11.1375 10.9063C10.8375 11.1938 10.8313 11.6625 11.1188 11.9625L15 16.0062H13.7188C13.3063 16.0062 12.9688 16.3437 12.9688 16.7562C12.9688 17.1687 13.3063 17.5063 13.7188 17.5063H16.7562C16.85 17.5063 16.95 17.4875 17.0375 17.45C17.0875 17.425 17.1313 17.3937 17.175 17.3625C17.2063 17.3437 17.2438 17.325 17.275 17.3C17.3313 17.2375 17.375 17.1687 17.4125 17.1C17.4188 17.0875 17.4375 17.075 17.4438 17.0562C17.45 17.025 17.4563 16.9938 17.4625 16.9625C17.4813 16.9 17.5 16.8375 17.5 16.7687V13.725C17.5 13.3125 17.1687 12.975 16.7562 12.975V12.9688ZM.750008 4.53125C1.16251 4.53125 1.50002 4.19374 1.50002 3.78124V2.5L5.59376 6.43124C5.89376 6.71874 6.36251 6.70626 6.65001 6.41251C6.93751 6.11876 6.92501 5.64375 6.63126 5.35625L2.61251 1.49998H3.7875C4.2 1.49998 4.53751 1.16249 4.53751 .749989C4.53751 .337489 4.2 0 3.7875 0H.743752C.668752 0 .600004 .0187355 .531254 .0437355C.506254 .0499855 .481263 .0437477 .462513 .0562477C.443763 .0687477 .425015 .0812462 .406265 .0937462C.337515 .124996 .275004 .168741 .218754 .224991H.212498C.212498 .224991 .175 .28125 .15625 .3125C.11875 .3625 .0812477 .4125 .0562477 .46875C.0374977 .525 .0249992 .587499 .0187492 .643749C.0124992 .674999 0 .712482 0 .743732V3.78124C0 4.19374 .337508 4.53125 .750008 4.53125Z' fill='white'/%3E%3C/svg%3E%0A\")}@keyframes slow-scroll{100%{transform:translateY(-50%)}}.sc-hero{overflow:hidden;background-color:#212d35;background-repeat:repeat-y;background-image:url(\"data:image/svg+xml,%3Csvg width='389' height='17' viewBox='0 0 389 17' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M.638672 7.80824L.638672 9.2566C.638672 9.52364 .85538 9.74024 1.12262 9.74024H2.57204C2.83928 9.74024 3.05598 9.52364 3.05598 9.2566V7.80824C3.05598 7.54119 2.83928 7.32472 2.57204 7.32472L1.12262 7.32472C.85538 7.32472 .638672 7.54119 .638672 7.80824Z' fill='url(%23paint0_linear_8295_70635)'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M10.9639 7.80824V9.2566C10.9639 9.52364 11.1806 9.74024 11.4478 9.74024L12.8972 9.74024C13.1645 9.74024 13.3812 9.52364 13.3812 9.2566V7.80824C13.3812 7.54119 13.1645 7.32471 12.8972 7.32471L11.4478 7.32471C11.1806 7.32471 10.9639 7.54119 10.9639 7.80824Z' fill='url(%23paint1_linear_8295_70635)'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M21.2891 7.80823V9.2566C21.2891 9.52364 21.5058 9.74024 21.773 9.74024L23.2224 9.74024C23.4897 9.74024 23.7064 9.52364 23.7064 9.2566V7.80823C23.7064 7.54119 23.4897 7.32471 23.2224 7.32471L21.773 7.32471C21.5058 7.32471 21.2891 7.54119 21.2891 7.80823Z' fill='url(%23paint2_linear_8295_70635)'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M31.6143 7.80823V9.2566C31.6143 9.52364 31.831 9.74024 32.0982 9.74024H33.5476C33.8149 9.74024 34.0316 9.52364 34.0316 9.2566V7.80823C34.0316 7.54119 33.8149 7.32471 33.5476 7.32471L32.0982 7.32471C31.831 7.32471 31.6143 7.54119 31.6143 7.80823Z' fill='url(%23paint3_linear_8295_70635)'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M41.9395 7.80823V9.2566C41.9395 9.52364 42.1562 9.74024 42.4234 9.74024H43.8728C44.1401 9.74024 44.3568 9.52364 44.3568 9.2566V7.80823C44.3568 7.54119 44.1401 7.32471 43.8728 7.32471L42.4234 7.32471C42.1562 7.32471 41.9395 7.54119 41.9395 7.80823Z' fill='url(%23paint4_linear_8295_70635)'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M52.5076 7.80823V9.2566C52.5076 9.52364 52.7243 9.74024 52.9916 9.74024H54.441C54.7082 9.74024 54.9249 9.52364 54.9249 9.2566V7.80823C54.9249 7.54119 54.7082 7.32471 54.441 7.32471L52.9916 7.32471C52.7243 7.32471 52.5076 7.54119 52.5076 7.80823Z' fill='url(%23paint5_linear_8295_70635)'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M62.8331 7.80823V9.2566C62.8331 9.52364 63.0493 9.74024 63.3165 9.74024H64.7664C65.0332 9.74024 65.2504 9.52364 65.2504 9.2566V7.80823C65.2504 7.54119 65.0332 7.32471 64.7664 7.32471L63.3165 7.32471C63.0493 7.32471 62.8331 7.54119 62.8331 7.80823Z' fill='url(%23paint6_linear_8295_70635)'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M73.1583 7.80823V9.2566C73.1583 9.52364 73.3745 9.74024 73.6417 9.74024H75.0916C75.3584 9.74024 75.5756 9.52364 75.5756 9.2566V7.80823C75.5756 7.54119 75.3584 7.32471 75.0916 7.32471L73.6417 7.32471C73.3745 7.32471 73.1583 7.54119 73.1583 7.80823Z' fill='url(%23paint7_linear_8295_70635)'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M83.4835 7.80823V9.2566C83.4835 9.52364 83.6997 9.74024 83.9669 9.74024H85.4168C85.6836 9.74024 85.9008 9.52364 85.9008 9.2566V7.80823C85.9008 7.54119 85.6836 7.32471 85.4168 7.32471L83.9669 7.32471C83.6997 7.32471 83.4835 7.54119 83.4835 7.80823Z' fill='url(%23paint8_linear_8295_70635)'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M93.8087 7.80823V9.2566C93.8087 9.52364 94.0249 9.74024 94.2921 9.74024H95.742C96.0088 9.74024 96.226 9.52364 96.226 9.2566V7.80823C96.226 7.54119 96.0088 7.32471 95.742 7.32471L94.2921 7.32471C94.0249 7.32471 93.8087 7.54119 93.8087 7.80823Z' fill='url(%23paint9_linear_8295_70635)'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M104.134 7.80823V9.2566C104.134 9.52364 104.35 9.74024 104.617 9.74024H106.067C106.334 9.74024 106.551 9.52364 106.551 9.2566V7.80823C106.551 7.54119 106.334 7.32471 106.067 7.32471L104.617 7.32471C104.35 7.32471 104.134 7.54119 104.134 7.80823Z' fill='url(%23paint10_linear_8295_70635)'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M114.702 7.80823V9.2566C114.702 9.52364 114.918 9.74024 115.185 9.74024L116.635 9.74024C116.902 9.74024 117.119 9.52364 117.119 9.25659V7.80823C117.119 7.54119 116.902 7.32471 116.635 7.32471L115.185 7.32471C114.918 7.32471 114.702 7.54119 114.702 7.80823Z' fill='url(%23paint11_linear_8295_70635)'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M125.027 7.80823V9.25659C125.027 9.52364 125.243 9.74024 125.511 9.74024L126.961 9.74024C127.227 9.74024 127.445 9.52364 127.445 9.25659V7.80823C127.445 7.54119 127.227 7.32471 126.961 7.32471L125.511 7.32471C125.243 7.32471 125.027 7.54119 125.027 7.80823Z' fill='url(%23paint12_linear_8295_70635)'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M135.352 7.80823V9.25659C135.352 9.52364 135.569 9.74024 135.836 9.74024H137.286C137.553 9.74024 137.77 9.52364 137.77 9.25659V7.80823C137.77 7.54119 137.553 7.32471 137.286 7.32471L135.836 7.32471C135.569 7.32471 135.352 7.54119 135.352 7.80823Z' fill='url(%23paint13_linear_8295_70635)'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M145.678 7.80823V9.25659C145.678 9.52364 145.894 9.74024 146.161 9.74024H147.611C147.878 9.74024 148.095 9.52364 148.095 9.25659V7.80823C148.095 7.54119 147.878 7.32471 147.611 7.32471L146.161 7.32471C145.894 7.32471 145.678 7.54119 145.678 7.80823Z' fill='url(%23paint14_linear_8295_70635)'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M156.003 7.80823V9.25659C156.003 9.52364 156.219 9.74024 156.486 9.74024H157.936C158.203 9.74024 158.42 9.52364 158.42 9.25659V7.80823C158.42 7.54119 158.203 7.32471 157.936 7.32471L156.486 7.32471C156.219 7.32471 156.003 7.54119 156.003 7.80823Z' fill='url(%23paint15_linear_8295_70635)'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M166.328 7.80823V9.25659C166.328 9.52363 166.544 9.74024 166.811 9.74024H168.261C168.528 9.74024 168.745 9.52363 168.745 9.25659V7.80823C168.745 7.54119 168.528 7.32471 168.261 7.32471L166.811 7.32471C166.544 7.32471 166.328 7.54119 166.328 7.80823Z' fill='url(%23paint16_linear_8295_70635)'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M176.896 7.80823V9.25659C176.896 9.52363 177.112 9.74023 177.38 9.74023H178.83C179.096 9.74023 179.313 9.52363 179.313 9.25659V7.80823C179.313 7.54119 179.096 7.32471 178.83 7.32471L177.38 7.32471C177.112 7.32471 176.896 7.54119 176.896 7.80823Z' fill='url(%23paint17_linear_8295_70635)'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M187.221 7.80823V9.25659C187.221 9.52363 187.438 9.74023 187.705 9.74023H189.155C189.421 9.74023 189.639 9.52363 189.639 9.25659V7.80823C189.639 7.54119 189.421 7.32471 189.155 7.32471L187.705 7.32471C187.438 7.32471 187.221 7.54119 187.221 7.80823Z' fill='url(%23paint18_linear_8295_70635)'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M199.639 7.80824V9.2566C199.639 9.52364 199.855 9.74024 200.123 9.74024H201.572C201.839 9.74024 202.056 9.52364 202.056 9.2566V7.80824C202.056 7.54119 201.839 7.32472 201.572 7.32472L200.123 7.32472C199.855 7.32472 199.639 7.54119 199.639 7.80824Z' fill='url(%23paint19_linear_8295_70635)'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M209.964 7.80824V9.2566C209.964 9.52364 210.181 9.74024 210.448 9.74024L211.897 9.74024C212.164 9.74024 212.381 9.52364 212.381 9.2566V7.80824C212.381 7.54119 212.164 7.32471 211.897 7.32471L210.448 7.32471C210.181 7.32471 209.964 7.54119 209.964 7.80824Z' fill='url(%23paint20_linear_8295_70635)'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M220.289 7.80823V9.2566C220.289 9.52364 220.506 9.74024 220.773 9.74024L222.222 9.74024C222.49 9.74024 222.706 9.52364 222.706 9.2566V7.80823C222.706 7.54119 222.49 7.32471 222.222 7.32471L220.773 7.32471C220.506 7.32471 220.289 7.54119 220.289 7.80823Z' fill='url(%23paint21_linear_8295_70635)'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M230.614 7.80823V9.2566C230.614 9.52364 230.831 9.74024 231.098 9.74024H232.548C232.815 9.74024 233.032 9.52364 233.032 9.2566V7.80823C233.032 7.54119 232.815 7.32471 232.548 7.32471L231.098 7.32471C230.831 7.32471 230.614 7.54119 230.614 7.80823Z' fill='url(%23paint22_linear_8295_70635)'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M240.939 7.80823V9.2566C240.939 9.52364 241.156 9.74024 241.423 9.74024H242.873C243.14 9.74024 243.357 9.52364 243.357 9.2566V7.80823C243.357 7.54119 243.14 7.32471 242.873 7.32471L241.423 7.32471C241.156 7.32471 240.939 7.54119 240.939 7.80823Z' fill='url(%23paint23_linear_8295_70635)'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M251.508 7.80823V9.2566C251.508 9.52364 251.724 9.74024 251.992 9.74024H253.441C253.708 9.74024 253.925 9.52364 253.925 9.2566V7.80823C253.925 7.54119 253.708 7.32471 253.441 7.32471L251.992 7.32471C251.724 7.32471 251.508 7.54119 251.508 7.80823Z' fill='url(%23paint24_linear_8295_70635)'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M261.833 7.80823V9.2566C261.833 9.52364 262.049 9.74024 262.317 9.74024H263.766C264.033 9.74024 264.25 9.52364 264.25 9.2566V7.80823C264.25 7.54119 264.033 7.32471 263.766 7.32471L262.317 7.32471C262.049 7.32471 261.833 7.54119 261.833 7.80823Z' fill='url(%23paint25_linear_8295_70635)'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M272.158 7.80823V9.2566C272.158 9.52364 272.374 9.74024 272.642 9.74024H274.092C274.358 9.74024 274.576 9.52364 274.576 9.2566L274.576 7.80823C274.576 7.54119 274.358 7.32471 274.092 7.32471L272.642 7.32471C272.374 7.32471 272.158 7.54119 272.158 7.80823Z' fill='url(%23paint26_linear_8295_70635)'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M282.483 7.80823V9.2566C282.483 9.52364 282.7 9.74024 282.967 9.74024H284.417C284.684 9.74024 284.901 9.52364 284.901 9.2566V7.80823C284.901 7.54119 284.684 7.32471 284.417 7.32471L282.967 7.32471C282.7 7.32471 282.483 7.54119 282.483 7.80823Z' fill='url(%23paint27_linear_8295_70635)'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M292.809 7.80823L292.809 9.2566C292.809 9.52364 293.025 9.74024 293.292 9.74024H294.742C295.009 9.74024 295.226 9.52364 295.226 9.2566V7.80823C295.226 7.54119 295.009 7.32471 294.742 7.32471L293.292 7.32471C293.025 7.32471 292.809 7.54119 292.809 7.80823Z' fill='url(%23paint28_linear_8295_70635)'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M303.134 7.80823L303.134 9.2566C303.134 9.52364 303.35 9.74024 303.617 9.74024H305.067C305.334 9.74024 305.551 9.52364 305.551 9.2566V7.80823C305.551 7.54119 305.334 7.32471 305.067 7.32471L303.617 7.32471C303.35 7.32471 303.134 7.54119 303.134 7.80823Z' fill='url(%23paint29_linear_8295_70635)'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M313.702 7.80823L313.702 9.2566C313.702 9.52364 313.918 9.74024 314.185 9.74024L315.635 9.74024C315.902 9.74024 316.119 9.52364 316.119 9.25659V7.80823C316.119 7.54119 315.902 7.32471 315.635 7.32471L314.185 7.32471C313.918 7.32471 313.702 7.54119 313.702 7.80823Z' fill='url(%23paint30_linear_8295_70635)'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M324.027 7.80823V9.25659C324.027 9.52364 324.243 9.74024 324.511 9.74024L325.961 9.74024C326.227 9.74024 326.445 9.52364 326.445 9.25659V7.80823C326.445 7.54119 326.227 7.32471 325.961 7.32471L324.511 7.32471C324.243 7.32471 324.027 7.54119 324.027 7.80823Z' fill='url(%23paint31_linear_8295_70635)'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M334.352 7.80823V9.25659C334.352 9.52364 334.569 9.74024 334.836 9.74024H336.286C336.553 9.74024 336.77 9.52364 336.77 9.25659L336.77 7.80823C336.77 7.54119 336.553 7.32471 336.286 7.32471L334.836 7.32471C334.569 7.32471 334.352 7.54119 334.352 7.80823Z' fill='url(%23paint32_linear_8295_70635)'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M344.678 7.80823V9.25659C344.678 9.52364 344.894 9.74024 345.161 9.74024H346.611C346.878 9.74024 347.095 9.52364 347.095 9.25659L347.095 7.80823C347.095 7.54119 346.878 7.32471 346.611 7.32471L345.161 7.32471C344.894 7.32471 344.678 7.54119 344.678 7.80823Z' fill='url(%23paint33_linear_8295_70635)'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M355.003 7.80823V9.25659C355.003 9.52364 355.219 9.74024 355.486 9.74024H356.936C357.203 9.74024 357.42 9.52364 357.42 9.25659L357.42 7.80823C357.42 7.54119 357.203 7.32471 356.936 7.32471L355.486 7.32471C355.219 7.32471 355.003 7.54119 355.003 7.80823Z' fill='url(%23paint34_linear_8295_70635)'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M365.328 7.80823V9.25659C365.328 9.52363 365.544 9.74024 365.811 9.74024H367.261C367.528 9.74024 367.745 9.52363 367.745 9.25659V7.80823C367.745 7.54119 367.528 7.32471 367.261 7.32471L365.811 7.32471C365.544 7.32471 365.328 7.54119 365.328 7.80823Z' fill='url(%23paint35_linear_8295_70635)'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M375.896 7.80823V9.25659C375.896 9.52363 376.112 9.74023 376.38 9.74023H377.83C378.096 9.74023 378.313 9.52363 378.313 9.25659V7.80823C378.313 7.54119 378.096 7.32471 377.829 7.32471L376.38 7.32471C376.112 7.32471 375.896 7.54119 375.896 7.80823Z' fill='url(%23paint36_linear_8295_70635)'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M386.221 7.80823V9.25659C386.221 9.52363 386.438 9.74023 386.705 9.74023H388.155C388.421 9.74023 388.639 9.52363 388.639 9.25659V7.80823C388.639 7.54119 388.421 7.32471 388.155 7.32471L386.705 7.32471C386.438 7.32471 386.221 7.54119 386.221 7.80823Z' fill='url(%23paint37_linear_8295_70635)'/%3E%3Cdefs%3E%3ClinearGradient id='paint0_linear_8295_70635' x1='-47.5' y1='8.99989' x2='332' y2='8.99989' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%2329B5E8' stop-opacity='.8'/%3E%3Cstop offset='1' stop-color='%2329B5E8' stop-opacity='0'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint1_linear_8295_70635' x1='-47.5' y1='8.99989' x2='332' y2='8.99989' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%2329B5E8' stop-opacity='.8'/%3E%3Cstop offset='1' stop-color='%2329B5E8' stop-opacity='0'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint2_linear_8295_70635' x1='-47.5' y1='8.99989' x2='332' y2='8.99989' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%2329B5E8' stop-opacity='.8'/%3E%3Cstop offset='1' stop-color='%2329B5E8' stop-opacity='0'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint3_linear_8295_70635' x1='-47.5' y1='8.99989' x2='332' y2='8.99989' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%2329B5E8' stop-opacity='.8'/%3E%3Cstop offset='1' stop-color='%2329B5E8' stop-opacity='0'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint4_linear_8295_70635' x1='-47.5' y1='8.99989' x2='332' y2='8.99989' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%2329B5E8' stop-opacity='.8'/%3E%3Cstop offset='1' stop-color='%2329B5E8' stop-opacity='0'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint5_linear_8295_70635' x1='-47.5' y1='8.99989' x2='332' y2='8.99989' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%2329B5E8' stop-opacity='.8'/%3E%3Cstop offset='1' stop-color='%2329B5E8' stop-opacity='0'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint6_linear_8295_70635' x1='-47.5' y1='8.99989' x2='332' y2='8.99989' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%2329B5E8' stop-opacity='.8'/%3E%3Cstop offset='1' stop-color='%2329B5E8' stop-opacity='0'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint7_linear_8295_70635' x1='-47.5' y1='8.99989' x2='332' y2='8.99989' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%2329B5E8' stop-opacity='.8'/%3E%3Cstop offset='1' stop-color='%2329B5E8' stop-opacity='0'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint8_linear_8295_70635' x1='-47.5' y1='8.99989' x2='332' y2='8.99989' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%2329B5E8' stop-opacity='.8'/%3E%3Cstop offset='1' stop-color='%2329B5E8' stop-opacity='0'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint9_linear_8295_70635' x1='-47.5' y1='8.99989' x2='332' y2='8.99989' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%2329B5E8' stop-opacity='.8'/%3E%3Cstop offset='1' stop-color='%2329B5E8' stop-opacity='0'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint10_linear_8295_70635' x1='-47.5' y1='8.99989' x2='332' y2='8.99989' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%2329B5E8' stop-opacity='.8'/%3E%3Cstop offset='1' stop-color='%2329B5E8' stop-opacity='0'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint11_linear_8295_70635' x1='-47.5' y1='8.99989' x2='332' y2='8.99989' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%2329B5E8' stop-opacity='.8'/%3E%3Cstop offset='1' stop-color='%2329B5E8' stop-opacity='0'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint12_linear_8295_70635' x1='-47.5' y1='8.99989' x2='332' y2='8.99989' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%2329B5E8' stop-opacity='.8'/%3E%3Cstop offset='1' stop-color='%2329B5E8' stop-opacity='0'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint13_linear_8295_70635' x1='-47.5' y1='8.99989' x2='332' y2='8.99989' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%2329B5E8' stop-opacity='.8'/%3E%3Cstop offset='1' stop-color='%2329B5E8' stop-opacity='0'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint14_linear_8295_70635' x1='-47.5' y1='8.99989' x2='332' y2='8.99989' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%2329B5E8' stop-opacity='.8'/%3E%3Cstop offset='1' stop-color='%2329B5E8' stop-opacity='0'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint15_linear_8295_70635' x1='-47.5' y1='8.99989' x2='332' y2='8.99989' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%2329B5E8' stop-opacity='.8'/%3E%3Cstop offset='1' stop-color='%2329B5E8' stop-opacity='0'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint16_linear_8295_70635' x1='-47.5' y1='8.99989' x2='332' y2='8.99989' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%2329B5E8' stop-opacity='.8'/%3E%3Cstop offset='1' stop-color='%2329B5E8' stop-opacity='0'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint17_linear_8295_70635' x1='-47.5' y1='8.99989' x2='332' y2='8.99989' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%2329B5E8' stop-opacity='.8'/%3E%3Cstop offset='1' stop-color='%2329B5E8' stop-opacity='0'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint18_linear_8295_70635' x1='-47.5' y1='8.99989' x2='332' y2='8.99989' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%2329B5E8' stop-opacity='.8'/%3E%3Cstop offset='1' stop-color='%2329B5E8' stop-opacity='0'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint19_linear_8295_70635' x1='-47.5' y1='8.99989' x2='332' y2='8.99989' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%2329B5E8' stop-opacity='.8'/%3E%3Cstop offset='1' stop-color='%2329B5E8' stop-opacity='0'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint20_linear_8295_70635' x1='-47.5' y1='8.99989' x2='332' y2='8.99989' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%2329B5E8' stop-opacity='.8'/%3E%3Cstop offset='1' stop-color='%2329B5E8' stop-opacity='0'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint21_linear_8295_70635' x1='-47.5' y1='8.99989' x2='332' y2='8.99989' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%2329B5E8' stop-opacity='.8'/%3E%3Cstop offset='1' stop-color='%2329B5E8' stop-opacity='0'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint22_linear_8295_70635' x1='-47.5' y1='8.99989' x2='332' y2='8.99989' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%2329B5E8' stop-opacity='.8'/%3E%3Cstop offset='1' stop-color='%2329B5E8' stop-opacity='0'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint23_linear_8295_70635' x1='-47.5' y1='8.99989' x2='332' y2='8.99989' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%2329B5E8' stop-opacity='.8'/%3E%3Cstop offset='1' stop-color='%2329B5E8' stop-opacity='0'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint24_linear_8295_70635' x1='-47.5' y1='8.99989' x2='332' y2='8.99989' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%2329B5E8' stop-opacity='.8'/%3E%3Cstop offset='1' stop-color='%2329B5E8' stop-opacity='0'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint25_linear_8295_70635' x1='-47.5' y1='8.99989' x2='332' y2='8.99989' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%2329B5E8' stop-opacity='.8'/%3E%3Cstop offset='1' stop-color='%2329B5E8' stop-opacity='0'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint26_linear_8295_70635' x1='-47.5' y1='8.99989' x2='332' y2='8.99989' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%2329B5E8' stop-opacity='.8'/%3E%3Cstop offset='1' stop-color='%2329B5E8' stop-opacity='0'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint27_linear_8295_70635' x1='-47.5' y1='8.99989' x2='332' y2='8.99989' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%2329B5E8' stop-opacity='.8'/%3E%3Cstop offset='1' stop-color='%2329B5E8' stop-opacity='0'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint28_linear_8295_70635' x1='-47.5' y1='8.99989' x2='332' y2='8.99989' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%2329B5E8' stop-opacity='.8'/%3E%3Cstop offset='1' stop-color='%2329B5E8' stop-opacity='0'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint29_linear_8295_70635' x1='-47.5' y1='8.99989' x2='332' y2='8.99989' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%2329B5E8' stop-opacity='.8'/%3E%3Cstop offset='1' stop-color='%2329B5E8' stop-opacity='0'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint30_linear_8295_70635' x1='-47.5' y1='8.99989' x2='332' y2='8.99989' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%2329B5E8' stop-opacity='.8'/%3E%3Cstop offset='1' stop-color='%2329B5E8' stop-opacity='0'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint31_linear_8295_70635' x1='-47.5' y1='8.99989' x2='332' y2='8.99989' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%2329B5E8' stop-opacity='.8'/%3E%3Cstop offset='1' stop-color='%2329B5E8' stop-opacity='0'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint32_linear_8295_70635' x1='-47.5' y1='8.99989' x2='332' y2='8.99989' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%2329B5E8' stop-opacity='.8'/%3E%3Cstop offset='1' stop-color='%2329B5E8' stop-opacity='0'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint33_linear_8295_70635' x1='-47.5' y1='8.99989' x2='332' y2='8.99989' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%2329B5E8' stop-opacity='.8'/%3E%3Cstop offset='1' stop-color='%2329B5E8' stop-opacity='0'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint34_linear_8295_70635' x1='-47.5' y1='8.99989' x2='332' y2='8.99989' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%2329B5E8' stop-opacity='.8'/%3E%3Cstop offset='1' stop-color='%2329B5E8' stop-opacity='0'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint35_linear_8295_70635' x1='-47.5' y1='8.99989' x2='332' y2='8.99989' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%2329B5E8' stop-opacity='.8'/%3E%3Cstop offset='1' stop-color='%2329B5E8' stop-opacity='0'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint36_linear_8295_70635' x1='-47.5' y1='8.99989' x2='332' y2='8.99989' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%2329B5E8' stop-opacity='.8'/%3E%3Cstop offset='1' stop-color='%2329B5E8' stop-opacity='0'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint37_linear_8295_70635' x1='-47.5' y1='8.99989' x2='332' y2='8.99989' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%2329B5E8' stop-opacity='.8'/%3E%3Cstop offset='1' stop-color='%2329B5E8' stop-opacity='0'/%3E%3C/linearGradient%3E%3C/defs%3E%3C/svg%3E%0A\")}.sc-hero__inner\u003E.snowflake-flexible-column-container-items\u003Ediv:first-child{position:relative;z-index:3}.sc-hero__inner\u003E.snowflake-flexible-column-container-items\u003Ediv:last-child{position:absolute;height:100%;width:100%;top:0;left:-24px}.sc-hero__inner\u003E.snowflake-flexible-column-container-items\u003Ediv:last-child::before{content:\"\";display:block;z-index:1;position:absolute;top:-64px;left:0;width:150%;height:calc(100% + 160px);background-color:rgb(32 44 53 / .9)}.sc-body__content .heading-3-v2,.sc-hero__headline .heading-1-v2{text-transform:none}.sc-body__content span.snowflake-image-caption{display:block!important;font-style:italic}.sc-body__content .snowflake-text p+ul{margin-top:24px!important;padding-left:16px!important}.white-blue-text-color .snowflake-title-v2.solution-center-hero__certification .snowflake-typographyv2\u003Espan.snowflake-title-v2-line{color:#e9eaeb!important;font-size:16px}.white-blue-text-color .snowflake-title-v2.solution-center-hero__certification.is-large .snowflake-typographyv2\u003Espan.snowflake-title-v2-line{color:#fff!important;font-size:18px}.solution-center-hero__certification\u003E.snowflake-title-v2-line\u003Espan:first-child{display:flex;justify-content:flex-start;align-items:center;gap:8px}.solution-center-hero__certification\u003E.snowflake-title-v2-line\u003Espan:first-child::before{content:\"\";display:inline-block;width:16px;height:16px;background-image:url(\"data:image/svg+xml,%3Csvg width='16' height='16' viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8 0C3.58146 0 0 3.58146 0 8C0 12.4185 3.58146 16 8 16C12.4185 16 16 12.4185 16 8C16 3.58146 12.4185 0 8 0ZM12.7184 5.91984L7.33471 11.3026C7.31293 11.3244 7.31293 11.3454 7.29198 11.3454L7.20653 11.4308C6.94933 11.688 6.54132 11.7525 6.21962 11.6235C6.11238 11.5808 6.00514 11.5163 5.9197 11.4308L5.83425 11.3454C5.83425 11.3454 5.83425 11.3236 5.81246 11.3236L3.28149 8.79347C2.93799 8.44997 2.93799 7.87107 3.28149 7.50664L3.36694 7.42119C3.71044 7.07769 4.28934 7.07769 4.65377 7.42119L6.58401 9.35143L11.3877 4.5477C11.7312 4.2042 12.3101 4.2042 12.6746 4.5477L12.76 4.63315C13.0826 4.99758 13.0828 5.55541 12.7184 5.91984Z' fill='%230E8A16'/%3E%3C/svg%3E%0A\");background-size:contain;background-repeat:no-repeat;background-color:#fff;border-radius:100%}.sc-hero__byline{padding-top:8px}.sc-hero__byline p{color:#e2e2e2;margin-top:0!important}.sc-hero pre[class*=language-]{overflow:visible}.snowflake-code-snippet,.snowflake-code-snippet code,.snowflake-code-snippet pre{font-size:16px}.sc-hero__code-snippet:not(pre)\u003Ecode[class*=language-],.sc-hero__code-snippet pre[class*=language-]{background:0 0}.sc-hero__code-snippet{opacity:.8;background-color:transparent!important;position:absolute;top:0;right:0;width:100%;animation:240s linear 1s forwards slow-scroll}.sc-hero__button-container .snowflake-flexible-column-container-items{padding:0 0 24px;margin-top:-8px;margin-left:24px}.sc-sidebar__partner-logo{width:100%;max-width:140px;margin-top:8px}.sc-sidebar__partner-logo .cmp-image__image{border-radius:0}.sc-tag-cluster.snowflake-text ul{list-style-type:none;padding:0;display:flex;flex-wrap:wrap;gap:8px;margin:0}.sc-tag-cluster.snowflake-text li{color:#373f41;border-radius:4px;display:inline-block;padding:6px;text-transform:uppercase;letter-spacing:1px;font-size:12px!important;line-height:12px!important;margin:0!important;background-color:#f3f3f3}.sc-body .share-icon svg{height:24px;cursor:pointer}.sc-body .share-icon svg:hover path{fill:var(--ui-02)}.sc-overview__webinar-promo-banner{align-items:center;border:1px solid #ccc;padding:var(--spacing-02)}.sc-overview__webinar-promo-banner .snowflake-content-chip-image{max-width:32px;margin-right:var(--spacing-02);line-height:0}.sc-overview__webinar-promo-banner .snowflake-content-chip-image__image,.summit-speaker-card .snowflake-card-v2-advanced-image__image{aspect-ratio:1}.sc-overview__webinar-promo-banner .snowflake-content-chip-content .heading-5-v2{font-size:14px;font-family:Lato,sans-serif}.sc-overview__webinar-promo-banner .snowflake-content-chip-content .snowflake-title-v2-line:not(:first-child){font-weight:400}.sc-overview__webinar-promo-banner .snowflake-content-chip-button .snowflake-button-container{font-size:14px!important}.diagram-group__button{position:absolute;bottom:24px;right:24px;background-color:#212c35!important}.section--mountains-bottom,.summit-hp-hero{position:relative}.sc-cert-banner{background-color:#212d35;border-radius:8px;padding:24px;overflow:hidden}.sc-cert-banner\u003E.container\u003E.cmp-container\u003E.aem-container{display:flex;flex-direction:row;align-items:center}:root{--text-secondary:#706f6f;--summit-bg-ltblue:#eaf8fd;--summit-bg-blue:#249edc;--summit-border:#d2d1d4;--summit-border-radius:8px;--summit-card-padding:32px;--summit-card-padding-sm:28px}.section--mountains-bottom::after,.section--mountains-bottom::before{content:\"\";display:block;position:absolute;bottom:-1px;max-width:400px;background-size:100% auto;height:100%;width:30%;line-height:0;background-repeat:no-repeat}.button-group\u003E.container\u003E.cmp-container\u003E.aem-container{justify-content:center;align-items:center}.button-group\u003E.container\u003E.cmp-container\u003E.aem-container\u003Ediv{width:auto!important;margin:0 8px!important}.button-group .snowflake-button-container{font-family:Texta,sans-serif}.section--summit-bg-ltblue{background-color:var(--summit-bg-ltblue)}.section--summit-bg-blue,.summit-hero-secondary{background-color:var(--summit-bg-blue)}.section--mountains-bottom::before{left:0;background-image:url(\"data:image/svg+xml,%3Csvg width='402' height='309' viewBox='0 0 402 309' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M401.523 308.761H0V0L181.63 182.431L228.479 135.531L401.523 308.761Z' fill='%23249EDC'/%3E%3C/svg%3E%0A\");background-position:bottom left}.section--mountains-bottom::after{right:0;background-image:url(\"data:image/svg+xml,%3Csvg width='402' height='309' viewBox='0 0 402 309' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 308.761H401.523V0L219.893 182.431L173.044 135.531L0 308.761Z' fill='%23249EDC'/%3E%3C/svg%3E%0A\");background-position:bottom right}.summit-hp-hero{overflow:hidden}.summit-hero__bg-video{position:absolute;top:50%;left:50%;width:120%;height:100%;opacity:.3;transform:translate(-50%,-50%)}.summit-hero__bg-svg,.summit-prefooter__bg-image,.summit-secondary-hero__bg-image{position:absolute;bottom:0;left:0;width:100%}.summit-hp-promo-banner__headline .heading-4-v2{font-weight:900}.summit-hero-secondary .hero-lottie__left{position:absolute;bottom:0;left:0;width:30%;line-height:0}.summit-timeline__card::after,.summit-timeline__card::before{bottom:0;left:50%;position:absolute;display:block;background-color:var(--ui-01);content:\"\"}.summit-hero-secondary .snowflake-text p{font-size:24px!important;line-height:32px!important;max-width:720px;margin:0 auto}.summit-stat-container\u003E.container\u003E.cmp-container\u003E.aem-container{display:flex;justify-content:center}.summit-stat-container\u003E.container\u003E.cmp-container\u003E.aem-container\u003Ediv{width:auto!important;max-width:25%}.summit-stat-container\u003E.container\u003E.cmp-container\u003E.aem-container\u003Ediv:not(:last-child){border-right:1px solid #fff}.summit-timeline__card{border:1px solid var(--summit-border);border-radius:var(--summit-border-radius);padding:var(--summit-card-padding);position:relative;background-color:#fff}.summit-timeline__card::before{width:20px;height:20px;border-radius:100%;transform:translate(-50%,50%)}.summit-timeline__card::after{width:3px;height:50px;transform:translate(-50%,100%)}.summit-timeline-card__icon{width:48px;height:48px}.summit-timeline-card__headline .heading-3-v2{font-size:32px}.faq-group{border:1px solid var(--ui-12);border-radius:4px;background-color:#fff}.faq-group__question{padding:24px}.faq-group__question:hover{color:var(--ui-01);cursor:pointer}.faq-group__question .heading-4-v2,.faq-group__question .heading-5-v2{position:relative;padding-right:64px}.faq-group__question .heading-4-v2::after,.faq-group__question .heading-5-v2::after{content:\"\";display:block;width:32px;height:32px;background-image:url(\"data:image/svg+xml,%3Csvg width='29' height='16' viewBox='0 0 29 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M14.16 14.6807C14.2537 14.7957 14.3719 14.8884 14.506 14.952C14.64 15.0157 14.7866 15.0487 14.935 15.0487C15.0834 15.0487 15.2299 15.0157 15.3639 14.952C15.498 14.8884 15.6162 14.7957 15.71 14.6807V14.6807L28.51 2.00068C29.07 1.43068 29.07 .92068 28.51 .44068C27.95 -.0393204 27.43 -.11932 26.96 .44068L14.94 12.0007L2.99996 .45068C2.90725 .322624 2.7855 .218374 2.6447 .146483C2.50389 .0745926 2.34805 .0371094 2.18996 .0371094C2.03187 .0371094 1.87603 .0745926 1.73522 .146483C1.59442 .218374 1.47267 .322624 1.37996 .45068C.819961 .93068 .819961 1.45068 1.37996 2.01068L14.16 14.6807Z' fill='black'/%3E%3C/svg%3E%0A\");background-size:80% auto;background-repeat:no-repeat;background-position:center;position:absolute;top:-2px;right:0;transition:.3s 150ms}.faq-group__question .heading-5-v2::after{top:-4px}.faq-group__answer{max-height:0;overflow:hidden;width:95%;padding:0 24px;transition:.5s}.faq-group__answer\u003Espan{display:block;padding-bottom:24px}.is-open .faq-group__answer{max-height:600px;transition:1s}.is-open .faq-group__question .heading-4-v2::after,.is-open .faq-group__question .heading-5-v2::after{transform:rotate(180deg);transition:.3s}.summit-agenda{box-shadow:2px 4px 10px 0 rgb(156 156 156 / .52);border-radius:8px;background-color:#fff;max-width:980px;margin-left:auto;margin-right:auto;padding:40px;width:90%}.agenda-item{border-radius:8px;background-color:#d4f0fa;padding:16px;border-left:4px solid var(--ui-01);position:relative}.summit-pricing-block__tile.is-past,.summit-pricing-block__tile.is-upcoming{pointer-events:none;border-color:#d2d1d4}p.agenda-item__time{width:25%;font-family:Texta!important;font-size:32px!important;font-weight:900!important;text-transform:uppercase!important;max-width:140px}@media screen and (max-width:991px){#partnerResources .section--resource-hub .snowflake-button-link .snowflake-button-container{font-size:14px!important;line-height:20px!important;margin-top:4px}#industryPartnerSlider\u003E.snowflake-flexible-column-container-items{display:flex;flex-direction:column}#industryPartnerSlider\u003E.snowflake-flexible-column-container-items\u003Ediv{width:100%}.sc-cert-banner__left{text-align:center}.sc-cert-banner__left .solution-center-hero__certification .snowflake-title-v2-line{justify-content:center}.summit-hero__bg-video{width:200%}.summit-leadership-grid .snowflake-flexible-column-container-items{grid-template-columns:repeat(2,1fr)}.summit-stat-container\u003E.container\u003E.cmp-container\u003E.aem-container\u003Ediv{width:50%!important;max-width:50%!important}.summit-stat-container\u003E.container\u003E.cmp-container\u003E.aem-container\u003Ediv:not(:last-child){border-right:none!important}.summit-agenda{padding:24px}p.agenda-item__time{font-size:24px!important;width:auto;white-space:nowrap;padding-right:24px}}.agenda-item\u003Espan{display:flex;align-items:center}.summit-add-on-block,.summit-pricing-block{border:1px solid #d2d1d4;border-radius:8px;overflow:hidden;box-shadow:2px 4px 10px 0 rgb(156 156 156 / .52);background-color:#fff}.summit-add-on-block__content,.summit-pricing-block__content{padding:0 20px 20px}.summit-pricing-block__tile{padding:24px 20px;border-radius:4px;background:#fff;border:1px solid var(--ui-01);position:relative;transition:background-color .3s}.summit-pricing-block__tile:hover{background-color:var(--ui-01);transition:background-color .3s}.summit-pricing-block__tile.is-past{background-color:#d4f0fa}.summit-pricing-block__tile:hover .black-blue-text-color .snowflake-title-v2-line{color:#fff!important;transition:color .3s}.partner-card__logo-grid\u003E.container\u003E.cmp-container\u003E.aem-container::after,.partner-card__logo-grid\u003E.container\u003E.cmp-container\u003E.aem-container::before,.summit-add-on-block__content\u003E.container\u003E.cmp-container\u003E.aem-container::after,.summit-add-on-block__content\u003E.container\u003E.cmp-container\u003E.aem-container::before,.summit-pricing-block__tile.is-past .snowflake-content-chip-button,.summit-pricing-block__tile.is-upcoming .snowflake-content-chip-button,.summit-speaker-card .snowflake-card-v2-advanced-tag-indicator{display:none}.summit-pricing-block__tile.is-past .black-blue-text-color .snowflake-title-v2-line{color:#7cc7eb!important}.summit-pricing-block__tile.is-upcoming .black-blue-text-color .snowflake-title-v2-line{color:#8c8c8c!important}.summit-pricing-block__aside{background-color:#d4f0fa;border:1px solid #d2d1d4;border-radius:8px;padding:24px;width:100%}.summit-pricing-block__aside li::marker{color:var(--ui-01)}.summit-pricing-block__aside-headline .heading-5-v2{font-weight:900;margin-bottom:12px}.summit-pricing-block__header{background:#000;padding:24px 40px}.summit-pricing-block__header .heading-4-v2{font-weight:900;letter-spacing:.5px}.bwwidth100,.snowflake-mega-nav-dropdown-footer-content,.summit-pricing-block__tile .black-blue-text-color{width:100%}.summit-pricing-block__tile .heading-5-v2{position:static}.summit-pricing-block__tile .heading-5-v2 span.snowflake-title-v2-line:first-child{text-transform:uppercase;font-weight:900!important;letter-spacing:.25px;font-size:24px!important}.summit-pricing-block__tile .heading-5-v2 span.snowflake-title-v2-line:nth-child(2){margin-top:8px;font-family:Lato,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:16px}.summit-pricing-block__tile .heading-5-v2 span.snowflake-title-v2-line:last-child{font-weight:900!important;font-size:40px!important}.snowflake-mega-nav-nav-item\u003Ea:hover .snowflake-mega-nav-nav-item-title-wrapper\u003E.snowflake-mega-nav-nav-item-title,.summit-pricing-block__tile:not(.is-upcoming):not(.is-past) .heading-5-v2 span.snowflake-title-v2-line:last-child{color:var(--ui-01)!important}.summit-pricing-block__tile:hover:not(.is-upcoming):not(.is-past) .heading-5-v2 span.snowflake-title-v2-line:last-child{color:#fff!important}.summit-pricing-block__tile.is-past .heading-5-v2 span.snowflake-title-v2-line:last-child{text-decoration:line-through}.summit-pricing-block__tile .snowflake-content-chip-button{margin-top:0;white-space:nowrap;display:none}.snowflake-card-v2-advanced.no-link{pointer-events:none!important}.snowpro-card{border:1px solid var(--summit-border);border-radius:var(--summit-border-radius);padding:var(--summit-card-padding-sm);display:flex;height:100%}.snowpro-card__headline{margin:24px 0 12px}.snowpro-card__pricing{margin-top:48px}.snowpro-card .snowflake-text .snowpro-card__price{color:var(--ui-01);font-weight:900;font-size:40px!important;font-family:Texta,sans-serif}.summit-stat-container\u003E.container\u003E.cmp-container\u003E.aem-container{display:flex;flex-direction:row;flex-wrap:wrap}.summit-stat-container\u003E.container\u003E.cmp-container\u003E.aem-container\u003Ediv:not(:last-child){border-right:1px solid var(--summit-border)}.summit-stat-card{padding:0 40px}.summit-stat .heading-2-v2 .snowflake-title-v2-line:first-child{font-size:64px;line-height:52px;margin-bottom:8px}.summit-stat .heading-2-v2 .snowflake-title-v2-line:last-child{font-size:32px;line-height:30px;margin-bottom:16px}.summit-speaker-card .snowflake-card-v2-advanced-title{margin-bottom:var(--spacing-01)}.summit-add-on-card{padding:24px;border:1px solid #d2d1d4;border-radius:8px}.summit-add-on__subhead{padding-left:40px;padding-right:40px}.partner-card__logo-grid,.partner-card__logo-single{padding:40px}.partner-card__logo-grid .snowflake-image-container .cmp-image__image,.partner-card__logo-single .snowflake-image-container .cmp-image__image{border-radius:0;max-width:240px;margin:0 auto}.partner-card\u003E.container,.partner-card\u003E.container\u003E.aem-container,.partner-card\u003E.container\u003E.cmp-container{height:100%}.summit-add-on-block__content\u003E.container\u003E.cmp-container\u003E.aem-container{display:flex;flex-direction:row;gap:24px;align-items:stretch}.partner-card__logo-grid\u003E.container\u003E.cmp-container\u003E.aem-container{display:flex;flex-direction:row;flex-wrap:wrap;gap:40px 24px;justify-content:center;align-items:center}.partner-card__logo-grid\u003E.container\u003E.cmp-container\u003E.aem-container\u003Ediv{width:calc(33.3333% - 24px);margin:0!important}.partner-card{border-radius:8px;border:1px solid #d2d1d4;overflow:hidden;height:100%;background-color:#fff}.partner-card__header{padding:16px 24px;border-bottom:1px solid #d2d1d4}.partner-card__header.is-purple{background-color:#7d44cf}.partner-card__header h4{display:flex;flex-direction:row!important;align-items:center;gap:12px}.partner-card__header h4::before{vertical-align:middle;content:\"\";display:inline-block;width:20px;height:20px;background-size:contain;background-repeat:no-repeat;background-image:url(\"data:image/svg+xml,%3Csvg width='21' height='23' viewBox='0 0 21 23' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M20.0375 12.8374C20.1644 12.439 20.2172 12.0289 20.2077 11.6237C20.193 11.3305 20.1548 11.0373 20.0712 10.7441C19.8196 9.83306 19.223 9.01989 18.3294 8.50724L5.61817 1.2017C3.82388 .173815 1.53618 .784335 .506483 2.56804C-.533615 4.34915 .0797871 6.62351 1.87408 7.65398L8.97715 11.7427L1.87408 15.8201C.0797871 16.8527 -.531016 19.1271 .506483 20.9156C1.53618 22.6941 3.82388 23.302 5.61817 22.2746L18.3294 14.9643C19.1871 14.4728 19.7693 13.7027 20.0375 12.8374Z' fill='black'/%3E%3C/svg%3E%0A\")}.partner-card__header.is-purple h4::before{background-image:url(\"data:image/svg+xml,%3Csvg width='21' height='23' viewBox='0 0 21 23' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M20.0375 12.8374C20.1644 12.439 20.2172 12.0289 20.2077 11.6237C20.193 11.3305 20.1548 11.0373 20.0712 10.7441C19.8196 9.83306 19.223 9.01989 18.3294 8.50724L5.61817 1.2017C3.82388 .173815 1.53618 .784335 .506483 2.56804C-.533615 4.34915 .0797871 6.62351 1.87408 7.65398L8.97715 11.7427L1.87408 15.8201C.0797871 16.8527 -.531016 19.1271 .506483 20.9156C1.53618 22.6941 3.82388 23.302 5.61817 22.2746L18.3294 14.9643C19.1871 14.4728 19.7693 13.7027 20.0375 12.8374Z' fill='white'/%3E%3C/svg%3E%0A\")}.sf-blue-mountains{background-size:90% auto;background-repeat:no-repeat;background-position:center bottom;background-image:url(\"data:image/svg+xml,%3Csvg width='1361' height='410' viewBox='0 0 1361 410' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1360.25 410L1065.53 114.309L976.256 203.875L773.049 0L364.393 410H1360.25Z' fill='%233AA8DF'/%3E%3Cpath d='M274.778 410L137.467 272.238L.15625 410H274.778Z' fill='%233AA8DF'/%3E%3C/svg%3E%0A\")}.bwalignr,.main-pr-body .bwalignr{text-align:right}.bwblockalignl{margin-left:0;margin-right:auto}.bwcellpmargin{margin-top:0;margin-bottom:0}.bwlistdisc{list-style-type:disc}.bwpadb3{padding-bottom:4px}.bwpadb4{padding-bottom:5px}.bwpadl0{padding-left:0}.bwpadl3{padding-left:15px}.bwpadl6{padding-left:30px}.bwpadl9{padding-left:45px}.bwpadl12{padding-left:60px}.bwpadr0{padding-right:0}.bwtablemarginb{margin-bottom:10px}.bwvertalignb{vertical-align:bottom}.bwvertalignt{vertical-align:top}.bwsinglebottom{border-bottom:1pt solid #000}.bwdoublebottom{border-bottom:2.25pt double #000}.bwwidth1{width:1%}.bwwidth2{width:2%}.bwwidth6{width:6%}.bwwidth7{width:7%}.bwwidth8{width:8%}.bwwidth10{width:10%}.bwwidth12{width:12%}.bwwidth32{width:32%}.bwwidth44{width:44%}.bwwidth72{width:72%}.bwwidth97{width:97%}.main-pr-body{font-size:18px;line-height:26px}.main-pr-body img{display:block;width:100%;height:auto!important;border-radius:var(--small-border-radius)}.main-pr-body table{width:100%;display:block}.main-pr-body tbody{background-color:#f7f7f7}.main-pr-body .bwsinglebottom{border-bottom:1pt solid #000!important}.main-pr-body td.bwwidth44{padding-right:40px}.main-pr-body .bw-release-story{font-family:Lato,sans-serif}.main-pr-body .bw-release-story sup,.snowflake-mega-nav-dropdown-header-content-right a{white-space:nowrap}.main-pr-body .bw-release-story\u003E*,.main-pr-body\u003Espan\u003E*{margin-bottom:2rem!important}.snowflake-text.main-pr-body tbody,.snowflake-text.main-pr-body tbody p{font-size:14px!important;line-height:20px!important;width:100%;display:block}.press-body .snowflake-flexible-column-container-items{gap:var(--spacing-08)}.about-snowflake{border:1px solid #ccc;background-color:var(--ui-background-05);padding:24px;border-radius:8px;margin-top:0}.about-snowflake__logo{max-width:140px;margin-top:16px}.hero--press .snowflake-hero-system-inner{max-width:1408px;margin:0 auto!important}#arcticNavItem{flex-direction:column}#arcticNavItem::before{content:\"Featured Open Source Technologies\";display:block;margin-top:48px;margin-bottom:24px;font-size:16px!important;line-height:16px!important;font-weight:800!important;text-transform:uppercase}@media screen and (min-width:768px){.sc-hero__inner\u003E.snowflake-flexible-column-container-items\u003Ediv:last-child{position:relative;height:100%;top:auto;left:auto;width:auto}.sc-hero__inner\u003E.snowflake-flexible-column-container-items\u003Ediv:last-child::before{background:linear-gradient(180deg,#202c35 -7.5%,#fff0 51.25%,#202c35 107.69%)}.sc-hero__byline\u003Espan{display:flex;flex-wrap:wrap}.sc-hero__byline p:not(:last-child)::after{content:\"|\";margin:0 12px;opacity:.5}.sc-hero__button-container .snowflake-flexible-column-container-items{position:absolute;bottom:0;padding:0;margin:0 24px 0 0}.sc-hero__button-container .hero-watch-the-demo{padding:12px 16px!important;float:right;margin-bottom:48px;background-color:rgb(35 45 54 / .8)}.summit-overview-stat{padding:0 40px}.summit-timeline{border-bottom:3px solid var(--ui-01);margin-bottom:64px}.summit-add-on-block__content,.summit-pricing-block__content{padding:0 40px 40px}#arcticNavItem::before{font-size:12px!important;margin-bottom:8px;margin-top:16px}.snowflake-mega-nav-nav-item-title-wrapper\u003E.snowflake-mega-nav-nav-item-title{line-height:20px!important}.snowflake-card .heading-2.snowflake-title-line{font-size:24px!important;line-height:28px!important}}@media screen and (min-width:992px){.hp-hero__eyebrow a{gap:12px;margin-left:0;margin-right:0}.hp-hero__eyebrow a::after{content:\"\";background-image:url(\"data:image/svg+xml,%3Csvg width='6' height='11' viewBox='0 0 6 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M5.49134 5.79438C5.53447 5.75922 5.56923 5.71489 5.5931 5.66463C5.61697 5.61436 5.62935 5.55941 5.62935 5.50376C5.62935 5.44811 5.61697 5.39316 5.5931 5.34289C5.56923 5.29263 5.53447 5.2483 5.49134 5.21314L.736339 .413136C.522589 .203135 .331339 .203135 .151339 .413136C-.0286612 .623135 -.0586612 .818135 .151339 .994386L4.48634 5.50188L.155089 9.97938C.107068 10.0142 .0679743 10.0598 .0410153 10.1126C.0140562 10.1654 0 10.2238 0 10.2831C0 10.3424 .0140562 10.4009 .0410153 10.4537C.0679743 10.5065 .107068 10.5521 .155089 10.5869C.335089 10.7969 .530089 10.7969 .740089 10.5869L5.49134 5.79438Z' fill='black'/%3E%3C/svg%3E%0A\");display:inline-block;width:12px;height:12px;background-repeat:no-repeat;background-size:auto 100%;background-position:left center}.promo-banner--homepage{padding-top:32px}.homepage-banner-offset-container::after{height:50%}#storyHighlights{padding:2rem}.body-display-v2.snowflake-quote-item-quote-text{line-height:28px!important}.snowflake-hero-system-headline .heading-1-v2{line-height:48px;font-size:54px!important}.sc-overview__webinar-promo-banner .snowflake-content-chip-content{flex-direction:row;justify-content:space-between;align-items:center;width:100%}.sc-overview__webinar-promo-banner .snowflake-content-chip-content .heading-5-v2{flex-direction:row}.sc-overview__webinar-promo-banner .snowflake-content-chip-content .snowflake-title-v2-line:not(:first-child)::before{content:\"|\";margin:0 6px}.sc-cert-banner{padding:40px}.sc-cert-banner\u003E.container\u003E.cmp-container\u003E.aem-container\u003Ediv{margin:0!important;width:50%}.sc-cert-banner\u003E.container\u003E.cmp-container\u003E.aem-container\u003Ediv:first-child{flex-grow:1;padding-right:24px}.sc-cert-banner\u003E.container\u003E.cmp-container\u003E.aem-container\u003Ediv:last-child{max-width:240px}.summit-pricing-block__content\u003E.container\u003E.cmp-container\u003E.aem-container\u003Ediv:last-child{width:70%;padding-left:40px}.summit-pricing-block__content\u003E.container\u003E.cmp-container\u003E.aem-container\u003Ediv:first-child{width:30%}.summit-add-on-block__content\u003E.container\u003E.cmp-container\u003E.aem-container\u003Ediv{width:calc(33.3333% - 24px);margin:0!important;display:flex}.summit-pricing-block__tile .snowflake-content-chip-content{display:flex;flex-direction:row;align-items:center;width:calc(100% - 200px)}.summit-pricing-block__tile .heading-5-v2 span.snowflake-title-v2-line:last-child{position:absolute;top:50%;transform:translate(0,-50%);right:40px}.press-body\u003E.snowflake-flexible-column-container-items\u003Ediv:last-child{position:sticky;top:120px}.snowflake-mega-nav-navigation-title:hover{color:var(--ui-01)}}@media screen and (min-width:1024px){.about-snowflake{padding:28px}.about-snowflake__logo{max-width:none;padding:0 0 0 48px;margin-bottom:0}.hero--press .snowflake-hero-system-layout-70-30 .snowflake-hero-system-content-container{width:85%}.snowflake-hero-system{padding-bottom:var(--spacing-04);padding-top:var(--spacing-07)}.hero--press .display-2-v2{font-size:64px;line-height:56px}.about-snowflake\u003E.container\u003E.cmp-container\u003E.aem-container{flex-direction:row;flex-wrap:nowrap;align-items:center}.about-snowflake\u003E.container\u003E.cmp-container\u003E.aem-container\u003Ediv:last-child{max-width:280px}.about-snowflake\u003E.container\u003E.cmp-container\u003E.aem-container\u003Ediv:first-child{flex-grow:1;margin-bottom:0!important}#polarisNavItem{margin-top:40px}.snowflake-mega-nav-nav-item-description{line-height:18px!important}.snowflake-mega-nav-column-items{gap:var(--spacing-01);grid-gap:var(--spacing-01)}.snowflake-mega-nav-navigation-title{text-transform:none}}div[id*=blueIcon] .snowflake-mega-nav-nav-item-icon__inner{background:var(--ui-01);padding:8px}div[id*=blueIcon]:hover .snowflake-mega-nav-nav-item-icon__inner{background:var(--ui-01)!important}.snowflake-mega-nav-nav-item-icon__inner{border-radius:4px;background:var(--ui-background-05);padding:6px}.snowflake-mega-nav-nav-item:hover .snowflake-mega-nav-nav-item-icon__inner{background:#fff!important}.snowflake-mega-nav-nav-item-icon.snowflake-image-container{height:40px;width:40px}.snowflake-mega-nav-dropdown-footer-links\u003E.snowflake-button-link\u003E.snowflake-button-container{font-size:16px!important;font-family:Texta!important;font-weight:800!important}.snowflake-mega-nav-dropdown-footer-icon.snowflake-image-container{margin-right:8px;width:40px!important;height:40px!important}#viewAllCapabilities a:hover{background:0 0!important}#platformFooter .snowflake-title-v2 .snowflake-title-v2-line:last-child{font-family:Lato;font-size:14px;font-weight:500}#platformFooter .snowflake-mega-nav-dropdown-footer-links{flex-grow:1;justify-content:flex-end;align-items:center}#platformFooter .snowflake-mega-nav-dropdown-footer-content{flex-direction:row}#offset,#open-source{flex-direction:column;border-top:1px solid #ccc}#offset::before,#open-source::before{content:\" \";display:block;width:100%;font-weight:800!important;font-size:12px!important;line-height:14px;text-transform:uppercase;white-space:nowrap;margin-top:16px;margin-bottom:8px}#open-source::before{content:\"Open Source Technologies\"}.snowflake-mega-nav-dropdown-menu-close-button{margin:var(--spacing-04) 0 var(--spacing-03)}.snowflake-mega-nav-column{gap:var(--spacing-02)!important}.snowflake-mega-nav-nav-item\u003Ea{width:100%;margin-left:-8px;padding:8px;border-radius:4px}.snowflake-mega-nav-nav-item\u003Ea:hover{background-color:var(--ui-background-05)}.snowflake-mega-nav-nav-item-description{margin-top:2px;display:block}#promobanner_overflowBottomDarkBlue::before{content:'';display:block;position:absolute;bottom:0;left:0;width:100%;height:50%;background:#212d35}#promobanner_overflowTopDarkBlue::before{content:'';display:block;position:absolute;top:0;left:0;width:100%;height:50%;background:#212d35}.overview-card\u003Ediv{box-shadow:0 0 14px 0 rgba(0,0,0,.10);background-color:#fff;border-radius:16px;overflow:hidden}.overview-card-text{padding:40px}.overview-card-image img{border-radius:0 !important}.overview-card-text h3,.overview-card-text .heading-3-v2{font-size:18px;line-height:1.1;margin-top:0}","isGSAPEnabled":false,":type":"snowflake-site/components/markup-editor"},"mega_header":{"additionalClasses":"heap-nav-header","layout":"SIMPLE","id":"container-27e1573197","appliedCssClassNames":"snowflake-header-container white",":itemsOrder":["nav_mega","languagenavigation","button_1177328691","button","button_288358396"],":items":{"nav_mega":{"activeItem":"item_1719963657751_c_663444255","id":"tabs-5392d64989",":type":"snowflake-site/components/nav/nav-mega",":itemsOrder":["item_1719963657751_c_663444255","nav_dropdown_menu_2","item_1719963657751_c","item_1719961362824","item_1719963657751","item_1718247180324"],":items":{"item_1719963657751_c_663444255":{"id":"nav-dropdown-menu-e6b152fdaa","enableDropdown":true,"nav_column_container":{"layout":"SIMPLE","id":"container-723fc5fec0",":itemsOrder":["nav_column","nav_column_copy_copy","nav_column_692142673","nav_column_782221091"],":items":{"nav_column":{"additionalClasses":"nav-platform-sidebar","numberOfSubColumns":"one-column","minWidth":"230","maxWidth":"350","layout":"SIMPLE","id":"container-bd4e4568f0",":itemsOrder":["nav_item_copy_copy_2_793631646","nav_item","nav_item_copy_copy_2_836345186","nav_item_copy_copy_2","nav_item_copy_copy_2_1314771042","nav_item_copy_144634","nav_item_copy_144634_2013333117"],":items":{"nav_item_copy_copy_2_793631646":{"id":"nav-item-a1035c708c","additionalClasses":"nav-item__platform-parent is-platform","linkDescription":"Develop AI products, apps and more on a fully managed platform that securely connects businesses globally — across any type or scale of data.","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/product/platform/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"The Snowflake Platform"},":type":"snowflake-site/components/nav/nav-item"},"nav_item":{"id":"nav-item-e3b02a4d28","additionalClasses":"nav-item nav-item--si is-si","linkDescription":"All your knowledge. One trusted enterprise agent.","flag":"NOW GA","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/product/snowflake-cowork/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Snowflake CoWork"},":type":"snowflake-site/components/nav/nav-item"},"nav_item_copy_copy_2_836345186":{"id":"nav-item-3fecc5e360","additionalClasses":"blue-icon is-analytics","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/product/analytics/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Analytics"},":type":"snowflake-site/components/nav/nav-item"},"nav_item_copy_copy_2":{"id":"nav-item-9c0a5ff2dc","additionalClasses":"blue-icon is-ai","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/product/ai/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"AI"},":type":"snowflake-site/components/nav/nav-item"},"nav_item_copy_copy_2_1314771042":{"id":"nav-item-6a13b49e7f","additionalClasses":"blue-icon is-data-eng","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/product/data-engineering/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Data Engineering"},":type":"snowflake-site/components/nav/nav-item"},"nav_item_copy_144634":{"id":"nav-item-8e9558a5d7","additionalClasses":"blue-icon is-apps-collab","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/product/applications-and-collaboration/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Applications & Collaboration"},":type":"snowflake-site/components/nav/nav-item"},"nav_item_copy_144634_2013333117":{"id":"nav-item-4e3c021671","additionalClasses":"blue-icon is-transactions","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/product/transactions/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Transactions"},":type":"snowflake-site/components/nav/nav-item"}},":type":"snowflake-site/components/nav/nav-column"},"nav_column_copy_copy":{"additionalClasses":"meganav-platform-features","navColumnTitle":"Featured Capabilities","numberOfSubColumns":"one-column","layout":"SIMPLE","id":"container-a8690d083c",":itemsOrder":["nav_item_copy_212715","nav_item","nav_item_copy_660590635","nav_item_copy_660590","nav_item_copy_660590_983061516"],":items":{"nav_item_copy_212715":{"id":"nav-item-9c8fcd6f73","additionalClasses":"is-cortex-code","linkDescription":"Snowflake-native AI coding agent ","flag":"New","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/product/snowflake-coco/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Snowflake CoCo"},":type":"snowflake-site/components/nav/nav-item"},"nav_item":{"id":"nav-item-bf30dd4ab6","additionalClasses":"is-cortex-ai","linkDescription":"Instant access to industry-leading LLMs","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"https://www.snowflake.com/en/product/features/cortex/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_EXTERNAL",":type":"snowflake-site/components/button","text":"Cortex AI"},":type":"snowflake-site/components/nav/nav-item"},"nav_item_copy_660590635":{"id":"nav-item-a5b4dbd26a","additionalClasses":"is-marketplace","linkDescription":"Third-party data sources connected within minutes","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"https://www.snowflake.com/en/product/features/marketplace/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_EXTERNAL",":type":"snowflake-site/components/button","text":"Marketplace"},":type":"snowflake-site/components/nav/nav-item"},"nav_item_copy_660590":{"id":"nav-item-c094fe4c0c","additionalClasses":"is-snowpark","linkDescription":"Libraries and code execution environments that run Python and more","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"https://www.snowflake.com/en/product/features/snowpark/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_EXTERNAL",":type":"snowflake-site/components/button","text":"Snowpark"},":type":"snowflake-site/components/nav/nav-item"},"nav_item_copy_660590_983061516":{"id":"nav-item-ee637f3c20","additionalClasses":"is-streamlit","linkDescription":"Framework for transforming Python scripts into web apps","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"https://www.snowflake.com/en/product/features/streamlit-in-snowflake/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_EXTERNAL",":type":"snowflake-site/components/button","text":"Streamlit"},":type":"snowflake-site/components/nav/nav-item"}},":type":"snowflake-site/components/nav/nav-column"},"nav_column_692142673":{"navColumnTitle":" ","numberOfSubColumns":"one-column","layout":"SIMPLE","id":"container-595a24c544",":itemsOrder":["nav_item_copy_660590_1739526127","nav_item_copy_185565","nav_item_copy_212715","nav_item_copy_660590","nav_item_258535199"],":items":{"nav_item_copy_660590_1739526127":{"id":"nav-item-cebb91b171","additionalClasses":"is-postgres","linkDescription":"Fully compatible open source Postgres running on Snowflake","flag":"Now GA","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/product/features/postgres/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Postgres"},":type":"snowflake-site/components/nav/nav-item"},"nav_item_copy_185565":{"id":"nav-item-ba4f1c7c18","additionalClasses":"is-dcr","linkDescription":"Streamlined model development and MLOps from a centralized UI","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/product/features/end-to-end-ml-workflows/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Snowflake ML"},":type":"snowflake-site/components/nav/nav-item"},"nav_item_copy_212715":{"id":"nav-item-b513a3c06d","additionalClasses":"is-openflow","linkDescription":"Effortless data movement for integrations","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"https://www.snowflake.com/en/product/features/openflow/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_EXTERNAL",":type":"snowflake-site/components/button","text":"Openflow"},":type":"snowflake-site/components/nav/nav-item"},"nav_item_copy_660590":{"id":"nav-item-ff673fb1d0","additionalClasses":"is-notebooks","linkDescription":"Interactive dev environment for data and AI teams","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"https://www.snowflake.com/en/product/features/notebooks/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_EXTERNAL",":type":"snowflake-site/components/button","text":"Notebooks"},":type":"snowflake-site/components/nav/nav-item"},"nav_item_258535199":{"id":"nav-item-bf9863a6d9","propertiesId":"workload-nav-1","additionalClasses":"is-native-apps","linkDescription":"End-to-end, Snowflake-native app creation and distribution","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"https://www.snowflake.com/en/product/features/native-apps/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_EXTERNAL",":type":"snowflake-site/components/button","text":"Native Apps"},":type":"snowflake-site/components/nav/nav-item"}},":type":"snowflake-site/components/nav/nav-column"},"nav_column_782221091":{"navColumnTitle":" ","numberOfSubColumns":"one-column","layout":"SIMPLE","id":"container-416b4b5ac8",":itemsOrder":["nav_item_copy","nav_item_copy_660590_1293798742","nav_item_511717659_c","nav_item_511717659_c_1443811525","nav_item_511717659_c_1006104884"],":items":{"nav_item_copy":{"id":"nav-item-ec9582b756","additionalClasses":"is-light-gray-icon is-horizon-catalog","linkDescription":"Universal AI catalog","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/product/features/horizon/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Horizon Catalog"},":type":"snowflake-site/components/nav/nav-item"},"nav_item_copy_660590_1293798742":{"id":"nav-item-a9303a7b91","additionalClasses":"is-snowflake-ml","linkDescription":"Governed context layer that keeps AI, BI and data apps working from one truth","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/product/features/horizon-context/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Horizon Context"},":type":"snowflake-site/components/nav/nav-item"},"nav_item_511717659_c":{"id":"nav-item-5a29199b7c","additionalClasses":"is-unistore","linkDescription":"Unify transactional and analytical workloads in Snowflake for enhanced simplicity","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/product/features/unistore/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Unistore"},":type":"snowflake-site/components/nav/nav-item"},"nav_item_511717659_c_1443811525":{"id":"nav-item-4c0a55786d","additionalClasses":"is-observe","linkDescription":"AI-powered observability for faster production troubleshooting","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/product/observe/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Observe"},":type":"snowflake-site/components/nav/nav-item"},"nav_item_511717659_c_1006104884":{"id":"nav-item-1cf74aeb8f","additionalClasses":"is-observe","linkDescription":"Use any engine on a single governed data copy","flag":"Now GA","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/product/use-cases/interoperable-lakehouse/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Interoperable Lakehouse"},":type":"snowflake-site/components/nav/nav-item"}},":type":"snowflake-site/components/nav/nav-column"}},":type":"snowflake-site/components/nav/nav-column/nav-column-container"},":type":"snowflake-site/components/nav/nav-dropdown-menu","cq:panelTitle":"Product"},"nav_dropdown_menu_2":{"id":"nav-dropdown-menu-18941c48d7","enableDropdown":true,"nav_column_container":{"layout":"SIMPLE","id":"container-d21f6c56b8",":itemsOrder":["nav_column","nav_column_copy","nav_column_833417450","nav_column_copy_copy"],":items":{"nav_column":{"navColumnTitle":"INDUSTRIES","numberOfSubColumns":"one-column","minWidth":"280","layout":"SIMPLE","id":"container-ffa1493d4c","appliedCssClassNames":"snowflake-responsive-container-inner-padding-extra-small",":itemsOrder":["nav_item_copy_361384_2056203141","nav_item","nav_item_copy","nav_item_copy_1970515619","nav_item_copy_1533429516","nav_item_copy_1444458226","nav_item_copy_1149488919","nav_item_copy_57417040","nav_item_copy_361384674","nav_item_copy_361384"],":items":{"nav_item_copy_361384_2056203141":{"id":"nav-item-cc4e8da618","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/solutions/industries/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"All Industries"},":type":"snowflake-site/components/nav/nav-item"},"nav_item":{"id":"nav-item-4b819b6b4d","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/solutions/industries/advertising-media-entertainment/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Advertising, Media & Entertainment"},":type":"snowflake-site/components/nav/nav-item"},"nav_item_copy":{"id":"nav-item-e9bc0aa616","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/solutions/industries/financial-services/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Financial Services"},":type":"snowflake-site/components/nav/nav-item"},"nav_item_copy_1970515619":{"id":"nav-item-17bd0e97c0","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/solutions/industries/healthcare-and-life-sciences/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Healthcare & Life Sciences"},":type":"snowflake-site/components/nav/nav-item"},"nav_item_copy_1533429516":{"id":"nav-item-45ee2e90d4","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/solutions/industries/manufacturing/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Manufacturing"},":type":"snowflake-site/components/nav/nav-item"},"nav_item_copy_1444458226":{"id":"nav-item-08e0ccd663","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/solutions/industries/public-sector/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Public Sector"},":type":"snowflake-site/components/nav/nav-item"},"nav_item_copy_1149488919":{"id":"nav-item-b1eb33035b","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/solutions/industries/retail-consumer-goods/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Retail & Consumer Goods"},":type":"snowflake-site/components/nav/nav-item"},"nav_item_copy_57417040":{"id":"nav-item-b5994a112c","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/solutions/industries/technology/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Technology"},":type":"snowflake-site/components/nav/nav-item"},"nav_item_copy_361384674":{"id":"nav-item-b82c51d254","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/solutions/industries/telecom/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Telecom"},":type":"snowflake-site/components/nav/nav-item"},"nav_item_copy_361384":{"id":"nav-item-63f1d953c5","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/solutions/industries/travel-hospitality/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Travel & Hospitality"},":type":"snowflake-site/components/nav/nav-item"}},":type":"snowflake-site/components/nav/nav-column"},"nav_column_copy":{"navColumnTitle":"DEPARTMENTS","numberOfSubColumns":"one-column","minWidth":"160","layout":"SIMPLE","id":"container-6d74134ecd",":itemsOrder":["nav_item","nav_item_copy","nav_item_copy_1970515619"],":items":{"nav_item":{"id":"nav-item-063eb8c055","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"https://www.snowflake.com/en/solutions/departments/finance/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_EXTERNAL",":type":"snowflake-site/components/button","text":"Finance"},":type":"snowflake-site/components/nav/nav-item"},"nav_item_copy":{"id":"nav-item-d3cede41c0","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"https://www.snowflake.com/en/solutions/departments/information-technology/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_EXTERNAL",":type":"snowflake-site/components/button","text":"IT"},":type":"snowflake-site/components/nav/nav-item"},"nav_item_copy_1970515619":{"id":"nav-item-5b646b5cec","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"https://www.snowflake.com/en/solutions/departments/marketing/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_EXTERNAL",":type":"snowflake-site/components/button","text":"Marketing"},":type":"snowflake-site/components/nav/nav-item"}},":type":"snowflake-site/components/nav/nav-column"},"nav_column_833417450":{"navColumnTitle":"Enablement Solutions","numberOfSubColumns":"one-column","layout":"SIMPLE","id":"container-04b8d7d11b",":itemsOrder":["nav_item_copy_107772","nav_item_copy_copy"],":items":{"nav_item_copy_107772":{"id":"nav-item-88d8e22b23","linkDescription":"Confident migration to a unified platform","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/migrate-to-the-cloud/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Migrate to the AI Data Cloud"},"icon":{"id":"icon","lazyEnabled":true,"alt":"Cloud icon","src":"https://www.snowflake.com/content/experience-fragments/snowflake-site/language-masters/en/site/mega-nav-header/master/_jcr_content/root/mega_header/nav_mega/nav_dropdown_menu_2/nav_column_container/nav_column_833417450/nav_item_copy_107772/icon.coreimg.svg/1723828484100/nav-icon-cloud.svg","height":"64","width":"64",":type":"snowflake-site/components/image"},":type":"snowflake-site/components/nav/nav-item"},"nav_item_copy_copy":{"id":"nav-item-468711c287","linkDescription":"Snowflake experts to help you accelerate and achieve business goals","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/solutions/services-delivery/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Services Delivery"},"icon":{"id":"icon","lazyEnabled":true,"alt":"Migrate icon","src":"https://www.snowflake.com/content/experience-fragments/snowflake-site/language-masters/en/site/mega-nav-header/master/_jcr_content/root/mega_header/nav_mega/nav_dropdown_menu_2/nav_column_container/nav_column_833417450/nav_item_copy_copy/icon.coreimg.svg/1768354429188/nav-icon--migrate.svg","height":"64","width":"64",":type":"snowflake-site/components/image"},":type":"snowflake-site/components/nav/nav-item"}},":type":"snowflake-site/components/nav/nav-column"},"nav_column_copy_copy":{"navColumnTitle":"PARTNER SOLUTIONS","numberOfSubColumns":"one-column","layout":"SIMPLE","id":"container-354a29785e",":itemsOrder":["nav_item","nav_item_copy","nav_item_copy_1970515619"],":items":{"nav_item":{"id":"nav-item-b6d1e6049f","linkDescription":"Programs with product, solutions and cloud partners","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/why-snowflake/partners/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Snowflake Partner Network"},"icon":{"id":"icon","lazyEnabled":true,"alt":"Partner Network icon","src":"https://www.snowflake.com/content/experience-fragments/snowflake-site/language-masters/en/site/mega-nav-header/master/_jcr_content/root/mega_header/nav_mega/nav_dropdown_menu_2/nav_column_container/nav_column_copy_copy/nav_item/icon.coreimg.svg/1723828498700/nav-icon--partner-network.svg","height":"64","width":"64",":type":"snowflake-site/components/image"},":type":"snowflake-site/components/nav/nav-item"},"nav_item_copy":{"id":"nav-item-aebcf26ad7","linkDescription":"Partners, apps and solutions for enhanced deployment","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/why-snowflake/partners/all-partners/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Partner Finder"},"icon":{"id":"icon","lazyEnabled":true,"alt":"Partner Finder icon","src":"https://www.snowflake.com/content/experience-fragments/snowflake-site/language-masters/en/site/mega-nav-header/master/_jcr_content/root/mega_header/nav_mega/nav_dropdown_menu_2/nav_column_container/nav_column_copy_copy/nav_item_copy/icon.coreimg.svg/1726173927645/nav-icon--partner-finder.svg","height":"64","width":"64",":type":"snowflake-site/components/image"},":type":"snowflake-site/components/nav/nav-item"},"nav_item_copy_1970515619":{"id":"nav-item-0f278e9d01","linkDescription":"Live and virtual events","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/why-snowflake/partners/event-partnership-opportunities/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Event Partnership Opportunities"},"icon":{"id":"icon","lazyEnabled":true,"alt":"Calendar icon","src":"https://www.snowflake.com/content/experience-fragments/snowflake-site/language-masters/en/site/mega-nav-header/master/_jcr_content/root/mega_header/nav_mega/nav_dropdown_menu_2/nav_column_container/nav_column_copy_copy/nav_item_copy_1970515619/icon.coreimg.svg/1726173935655/nav-icon--events.svg","height":"64","width":"64",":type":"snowflake-site/components/image"},":type":"snowflake-site/components/nav/nav-item"}},":type":"snowflake-site/components/nav/nav-column"}},":type":"snowflake-site/components/nav/nav-column/nav-column-container"},":type":"snowflake-site/components/nav/nav-dropdown-menu","cq:panelTitle":"Solutions"},"item_1719963657751_c":{"id":"nav-dropdown-menu-a6b2188845","enableDropdown":true,"nav_column_container":{"layout":"SIMPLE","id":"container-91bb05e538",":itemsOrder":["nav_column","nav_column_copy_copy"],":items":{"nav_column":{"numberOfSubColumns":"one-column","minWidth":"230","maxWidth":"350","layout":"SIMPLE","id":"container-d6d83aac2c",":itemsOrder":["nav_item_copy_copy_2_793631646"],":items":{"nav_item_copy_copy_2_793631646":{"id":"nav-item-8dc8f5b167","additionalClasses":"nav-item__platform-parent-why-sf","linkDescription":"Collaborate locally and globally to reveal new insights, create previously unforeseen business opportunities, and identify your customers with seamless experiences.","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/why-snowflake/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Why Snowflake"},":type":"snowflake-site/components/nav/nav-item"}},":type":"snowflake-site/components/nav/nav-column"},"nav_column_copy_copy":{"additionalClasses":"meganav-platform-features","numberOfSubColumns":"two-columns","maxWidth":"1200","layout":"SIMPLE","id":"container-fef0a42bb0",":itemsOrder":["nav_item","nav_item_258535199","nav_item_copy_185565","nav_item_copy","nav_item_copy_185565_903555964"],":items":{"nav_item":{"id":"nav-item-a78d118acd","propertiesId":"testID","linkDescription":"Case studies and videos showcasing how global organizations use Snowflake","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/customers/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Customers"},"icon":{"id":"icon","lazyEnabled":true,"alt":"Customer icon","src":"https://www.snowflake.com/content/experience-fragments/snowflake-site/language-masters/en/site/mega-nav-header/master/_jcr_content/root/mega_header/nav_mega/item_1719963657751_c/nav_column_container/nav_column_copy_copy/nav_item/icon.coreimg.svg/1739839279367/nav-icon--partner-network.svg","height":"64","width":"64",":type":"snowflake-site/components/image"},":type":"snowflake-site/components/nav/nav-item"},"nav_item_258535199":{"id":"nav-item-15c867dfd3","propertiesId":"workload-nav-1","linkDescription":"Learn how to connect, share and integrate the data and apps on the AI Data Cloud","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/why-snowflake/what-is-data-cloud/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"The AI Data Cloud Explained"},"icon":{"id":"icon","lazyEnabled":true,"alt":"Cloud icon","src":"https://www.snowflake.com/content/experience-fragments/snowflake-site/language-masters/en/site/mega-nav-header/master/_jcr_content/root/mega_header/nav_mega/item_1719963657751_c/nav_column_container/nav_column_copy_copy/nav_item_258535199/icon.coreimg.svg/1739840490955/nav-icon-cloud.svg","height":"64","width":"64",":type":"snowflake-site/components/image"},":type":"snowflake-site/components/nav/nav-item"},"nav_item_copy_185565":{"id":"nav-item-6989b46968","linkDescription":"Comprehensive security through built-in features, robust cloud infrastructure protection, and more","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/why-snowflake/snowflake-security-hub/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Security Hub"},"icon":{"id":"icon","lazyEnabled":true,"alt":"User with security lock icon","src":"https://www.snowflake.com/content/experience-fragments/snowflake-site/language-masters/en/site/mega-nav-header/master/_jcr_content/root/mega_header/nav_mega/item_1719963657751_c/nav_column_container/nav_column_copy_copy/nav_item_copy_185565/icon.coreimg.svg/1758909528089/user-security-admins-ciso-icon.svg","height":"64","width":"64",":type":"snowflake-site/components/image"},":type":"snowflake-site/components/nav/nav-item"},"nav_item_copy":{"id":"nav-item-995a942dde","additionalClasses":"is-light-gray-icon","linkDescription":"Maximize economic value through minimizing TCO and continuously optimizing price for performance","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/pricing-options/cost-and-performance-optimization/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Cost and Performance Optimization"},"icon":{"id":"icon","lazyEnabled":true,"alt":"Cost Optimization icon","src":"https://www.snowflake.com/content/experience-fragments/snowflake-site/language-masters/en/site/mega-nav-header/master/_jcr_content/root/mega_header/nav_mega/item_1719963657751_c/nav_column_container/nav_column_copy_copy/nav_item_copy/icon.coreimg.svg/1758909542267/nav-icon-cost-optimization-performance.svg","height":"64","width":"64",":type":"snowflake-site/components/image"},":type":"snowflake-site/components/nav/nav-item"},"nav_item_copy_185565_903555964":{"id":"nav-item-c4ca2a2fa3","linkDescription":"Startups building applications in the AI Data Cloud","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/why-snowflake/startup-program/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Snowflake for Startups"},"icon":{"id":"icon","lazyEnabled":true,"alt":"Launch","src":"https://www.snowflake.com/content/experience-fragments/snowflake-site/language-masters/en/site/mega-nav-header/master/_jcr_content/root/mega_header/nav_mega/item_1719963657751_c/nav_column_container/nav_column_copy_copy/nav_item_copy_185565_903555964/icon.coreimg.svg/1758732224323/launch.svg","height":"64","width":"65",":type":"snowflake-site/components/image"},":type":"snowflake-site/components/nav/nav-item"}},":type":"snowflake-site/components/nav/nav-column"}},":type":"snowflake-site/components/nav/nav-column/nav-column-container"},":type":"snowflake-site/components/nav/nav-dropdown-menu","cq:panelTitle":"Why Snowflake"},"item_1719961362824":{"id":"nav-dropdown-menu-aa543a6dee","enableDropdown":true,"nav_column_container":{"layout":"SIMPLE","id":"container-3f5442ca9b",":itemsOrder":["nav_column_copy","nav_column_44600420__826130542"],":items":{"nav_column_copy":{"navColumnTitle":"Connect","numberOfSubColumns":"one-column","minWidth":"124","layout":"SIMPLE","id":"container-da7b77c20f",":itemsOrder":["nav_item","nav_item_180298689","nav_item_1639361946","nav_item_680912746"],":items":{"nav_item":{"id":"nav-item-a47b3e508c","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/blog/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Blog"},":type":"snowflake-site/components/nav/nav-item"},"nav_item_180298689":{"id":"nav-item-21f6204062","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/events/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Events"},":type":"snowflake-site/components/nav/nav-item"},"nav_item_1639361946":{"id":"nav-item-2fcb93d128","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"https://www.snowflake.com/en/support/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_EXTERNAL",":type":"snowflake-site/components/button","text":"Support"},":type":"snowflake-site/components/nav/nav-item"},"nav_item_680912746":{"id":"nav-item-5110086c6c","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"https://www.snowflake.com/en/contact/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_EXTERNAL",":type":"snowflake-site/components/button","text":"Contact us"},":type":"snowflake-site/components/nav/nav-item"}},":type":"snowflake-site/components/nav/nav-column"},"nav_column_44600420__826130542":{"navColumnTitle":"Learn","numberOfSubColumns":"two-columns","layout":"SIMPLE","id":"container-554bddef4c",":itemsOrder":["nav_item_copy","nav_item","nav_item_copy_144634_1984107859","nav_item_copy_1438098918","nav_item_copy_143809","nav_item_copy_333890638","nav_item_copy_189945","nav_item_copy_333890","nav_item_copy_333890_930852828"],":items":{"nav_item_copy":{"id":"nav-item-b792e9178c","linkDescription":"Ebooks, videos, white papers and more","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/resources/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Resource Library"},"icon":{"id":"icon","lazyEnabled":true,"alt":"Notebooks icon","src":"https://www.snowflake.com/content/experience-fragments/snowflake-site/language-masters/en/site/mega-nav-header/master/_jcr_content/root/mega_header/nav_mega/item_1719961362824/nav_column_container/nav_column_44600420__826130542/nav_item_copy/icon.coreimg.svg/1736877128196/nav-icon--notebooks.svg","height":"64","width":"64",":type":"snowflake-site/components/image"},":type":"snowflake-site/components/nav/nav-item"},"nav_item":{"id":"nav-item-5ef163edca","linkDescription":"Overview of Snowflake's educational offerings","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"https://www.snowflake.com/en/resources/learn/training/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_EXTERNAL",":type":"snowflake-site/components/button","text":"Training"},"icon":{"id":"icon","lazyEnabled":true,"alt":"Training icon","src":"https://www.snowflake.com/content/experience-fragments/snowflake-site/language-masters/en/site/mega-nav-header/master/_jcr_content/root/mega_header/nav_mega/item_1719961362824/nav_column_container/nav_column_44600420__826130542/nav_item/icon.coreimg.svg/1722385094416/nav-icon--training.svg","height":"64","width":"64",":type":"snowflake-site/components/image"},":type":"snowflake-site/components/nav/nav-item"},"nav_item_copy_144634_1984107859":{"id":"nav-item-bacbdd320e","linkDescription":"Expert-led discussions and demos across industries and use cases","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/webinars/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Webinars"},"icon":{"id":"icon","lazyEnabled":true,"alt":"Webinars icon","src":"https://www.snowflake.com/content/experience-fragments/snowflake-site/language-masters/en/site/mega-nav-header/master/_jcr_content/root/mega_header/nav_mega/item_1719961362824/nav_column_container/nav_column_44600420__826130542/nav_item_copy_144634_1984107859/icon.coreimg.svg/1759424691990/nav-icon--webinars.svg","height":"64","width":"64",":type":"snowflake-site/components/image"},":type":"snowflake-site/components/nav/nav-item"},"nav_item_copy_1438098918":{"id":"nav-item-d2765e2f7a","linkDescription":"Snowflake's technical industry professional certifications","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"https://www.snowflake.com/en/resources/learn/certifications/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_EXTERNAL",":type":"snowflake-site/components/button","text":"Certifications"},"icon":{"id":"icon","lazyEnabled":true,"alt":"Certification icon","src":"https://www.snowflake.com/content/experience-fragments/snowflake-site/language-masters/en/site/mega-nav-header/master/_jcr_content/root/mega_header/nav_mega/item_1719961362824/nav_column_container/nav_column_44600420__826130542/nav_item_copy_1438098918/icon.coreimg.svg/1722382780833/nav-icon--cert.svg","height":"64","width":"64",":type":"snowflake-site/components/image"},":type":"snowflake-site/components/nav/nav-item"},"nav_item_copy_143809":{"id":"nav-item-d52ac91251","linkDescription":"Weekly product demos showcasing key features and live Q&A ","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/webinars/demo/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Live Demos"},"icon":{"id":"icon","lazyEnabled":true,"alt":"Live Demo icon","src":"https://www.snowflake.com/content/experience-fragments/snowflake-site/language-masters/en/site/mega-nav-header/master/_jcr_content/root/mega_header/nav_mega/item_1719961362824/nav_column_container/nav_column_44600420__826130542/nav_item_copy_143809/icon.coreimg.svg/1759424359543/nav-icon--live-demo.svg","height":"64","width":"64",":type":"snowflake-site/components/image"},":type":"snowflake-site/components/nav/nav-item"},"nav_item_copy_333890638":{"id":"nav-item-512029048d","linkDescription":"Training courses for all levels, on-demand or instructor-led","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"attributes":{"target":"_blank"},"url":"https://learn.snowflake.com/en/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_EXTERNAL",":type":"snowflake-site/components/button","text":"Snowflake University"},"icon":{"id":"icon","lazyEnabled":true,"alt":"Education icon","src":"https://www.snowflake.com/content/experience-fragments/snowflake-site/language-masters/en/site/mega-nav-header/master/_jcr_content/root/mega_header/nav_mega/item_1719961362824/nav_column_container/nav_column_44600420__826130542/nav_item_copy_333890638/icon.coreimg.svg/1722382769808/nav-icon--education.svg","height":"64","width":"64",":type":"snowflake-site/components/image"},":type":"snowflake-site/components/nav/nav-item"},"nav_item_copy_189945":{"id":"nav-item-44324c1c22","linkDescription":"Instructor-led virtual workshops for exploring key Snowflake features","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/webinars/virtual-hands-on-lab/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Hands-On Labs"},"icon":{"id":"icon","lazyEnabled":true,"alt":"Hands-on Labs icon","src":"https://www.snowflake.com/content/experience-fragments/snowflake-site/language-masters/en/site/mega-nav-header/master/_jcr_content/root/mega_header/nav_mega/item_1719961362824/nav_column_container/nav_column_44600420__826130542/nav_item_copy_189945/icon.coreimg.svg/1759388182903/nav-icon--labs.svg","height":"64","width":"64",":type":"snowflake-site/components/image"},":type":"snowflake-site/components/nav/nav-item"},"nav_item_copy_333890":{"id":"nav-item-aa5bafa7be","linkDescription":"Academic papers written by Snowflake researchers","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/resources/publications/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Snowflake Research Publications"},"icon":{"id":"icon","lazyEnabled":true,"alt":"Copy","src":"https://www.snowflake.com/content/experience-fragments/snowflake-site/language-masters/en/site/mega-nav-header/master/_jcr_content/root/mega_header/nav_mega/item_1719961362824/nav_column_container/nav_column_44600420__826130542/nav_item_copy_333890/icon.coreimg.svg/1756326371387/copy.svg","height":"64","width":"65",":type":"snowflake-site/components/image"},":type":"snowflake-site/components/nav/nav-item"},"nav_item_copy_333890_930852828":{"id":"nav-item-4dbfb9a970","linkDescription":"Informative articles about AI and data topics","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/fundamentals/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Fundamentals"},"icon":{"id":"icon","lazyEnabled":true,"alt":"Document with list","src":"https://www.snowflake.com/content/experience-fragments/snowflake-site/language-masters/en/site/mega-nav-header/master/_jcr_content/root/mega_header/nav_mega/item_1719961362824/nav_column_container/nav_column_44600420__826130542/nav_item_copy_333890_930852828/icon.coreimg.svg/1756853637155/data-sheet.svg","height":"64","width":"65",":type":"snowflake-site/components/image"},":type":"snowflake-site/components/nav/nav-item"}},":type":"snowflake-site/components/nav/nav-column"}},":type":"snowflake-site/components/nav/nav-column/nav-column-container"},"nav_promo_section":{"id":"nav-promo-section-07827503b2","experience_fragment_1":{"id":"experiencefragment-4ad46fd45e","localizedFragmentVariationPath":"/content/experience-fragments/snowflake-site/language-masters/en/site/nav-promo-card/master1/jcr:content","configured":true,":itemsOrder":["root","cq:metadata"],":items":{"root":{"gridClassNames":"aem-Grid aem-Grid--12 aem-Grid--default--12","columnClassNames":{"nav_promo_card":"aem-GridColumn aem-GridColumn--default--12"},"layout":"RESPONSIVE_GRID","columnCount":12,"id":"container-60153c5e18",":itemsOrder":["nav_promo_card"],":items":{"nav_promo_card":{"id":"nav-promo-card-383269aa30","openInNewWindow":true,"layout":"horizontal","headline":"The Modern Marketing Data Stack 5th Edition","description":"AI agents are changing the marketing stack. See how to govern the shift. ","linkTitle":"Learn more","linkUrl":"/en/the-modern-marketing-data-stack-report/","image":{"id":"image","lazyEnabled":true,"alt":"MMDS report 5th edition","src":"https://www.snowflake.com/adobe/dynamicmedia/deliver/dm-aid--b3030d24-fd50-45e6-bfe6-9520d3eb46d8/web-inside-the-mmds-5th-960x540.png?quality=85&preferwebp=true","height":"540","width":"960",":type":"snowflake-site/components/image"},":type":"snowflake-site/components/nav/nav-promo-card"}},":type":"snowflake-site/components/container"},"cq:metadata":{":type":"nt:unstructured"}},":type":"snowflake-site/components/experiencefragment","classNames":"aem-xf"},"experience_fragment_2":{"id":"experiencefragment-ec3a95e41b","localizedFragmentVariationPath":"/content/experience-fragments/snowflake-site/language-masters/en/site/nav-promo-card/navigation-promo-card-2/jcr:content","configured":true,":itemsOrder":["root","cq:metadata"],":items":{"root":{"gridClassNames":"aem-Grid aem-Grid--12 aem-Grid--default--12","columnClassNames":{"nav_promo_card":"aem-GridColumn aem-GridColumn--default--12"},"layout":"RESPONSIVE_GRID","columnCount":12,"id":"container-29f918b0d9",":itemsOrder":["nav_promo_card"],":items":{"nav_promo_card":{"id":"nav-promo-card-4df9ae3615","openInNewWindow":true,"layout":"horizontal","headline":"The ROI of Gen AI and Agents 2026","description":"Discover how 92% of early adopters are achieving positive ROI with gen AI.","linkTitle":"Learn More","linkUrl":"/en/lp/radical-roi-generative-ai/","image":{"id":"image","lazyEnabled":true,"alt":"roi of gen ai and agents","src":"https://www.snowflake.com/adobe/dynamicmedia/deliver/dm-aid--0c15edae-1a97-4739-8b16-c7f3941a6d9e/web-roi-of-gen-ai-and-agents-2026-r02-960x540.png?quality=85&preferwebp=true","height":"540","width":"960",":type":"snowflake-site/components/image"},":type":"snowflake-site/components/nav/nav-promo-card"}},":type":"snowflake-site/components/container"},"cq:metadata":{":type":"nt:unstructured"}},":type":"snowflake-site/components/experiencefragment","classNames":"aem-xf"},"experience_fragment_3":{"id":"experiencefragment-15b4f2a9dd","localizedFragmentVariationPath":"/content/experience-fragments/snowflake-site/language-masters/en/site/nav-promo-card/navigation-promo-card-3/jcr:content","configured":true,":itemsOrder":["root","cq:metadata"],":items":{"root":{"gridClassNames":"aem-Grid aem-Grid--12 aem-Grid--default--12","columnClassNames":{"nav_promo_card":"aem-GridColumn aem-GridColumn--default--12"},"layout":"RESPONSIVE_GRID","columnCount":12,"id":"container-c68095be42",":itemsOrder":["nav_promo_card"],":items":{"nav_promo_card":{"id":"nav-promo-card-1999ff198f","openInNewWindow":true,"layout":"horizontal","headline":"Startup 2026: AI Agents Mean Business","description":"Venture leaders weigh in on agentic AI. ","linkTitle":"Learn more","linkUrl":"/en/lp/building-startup-ai-age/","image":{"id":"image","lazyEnabled":true,"alt":"alt","src":"https://www.snowflake.com/adobe/dynamicmedia/deliver/dm-aid--a320b404-dca1-4477-b033-c79708538657/web-startup-2026-960x540.png?quality=85&preferwebp=true","height":"540","width":"960",":type":"snowflake-site/components/image"},":type":"snowflake-site/components/nav/nav-promo-card"}},":type":"snowflake-site/components/container"},"cq:metadata":{":type":"nt:unstructured"}},":type":"snowflake-site/components/experiencefragment","classNames":"aem-xf"},":type":"snowflake-site/components/nav/nav-promo-section"},":type":"snowflake-site/components/nav/nav-dropdown-menu","cq:panelTitle":"Resources"},"item_1719963657751":{"id":"nav-dropdown-menu-cec2d2f552","enableDropdown":true,"nav_column_container":{"layout":"SIMPLE","id":"container-2de88739fa",":itemsOrder":["nav_column_copy_copy","nav_column_copy_copy_1367930678","nav_column_copy_copy_1101894776"],":items":{"nav_column_copy_copy":{"navColumnTitle":"Build","numberOfSubColumns":"one-column","layout":"SIMPLE","id":"container-d8eb725ee8",":itemsOrder":["nav_item","nav_item_copy_1855651246","nav_item_copy"],":items":{"nav_item":{"id":"nav-item-a43b639f50","propertiesId":"testID","linkDescription":"Overview of the dev resources you need to build and scale","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/developers/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Snowflake for Developers"},"icon":{"id":"icon","lazyEnabled":true,"alt":"Developers icon","src":"https://www.snowflake.com/content/experience-fragments/snowflake-site/language-masters/en/site/mega-nav-header/master/_jcr_content/root/mega_header/nav_mega/item_1719963657751/nav_column_container/nav_column_copy_copy/nav_item/icon.coreimg.svg/1731362494574/nav-icon--devs.svg","height":"64","width":"64",":type":"snowflake-site/components/image"},":type":"snowflake-site/components/nav/nav-item"},"nav_item_copy_1855651246":{"id":"nav-item-923fd53d0b","linkDescription":"Reference architectures, use cases and best practices","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/developers/guides/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Developer Guides"},"icon":{"id":"icon","lazyEnabled":true,"alt":"Solution Center icon","src":"https://www.snowflake.com/content/experience-fragments/snowflake-site/language-masters/en/site/mega-nav-header/master/_jcr_content/root/mega_header/nav_mega/item_1719963657751/nav_column_container/nav_column_copy_copy/nav_item_copy_1855651246/icon.coreimg.svg/1761677891705/nav-icon--solution-center.svg","height":"64","width":"64",":type":"snowflake-site/components/image"},":type":"snowflake-site/components/nav/nav-item"},"nav_item_copy":{"id":"nav-item-4605a272c0","additionalClasses":"is-light-gray-icon","linkDescription":"The latest software versions, drivers, libraries and relevant docs","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/developers/downloads/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Downloads"},"icon":{"id":"icon","lazyEnabled":true,"alt":"Download icon","src":"https://www.snowflake.com/content/experience-fragments/snowflake-site/language-masters/en/site/mega-nav-header/master/_jcr_content/root/mega_header/nav_mega/item_1719963657751/nav_column_container/nav_column_copy_copy/nav_item_copy/icon.coreimg.svg/1731362660050/nav-icon-download.svg","height":"28","width":"28",":type":"snowflake-site/components/image"},":type":"snowflake-site/components/nav/nav-item"}},":type":"snowflake-site/components/nav/nav-column"},"nav_column_copy_copy_1367930678":{"navColumnTitle":"Learn","numberOfSubColumns":"one-column","layout":"SIMPLE","id":"container-49a649eb55",":itemsOrder":["nav_item","nav_item_copy","nav_item_copy_copy"],":items":{"nav_item":{"id":"nav-item-e8868c8649","propertiesId":"testID","linkDescription":"Reference docs, guides, tutorials and announcements","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"attributes":{"target":"_blank"},"url":"https://docs.snowflake.com/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_EXTERNAL",":type":"snowflake-site/components/button","text":"Documentation"},"icon":{"id":"icon","lazyEnabled":true,"alt":"Docs icon","src":"https://www.snowflake.com/content/experience-fragments/snowflake-site/language-masters/en/site/mega-nav-header/master/_jcr_content/root/mega_header/nav_mega/item_1719963657751/nav_column_container/nav_column_copy_copy_1367930678/nav_item/icon.coreimg.svg/1731361950527/nav-icon--docs.svg","height":"64","width":"64",":type":"snowflake-site/components/image"},":type":"snowflake-site/components/nav/nav-item"},"nav_item_copy":{"id":"nav-item-1dd0f28e9d","additionalClasses":"is-light-gray-icon","linkDescription":"Key projects Snowflake engineers maintain and support","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/developers/open-source/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Open Source"},"icon":{"id":"icon","lazyEnabled":true,"alt":"Open Source icon","src":"https://www.snowflake.com/content/experience-fragments/snowflake-site/language-masters/en/site/mega-nav-header/master/_jcr_content/root/mega_header/nav_mega/item_1719963657751/nav_column_container/nav_column_copy_copy_1367930678/nav_item_copy/icon.coreimg.svg/1731365437016/nav-icon-open-source.svg","height":"32","width":"32",":type":"snowflake-site/components/image"},":type":"snowflake-site/components/nav/nav-item"},"nav_item_copy_copy":{"id":"nav-item-2264dd4e60","additionalClasses":"is-light-gray-icon","linkDescription":"Online and in-person classes and workshops to upskill on Snowflake","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/developers/northstar/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Builder Education"},"icon":{"id":"icon","lazyEnabled":true,"alt":"Northstar logo","src":"https://www.snowflake.com/content/experience-fragments/snowflake-site/language-masters/en/site/mega-nav-header/master/_jcr_content/root/mega_header/nav_mega/item_1719963657751/nav_column_container/nav_column_copy_copy_1367930678/nav_item_copy_copy/icon.coreimg.svg/1731362475640/nav-icon--northstar.svg","height":"32","width":"32",":type":"snowflake-site/components/image"},":type":"snowflake-site/components/nav/nav-item"}},":type":"snowflake-site/components/nav/nav-column"},"nav_column_copy_copy_1101894776":{"navColumnTitle":"Connect","numberOfSubColumns":"one-column","layout":"SIMPLE","id":"container-bc515821e9",":itemsOrder":["nav_item","nav_item_copy_1855651246"],":items":{"nav_item":{"id":"nav-item-42af1b8cde","propertiesId":"testID","linkDescription":"Snowflake’s technical leaders on what, why and how they build features","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"https://www.snowflake.com/engineering-blog/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_EXTERNAL",":type":"snowflake-site/components/button","text":"Engineering Blog"},"icon":{"id":"icon","lazyEnabled":true,"alt":"Developers icon","src":"https://www.snowflake.com/content/experience-fragments/snowflake-site/language-masters/en/site/mega-nav-header/master/_jcr_content/root/mega_header/nav_mega/item_1719963657751/nav_column_container/nav_column_copy_copy_1101894776/nav_item/icon.coreimg.svg/1757101368571/nav-icon--developer-center.svg","height":"32","width":"32",":type":"snowflake-site/components/image"},":type":"snowflake-site/components/nav/nav-item"},"nav_item_copy_1855651246":{"id":"nav-item-27ee7212db","linkDescription":"Tips, tricks and discussion with fellow Snowflake developers","button":{"id":"button","showOutboundIcon":false,"buttonLink":{"valid":true,"attributes":{"target":"_blank"},"url":"https://community.snowflake.com/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_EXTERNAL",":type":"snowflake-site/components/button","text":"Community"},"icon":{"id":"icon","lazyEnabled":true,"alt":"Partner Network icon","src":"https://www.snowflake.com/content/experience-fragments/snowflake-site/language-masters/en/site/mega-nav-header/master/_jcr_content/root/mega_header/nav_mega/item_1719963657751/nav_column_container/nav_column_copy_copy_1101894776/nav_item_copy_1855651246/icon.coreimg.svg/1731362644348/nav-icon--partner-network.svg","height":"64","width":"64",":type":"snowflake-site/components/image"},":type":"snowflake-site/components/nav/nav-item"}},":type":"snowflake-site/components/nav/nav-column"}},":type":"snowflake-site/components/nav/nav-column/nav-column-container"},"nav_promo_section":{"id":"nav-promo-section-570030c1ee","experience_fragment_1":{"id":"experiencefragment-d2367e4d02","localizedFragmentVariationPath":"/content/experience-fragments/snowflake-site/language-masters/en/site/nav-promo-card/nav-promo-5/jcr:content","configured":true,":itemsOrder":["root","cq:LiveSyncConfig"],":items":{"root":{"gridClassNames":"aem-Grid aem-Grid--12 aem-Grid--default--12","columnClassNames":{"nav_promo_card":"aem-GridColumn aem-GridColumn--default--12"},"layout":"RESPONSIVE_GRID","columnCount":12,"id":"container-ba63a535ca",":itemsOrder":["nav_promo_card"],":items":{"nav_promo_card":{"id":"nav-promo-card-9d4993e178","openInNewWindow":false,"layout":"horizontal","headline":"Get started with your first Snowflake Notebook","description":"Write and execute code, visualize results, and tell the story of your analysis all in one place.","linkTitle":"Learn More","linkUrl":"/en/developers/solutions-center/getting-started-with-your-first-snowflake-notebook-project/","image":{"id":"image","lazyEnabled":true,"alt":"alt","src":"https://www.snowflake.com/adobe/dynamicmedia/deliver/dm-aid--dc7e334a-c38b-4283-b1de-fcf829952eef/nav-promo-first-notebook.jpg?quality=85&preferwebp=true","height":"210","width":"415",":type":"snowflake-site/components/image"},":type":"snowflake-site/components/nav/nav-promo-card"}},":type":"snowflake-site/components/container"},"cq:LiveSyncConfig":{"cq:isDeep":true,"cq:rolloutConfigs":[],"cq:master":"/content/experience-fragments/snowflake-site/language-masters/en/site/nav-promo-card/nav-promo-card-4",":type":"cq:LiveCopy"}},":type":"snowflake-site/components/experiencefragment","classNames":"aem-xf"},"experience_fragment_2":{"id":"experiencefragment-493d80af8f","localizedFragmentVariationPath":"/content/experience-fragments/snowflake-site/language-masters/en/site/nav-promo-card/nav-promo-card-4/jcr:content","configured":true,":itemsOrder":["root","cq:LiveSyncConfig"],":items":{"root":{"gridClassNames":"aem-Grid aem-Grid--12 aem-Grid--default--12","columnClassNames":{"nav_promo_card":"aem-GridColumn aem-GridColumn--default--12"},"layout":"RESPONSIVE_GRID","columnCount":12,"id":"container-37d51bf82c",":itemsOrder":["nav_promo_card"],":items":{"nav_promo_card":{"id":"nav-promo-card-aadf6da433","openInNewWindow":true,"layout":"horizontal","headline":"Northstar Builder Workshops","description":"Join other developers as you roll up your sleeves and explore the possibilities of Snowflake.","linkTitle":"Learn More","linkUrl":"/en/nav-promos/northstar-builders-workshop/","image":{"id":"image","lazyEnabled":true,"alt":"Snowflake Northstar logo","src":"https://www.snowflake.com/adobe/dynamicmedia/deliver/dm-aid--14341ced-bc5e-4a29-9762-b7857f6cadfc/nav-promo-northstar.jpg?quality=85&preferwebp=true","height":"700","width":"1440",":type":"snowflake-site/components/image"},":type":"snowflake-site/components/nav/nav-promo-card"}},":type":"snowflake-site/components/container"},"cq:LiveSyncConfig":{"cq:isDeep":true,"cq:rolloutConfigs":[],"cq:master":"/content/experience-fragments/snowflake-site/language-masters/en/site/nav-promo-card/master",":type":"cq:LiveCopy"}},":type":"snowflake-site/components/experiencefragment","classNames":"aem-xf"},":type":"snowflake-site/components/nav/nav-promo-section"},":type":"snowflake-site/components/nav/nav-dropdown-menu","cq:panelTitle":"Developers"},"item_1718247180324":{"id":"nav-dropdown-menu-33cba88dbb","enableDropdown":false,"link_url":"/en/pricing-options/",":type":"snowflake-site/components/nav/nav-dropdown-menu","cq:panelTitle":"Pricing"}}},"languagenavigation":{"id":"language-navigation-ba9bacab79","languageNavItems":[{"title":"English","path":"/en/developers/guides/getting-started-with-unstructured-data/","locale":"en","active":true},{"title":"日本語","path":"/ja/","locale":"ja","active":false},{"title":"한국어","path":"/ko/","locale":"ko","active":false},{"title":"中文（简体）","path":"/zh_cn/","locale":"zh-cn","active":false},{"title":"Português","path":"/pt_br/","locale":"pt-br","active":false},{"title":"Deutsch","path":"/de/","locale":"de","active":false},{"title":"Français","path":"/fr/","locale":"fr","active":false},{"title":"Español","path":"/es/","locale":"es","active":false},{"title":"Italiano","path":"/it/","locale":"it","active":false}],":type":"snowflake-site/components/nav/language-navigation"},"button_1177328691":{"id":"button-d4fd80e44e","heapButtonClasses":["mega-nav__sign-in"],"showOutboundIcon":false,"buttonLink":{"valid":true,"attributes":{"target":"_blank"},"url":"https://app.snowflake.com/"},"linkTargetContentType":"GENERIC","appliedCssClassNames":"snowflake-button-link snowflake-button-black snowflake-button-compact","linkType":"SNOWFLAKE_EXTERNAL",":type":"snowflake-site/components/button","text":"Sign in"},"button":{"id":"button-c09af193a6","heapButtonClasses":["contact_nav","heap-nav-contact"],"showOutboundIcon":true,"buttonLink":{"valid":true,"url":"/en/contact-sales/"},"linkTargetContentType":"GENERIC","appliedCssClassNames":"snowflake-button-secondary snowflake-button-blue snowflake-button-compact","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"CONTACT SALES"},"button_288358396":{"id":"button-c295544427","heapButtonClasses":["start_for_free_nav","heap-nav-start-for-free"],"showOutboundIcon":false,"buttonLink":{"valid":true,"url":"https://signup.snowflake.com/"},"linkTargetContentType":"GENERIC","appliedCssClassNames":"snowflake-button-primary snowflake-button-blue snowflake-button-compact","linkType":"SNOWFLAKE_EXTERNAL",":type":"snowflake-site/components/button","text":"start for free"}},":type":"snowflake-site/components/mega-header"}},":type":"snowflake-site/components/container"},"image":{":type":"nt:unstructured"},"cq:targetMetadata":{"cq:targetStatus":"OUT_OF_SYNC","cq:exportTime":1781280015540,"cq:targetOfferId":860250,":type":"nt:unstructured"}},":type":"snowflake-site/components/experiencefragment","classNames":"aem-xf"},"markup_editor_1950346551":{"id":"markup-editor-6820e1ee51","title":" ","cssContent":".snowflake-markdown-table code[class*=language-],.snowflake-markdown-table code[class*=language-],.snowflake-markdown .snowflake-text code[class*=language-],.snowflake-markdown .snowflake-text pre[class*=language-]{background-color:rgba(var(--ui-12-rgb),.5);color:var(--text-01);text-shadow:none;padding:var(--spacing-00);border-radius:var(--spacing-00);font-size:smaller}","isGSAPEnabled":false,":type":"snowflake-site/components/markup-editor"},"responsivegrid":{"gridClassNames":"aem-Grid aem-Grid--12 aem-Grid--default--12","columnClassNames":{"quickstart_hero":"aem-GridColumn aem-GridColumn--default--12","flexible_column_cont":"aem-GridColumn aem-GridColumn--default--12","markup_editor":"aem-GridColumn aem-GridColumn--default--12"},"columnCount":12,":itemsOrder":["quickstart_hero","flexible_column_cont","markup_editor"],":items":{"quickstart_hero":{"id":"quickstart-hero-a84748baa5","quickstartHeroForkRepoLink":{"id":"button-83c28c3e52","showOutboundIcon":false,"buttonLink":{"valid":true,"attributes":{"target":"_blank"},"url":"https://github.com/Snowflake-Labs/sfquickstarts/tree/master/site/sfguides/src/getting-started-with-unstructured-data"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_EXTERNAL",":type":"snowflake-site/components/button","text":"Fork Repo"},"quickstartHeroTitle":{"lines":["Getting Started with Unstructured Data"],"type":"heading2",":type":"snowflake-site/components/title-v2"},"isDeveloperGuidesPage":false,"quickstartHeroFirstCertifiedTag":{"tagText":"Quickstart","tagColor":"#29B5E8","tagPath":"/content/cq:tags/snowflake-site/taxonomy/solution-center/certification/quickstart","tagIcon":""},":type":"snowflake-site/components/quickstart/quickstart-hero","fragmentPath":"/content/dam/snowflake-site/en/content-fragments/quickstarts/getting-started-with-unstructured-data","quickstartHeroBreadcrumbs":[{"title":"Getting Started with Unstructured Data","url":"https://www.snowflake.com/content/snowflake-site/global/en/developers/guides/getting-started-with-unstructured-data","currentPage":true},{"title":"Guides","url":"https://www.snowflake.com/content/snowflake-site/global/en/developers/guides","currentPage":false},{"title":"Snowflake for Developers","url":"https://www.snowflake.com/content/snowflake-site/global/en/developers","currentPage":false}],"quickstartHeroFirstSnowflakeFeatureTag":{"tagText":"Unstructured Data Analysis","tagColor":"#29B5E8","tagPath":"/content/cq:tags/snowflake-site/taxonomy/snowflake-feature/unstructured-data-analysis","tagIcon":""},"quickstartHeroAuthor":"Scott Teal, Saurin Shah, Zohar Nissare-Houssen, Kesav Rayaprolu, Mauricio Rojas Fernandez"},"flexible_column_cont":{"id":"flexible-column-container-7830db4512","propertiesId":"quickstart-template-main-flexible-container","type":"2-column-75-25","alignColumns":"top","containerMaxWidth":"extra-large","topPadding":"none","bottomPadding":"none","spaceBetween":"small","reverseOnMobile":false,"carouselOnMobile":false,"backgroundImageOption":"none","flexible_column_content_container_1":{"layout":"SIMPLE","id":"container-1b93a68663",":itemsOrder":["contentfragment","flexible_column_cont"],":items":{"contentfragment":{"id":"contentfragment-9c3604c883","description":"This is a guide to get familiar with Snowflake's support for unstructured data","paragraphs":["&lt;!-- ------------------------ --&gt;\n","\u003Ch2\u003EOverview\u003C/h2\u003E\n","\u003Cp\u003EThis Quickstart is designed to help you understand the capabilities included in Snowflake&rsquo;s support for unstructured data. Sign up for a free 30-day trial of Snowflake and follow along with this lab exercise. After completing this lab, you&rsquo;ll be ready to start storing and managing your own unstructured data in Snowflake.\u003C/p\u003E\n","\u003Ch3\u003EPrerequisites\u003C/h3\u003E\n\u003Cul\u003E\u003Cli\u003ESnowflake account\u003C/li\u003E\u003Cli\u003EBasic knowledge of SQL, database concepts, and objects\u003C/li\u003E\u003Cli\u003ERecommended to first complete \u003Ca href=\"/en/developers/guides/getting-started-with-snowsql/\"\u003EGetting Started with SnowSQL\u003C/a\u003E\u003C/li\u003E\u003C/ul\u003E\n","\u003Ch3\u003EWhat You&rsquo;ll Learn\u003C/h3\u003E\n\u003Cul\u003E\u003Cli\u003EHow to access and store unstructured data\u003C/li\u003E\u003Cli\u003EHow to govern unstructured data\u003C/li\u003E\u003Cli\u003EHow to search for unstructured data using directory tables\u003C/li\u003E\u003Cli\u003EHow to securely share unstructured data\u003C/li\u003E\u003Cli\u003EHow to process unstructured data\u003C/li\u003E\u003C/ul\u003E\n","\u003Ch3\u003EWhat You'll Build\u003C/h3\u003E\n\u003Cul\u003E\u003Cli\u003EA stage for storing and accessing files in Snowflake\u003C/li\u003E\u003Cli\u003EA user-defined function using Snowflake's engine to process files\u003C/li\u003E\u003Cli\u003EA secure view to share in the Snowflake Marketplace\u003C/li\u003E\u003C/ul\u003E\n&lt;!-- ------------------------ --&gt;\n","\u003Ch2\u003ENotice and Terms of Use\u003C/h2\u003E\n","\u003Cp\u003EThe data provided for this lab is an extract from the Enron email database made available by Carnegie Mellon University (\u003Ca href=\"https://www.cs.cmu.edu/~enron/\"\u003Ehttps://www.cs.cmu.edu/~enron/\u003C/a\u003E).\u003C/p\u003E\n","\u003Cp\u003EUse of the data provided is limited to this quickstart in connection with the Snowflake service and is subject to any additional terms and conditions on the Carnegie Mellon site.\u003C/p\u003E\n","\u003Cp\u003EBy accessing this data, you acknowledge and agree to the limits and terms related to the use of the Enron email data.\u003C/p\u003E\n&lt;!-- ------------------------ --&gt;\n","\u003Ch2\u003EPrepare your lab environment\u003C/h2\u003E\n","\u003Cp\u003EIf you haven't already, register for a \u003Ca href=\"https://trial.snowflake.com/\"\u003ESnowflake free 30-day trial\u003C/a\u003E.\nThe Snowflake edition (Standard, Enterprise, Business Critical, e.g.), cloud provider (AWS, Azure, e.g.), and Region (US East, EU, e.g.) do not matter for this lab. We suggest you select the region which is physically closest to you and the Enterprise Edition, our most popular offering. After registering, you will receive an email with an activation link and your Snowflake account URL.\u003C/p\u003E\n","\u003Ch3\u003ENavigating to Snowsight\u003C/h3\u003E\n","\u003Cp\u003EFor this lab, you will use the latest Snowflake web interface, Snowsight.\u003C/p\u003E\n\u003Col\u003E\u003Cli\u003ELog into your Snowflake trial account\u003C/li\u003E\u003Cli\u003EClick on \u003Cstrong\u003ESnowsight\u003C/strong\u003E Worksheets tab. The new web interface opens in a separate tab or window.\u003C/li\u003E\u003Cli\u003EClick \u003Cstrong\u003EWorksheets\u003C/strong\u003E in the left-hand navigation bar. The \u003Cstrong\u003EReady to Start Using Worksheets and Dashboards\u003C/strong\u003E dialog opens.\u003C/li\u003E\u003Cli\u003EClick the \u003Cstrong\u003EEnable Worksheets and Dashboards button\u003C/strong\u003E.\u003C/li\u003E\u003C/ol\u003E\n","\u003Cp\u003E\u003Cimg src=\"https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/3_1.png\" alt=\"Enable Worksheets and Dashboards\"\u003E\u003C/p\u003E\n&lt;!-- ------------------------ --&gt;\n","\u003Ch2\u003EStore &amp; Access Unstructured Data\u003C/h2\u003E\n","\u003Cp\u003ELet&rsquo;s start by preparing to load the unstructured data into Snowflake. Snowflake supports two types of stages for storing data files used for loading and unloading:\u003C/p\u003E\n\u003Cul\u003E\u003Cli\u003E\u003Ca href=\"https://docs.snowflake.com/en/user-guide/data-load-overview.html#internal-stages\"\u003EInternal stages\u003C/a\u003E store the files internally within Snowflake.\u003C/li\u003E\u003Cli\u003E\u003Ca href=\"https://docs.snowflake.com/en/user-guide/data-load-overview.html#external-stages\"\u003EExternal stages\u003C/a\u003E store the files in an external location (i.e. S3 bucket) that is referenced by the stage. An external stage specifies location and credential information, if required, for the bucket.\u003C/li\u003E\u003C/ul\u003E\n","\u003Ch3\u003ECreate a Database, Schema, and Warehouse\u003C/h3\u003E\n","\u003Cp\u003EBefore creating any stages, let&rsquo;s create a database and a schema that will be used for loading the unstructured data. We will use the UI within the Worksheets tab to run the DDL that creates the database and schema. Copy the commands below into your trial environment, and execute each individually.\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003Euse role sysadmin;\n\ncreate or replace database emaildb comment = 'Enron Email Corpus Database';\ncreate or replace schema raw;\ncreate or replace warehouse quickstart;\n\nuse database emaildb;\nuse schema raw;\nuse warehouse quickstart;\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Ch3\u003EAccess Unstructured Data Stored in an S3 Bucket\u003C/h3\u003E\n","\u003Cp\u003EThe data we will be using in this lab is stored in an S3 bucket.\u003C/p\u003E\n","\u003Ch4\u003ECreate an External Stage\u003C/h4\u003E\n","\u003Cp\u003EYou are working with unstructured PDFs that have already been staged in a public, external S3 bucket. Before you can use this data, you first need to create a Stage that specifies the location of our external bucket.\u003C/p\u003E\n","\u003Cp\u003E&lt;aside class=&quot;warning&quot;&gt;\nFor this lab we are using an AWS S3 bucket in us-east-1. To minimize data egress/transfer costs in the future, you should select a staging location from the same cloud provider and region as your Snowflake environment.\n&lt;/aside&gt;\u003C/p\u003E\n","\u003Cp\u003EGrant the \u003Ccode\u003EPUBLIC\u003C/code\u003E schema access to the database, schema, and warehouse just created (This will be relevant in the next section).\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003Euse role sysadmin;\ngrant usage on database emaildb to public;\ngrant usage on schema emaildb.raw to public;\ngrant usage on warehouse quickstart to public;\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003EFrom the same worksheet you&rsquo;ve been using, run this command to create an external stage called \u003Ccode\u003Eemail_stage\u003C/code\u003E.\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003Euse schema emaildb.raw;\n-- Create an external stage where files are stored.\ncreate or replace stage email_stage\n url = &quot;s3://sfquickstarts/Getting Started Unstructured Data/Emails/mailbox/&quot;\n directory = (enable = true auto_refresh = true);\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003EYou can run this command to see a list of the files in your external stage.\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003Els @email_stage;\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003E\u003Cimg src=\"https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/4_1.png\" alt=\"List External Stage\"\u003E\u003C/p\u003E\n","\u003Cp\u003EWe can see that the stage contains various mailboxes from Enron users containing some files (which are text files) of various sizes. We can get a summary of the file corpus in the query results on the right-hand side. For the purpose of this quickstart, just a sample of 226 files out of 517,551 files has been extracted.\u003C/p\u003E\n","\u003Cp\u003E\u003Cimg src=\"https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/4_2.png\" alt=\"External Stage Query Details\"\u003E\u003C/p\u003E\n","\u003Cp\u003E\u003Cstrong\u003EThe size of the files\u003C/strong\u003E: We can see that the file size ranges from 666 bytes to 1023 bytes, with the majority of the files closer to 1023 bytes. If we click on the size metric, we can get more detailed information. The total corpus size is 208,414 bytes, with an average size of 922 bytes. If we hover over the histogram, we can filter results based on file size.\u003C/p\u003E\n","\u003Ch3\u003EStore Unstructured Data in an Internal Stage\u003C/h3\u003E\n","\u003Cp\u003EAlternatively, you can store data directly in Snowflake with internal stages. Now, we want to create an internal stage and upload the same files while maintaining the directory structure of the various individual mailboxes on an internal stage.\u003C/p\u003E\n","\u003Ch4\u003ECreate an Internal Stage\u003C/h4\u003E\n","\u003Cp\u003ERun this command to create an internal stage called \u003Ccode\u003Eemail_stage_internal\u003C/code\u003E as follows.\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003Euse schema emaildb.raw;\ncreate or replace stage email_stage_internal\ndirectory = (enable = TRUE)\nencryption = (type = 'SNOWFLAKE_SSE');\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003E&lt;aside class=&quot;warning&quot;&gt;\nNote that we have to specify a server-side encryption on the internal stage. When using the default client-side encryption, the files will be returned encrypted and not readable when accessed through URLs (in Section 6).\n&lt;/aside&gt;\u003C/p\u003E\n","\u003Ch4\u003EDownload Data and Scripts\u003C/h4\u003E\n","\u003Cp\u003EWe need to first download the following files to the local workstation by clicking on the hyperlinks below. The subsequent steps require \u003Ca href=\"https://docs.snowflake.com/en/user-guide/snowsql.html\"\u003ESnowSQL CLI\u003C/a\u003E installed on the local workstation where the lab is ran:\u003C/p\u003E\n\u003Cul\u003E\u003Cli\u003E[upload.snf](&lt;https://sfquickstarts.s3.amazonaws.com/Getting Started Unstructured Data/Files/upload.snf&gt;): SnowSQL Script which will upload the files to the internal stage just created.\u003C/li\u003E\u003Cli\u003E[mailbox.tar.gz](&lt;https://sfquickstarts.s3.amazonaws.com/Getting Started Unstructured Data/Files/mailbox.tar.gz&gt;): The actual email data.\u003C/li\u003E\u003C/ul\u003E\n","\u003Cp\u003EOnce downloaded, untar the contents of the files on your local workstation and note the full path including the mailbox parent directory of the tar archive. In the example below, this path is \u003Ccode\u003E/Users/znh/Downloads/quickstart/\u003C/code\u003E. The file can be untarred as follows.\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-bash\"\u003Ecd /Users/znh/Downloads/quickstart/\ntar xzvf mailbox.tar.gz\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Ch4\u003EUpload Files using SnowSQL\u003C/h4\u003E\n","\u003Cp\u003EBefore opening terminal, find out your account identifier which for the trial account will be \u003Ccode\u003E&lt;account-locator&gt;.&lt;region-id&gt;.&lt;cloud&gt;\u003C/code\u003E. These fields can be retrieved from the URL of your Snowflake account.\u003C/p\u003E\n","\u003Cp\u003EFor example, the URL to access the trial account is \u003Ccode\u003Ehttps://xx74264.ca-central-1.aws.snowflakecomputing.com/\u003C/code\u003E. These are the values for the account identifier:\u003C/p\u003E\n\u003Cul\u003E\u003Cli\u003EAccount Locator: \u003Ccode\u003Exx74264\u003C/code\u003E\u003C/li\u003E\u003Cli\u003ERegion ID: \u003Ccode\u003Eca-central-1\u003C/code\u003E\u003C/li\u003E\u003Cli\u003ECloud: \u003Ccode\u003Eaws\u003C/code\u003E\u003C/li\u003E\u003C/ul\u003E\n","\u003Cp\u003EThere may be additional segments if you are using your own account part of an organization. You can find those from the URL of your Snowflake account. Please check the \u003Ca href=\"https://docs.snowflake.com/en/user-guide/admin-account-identifier.html#account-identifiers\"\u003ESnowflake Documentation\u003C/a\u003E for additional details on this topic.\u003C/p\u003E\n","\u003Cp\u003ENow open a terminal on your workstation and run the following SnowSQL command. You will be prompted for the password for the Snowflake user passed as a parameter.\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode\u003Esnowsql -a &lt;account-identifier&gt; \\\n-u &lt;user-id&gt; -d emaildb -r sysadmin -s raw \\\n-D srcpath=&lt;source-path&gt; \\\n-D stagename=@email_stage_internal \\\n-o variable_substitution=true -f upload.snf\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003EUsing the examples above for the path and the account identifier, and the userid \u003Ccode\u003Emyuser\u003C/code\u003E, the command would be:\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode\u003Esnowsql -a xx74264.ca-central-1.aws \\\n-u myuser -d emaildb -r sysadmin -s raw \\\n-D srcpath=/Users/znh/Downloads/quickstart/mailbox \\\n-D stagename=@email_stage_internal \\\n-o variable_substitution=true -f /Users/znh/Downloads/quickstart/upload.snf\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003EThe upload may take a few seconds depending on the speed of your internet connection. If the upload is successful, you should see data being uploaded in each subfolder, and you may see an output like the following on your terminal.\u003C/p\u003E\n","\u003Cp\u003E\u003Cimg src=\"https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/4_4.png\" alt=\"SnowSQL PUT Files to Internal Stage\"\u003E\u003C/p\u003E\n","\u003Cp\u003EVerify if the files have been uploaded successfully by entering the following command on your Snowflake worksheet.\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003Els @email_stage_internal;\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003EYou should now see an identical list of files uploaded to the internal stage. Make sure you see 226 files uploaded\u003C/p\u003E\n","\u003Cp\u003E\u003Cimg src=\"https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/4_5.png\" alt=\"List Internal Stage\"\u003E\u003C/p\u003E\n&lt;!-- ------------------------ --&gt;\n","\u003Ch2\u003EGovern Unstructured Data Access\u003C/h2\u003E\n","\u003Cp\u003EJust like structured and semi-structured data, access permissions to unstructured data in Snowflake can be governed using role-based access control (RBAC).\u003C/p\u003E\n","\u003Ch3\u003ECreate Role and Grant Access\u003C/h3\u003E\n","\u003Cp\u003ELet&rsquo;s create a role that will provide read access to the external stage we&rsquo;ve already created that contains PDFs.\u003C/p\u003E\n","\u003Cp\u003ELet&rsquo;s first create the analyst role.\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003Euse role accountadmin;\ncreate or replace role analyst;\ngrant role analyst to role sysadmin;\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003EThen, switch back to \u003Ccode\u003Esysadmin\u003C/code\u003E role, and \u003Ccode\u003Egrant\u003C/code\u003E the role \u003Ccode\u003Eanalyst\u003C/code\u003E the rights to use the database \u003Ccode\u003Eemaildb\u003C/code\u003E, and the schema \u003Ccode\u003Eraw\u003C/code\u003E we just created earlier, as well as the ability to \u003Ccode\u003Eread\u003C/code\u003E from the stage.\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003Egrant usage on database emaildb to role analyst;\ngrant usage on schema emaildb.raw to role analyst;\ngrant usage on warehouse quickstart to role analyst;\ngrant read on stage email_stage_internal to role analyst;\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003ETo make sure this works as expected, make sure secondary roles are disabled for \u003Ccode\u003Eanalyst\u003C/code\u003E role.\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003Euse role analyst;\nselect current_secondary_roles();\nuse secondary roles none;\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003EYou can verify the \u003Ccode\u003Eanalyst\u003C/code\u003E role only has access to read by listing the files in the internal stage, then trying to remove files from the external stage. When trying to remove, this should result in an error message.\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003Euse role analyst;\n\n-- List files from the stage. This should execute successfully.\nls @email_stage_internal;\n\n-- Try to remove files from the stage. This should return an error.\nrm @email_stage_internal;\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003E\u003Cimg src=\"https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/5_1.png\" alt=\"Remove Internal Stage Analyst\"\u003E\u003C/p\u003E\n","\u003Cp\u003EIn the subsequent sections, we will see a more fine-grained access control of the different unstructured files stored in Snowflake using scoped URLs.\u003C/p\u003E\n&lt;!-- ------------------------ --&gt;\n","\u003Ch2\u003ECatalog Unstructured Data using Directory Tables\u003C/h2\u003E\n","\u003Cp\u003EOne of the main pain points in managing large repositories of unstructured data is the ability to access metadata easily on the numerous files, as well as retrieve files per some metadata attributes (last modified, file size, file patterns).\u003C/p\u003E\n","\u003Cp\u003EDirectory Tables are built-in tables in Snowflake that provide an up-to-date, tabular file catalog for external and internal stages. Directory Tables make it easy to search for and query files using SQL.\u003C/p\u003E\n","\u003Cp\u003EWe will first reset the session parameters to the correct role, virtual warehouse, database and schema:\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003Euse role sysadmin;\nuse warehouse quickstart;\nuse schema emaildb.raw;\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003EPrior to accessing the directory, it needs to be refreshed first for the files previously uploaded using the following command.\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003Ealter stage email_stage_internal refresh;\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003ERun the following command to access the directory table.\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003Eselect *\nfrom directory(@email_stage_internal);\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003EThis will provide some detailed metadata information about the files stored in the stage including the \u003Ccode\u003ERELATIVE_PATH\u003C/code\u003E, the \u003Ccode\u003ELAST MODIFIED\u003C/code\u003E timestamp, the \u003Ccode\u003ESIZE\u003C/code\u003E, the \u003Ccode\u003EETAG\u003C/code\u003E as well as the \u003Ccode\u003EFILE URL\u003C/code\u003E (more information on this in the next section).\u003C/p\u003E\n","\u003Cp\u003E\u003Cimg src=\"https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/6_1.png\" alt=\"Directory Table\"\u003E\u003C/p\u003E\n","\u003Ch3\u003ESearching Directory Tables\u003C/h3\u003E\n","\u003Cp\u003EWe could now query these files using some SQL commands. For example, let&rsquo;s assume we want to identify all the emails from the mailbox belonging to the user \u003Ccode\u003Enemec-g\u003C/code\u003E. We could easily do this with the following SQL query.\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003Eselect *\nfrom directory(@email_stage_internal) \nwhere RELATIVE_PATH like '%nemec-g%';\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003E\u003Cimg src=\"https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/6_2.png\" alt=\"Directory Table filtered path\"\u003E\u003C/p\u003E\n","\u003Cp\u003EThis query returns the 13 emails belonging to that user. Now let&rsquo;s try to identify the 5 largest email text in the dataset. We can do that with the following query.\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003Eselect *\nfrom directory(@email_stage_internal)\norder by size desc\nlimit 5;\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003E\u003Cimg src=\"https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/6_3.png\" alt=\"Directory Table filtered size\"\u003E\u003C/p\u003E\n","\u003Ch3\u003EAutomatic Refresh\u003C/h3\u003E\n","\u003Cp\u003ESay you want the directory table to refresh whenever a file is added to your S3 bucket. This can be accomplished by using event notifications in S3. When a new file is added to a bucket, S3 will send a notification to Snowflake, and a Stream can refresh the directory table.\u003C/p\u003E\n","\u003Cp\u003EIn this quickstart, we won&rsquo;t setup notifications in S3, but the command below is what you would use to create a stream on the directory table for a stage. More detailed documentation for automatically refreshing directory tables can be found \u003Ca href=\"https://docs.snowflake.com/en/user-guide/data-load-dirtables-auto.html\"\u003Ehere\u003C/a\u003E.\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003E-- Create a table stream on directory table\ncreate stream documents_stream on directory(&lt;stage_name&gt;);\n\u003C/code\u003E\u003C/pre\u003E\n&lt;!-- ------------------------ --&gt;\n","\u003Ch2\u003EURLs for Secure Access\u003C/h2\u003E\n","\u003Cp\u003EIn the previous sections, we have seen how to store unstructured data in Snowflake, as well as access metadata about the unstructured files, and build queries to retrieve files based on metadata filters.\u003C/p\u003E\n","\u003Cp\u003EIn this section, we will look into how Snowflake offers access to the unstructured data through various types of URLs, as well as provide a more granular governance over unstructured data than at the stage level, as reviewed previously in Section 2.\u003C/p\u003E\n","\u003Cp\u003EThere are three different types of URLs that you can use to access unstructured data:\u003C/p\u003E\n\u003Cul\u003E\u003Cli\u003E\u003Ca href=\"https://docs.snowflake.com/en/sql-reference/functions/build_scoped_file_url.html\"\u003E\u003Cstrong\u003EScoped URL\u003C/strong\u003E\u003C/a\u003E: A scoped file URL can be generated for a user to give the user short-lived, scoped access to the file without giving privileges on the stage.\u003C/li\u003E\u003Cli\u003E\u003Ca href=\"https://docs.snowflake.com/en/sql-reference/functions/build_stage_file_url.html\"\u003E\u003Cstrong\u003EFile URL\u003C/strong\u003E\u003C/a\u003E: A file URL requires a user to be authenticated with Snowflake and requires the user to have read privileges on the stage.\u003C/li\u003E\u003Cli\u003E\u003Ca href=\"https://docs.snowflake.com/en/sql-reference/functions/get_presigned_url.html\"\u003E\u003Cstrong\u003EPre-signed URL\u003C/strong\u003E\u003C/a\u003E: As the name suggests, pre-signed URLs are already authenticated. Users can simply download the files using pre-signed URLs.\u003C/li\u003E\u003C/ul\u003E\n","\u003Cp\u003EThe URL format for files is https://&lt;account&gt;.snowflakecomputing.com/api/files/&lt;db_name&gt;/&lt;schema_name&gt;/&lt;stage_name&gt;/&lt;file_path&gt;.\u003C/p\u003E\n","\u003Ch3\u003EScoped URL\u003C/h3\u003E\n","\u003Cp\u003EScoped URLs are encoded URLs that permit temporary access to a staged file without granting privileges to the stage. The URL expires when the persisted query result period ends (i.e. the results cache expires), which is currently 24 hours.\u003C/p\u003E\n","\u003Cp\u003EWe can generate a scoped URL of any file using the function \u003Ccode\u003Ebuild_scoped_url()\u003C/code\u003E. For example, let&rsquo;s create a view which provides the scoped URL for files in the stage \u003Ccode\u003Eemail_stage_internal\u003C/code\u003E.\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003Ecreate or replace view email_scoped_url_v\nas\nselect\n\trelative_path\n\t, build_scoped_file_url(@email_stage_internal,relative_path) as scoped_url\nfrom directory(@email_stage_internal);\n\nselect * from email_scoped_url_v limit 5;\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003E\u003Cimg src=\"https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/7_1.png\" alt=\"Scoped URL\"\u003E\u003C/p\u003E\n","\u003Cp\u003EAs explained previously, this URL will be valid for 24 hours. Snowsight retrieves the file only for the user who generated the scoped URL.\u003C/p\u003E\n","\u003Cp\u003EScoped URLs enable access to the files via a view that retrieves scoped URLs. Only roles that have privileges on the view can access the files. The scoped URL contents are all encrypted and doesn't give any information about the bucket, database or schema.\u003C/p\u003E\n","\u003Ch4\u003ESecure Access with RBAC and Scoped URL\u003C/h4\u003E\n","\u003Cp\u003ELet&rsquo;s assume a scenario where the \u003Ccode\u003Eanalyst\u003C/code\u003E role needs access to all the files from the inbox of \u003Ccode\u003ENEMEC-G\u003C/code\u003E. We can build a dynamic view which will filter the output based on the role of the view user.\u003C/p\u003E\n","\u003Cp\u003EFirst let&rsquo;s build an assignment table where various roles (or even users) can be assigned a given mailbox for further analysis.\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003Ecreate or replace table assignment (mailbox string, role string, filter string);\n\ninsert into assignment values ('NEMEC-G','ANALYST','%nemec-g%');\ninsert into assignment values ('*','SYSADMIN','%');\n\nselect * from assignment;\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003EAs we can see from the query output above, the assignment table controls a 1-to-1 role-to-mailbox access mapping.\u003C/p\u003E\n","\u003Cp\u003EWe can now build a SQL view which will join with the assignment table to dynamically filter rows based on the role of the user executing the view and grant access to the view to the \u003Ccode\u003Eanalyst\u003C/code\u003E role:\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003Ecreate or replace secure view analyst_file_access_v as\n    select\n\t    relative_path\n\t\t, build_scoped_file_url(@email_stage_internal,relative_path) as scoped_url\n    from directory(@email_stage_internal)\n\t    inner join assignment\n    where relative_path like filter\n  \t    and role = current_role();\n\ngrant select on analyst_file_access_v to role analyst;\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003ELet&rsquo;s switch to role \u003Ccode\u003Eanalyst\u003C/code\u003E and query the view.\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003Euse role analyst;\nuse warehouse quickstart;\nuse schema raw;\nselect * from analyst_file_access_v;\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003E\u003Cimg src=\"https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/7_2.png\" alt=\"Secure View Scoped URL\"\u003E\u003C/p\u003E\n","\u003Cp\u003EClick the \u003Ccode\u003Escoped_url\u003C/code\u003E corresponding to the file \u003Ccode\u003E1222.\u003C/code\u003E to your workstation and review the file locally.\u003C/p\u003E\n","\u003Cp\u003EIf we switch the role to \u003Ccode\u003Esysadmin\u003C/code\u003E and run the same query:\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003Euse role sysadmin;\nuse warehouse quickstart;\nuse schema raw;\nselect * from analyst_file_access_v;\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003EThis returns scoped URLs to access all the files.\u003C/p\u003E\n","\u003Cp\u003EAs we just experimented, scoped URLs are ideal for use in custom applications, providing unstructured data to other accounts via a share, or for downloading and ad-hoc analysis of unstructured data via Snowsight.\u003C/p\u003E\n","\u003Ch3\u003EFile URL\u003C/h3\u003E\n","\u003Cp\u003EA file URL is a permanent URL that identifies the database, schema, stage, and file path to a set of files, as opposed to the previous scoped URL where all this information is encrypted. A role that has sufficient privileges on the stage can access the files. It does not contain any authentication token. Authentication needs to be done when connecting through REST API. However, it works from our current authenticated Snowsight session.\u003C/p\u003E\n","\u003Cp\u003EThe following query will provide the file urls for the mailbox \u003Ccode\u003Earnold-j\u003C/code\u003E.\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003Eselect\n    relative_path\n    , build_stage_file_url(@email_stage_internal,relative_path) as stage_file_url\nfrom directory(@email_stage_internal) \nwhere relative_path like '%arnold-j%';\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003E\u003Cimg src=\"https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/7_3.png\" alt=\"File URL\"\u003E\u003C/p\u003E\n","\u003Cp\u003EClick on any of the stage file URLs and download the file to your workstation.\u003C/p\u003E\n","\u003Ch3\u003EPre-signed URL\u003C/h3\u003E\n","\u003Cp\u003EPre-signed URLs are used to download or access files, via a web browser for example, without authenticating into Snowflake or passing an authorization token. These URLs are ideal for business intelligence applications or reporting tools that need to display the unstructured file contents.\u003C/p\u003E\n","\u003Cp\u003EPre-signed URLs are open but temporary. The expiration time for the access token is configurable when generating the URL. Any user or application can directly access or download the files until the expiration time is reached.\u003C/p\u003E\n","\u003Cp\u003EThe following query will generate the pre-signed URLs for the mailbox \u003Ccode\u003Ebeck-s\u003C/code\u003E. In the \u003Ccode\u003Eget_presigned_url()\u003C/code\u003E system function, we pass the parameter \u003Ccode\u003E300\u003C/code\u003E which represents the expiration time for the token in seconds (which is 300s, so 5 minutes in this case).\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003Eselect\n    relative_path\n    , get_presigned_url(@email_stage_internal,relative_path,300) as presigned_url\nfrom directory(@email_stage_internal) \nwhere relative_path like '%beck-s%';\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003EClick on any cell value in the \u003Ccode\u003EPRESIGNED_URL\u003C/code\u003E column. This should give the actual full URL on the right hand side in the grey cell. (Click to Copy)\u003C/p\u003E\n","\u003Cp\u003E\u003Cimg src=\"https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/7_4.png\" alt=\"Pre-signed URL\"\u003E\u003C/p\u003E\n","\u003Cp\u003EOpen a new tab in your web browser, and paste the copied URL. This should download the file on your workstation. As you can see, the URL is valid even when executed outside from the Snowsight UI.\u003C/p\u003E\n&lt;!-- ------------------------ --&gt;\n","\u003Ch2\u003EPerform Natural Language Processing\u003C/h2\u003E\n","\u003Cp\u003EWe have so far reviewed how to store unstructured data files, retrieve them, provide granular access to the files through various URLs and through secure views. In this section, we want to extract additional attributes from the files. The entities extracted are going to be person names mentioned in the emails, as well as locations. The goal is to have these additional attributes used to enrich the file-level metadata for analytics.\u003C/p\u003E\n","\u003Cp\u003EUsing Snowpark runtimes and libraries, you can securely deploy and process Python, Java and Scala code to build pipelines, ML models, and applications in Snowflake. You can process unstructured files in Java (generally available), Python (public preview), and Scala (public preview) natively in Snowflake using Snowpark. In the following sections, you'll see how entity extraction can be done with Snowpark for both Java and Python.\u003C/p\u003E\n","\u003Ch3\u003EPython\u003C/h3\u003E\n","\u003Cp\u003EFor convenience, a number of popular open source third-party Python packages that are built and provided by Anaconda are made available to use out of the box inside Snowflake via the \u003Ca href=\"https://repo.anaconda.com/pkgs/snowflake\"\u003EAnaconda Snowflake channel\u003C/a\u003E. For any third-party packages not yet included, you can use stages to import. In this example, we'll use the punkt, averaged_perceptron_tagger, maxent_ne_chunker, and words language models from the \u003Ca href=\"https://www.nltk.org/\"\u003Enltk\u003C/a\u003E package, which have been uploaded and available on a Snowflake s3 public bucket.\u003C/p\u003E\n","\u003Ch4\u003ECreating a Python UDF\u003C/h4\u003E\n","\u003Cp\u003ECreating the UDF involves a few steps in Snowflake.\u003C/p\u003E\n\u003Col\u003E\u003Cli\u003ECreate the external stage mapping to the S3 bucket URI where the jar file is currently available. From the Snowflake worksheet, enter the following command:\u003C/li\u003E\u003C/ol\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003Euse role sysadmin;\nuse schema emaildb.raw;\n\ncreate or replace stage nltk_imports\nurl = &quot;s3://sfquickstarts/Getting Started Unstructured Data/Files/&quot;\ndirectory = (enable = true);\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003EFrom the Snowflake worksheet, you can run the following command to confirm the nltk zip file is listed in the external stage.\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003Els @nltk_imports/nltk_data;\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003E\u003Cimg src=\"https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/8_8.png\" alt=\"List nltk imports external stage\"\u003E\u003C/p\u003E\n\u003Col start=\"2\"\u003E\u003Cli\u003EWe can now create the UDF in Snowflake as the following.\u003C/li\u003E\u003C/ol\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003Ecreate or replace function python_parseText(file_path string)\n    returns variant\n    language python\n    runtime_version=3.8\n    imports = ('@nltk_imports/nltk_data.zip')\n    packages = ('snowflake-snowpark-python','nltk')\n    handler = 'udf_compute_named_entity'\nAS\n$$\ndef load_files(): \n    &quot;&quot;&quot;Helper function that loads zipped files from stage and adds them\n    to the nltk data path&quot;&quot;&quot;\n    import os\n    import zipfile\n    import nltk\n    import sys\n    \n    #import directory, to be able to make references to files in the stage\n    IMPORT_DIRECTORY_NAME = &quot;snowflake_import_directory&quot;\n    import_dir = sys._xoptions[IMPORT_DIRECTORY_NAME]\n    \n    #paths to extract to, this is where the nltk library will search for the required files\n    nltk_dir = &quot;/tmp/nltk_data&quot;\n        \n    with zipfile.ZipFile(os.path.join(import_dir, &quot;nltk_data.zip&quot;), 'r') as zip_ref: \n        zip_ref.extractall(nltk_dir)\n    \n    #append extracted path to the nltk library search path for usage in UDF\n    nltk.data.path.append(nltk_dir)\n\ndef udf_compute_named_entity(file_path:str) -&gt; dict:\n    from snowflake.snowpark.files import SnowflakeFile\n    import email\n    import json\n    import nltk\n    from nltk.tokenize import word_tokenize\n    from nltk.tag import pos_tag\n    from nltk.chunk import ne_chunk\n\n    def parse_email_file(file_path):\n        with SnowflakeFile.open(file_path, 'r') as f:\n            msg = email.message_from_file(f)\n            payload = &quot;&quot;\n            if msg.is_multipart():\n                for _payload in msg.get_payload():\n                    # if payload.is_multipart(): ...\n                    payload += _payload.get_payload()\n            else:\n                payload= msg.get_payload()\n            return payload\n    def perform_named_entity_extraction(text):\n        tokens = word_tokenize(text)\n        tagged_tokens = pos_tag(tokens)\n        named_entities = ne_chunk(tagged_tokens)\n        persons = []\n        locations = []\n        for entity in named_entities:\n            if hasattr(entity, 'label'):\n                if (entity.label() == 'PERSON'):\n                    persons.append(' '.join([token for token, pos in entity]))\n                elif (entity.label() == 'GPE'):\n                    locations.append(' '.join([token for token, pos in  entity]))\n        return {&quot;PERSONS&quot;:persons,&quot;LOCATIONS&quot;:locations}        \n    email_body = parse_email_file(file_path)\n    #load the files from stage for usage\n    load_files()\n    return perform_named_entity_extraction(email_body)\n\n$$;\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Ch4\u003EInvoking the Python UDF\u003C/h4\u003E\n","\u003Cp\u003EThe UDF can be invoked on any text file containing readable english. From the email corpus stored on the internal stage, we can invoke the UDF as follows.\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003Eselect python_parseText(build_scoped_file_url(@email_stage_internal,'/sanders-r/inbox/60.')) \nas entities_extraction;\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003E\u003Cimg src=\"https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/8_9.png\" alt=\"Python UDF Results\"\u003E\u003C/p\u003E\n","\u003Cp\u003EThe output is serialized as a valid JSON format by the UDF. It contains 2 arrays, one for each named entities extraction:\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-json\"\u003E{\n  &quot;LOCATIONS&quot;: [\n    &quot;Toronto&quot;\n  ],\n  &quot;PERSONS&quot;: [\n    &quot;Vince Carter&quot;,\n    &quot;Hakeem&quot;\n  ]\n}\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003ESince we are using pre-built models which haven&rsquo;t been trained on this particular corpus, the entity extraction may not always be accurate. However, the models perform overall quite well for illustration purposes for this quickstart.\u003C/p\u003E\n","\u003Ch3\u003EJava\u003C/h3\u003E\n","\u003Cp\u003EAlternatively to Python, the same entity extraction can be accomplished with Java. The Java code for the UDF has already been written and provided below. This code uses the open source \u003Ca href=\"https://opennlp.apache.org/\"\u003EApache OpenNLP\u003C/a\u003E library to perform natural language processing on English text in this occurrence.\u003C/p\u003E\n","\u003Cp\u003EThe Java code leverages pre-built \u003Ca href=\"http://opennlp.sourceforge.net/models-1.5/\"\u003Emachine learning models\u003C/a\u003E to perform named entity extraction for persons and locations. These models are packaged manually post-build in a Fat JAR.\u003C/p\u003E\n","\u003Cp\u003EAt a high level, the code does the following:\u003C/p\u003E\n\u003Cul\u003E\u003Cli\u003EParse the text file contents using an Apache Tika text parser.\u003C/li\u003E\u003Cli\u003ETokenize the parsed contents using a model.\u003C/li\u003E\u003Cli\u003EFrom the tokens, perform a named entity extraction for persons and locations using pre-built ML models.\u003C/li\u003E\u003Cli\u003ESerialize the results in a JSON string returned as an output.\u003C/li\u003E\u003C/ul\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-java\"\u003Epublic String ParseText(String filePath) throws IOException, SAXException, TikaException {\n\t\t\t\n// Configure gson\t      \nGsonBuilder gsonBuilder = new GsonBuilder()\nGson gson = gsonBuilder.create();\n\t\t\n//detecting the file type\nBodyContentHandler handler = new BodyContentHandler();\nMetadata metadata = new Metadata();\nParseContext pcontext=new ParseContext();\n\t     \nSnowflakeFile file = SnowflakeFile.newInstance(filePath);\nInputStream ins = file.getInputStream();\n\t      \n//Text document parser\nTXTParser  TexTParser = new TXTParser();\nTexTParser.parse(ins, handler, metadata, pcontext);\n\t      \nString Contents = handler.toString();\n\t      \nString[] AllPersonEntities = null;\nString[] AllLocationEntities = null;\nString JsonResult = null;\n\t      \nNamedEntities NE = new NamedEntities(AllPersonEntities, AllLocationEntities);\n\t\t\t\n try {\n         for(int i=0;i&lt;sentences.length;i++){\n\t          String Tokens[] = new NamedEntityExtraction().ParseTokens(Contents);\n\t          String PersonEntities[] = new NamedEntityExtraction().findName(Tokens);\n\t          String LocationEntities[] = new NamedEntityExtraction().findLocation(Tokens);\n\t           \n\t          AllPersonEntities = ArrayUtils.addAll(AllPersonEntities, PersonEntities);\n\t          AllLocationEntities = ArrayUtils.addAll(AllLocationEntities, LocationEntities);\n\t           \n\t          NE.setPersons(AllPersonEntities);\n\t          NE.setLocations(AllLocationEntities);\n\t           \n\t          JsonResult = gson.toJson(NE).toString();\t\n               \t\t\n\t\t\n\t\t\t} catch (IOException e) {\n\t            e.printStackTrace();\n\t        }\n\t\t     return(JsonResult);\n}\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003EA few elements relevant for this code:\u003C/p\u003E\n\u003Cul\u003E\u003Cli\u003ENotice the main class is \u003Cstrong\u003ENamedEntityExtraction\u003C/strong\u003E.\u003C/li\u003E\u003Cli\u003EThe method \u003Cstrong\u003EParseText\u003C/strong\u003E will be invoked by the UDF in the next section.\u003C/li\u003E\u003Cli\u003EThe file path is passed as a parameter. It can be a URL to the file, or the path on the stage.\u003C/li\u003E\u003C/ul\u003E\n","\u003Ch4\u003ECreating a Java UDF\u003C/h4\u003E\n","\u003Cp\u003EThe precompiled jar file including all the dependencies has been uploaded and available on a Snowflake s3 public bucket. Creating the UDF involves a few steps in Snowflake.\u003C/p\u003E\n\u003Col\u003E\u003Cli\u003ECreate the external stage mapping to the S3 bucket URI where the jar file is currently available. From the Snowflake worksheet, enter the following command:\u003C/li\u003E\u003C/ol\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003Euse role sysadmin;\nuse schema emaildb.raw;\n\ncreate or replace stage jars_stage_external\nurl = &quot;s3://sfquickstarts/Common JARs/&quot;\ndirectory = (enable = true auto_refresh = true);\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003EFrom the Snowflake worksheet, you can run the following command to confirm the jar file is listed in the external stage.\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003Els @jars_stage_external;\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003E\u003Cimg src=\"https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/8_1.png\" alt=\"List jar external stage\"\u003E\u003C/p\u003E\n\u003Col start=\"2\"\u003E\u003Cli\u003EWe can now create the UDF in Snowflake as the following.\u003C/li\u003E\u003C/ol\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003Ecreate or replace function  java_parseText(file string)\nreturns string\nlanguage java\nimports = ('@jars_stage_external/EmailNLPv3-3.0.jar')\nhandler = 'NamedEntityExtraction.ParseText'\n;\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Ch3\u003EInvoking the Java UDF\u003C/h3\u003E\n","\u003Cp\u003EThe UDF can be invoked on any text file containing readable english. From the email corpus stored on the internal stage, we can invoke the UDF as follows.\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003Eselect java_parseText(build_scoped_file_url('@email_stage_internal','/sanders-r/inbox/60.')) \nas entities_extraction;\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003E\u003Cimg src=\"https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/8_2.png\" alt=\"Java UDF Results\"\u003E\u003C/p\u003E\n","\u003Cp\u003EThe output is serialized as a valid JSON format by the UDF. It contains 2 arrays, one for each named entities extraction:\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-json\"\u003E{\n&quot;Persons&quot;:[&quot;David&quot;,&quot;Richard&quot;,&quot;Rob&quot;,&quot;Mark&quot;,&quot;Richard&quot;,&quot;Vince Carter&quot;],\n&quot;Locations&quot;:[&quot;Toronto&quot;,&quot;Toronto&quot;]\n}\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Ch3\u003EExtracting and Storing Named Entities\u003C/h3\u003E\n","\u003Cp\u003EWe want to store the named entities as additional attributes for analysts to be able to select and retrieve the files of interest in their analysis, as well as perform some analytics on the attributes found. For the purpose of this quickstart, we'll use the Java UDF to complete this task. However, the same could be done using the Python UDF.\u003C/p\u003E\n","\u003Cp\u003EWe first want to scale-up the default warehouse size to run the Java UDF at scale across all cores available on all nodes on a 2XL warehouse (64 nodes). This can be done easily and quickly because of Snowflake's instant elasticity:\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003Ealter warehouse quickstart set warehouse_size = xxlarge;\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003ENow let's run the following query to store the named entities into a table.\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003Ecreate or replace table email_named_entities_base as\nselect\n    relative_path\n    , upper(replace(get(split(relative_path, '/'), 0), '\\&quot;', ''))\tas mailbox\n    , java_parseText(build_scoped_file_url('@email_stage_internal/', relative_path)) \t\tas named_entities\nfrom (\n    select relative_path\n    from directory(@email_stage_internal)\n    group by relative_path\n);\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003EAfter running this query, we can set the \u003Ccode\u003Ewarehouse\u003C/code\u003E size back to a smaller size.\u003C/p\u003E\n","\u003Cp\u003E&lt;aside class=&quot;warning&quot;&gt;\nTHIS STEP IS VERY IMPORTANT NOT TO EXHAUST YOUR TRIAL CREDIT\n&lt;/aside&gt;\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003Ealter warehouse quickstart set warehouse_size = xsmall;\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003EVerify with the following command that the warehouse is back to an \u003Ccode\u003Exsmall\u003C/code\u003E size.\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003Eshow warehouses;\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003EThe output should show the \u003Ccode\u003EQUICKSTART\u003C/code\u003E size as being \u003Ccode\u003EXSMALL\u003C/code\u003E. Now let's query the base table containing the named entities.\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003Eselect\n    *\nfrom email_named_entities_base\nlimit 5;\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003EFor each email, we now have created a \u003Ccode\u003EMAILBOX\u003C/code\u003E attribute, as well as JSON string containing the named entities present in the file.\u003C/p\u003E\n","\u003Cp\u003E\u003Cimg src=\"https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/8_3.png\" alt=\"Named Entities Base Table\"\u003E\u003C/p\u003E\n","\u003Ch3\u003EExploring the Mailbox Corpus\u003C/h3\u003E\n","\u003Cp\u003EWe have now extracted the named entities the analysts are interested in seeing to do some analytics on this email corpus. We can use Snowflake native capabilities to easily store and query semi-structured data, in this case JSON.\u003C/p\u003E\n","\u003Cp\u003EWe will first create a view to parse the \u003Ccode\u003ENAMED_ENTITIES\u003C/code\u003E JSON string and extract separately the persons and the locations entities, as well as count the number of entities identified in each email:\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003Ecreate or replace view email_info_v\nas\nwith named_entities\nas (\n    select\n\t    relative_path\n\t    , mailbox\n\t    , parse_json(named_entities) as named_entities\n    from email_named_entities_base\n)\nselect\n    relative_path\n    , mailbox\n    , named_entities:Persons::variant\t\t\t\tas persons\n    , array_size(persons)\t\t\t\t\t\t\tas num_person_entities\n    , named_entities:Locations::variant\t\t\t\tas locations\n    , array_size(locations)\t\t\t\t\t\t\tas num_location_entities\n    , array_size(persons) + array_size(locations)\tas total_entities\n    , build_scoped_file_url(@email_stage_internal, relative_path)\tas scoped_email_url\nfrom named_entities;\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003EWe can query the view and examine the output. Notice that we now have JSON arrays in separate columns for name and location entities, count of entities, and a scoped URL to access the file if we need to further examine its contents.\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003Eselect * from email_info_v limit 10;\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003E\u003Cimg src=\"https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/8_3_2.png\" alt=\"Examine view output\"\u003E\u003C/p\u003E\n","\u003Cp\u003EWe can now query the view to retrieve various entity metrics. For example, the following query identifies the top 5 emails in terms of total number of entities.\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003Eselect\n\trelative_path\n\t, mailbox\n\t, total_entities\n\t, num_person_entities\n\t, num_location_entities\n\t, persons\n\t, locations\n\t, scoped_email_url\nfrom email_info_v\norder by total_entities desc\nlimit 10;\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003E\u003Cimg src=\"https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/8_4.png\" alt=\"Number of entities view\"\u003E\u003C/p\u003E\n","\u003Cp\u003EThe following query aggregates statistics on the number of entities identified per mailbox and returns the top 5 mailbox by total number of entities identified in the mailbox.\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003Eselect\n\tmailbox\n\t, count(relative_path)\t\t\t\tas num_emails\n\t, sum(total_entities)\t\t\t\tas sum_entities\n\t, round(avg(total_entities))\t\tas avg_entities\n\t, sum(num_person_entities)\t\t\tas sum_persons\n\t, round(avg(num_person_entities))\tas avg_persons\n\t, sum(num_location_entities)\t\tas sum_locations\n\t, round(avg(num_location_entities))\tas avg_locations\nfrom email_info_v\ngroup by mailbox\norder by sum_entities desc\nlimit 5;\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003EWe know that the most prolific mailbox is \u003Ccode\u003EWHITE-S\u003C/code\u003E for identified entities in this email corpus.\u003C/p\u003E\n","\u003Ch3\u003EPerforming Analytics on the Mailbox\u003C/h3\u003E\n","\u003Cp\u003ELet&rsquo;s assume an analyst wants to identify all email correspondence where the name of 'Willman' (chosen completely randomly in this example) is mentioned. With Snowflake, you can easily flatten arrays to run this type of query.\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003Eselect\n\trelative_path\n\t, mailbox\n\t, pers.value::string as person_entity\nfrom\n\temail_info_v\n\t, lateral flatten(input =&gt; Persons) pers;\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003E\u003Cimg src=\"https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/8_5.png\" alt=\"Flattened JSON array\"\u003E\u003C/p\u003E\n","\u003Cp\u003EWe can use the previous query as a CTE to retrieve all emails mentioning a specific person, including a scoped URL to access the actual email file.\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003Ewith persons_flattened as (\n    select\n    \trelative_path\n\t\t, mailbox\n\t\t, pers.value::string as person_entity\n    from\n    \temail_info_v\n\t\t, lateral flatten(input =&gt; Persons) pers\n)\nselect\n    relative_path\n    , mailbox\n    , person_entity\n    , build_scoped_file_url(@email_stage_internal,relative_path) as scoped_email_url\nfrom persons_flattened\nwhere person_entity like '%Willmann%';\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003E\u003Cimg src=\"https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/8_6.png\" alt=\"Mentions of Willmann\"\u003E\u003C/p\u003E\n","\u003Cp\u003EClick on any \u003Ccode\u003EMAY-L\u003C/code\u003E mailbox email to download and review the email. This will allow you to learn a little bit more about that person's role and responsibilities in the Enron organization.\u003C/p\u003E\n","\u003Cp\u003ELet&rsquo;s assume we want to identify the top 5 locations mentioned in the email corpus.\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003Ewith locations_flattened as (\n    select\n    \trelative_path\n\t    , mailbox\n\t    , loc.value::string\tas location_entity\n    from\n\t    email_info_v\n\t    , lateral flatten(input =&gt; Locations) loc\n)\nselect\n    location_entity\n    , count(location_entity) as num_occurrences\nfrom locations_flattened\ngroup by location_entity\norder by num_occurrences desc\nlimit 5;\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003EWe can use Snowsight to produce a visualization. Click on chart and set the settings as shown below.\u003C/p\u003E\n","\u003Cp\u003E\u003Cimg src=\"https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/8_7.png\" alt=\"Number of location occurrences bar chart\"\u003E\u003C/p\u003E\n","\u003Cp\u003EAs you can see, we can perform aggregations, and analytics on unstructured text data after extracting entities and information of interest. At this point, one could run more advanced data science use cases or visualizations using the numerous options available in Snowflake.\u003C/p\u003E\n&lt;!-- ------------------------ --&gt;\n","\u003Ch2\u003EShare Unstructured Data\u003C/h2\u003E\n","\u003Cp\u003EIn this example, we want to share all the email corpus mentioning 'Willman' with another party using a Snowflake reader account.\u003C/p\u003E\n","\u003Ch3\u003ECreating a Reader Account\u003C/h3\u003E\n","\u003Cp\u003EThe first step is to create a reader account as follows. Note that you will need to provide a secure password of your choice.\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003Euse role accountadmin;\ncreate managed account if not exists emaildb_reader\nadmin_name='admin', admin_password='&lt;password&gt;',\ntype=reader, COMMENT='Emaildb Reader Account';\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003EThis command should return the account name, and the URL to access the account. Please copy and paste the output of the command as it provides you the login URL information for the account, as well as the user and password you chose\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode\u003E{\n&quot;accountName&quot;:&quot;&lt;account_name&gt;&quot;,\n&quot;loginUrl&quot;:&quot;https://&lt;account&gt;.snowflakecomputing.com&quot;\n}\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003EYou can run the following command to retrieve the managed account information at anytime.\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003Eshow managed accounts;\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003EYou can connect to the previous reader account using the URL, and the userid/password credentials you passed as parameters.\u003C/p\u003E\n","\u003Ch3\u003ECreating a Secure View to Share\u003C/h3\u003E\n","\u003Cp\u003ELet&rsquo;s now create the secure view based on the query ran in the previous section that will be shared with the reader account.\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003Euse role sysadmin;\nuse schema emaildb.raw;\n\ncreate or replace secure view email_corpus_willman_v as\nwith persons_flattened as (\n    select\n        relative_path\n        , mailbox\n        , pers.value::string as person_entity\n    from\n\t\temail_info_v\n        , lateral flatten(input =&gt; Persons) pers\n)\nselect\n    relative_path\n    , mailbox\n    , person_entity\n    , build_scoped_file_url(@email_stage_internal,relative_path) as email_url\nfrom persons_flattened\nwhere person_entity like '%Willmann%';\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Ch3\u003ECreate the Share\u003C/h3\u003E\n","\u003Cp\u003EWe can now create the share as follows. You will need to provide the reader account name created earlier:\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003E-- Create the share object\nuse role accountadmin;\ncreate or replace share email_corpus \ncomment='Share in scope email corpus information';\n\n--what are we sharing?\ngrant usage on database emaildb to share email_corpus;\ngrant usage on schema emaildb.raw to share email_corpus;\ngrant select on view emaildb.raw.email_corpus_willman_v to share email_corpus;\n\n-- whom are we sharing with?\nalter share email_corpus add accounts = &lt;reader-account-locator&gt;;\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003EWe can review the share we have just created. The following command provides all the shares in the account.\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003E-- check the share\nshow shares like 'email_corpus';\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003EWe can get more details about the share, and the scope of the objects shared using the following command.\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003E-- review share\ndescribe share email_corpus;\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003E\u003Cimg src=\"https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/9_1.png\" alt=\"Number of location occurrences bar chart\"\u003E\u003C/p\u003E\n","\u003Cp\u003EThis command shows us that the view \u003Ccode\u003EEMAIL_CORPUS_WILLMAN_V\u003C/code\u003E is shared from the database \u003Ccode\u003EEMAILDB\u003C/code\u003E and schema \u003Ccode\u003ERAW\u003C/code\u003E in the current account.\u003C/p\u003E\n","\u003Ch3\u003EAccessing Shared Data\u003C/h3\u003E\n","\u003Cp\u003ESwitch to the web browser tab where you opened the session with the reader account created in step 6.1 or open a new session on the reader account. Now, click on the blue Snowsight UI button at the top and authenticate again.\u003C/p\u003E\n","\u003Cp\u003EAfter logging in, as this is a new account, click on the worksheet button at the top and create a new virtual warehouse.\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003Euse role sysadmin;\n\t\ncreate or replace warehouse compute_wh \nwarehouse_size=xsmall\nauto_suspend=1\nauto_resume=true\ninitially_suspended=true;\n\ngrant usage on warehouse compute_wh to public;\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003EFirst, let's switch back to the \u003Ccode\u003EACCOUNTADMIN\u003C/code\u003E role. Click on the \u003Cstrong\u003EHome\u003C/strong\u003E button in the top-left. Then in the top-left, click on \u003Cstrong\u003EADMIN\u003C/strong\u003E, then hover over \u003Cstrong\u003ESwitch Role\u003C/strong\u003E, and click on \u003Cstrong\u003EACCOUNTADMIN\u003C/strong\u003E.\n\u003Cimg src=\"https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/9_2.png\" alt=\"Switch to ACCOUNTADMIN role\"\u003E\u003C/p\u003E\n","\u003Cp\u003ENow let's view the shared data. In the pane on the left, click on on \u003Cstrong\u003EData\u003C/strong\u003E, then \u003Cstrong\u003EPrivate Sharing\u003C/strong\u003E. You will see the \u003Ccode\u003EEMAIL_CORPUS\u003C/code\u003E database listed under \u003Cstrong\u003EReady to Get\u003C/strong\u003E. Select it and give the database name \u003Ccode\u003EEMAIL_CORPUS\u003C/code\u003E and make it available to \u003Ccode\u003EPUBLIC\u003C/code\u003E, then click the \u003Cstrong\u003EGet Data\u003C/strong\u003E button.\n\u003Cimg src=\"https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/9_3.png\" alt=\"Get Data dialogue box\"\u003E\u003C/p\u003E\n","\u003Cp\u003EClick on \u003Cstrong\u003EDatabases\u003C/strong\u003E, then click on the \u003Cstrong\u003ERefresh\u003C/strong\u003E button (round arrow button on the right side above the database list). You will now see the database \u003Ccode\u003EEMAIL_CORPUS\u003C/code\u003E.\n\u003Cimg src=\"https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/9_4.png\" alt=\"EMAIL_CORPUS shared database\"\u003E\u003C/p\u003E\n","\u003Cp\u003ESelect the worksheet created in this reader account. Add the following commands to set the worksheet session parameters and review the view objects available.\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003Euse role sysadmin;\nuse schema &lt;account-locator&gt;_email_corpus.raw;\nuse warehouse compute_wh;\n\nshow views;\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003EIf you expand the database hierarchy on the left side of the window, you will see that the share appears from the consumer side as a database \u003Ccode\u003EEMAIL_CORPUS\u003C/code\u003E, with a schema \u003Ccode\u003ERAW\u003C/code\u003E and a single view object \u003Ccode\u003EEMAIL_CORPUS_WILLMAN_V\u003C/code\u003E.\u003C/p\u003E\n","\u003Cp\u003EWe can now query the shared data. The query below will display only the emails related to 'Willmann'.\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003Eselect * from email_corpus_willman_v;\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003EFrom the results, notice that all the URLs are encrypted, not revealing any information of the location where the shared data came from. Click on any \u003Ccode\u003EEMAIL_URL\u003C/code\u003E and get access to the actual email text downloaded to your workstation. Download and review the email. Make sure it is valid.\n\u003Cimg src=\"https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/9_5.png\" alt=\"Access shared data files\"\u003E\u003C/p\u003E\n","\u003Cp\u003EYou have now completed this demonstration of how unstructured data can be securely shared in the Snowflake Data Cloud using Snowflake Data Sharing capabilities.\u003C/p\u003E\n&lt;!-- ------------------------ --&gt;\n","\u003Ch2\u003EConclusion\u003C/h2\u003E\n","\u003Cp\u003ECongratulations! You used Snowflake to perform natural language processing on email files.\u003C/p\u003E\n","\u003Ch3\u003EWhat we've covered\u003C/h3\u003E\n\u003Cul\u003E\u003Cli\u003EAccessing external data with an \u003Cstrong\u003EExternal Stage\u003C/strong\u003E\u003C/li\u003E\u003Cli\u003EStoring unstructured data with an \u003Cstrong\u003EInternal Stage\u003C/strong\u003E and \u003Cstrong\u003ESnowSQL\u003C/strong\u003E\u003C/li\u003E\u003Cli\u003EGoverning unstructured data with \u003Cstrong\u003ERole-Based Access Control\u003C/strong\u003E\u003C/li\u003E\u003Cli\u003ECatalog unstructured data with \u003Cstrong\u003EDirectory Tables\u003C/strong\u003E\u003C/li\u003E\u003Cli\u003ESecurely access unstructured data with \u003Cstrong\u003EScoped, File, and Pre-signed URLs\u003C/strong\u003E\u003C/li\u003E\u003Cli\u003EProcessing unstructured data with \u003Cstrong\u003ESnowpark for Python and Java\u003C/strong\u003E\u003C/li\u003E\u003Cli\u003ESharing unstructured data in the \u003Cstrong\u003EData Cloud\u003C/strong\u003E\u003C/li\u003E\u003C/ul\u003E\n","\u003Ch3\u003ERelated Resources\u003C/h3\u003E\n\u003Cul\u003E\u003Cli\u003E\u003Ca href=\"https://docs.snowflake.com/en/user-guide/unstructured.html\"\u003EUnstructured Data Docs\u003C/a\u003E\u003C/li\u003E\u003Cli\u003E\u003Ca href=\"https://docs.snowflake.com/en/developer-guide/udf/java/udf-java.html\"\u003EJava UDF Docs\u003C/a\u003E\u003C/li\u003E\u003Cli\u003E\u003Ca href=\"https://docs.snowflake.com/en/developer-guide/snowpark/index.html\"\u003ESnowpark Docs\u003C/a\u003E\u003C/li\u003E\u003C/ul\u003E"],"title":"Getting Started with Unstructured Data",":itemsOrder":[],":items":{},"elementsOrder":["quickstartArticleBody","quickstartArticleLogoImage"],"elements":{"quickstartArticleBody":{"dataType":"string","title":"Quickstart Article Body","value":"\u003C!-- ------------------------ --\u003E\n## Overview \n\nThis Quickstart is designed to help you understand the capabilities included in Snowflake’s support for unstructured data. Sign up for a free 30-day trial of Snowflake and follow along with this lab exercise. After completing this lab, you’ll be ready to start storing and managing your own unstructured data in Snowflake. \n\n### Prerequisites\n- Snowflake account\n- Basic knowledge of SQL, database concepts, and objects\n- Recommended to first complete [Getting Started with SnowSQL](/en/developers/guides/getting-started-with-snowsql/)\n\n### What You’ll Learn \n- How to access and store unstructured data\n- How to govern unstructured data\n- How to search for unstructured data using directory tables\n- How to securely share unstructured data\n- How to process unstructured data\n\n### What You'll Build\n- A stage for storing and accessing files in Snowflake\n- A user-defined function using Snowflake's engine to process files\n- A secure view to share in the Snowflake Marketplace\n\n\u003C!-- ------------------------ --\u003E\n## Notice and Terms of Use\n\nThe data provided for this lab is an extract from the Enron email database made available by Carnegie Mellon University ([https://www.cs.cmu.edu/~enron/](https://www.cs.cmu.edu/~enron/)).\n\nUse of the data provided is limited to this quickstart in connection with the Snowflake service and is subject to any additional terms and conditions on the Carnegie Mellon site.\n\nBy accessing this data, you acknowledge and agree to the limits and terms related to the use of the Enron email data.\n\n\u003C!-- ------------------------ --\u003E\n## Prepare your lab environment\n\nIf you haven't already, register for a [Snowflake free 30-day trial](https://trial.snowflake.com/).\nThe Snowflake edition (Standard, Enterprise, Business Critical, e.g.), cloud provider (AWS, Azure, e.g.), and Region (US East, EU, e.g.) do not matter for this lab. We suggest you select the region which is physically closest to you and the Enterprise Edition, our most popular offering. After registering, you will receive an email with an activation link and your Snowflake account URL.\n\n\n### Navigating to Snowsight\nFor this lab, you will use the latest Snowflake web interface, Snowsight.\n1. Log into your Snowflake trial account\n2. Click on __Snowsight__ Worksheets tab. The new web interface opens in a separate tab or window.\n3. Click __Worksheets__ in the left-hand navigation bar. The __Ready to Start Using Worksheets and Dashboards__ dialog opens.\n4. Click the __Enable Worksheets and Dashboards button__.\n\n![Enable Worksheets and Dashboards](https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/3_1.png)\n\n\u003C!-- ------------------------ --\u003E\n## Store & Access Unstructured Data\n\nLet’s start by preparing to load the unstructured data into Snowflake. Snowflake supports two types of stages for storing data files used for loading and unloading:\n- [Internal stages](https://docs.snowflake.com/en/user-guide/data-load-overview.html#internal-stages) store the files internally within Snowflake.\n- [External stages](https://docs.snowflake.com/en/user-guide/data-load-overview.html#external-stages) store the files in an external location (i.e. S3 bucket) that is referenced by the stage. An external stage specifies location and credential information, if required, for the bucket.\n\n### Create a Database, Schema, and Warehouse\nBefore creating any stages, let’s create a database and a schema that will be used for loading the unstructured data. We will use the UI within the Worksheets tab to run the DDL that creates the database and schema. Copy the commands below into your trial environment, and execute each individually.\n\n```sql\nuse role sysadmin;\n\ncreate or replace database emaildb comment = 'Enron Email Corpus Database';\ncreate or replace schema raw;\ncreate or replace warehouse quickstart;\n\nuse database emaildb;\nuse schema raw;\nuse warehouse quickstart;\n```\n\n### Access Unstructured Data Stored in an S3 Bucket\nThe data we will be using in this lab is stored in an S3 bucket.\n\n#### Create an External Stage\nYou are working with unstructured PDFs that have already been staged in a public, external S3 bucket. Before you can use this data, you first need to create a Stage that specifies the location of our external bucket.\n\n\u003Caside class=\"warning\"\u003E\n  For this lab we are using an AWS S3 bucket in us-east-1. To minimize data egress/transfer costs in the future, you should select a staging location from the same cloud provider and region as your Snowflake environment.\n\u003C/aside\u003E\n\nGrant the `PUBLIC` schema access to the database, schema, and warehouse just created (This will be relevant in the next section).\n\n```sql\nuse role sysadmin;\ngrant usage on database emaildb to public;\ngrant usage on schema emaildb.raw to public;\ngrant usage on warehouse quickstart to public;\n```\n\nFrom the same worksheet you’ve been using, run this command to create an external stage called `email_stage`.\n\n```sql\nuse schema emaildb.raw;\n-- Create an external stage where files are stored.\ncreate or replace stage email_stage\n url = \"s3://sfquickstarts/Getting Started Unstructured Data/Emails/mailbox/\"\n directory = (enable = true auto_refresh = true);\n```\n\nYou can run this command to see a list of the files in your external stage.\n\n```sql\nls @email_stage;\n```\n![List External Stage](https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/4_1.png)\n\nWe can see that the stage contains various mailboxes from Enron users containing some files (which are text files) of various sizes. We can get a summary of the file corpus in the query results on the right-hand side. For the purpose of this quickstart, just a sample of 226 files out of 517,551 files has been extracted.\n\n![External Stage Query Details](https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/4_2.png)\n\n__The size of the files__: We can see that the file size ranges from 666 bytes to 1023 bytes, with the majority of the files closer to 1023 bytes. If we click on the size metric, we can get more detailed information. The total corpus size is 208,414 bytes, with an average size of 922 bytes. If we hover over the histogram, we can filter results based on file size.\n\n### Store Unstructured Data in an Internal Stage\nAlternatively, you can store data directly in Snowflake with internal stages. Now, we want to create an internal stage and upload the same files while maintaining the directory structure of the various individual mailboxes on an internal stage.\n\n#### Create an Internal Stage\nRun this command to create an internal stage called `email_stage_internal` as follows.\n\n```sql\nuse schema emaildb.raw;\ncreate or replace stage email_stage_internal\ndirectory = (enable = TRUE)\nencryption = (type = 'SNOWFLAKE_SSE');\n```\n\n\u003Caside class=\"warning\"\u003E\n    Note that we have to specify a server-side encryption on the internal stage. When using the default client-side encryption, the files will be returned encrypted and not readable when accessed through URLs (in Section 6).\n\u003C/aside\u003E\n\n#### Download Data and Scripts\nWe need to first download the following files to the local workstation by clicking on the hyperlinks below. The subsequent steps require [SnowSQL CLI](https://docs.snowflake.com/en/user-guide/snowsql.html) installed on the local workstation where the lab is ran:\n\n- [upload.snf](\u003Chttps://sfquickstarts.s3.amazonaws.com/Getting Started Unstructured Data/Files/upload.snf\u003E): SnowSQL Script which will upload the files to the internal stage just created.\n- [mailbox.tar.gz](\u003Chttps://sfquickstarts.s3.amazonaws.com/Getting Started Unstructured Data/Files/mailbox.tar.gz\u003E): The actual email data.\n\nOnce downloaded, untar the contents of the files on your local workstation and note the full path including the mailbox parent directory of the tar archive. In the example below, this path is `/Users/znh/Downloads/quickstart/`. The file can be untarred as follows.\n\n```bash\ncd /Users/znh/Downloads/quickstart/\ntar xzvf mailbox.tar.gz\n```\n\n#### Upload Files using SnowSQL\nBefore opening terminal, find out your account identifier which for the trial account will be `\u003Caccount-locator\u003E.\u003Cregion-id\u003E.\u003Ccloud\u003E`. These fields can be retrieved from the URL of your Snowflake account.\n\nFor example, the URL to access the trial account is `https://xx74264.ca-central-1.aws.snowflakecomputing.com/`. These are the values for the account identifier:\n\n- Account Locator: `xx74264`\n- Region ID: `ca-central-1`\n- Cloud: `aws`\n\nThere may be additional segments if you are using your own account part of an organization. You can find those from the URL of your Snowflake account. Please check the [Snowflake Documentation](https://docs.snowflake.com/en/user-guide/admin-account-identifier.html#account-identifiers) for additional details on this topic.\n\nNow open a terminal on your workstation and run the following SnowSQL command. You will be prompted for the password for the Snowflake user passed as a parameter.\n\n```\nsnowsql -a \u003Caccount-identifier\u003E \\\n-u \u003Cuser-id\u003E -d emaildb -r sysadmin -s raw \\\n-D srcpath=\u003Csource-path\u003E \\\n-D stagename=@email_stage_internal \\\n-o variable_substitution=true -f upload.snf\n```\n\nUsing the examples above for the path and the account identifier, and the userid `myuser`, the command would be:\n\n```\nsnowsql -a xx74264.ca-central-1.aws \\\n-u myuser -d emaildb -r sysadmin -s raw \\\n-D srcpath=/Users/znh/Downloads/quickstart/mailbox \\\n-D stagename=@email_stage_internal \\\n-o variable_substitution=true -f /Users/znh/Downloads/quickstart/upload.snf\n```\n\nThe upload may take a few seconds depending on the speed of your internet connection. If the upload is successful, you should see data being uploaded in each subfolder, and you may see an output like the following on your terminal.\n\n![SnowSQL PUT Files to Internal Stage](https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/4_4.png)\n\nVerify if the files have been uploaded successfully by entering the following command on your Snowflake worksheet.\n\n```sql\nls @email_stage_internal;\n```\n\nYou should now see an identical list of files uploaded to the internal stage. Make sure you see 226 files uploaded\n\n![List Internal Stage](https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/4_5.png)\n\n\u003C!-- ------------------------ --\u003E\n## Govern Unstructured Data Access\n\nJust like structured and semi-structured data, access permissions to unstructured data in Snowflake can be governed using role-based access control (RBAC).\n\n### Create Role and Grant Access\nLet’s create a role that will provide read access to the external stage we’ve already created that contains PDFs.\n\nLet’s first create the analyst role.\n\n```sql\nuse role accountadmin;\ncreate or replace role analyst;\ngrant role analyst to role sysadmin;\n```\n\nThen, switch back to `sysadmin` role, and `grant` the role `analyst` the rights to use the database `emaildb`, and the schema `raw` we just created earlier, as well as the ability to `read` from the stage.\n\n```sql\ngrant usage on database emaildb to role analyst;\ngrant usage on schema emaildb.raw to role analyst;\ngrant usage on warehouse quickstart to role analyst;\ngrant read on stage email_stage_internal to role analyst;\n```\n\nTo make sure this works as expected, make sure secondary roles are disabled for `analyst` role.\n```sql\nuse role analyst;\nselect current_secondary_roles();\nuse secondary roles none;\n```\n\nYou can verify the `analyst` role only has access to read by listing the files in the internal stage, then trying to remove files from the external stage. When trying to remove, this should result in an error message. \n\n```sql\nuse role analyst;\n\n-- List files from the stage. This should execute successfully.\nls @email_stage_internal;\n\n-- Try to remove files from the stage. This should return an error.\nrm @email_stage_internal;\n```\n\n![Remove Internal Stage Analyst](https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/5_1.png)\n\nIn the subsequent sections, we will see a more fine-grained access control of the different unstructured files stored in Snowflake using scoped URLs.\n\n\u003C!-- ------------------------ --\u003E\n## Catalog Unstructured Data using Directory Tables\n\nOne of the main pain points in managing large repositories of unstructured data is the ability to access metadata easily on the numerous files, as well as retrieve files per some metadata attributes (last modified, file size, file patterns).\n\nDirectory Tables are built-in tables in Snowflake that provide an up-to-date, tabular file catalog for external and internal stages. Directory Tables make it easy to search for and query files using SQL.\n\nWe will first reset the session parameters to the correct role, virtual warehouse, database and schema:\n\n```sql\nuse role sysadmin;\nuse warehouse quickstart;\nuse schema emaildb.raw;\n```\n\nPrior to accessing the directory, it needs to be refreshed first for the files previously uploaded using the following command.\n\n```sql\t\nalter stage email_stage_internal refresh;\n```\n\nRun the following command to access the directory table.\n\n```sql\nselect *\nfrom directory(@email_stage_internal);\n```\n\nThis will provide some detailed metadata information about the files stored in the stage including the `RELATIVE_PATH`, the `LAST MODIFIED` timestamp, the `SIZE`, the `ETAG` as well as the `FILE URL` (more information on this in the next section).\n\n![Directory Table](https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/6_1.png)\n\n\n### Searching Directory Tables\nWe could now query these files using some SQL commands. For example, let’s assume we want to identify all the emails from the mailbox belonging to the user `nemec-g`. We could easily do this with the following SQL query.\n\n```sql\nselect *\nfrom directory(@email_stage_internal) \nwhere RELATIVE_PATH like '%nemec-g%';\n```\n![Directory Table filtered path](https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/6_2.png)\n\nThis query returns the 13 emails belonging to that user. Now let’s try to identify the 5 largest email text in the dataset. We can do that with the following query.\n\n```sql\nselect *\nfrom directory(@email_stage_internal)\norder by size desc\nlimit 5;\n```\n\n![Directory Table filtered size](https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/6_3.png)\n\n### Automatic Refresh\nSay you want the directory table to refresh whenever a file is added to your S3 bucket. This can be accomplished by using event notifications in S3. When a new file is added to a bucket, S3 will send a notification to Snowflake, and a Stream can refresh the directory table.\n\nIn this quickstart, we won’t setup notifications in S3, but the command below is what you would use to create a stream on the directory table for a stage. More detailed documentation for automatically refreshing directory tables can be found [here](https://docs.snowflake.com/en/user-guide/data-load-dirtables-auto.html).\n\n```sql\n-- Create a table stream on directory table\ncreate stream documents_stream on directory(\u003Cstage_name\u003E);\n```\n\n\u003C!-- ------------------------ --\u003E\n## URLs for Secure Access\n\nIn the previous sections, we have seen how to store unstructured data in Snowflake, as well as access metadata about the unstructured files, and build queries to retrieve files based on metadata filters. \n\nIn this section, we will look into how Snowflake offers access to the unstructured data through various types of URLs, as well as provide a more granular governance over unstructured data than at the stage level, as reviewed previously in Section 2.\n\nThere are three different types of URLs that you can use to access unstructured data:\n- [__Scoped URL__](https://docs.snowflake.com/en/sql-reference/functions/build_scoped_file_url.html): A scoped file URL can be generated for a user to give the user short-lived, scoped access to the file without giving privileges on the stage.\n- [__File URL__](https://docs.snowflake.com/en/sql-reference/functions/build_stage_file_url.html): A file URL requires a user to be authenticated with Snowflake and requires the user to have read privileges on the stage.\n- [__Pre-signed URL__](https://docs.snowflake.com/en/sql-reference/functions/get_presigned_url.html): As the name suggests, pre-signed URLs are already authenticated. Users can simply download the files using pre-signed URLs.\n\n\nThe URL format for files is https://\u003Caccount\u003E.snowflakecomputing.com/api/files/\u003Cdb_name\u003E/\u003Cschema_name\u003E/\u003Cstage_name\u003E/\u003Cfile_path\u003E. \n\n### Scoped URL\nScoped URLs are encoded URLs that permit temporary access to a staged file without granting privileges to the stage. The URL expires when the persisted query result period ends (i.e. the results cache expires), which is currently 24 hours.\n\nWe can generate a scoped URL of any file using the function `build_scoped_url()`. For example, let’s create a view which provides the scoped URL for files in the stage `email_stage_internal`.\n\n```sql\ncreate or replace view email_scoped_url_v\nas\nselect\n\trelative_path\n\t, build_scoped_file_url(@email_stage_internal,relative_path) as scoped_url\nfrom directory(@email_stage_internal);\n\nselect * from email_scoped_url_v limit 5;\n```\n![Scoped URL](https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/7_1.png)\n\nAs explained previously, this URL will be valid for 24 hours. Snowsight retrieves the file only for the user who generated the scoped URL.\n\nScoped URLs enable access to the files via a view that retrieves scoped URLs. Only roles that have privileges on the view can access the files. The scoped URL contents are all encrypted and doesn't give any information about the bucket, database or schema.\n\n#### Secure Access with RBAC and Scoped URL\nLet’s assume a scenario where the `analyst` role needs access to all the files from the inbox of `NEMEC-G`. We can build a dynamic view which will filter the output based on the role of the view user.\n\nFirst let’s build an assignment table where various roles (or even users) can be assigned a given mailbox for further analysis.\n\n```sql\ncreate or replace table assignment (mailbox string, role string, filter string);\n\ninsert into assignment values ('NEMEC-G','ANALYST','%nemec-g%');\ninsert into assignment values ('*','SYSADMIN','%');\n\nselect * from assignment;\n```\n\nAs we can see from the query output above, the assignment table controls a 1-to-1 role-to-mailbox access mapping.\n\nWe can now build a SQL view which will join with the assignment table to dynamically filter rows based on the role of the user executing the view and grant access to the view to the `analyst` role:\n\n```sql\ncreate or replace secure view analyst_file_access_v as\n    select\n\t    relative_path\n\t\t, build_scoped_file_url(@email_stage_internal,relative_path) as scoped_url\n    from directory(@email_stage_internal)\n\t    inner join assignment\n    where relative_path like filter\n  \t    and role = current_role();\n\ngrant select on analyst_file_access_v to role analyst;\n```\n\nLet’s switch to role `analyst` and query the view.\n\n```sql\nuse role analyst;\nuse warehouse quickstart;\nuse schema raw;\nselect * from analyst_file_access_v;\n```\n![Secure View Scoped URL](https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/7_2.png)\n\nClick the `scoped_url` corresponding to the file `1222.` to your workstation and review the file locally.\n\nIf we switch the role to `sysadmin` and run the same query:\n\n```sql\nuse role sysadmin;\nuse warehouse quickstart;\nuse schema raw;\nselect * from analyst_file_access_v;\n```\n\nThis returns scoped URLs to access all the files.\n\nAs we just experimented, scoped URLs are ideal for use in custom applications, providing unstructured data to other accounts via a share, or for downloading and ad-hoc analysis of unstructured data via Snowsight.\n\n\n### File URL\nA file URL is a permanent URL that identifies the database, schema, stage, and file path to a set of files, as opposed to the previous scoped URL where all this information is encrypted. A role that has sufficient privileges on the stage can access the files. It does not contain any authentication token. Authentication needs to be done when connecting through REST API. However, it works from our current authenticated Snowsight session.\n\nThe following query will provide the file urls for the mailbox `arnold-j`.\n\n```sql\nselect\n    relative_path\n    , build_stage_file_url(@email_stage_internal,relative_path) as stage_file_url\nfrom directory(@email_stage_internal) \nwhere relative_path like '%arnold-j%';\n```\n![File URL](https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/7_3.png)\n\nClick on any of the stage file URLs and download the file to your workstation.\n\n### Pre-signed URL\nPre-signed URLs are used to download or access files, via a web browser for example, without authenticating into Snowflake or passing an authorization token. These URLs are ideal for business intelligence applications or reporting tools that need to display the unstructured file contents.\n\nPre-signed URLs are open but temporary. The expiration time for the access token is configurable when generating the URL. Any user or application can directly access or download the files until the expiration time is reached. \n\nThe following query will generate the pre-signed URLs for the mailbox `beck-s`. In the `get_presigned_url()` system function, we pass the parameter `300` which represents the expiration time for the token in seconds (which is 300s, so 5 minutes in this case).\n```sql\nselect\n    relative_path\n    , get_presigned_url(@email_stage_internal,relative_path,300) as presigned_url\nfrom directory(@email_stage_internal) \nwhere relative_path like '%beck-s%';\n```\nClick on any cell value in the `PRESIGNED_URL` column. This should give the actual full URL on the right hand side in the grey cell. (Click to Copy)\n\n![Pre-signed URL](https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/7_4.png)\n\nOpen a new tab in your web browser, and paste the copied URL. This should download the file on your workstation. As you can see, the URL is valid even when executed outside from the Snowsight UI.\n\n\u003C!-- ------------------------ --\u003E\n## Perform Natural Language Processing\n\nWe have so far reviewed how to store unstructured data files, retrieve them, provide granular access to the files through various URLs and through secure views. In this section, we want to extract additional attributes from the files. The entities extracted are going to be person names mentioned in the emails, as well as locations. The goal is to have these additional attributes used to enrich the file-level metadata for analytics.\n\nUsing Snowpark runtimes and libraries, you can securely deploy and process Python, Java and Scala code to build pipelines, ML models, and applications in Snowflake. You can process unstructured files in Java (generally available), Python (public preview), and Scala (public preview) natively in Snowflake using Snowpark. In the following sections, you'll see how entity extraction can be done with Snowpark for both Java and Python.\n\n### Python\nFor convenience, a number of popular open source third-party Python packages that are built and provided by Anaconda are made available to use out of the box inside Snowflake via the [Anaconda Snowflake channel](https://repo.anaconda.com/pkgs/snowflake). For any third-party packages not yet included, you can use stages to import. In this example, we'll use the punkt, averaged_perceptron_tagger, maxent_ne_chunker, and words language models from the [nltk](https://www.nltk.org/) package, which have been uploaded and available on a Snowflake s3 public bucket.\n\n#### Creating a Python UDF\nCreating the UDF involves a few steps in Snowflake.\n\n1. Create the external stage mapping to the S3 bucket URI where the jar file is currently available. From the Snowflake worksheet, enter the following command:\n\n\n```sql\nuse role sysadmin;\nuse schema emaildb.raw;\n\ncreate or replace stage nltk_imports\nurl = \"s3://sfquickstarts/Getting Started Unstructured Data/Files/\"\ndirectory = (enable = true);\n```\n\n\nFrom the Snowflake worksheet, you can run the following command to confirm the nltk zip file is listed in the external stage.\n```sql\nls @nltk_imports/nltk_data;\n```\n\n![List nltk imports external stage](https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/8_8.png)\n\n2. We can now create the UDF in Snowflake as the following.\n```sql\ncreate or replace function python_parseText(file_path string)\n    returns variant\n    language python\n    runtime_version=3.8\n    imports = ('@nltk_imports/nltk_data.zip')\n    packages = ('snowflake-snowpark-python','nltk')\n    handler = 'udf_compute_named_entity'\nAS\n$$\ndef load_files(): \n    \"\"\"Helper function that loads zipped files from stage and adds them\n    to the nltk data path\"\"\"\n    import os\n    import zipfile\n    import nltk\n    import sys\n    \n    #import directory, to be able to make references to files in the stage\n    IMPORT_DIRECTORY_NAME = \"snowflake_import_directory\"\n    import_dir = sys._xoptions[IMPORT_DIRECTORY_NAME]\n    \n    #paths to extract to, this is where the nltk library will search for the required files\n    nltk_dir = \"/tmp/nltk_data\"\n        \n    with zipfile.ZipFile(os.path.join(import_dir, \"nltk_data.zip\"), 'r') as zip_ref: \n        zip_ref.extractall(nltk_dir)\n    \n    #append extracted path to the nltk library search path for usage in UDF\n    nltk.data.path.append(nltk_dir)\n\ndef udf_compute_named_entity(file_path:str) -\u003E dict:\n    from snowflake.snowpark.files import SnowflakeFile\n    import email\n    import json\n    import nltk\n    from nltk.tokenize import word_tokenize\n    from nltk.tag import pos_tag\n    from nltk.chunk import ne_chunk\n\n    def parse_email_file(file_path):\n        with SnowflakeFile.open(file_path, 'r') as f:\n            msg = email.message_from_file(f)\n            payload = \"\"\n            if msg.is_multipart():\n                for _payload in msg.get_payload():\n                    # if payload.is_multipart(): ...\n                    payload += _payload.get_payload()\n            else:\n                payload= msg.get_payload()\n            return payload\n    def perform_named_entity_extraction(text):\n        tokens = word_tokenize(text)\n        tagged_tokens = pos_tag(tokens)\n        named_entities = ne_chunk(tagged_tokens)\n        persons = []\n        locations = []\n        for entity in named_entities:\n            if hasattr(entity, 'label'):\n                if (entity.label() == 'PERSON'):\n                    persons.append(' '.join([token for token, pos in entity]))\n                elif (entity.label() == 'GPE'):\n                    locations.append(' '.join([token for token, pos in  entity]))\n        return {\"PERSONS\":persons,\"LOCATIONS\":locations}        \n    email_body = parse_email_file(file_path)\n    #load the files from stage for usage\n    load_files()\n    return perform_named_entity_extraction(email_body)\n\n$$;\n```\n\n#### Invoking the Python UDF\n\nThe UDF can be invoked on any text file containing readable english. From the email corpus stored on the internal stage, we can invoke the UDF as follows.\n\n```sql\nselect python_parseText(build_scoped_file_url(@email_stage_internal,'/sanders-r/inbox/60.')) \nas entities_extraction;\n```\n\n![Python UDF Results](https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/8_9.png)\n\nThe output is serialized as a valid JSON format by the UDF. It contains 2 arrays, one for each named entities extraction:\n\n```json\n{\n  \"LOCATIONS\": [\n    \"Toronto\"\n  ],\n  \"PERSONS\": [\n    \"Vince Carter\",\n    \"Hakeem\"\n  ]\n}\n```\n\nSince we are using pre-built models which haven’t been trained on this particular corpus, the entity extraction may not always be accurate. However, the models perform overall quite well for illustration purposes for this quickstart.\n\n### Java\nAlternatively to Python, the same entity extraction can be accomplished with Java. The Java code for the UDF has already been written and provided below. This code uses the open source [Apache OpenNLP](https://opennlp.apache.org/) library to perform natural language processing on English text in this occurrence.\n\nThe Java code leverages pre-built [machine learning models](http://opennlp.sourceforge.net/models-1.5/) to perform named entity extraction for persons and locations. These models are packaged manually post-build in a Fat JAR.\n\nAt a high level, the code does the following:\n\n- Parse the text file contents using an Apache Tika text parser. \n- Tokenize the parsed contents using a model.\n- From the tokens, perform a named entity extraction for persons and locations using pre-built ML models.\n- Serialize the results in a JSON string returned as an output.\n \n```java\npublic String ParseText(String filePath) throws IOException, SAXException, TikaException {\n\t\t\t\n// Configure gson\t      \nGsonBuilder gsonBuilder = new GsonBuilder()\nGson gson = gsonBuilder.create();\n\t\t\n//detecting the file type\nBodyContentHandler handler = new BodyContentHandler();\nMetadata metadata = new Metadata();\nParseContext pcontext=new ParseContext();\n\t     \nSnowflakeFile file = SnowflakeFile.newInstance(filePath);\nInputStream ins = file.getInputStream();\n\t      \n//Text document parser\nTXTParser  TexTParser = new TXTParser();\nTexTParser.parse(ins, handler, metadata, pcontext);\n\t      \nString Contents = handler.toString();\n\t      \nString[] AllPersonEntities = null;\nString[] AllLocationEntities = null;\nString JsonResult = null;\n\t      \nNamedEntities NE = new NamedEntities(AllPersonEntities, AllLocationEntities);\n\t\t\t\n try {\n         for(int i=0;i\u003Csentences.length;i++){\n\t          String Tokens[] = new NamedEntityExtraction().ParseTokens(Contents);\n\t          String PersonEntities[] = new NamedEntityExtraction().findName(Tokens);\n\t          String LocationEntities[] = new NamedEntityExtraction().findLocation(Tokens);\n\t           \n\t          AllPersonEntities = ArrayUtils.addAll(AllPersonEntities, PersonEntities);\n\t          AllLocationEntities = ArrayUtils.addAll(AllLocationEntities, LocationEntities);\n\t           \n\t          NE.setPersons(AllPersonEntities);\n\t          NE.setLocations(AllLocationEntities);\n\t           \n\t          JsonResult = gson.toJson(NE).toString();\t\n               \t\t\n\t\t\n\t\t\t} catch (IOException e) {\n\t            e.printStackTrace();\n\t        }\n\t\t     return(JsonResult);\n}\n```\n\nA few elements relevant for this code:\n\n- Notice the main class is __NamedEntityExtraction__.\n- The method __ParseText__ will be invoked by the UDF in the next section.\n- The file path is passed as a parameter. It can be a URL to the file, or the path on the stage.\n\n#### Creating a Java UDF\nThe precompiled jar file including all the dependencies has been uploaded and available on a Snowflake s3 public bucket. Creating the UDF involves a few steps in Snowflake.\n\n1. Create the external stage mapping to the S3 bucket URI where the jar file is currently available. From the Snowflake worksheet, enter the following command:\n\n\n```sql\nuse role sysadmin;\nuse schema emaildb.raw;\n\ncreate or replace stage jars_stage_external\nurl = \"s3://sfquickstarts/Common JARs/\"\ndirectory = (enable = true auto_refresh = true);\n```\n\n\nFrom the Snowflake worksheet, you can run the following command to confirm the jar file is listed in the external stage.\n```sql\nls @jars_stage_external;\n```\n\n![List jar external stage](https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/8_1.png)\n\n2. We can now create the UDF in Snowflake as the following.\n```sql\ncreate or replace function  java_parseText(file string)\nreturns string\nlanguage java\nimports = ('@jars_stage_external/EmailNLPv3-3.0.jar')\nhandler = 'NamedEntityExtraction.ParseText'\n;\n```\n\n### Invoking the Java UDF\nThe UDF can be invoked on any text file containing readable english. From the email corpus stored on the internal stage, we can invoke the UDF as follows.\n\n```sql\nselect java_parseText(build_scoped_file_url('@email_stage_internal','/sanders-r/inbox/60.')) \nas entities_extraction;\n```\n\n![Java UDF Results](https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/8_2.png)\n\nThe output is serialized as a valid JSON format by the UDF. It contains 2 arrays, one for each named entities extraction:\n\n```json\n{\n\"Persons\":[\"David\",\"Richard\",\"Rob\",\"Mark\",\"Richard\",\"Vince Carter\"],\n\"Locations\":[\"Toronto\",\"Toronto\"]\n}\n```\n\n### Extracting and Storing Named Entities\nWe want to store the named entities as additional attributes for analysts to be able to select and retrieve the files of interest in their analysis, as well as perform some analytics on the attributes found. For the purpose of this quickstart, we'll use the Java UDF to complete this task. However, the same could be done using the Python UDF.\n\nWe first want to scale-up the default warehouse size to run the Java UDF at scale across all cores available on all nodes on a 2XL warehouse (64 nodes). This can be done easily and quickly because of Snowflake's instant elasticity:\n\n```sql\nalter warehouse quickstart set warehouse_size = xxlarge;\n```\n\nNow let's run the following query to store the named entities into a table.\n\n```sql\ncreate or replace table email_named_entities_base as\nselect\n    relative_path\n    , upper(replace(get(split(relative_path, '/'), 0), '\\\"', ''))\tas mailbox\n    , java_parseText(build_scoped_file_url('@email_stage_internal/', relative_path)) \t\tas named_entities\nfrom (\n    select relative_path\n    from directory(@email_stage_internal)\n    group by relative_path\n);\n```\n\nAfter running this query, we can set the `warehouse` size back to a smaller size.\n\n\u003Caside class=\"warning\"\u003E\n    THIS STEP IS VERY IMPORTANT NOT TO EXHAUST YOUR TRIAL CREDIT\n\u003C/aside\u003E\n\n```sql\nalter warehouse quickstart set warehouse_size = xsmall;\n```\n\nVerify with the following command that the warehouse is back to an `xsmall` size.\n\n```sql\nshow warehouses;\n```\n\nThe output should show the `QUICKSTART` size as being `XSMALL`. Now let's query the base table containing the named entities.\n\n```sql\nselect\n    *\nfrom email_named_entities_base\nlimit 5;\n```\n\nFor each email, we now have created a `MAILBOX` attribute, as well as JSON string containing the named entities present in the file.\n\n![Named Entities Base Table](https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/8_3.png)\n\n### Exploring the Mailbox Corpus\nWe have now extracted the named entities the analysts are interested in seeing to do some analytics on this email corpus. We can use Snowflake native capabilities to easily store and query semi-structured data, in this case JSON.\n\nWe will first create a view to parse the `NAMED_ENTITIES` JSON string and extract separately the persons and the locations entities, as well as count the number of entities identified in each email:\n\n```sql\ncreate or replace view email_info_v\nas\nwith named_entities\nas (\n    select\n\t    relative_path\n\t    , mailbox\n\t    , parse_json(named_entities) as named_entities\n    from email_named_entities_base\n)\nselect\n    relative_path\n    , mailbox\n    , named_entities:Persons::variant\t\t\t\tas persons\n    , array_size(persons)\t\t\t\t\t\t\tas num_person_entities\n    , named_entities:Locations::variant\t\t\t\tas locations\n    , array_size(locations)\t\t\t\t\t\t\tas num_location_entities\n    , array_size(persons) + array_size(locations)\tas total_entities\n    , build_scoped_file_url(@email_stage_internal, relative_path)\tas scoped_email_url\nfrom named_entities;\n```\nWe can query the view and examine the output. Notice that we now have JSON arrays in separate columns for name and location entities, count of entities, and a scoped URL to access the file if we need to further examine its contents.\n\n```sql\nselect * from email_info_v limit 10;\n```\n![Examine view output](https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/8_3_2.png)\n\nWe can now query the view to retrieve various entity metrics. For example, the following query identifies the top 5 emails in terms of total number of entities.\n\n```sql\nselect\n\trelative_path\n\t, mailbox\n\t, total_entities\n\t, num_person_entities\n\t, num_location_entities\n\t, persons\n\t, locations\n\t, scoped_email_url\nfrom email_info_v\norder by total_entities desc\nlimit 10;\n```\n![Number of entities view](https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/8_4.png)\n\nThe following query aggregates statistics on the number of entities identified per mailbox and returns the top 5 mailbox by total number of entities identified in the mailbox.\n\n```sql\nselect\n\tmailbox\n\t, count(relative_path)\t\t\t\tas num_emails\n\t, sum(total_entities)\t\t\t\tas sum_entities\n\t, round(avg(total_entities))\t\tas avg_entities\n\t, sum(num_person_entities)\t\t\tas sum_persons\n\t, round(avg(num_person_entities))\tas avg_persons\n\t, sum(num_location_entities)\t\tas sum_locations\n\t, round(avg(num_location_entities))\tas avg_locations\nfrom email_info_v\ngroup by mailbox\norder by sum_entities desc\nlimit 5;\n```\n\nWe know that the most prolific mailbox is `WHITE-S` for identified entities in this email corpus.\n\n### Performing Analytics on the Mailbox\nLet’s assume an analyst wants to identify all email correspondence where the name of 'Willman' (chosen completely randomly in this example) is mentioned. With Snowflake, you can easily flatten arrays to run this type of query.\n\n```sql\nselect\n\trelative_path\n\t, mailbox\n\t, pers.value::string as person_entity\nfrom\n\temail_info_v\n\t, lateral flatten(input =\u003E Persons) pers;\n```\n![Flattened JSON array](https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/8_5.png)\n\nWe can use the previous query as a CTE to retrieve all emails mentioning a specific person, including a scoped URL to access the actual email file.\n\n```sql\nwith persons_flattened as (\n    select\n    \trelative_path\n\t\t, mailbox\n\t\t, pers.value::string as person_entity\n    from\n    \temail_info_v\n\t\t, lateral flatten(input =\u003E Persons) pers\n)\nselect\n    relative_path\n    , mailbox\n    , person_entity\n    , build_scoped_file_url(@email_stage_internal,relative_path) as scoped_email_url\nfrom persons_flattened\nwhere person_entity like '%Willmann%';\n```\n![Mentions of Willmann](https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/8_6.png)\n\nClick on any `MAY-L` mailbox email to download and review the email. This will allow you to learn a little bit more about that person's role and responsibilities in the Enron organization.\n\nLet’s assume we want to identify the top 5 locations mentioned in the email corpus.\n\n```sql\nwith locations_flattened as (\n    select\n    \trelative_path\n\t    , mailbox\n\t    , loc.value::string\tas location_entity\n    from\n\t    email_info_v\n\t    , lateral flatten(input =\u003E Locations) loc\n)\nselect\n    location_entity\n    , count(location_entity) as num_occurrences\nfrom locations_flattened\ngroup by location_entity\norder by num_occurrences desc\nlimit 5;\n```\n\nWe can use Snowsight to produce a visualization. Click on chart and set the settings as shown below.\n\n![Number of location occurrences bar chart](https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/8_7.png)\n\nAs you can see, we can perform aggregations, and analytics on unstructured text data after extracting entities and information of interest. At this point, one could run more advanced data science use cases or visualizations using the numerous options available in Snowflake.\n\n\n\u003C!-- ------------------------ --\u003E\n## Share Unstructured Data\n\nIn this example, we want to share all the email corpus mentioning 'Willman' with another party using a Snowflake reader account.\n\n### Creating a Reader Account\nThe first step is to create a reader account as follows. Note that you will need to provide a secure password of your choice.\n\n```sql\nuse role accountadmin;\ncreate managed account if not exists emaildb_reader\nadmin_name='admin', admin_password='\u003Cpassword\u003E',\ntype=reader, COMMENT='Emaildb Reader Account';\n```\n\nThis command should return the account name, and the URL to access the account. Please copy and paste the output of the command as it provides you the login URL information for the account, as well as the user and password you chose\n\n```\n{\n\"accountName\":\"\u003Caccount_name\u003E\",\n\"loginUrl\":\"https://\u003Caccount\u003E.snowflakecomputing.com\"\n}\n```\n\nYou can run the following command to retrieve the managed account information at anytime.\n\n```sql\nshow managed accounts;\n```\n\nYou can connect to the previous reader account using the URL, and the userid/password credentials you passed as parameters.\n\n### Creating a Secure View to Share\nLet’s now create the secure view based on the query ran in the previous section that will be shared with the reader account.\n\n```sql\nuse role sysadmin;\nuse schema emaildb.raw;\n\ncreate or replace secure view email_corpus_willman_v as\nwith persons_flattened as (\n    select\n        relative_path\n        , mailbox\n        , pers.value::string as person_entity\n    from\n\t\temail_info_v\n        , lateral flatten(input =\u003E Persons) pers\n)\nselect\n    relative_path\n    , mailbox\n    , person_entity\n    , build_scoped_file_url(@email_stage_internal,relative_path) as email_url\nfrom persons_flattened\nwhere person_entity like '%Willmann%';\n```\n\n### Create the Share\n\nWe can now create the share as follows. You will need to provide the reader account name created earlier:\n\n```sql\n-- Create the share object\nuse role accountadmin;\ncreate or replace share email_corpus \ncomment='Share in scope email corpus information';\n\n--what are we sharing?\ngrant usage on database emaildb to share email_corpus;\ngrant usage on schema emaildb.raw to share email_corpus;\ngrant select on view emaildb.raw.email_corpus_willman_v to share email_corpus;\n\n-- whom are we sharing with?\nalter share email_corpus add accounts = \u003Creader-account-locator\u003E;\n```\n\nWe can review the share we have just created. The following command provides all the shares in the account.\n\n```sql\n-- check the share\nshow shares like 'email_corpus';\n```\n\nWe can get more details about the share, and the scope of the objects shared using the following command.\n\n```sql\n-- review share\ndescribe share email_corpus;\n```\n![Number of location occurrences bar chart](https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/9_1.png)\n\nThis command shows us that the view `EMAIL_CORPUS_WILLMAN_V` is shared from the database `EMAILDB` and schema `RAW` in the current account.\n\n### Accessing Shared Data\nSwitch to the web browser tab where you opened the session with the reader account created in step 6.1 or open a new session on the reader account. Now, click on the blue Snowsight UI button at the top and authenticate again.\n\nAfter logging in, as this is a new account, click on the worksheet button at the top and create a new virtual warehouse.\n\n```sql\nuse role sysadmin;\n\t\ncreate or replace warehouse compute_wh \nwarehouse_size=xsmall\nauto_suspend=1\nauto_resume=true\ninitially_suspended=true;\n\ngrant usage on warehouse compute_wh to public;\n```\n\nFirst, let's switch back to the `ACCOUNTADMIN` role. Click on the __Home__ button in the top-left. Then in the top-left, click on __ADMIN__, then hover over __Switch Role__, and click on __ACCOUNTADMIN__.\n![Switch to ACCOUNTADMIN role](https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/9_2.png)\n\nNow let's view the shared data. In the pane on the left, click on on __Data__, then __Private Sharing__. You will see the `EMAIL_CORPUS` database listed under __Ready to Get__. Select it and give the database name `EMAIL_CORPUS` and make it available to `PUBLIC`, then click the __Get Data__ button.\n![Get Data dialogue box](https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/9_3.png)\n\nClick on __Databases__, then click on the __Refresh__ button (round arrow button on the right side above the database list). You will now see the database `EMAIL_CORPUS`.\n![EMAIL_CORPUS shared database](https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/9_4.png)\n\nSelect the worksheet created in this reader account. Add the following commands to set the worksheet session parameters and review the view objects available.\n\n```sql\nuse role sysadmin;\nuse schema \u003Caccount-locator\u003E_email_corpus.raw;\nuse warehouse compute_wh;\n\nshow views;\n```\n\nIf you expand the database hierarchy on the left side of the window, you will see that the share appears from the consumer side as a database `EMAIL_CORPUS`, with a schema `RAW` and a single view object `EMAIL_CORPUS_WILLMAN_V`.\n\nWe can now query the shared data. The query below will display only the emails related to 'Willmann'.\n\n```sql\nselect * from email_corpus_willman_v;\n```\n\nFrom the results, notice that all the URLs are encrypted, not revealing any information of the location where the shared data came from. Click on any `EMAIL_URL` and get access to the actual email text downloaded to your workstation. Download and review the email. Make sure it is valid.\n![Access shared data files](https://www.snowflake.com/content/dam/snowflake-site/developers/guides/getting-started-with-unstructured-data/9_5.png)\n\nYou have now completed this demonstration of how unstructured data can be securely shared in the Snowflake Data Cloud using Snowflake Data Sharing capabilities.\n\n\n\u003C!-- ------------------------ --\u003E\n## Conclusion\n\nCongratulations! You used Snowflake to perform natural language processing on email files. \n\n### What we've covered\n- Accessing external data with an __External Stage__\n- Storing unstructured data with an __Internal Stage__ and __SnowSQL__\n- Governing unstructured data with __Role-Based Access Control__\n- Catalog unstructured data with __Directory Tables__\n- Securely access unstructured data with __Scoped, File, and Pre-signed URLs__\n- Processing unstructured data with __Snowpark for Python and Java__\n- Sharing unstructured data in the __Data Cloud__\n\n### Related Resources\n- [Unstructured Data Docs](https://docs.snowflake.com/en/user-guide/unstructured.html)\n- [Java UDF Docs](https://docs.snowflake.com/en/developer-guide/udf/java/udf-java.html)\n- [Snowpark Docs](https://docs.snowflake.com/en/developer-guide/snowpark/index.html)\n","multiValue":false,":type":"text/x-markdown"},"quickstartArticleLogoImage":{"dataType":"string","title":"Quickstart Article Logo Image","multiValue":false,":type":"text/plain"}},"isDeveloperGuidesPage":false,":type":"snowflake-site/components/contentfragment","model":"snowflake-site/models/quickstart-article"},"flexible_column_cont":{"id":"flexible-column-container-c2a80d4bd3","type":"2-column-75-25","alignColumns":"top","containerMaxWidth":"extra-large","topPadding":"none","bottomPadding":"none","spaceBetween":"none","reverseOnMobile":false,"carouselOnMobile":false,"backgroundImageOption":"none","flexible_column_content_container_1":{"layout":"SIMPLE","id":"container-b3b27acbf1",":itemsOrder":["quickstart_last_modi","text"],":items":{"quickstart_last_modi":{"id":"quickstart-last-modified-61a9749b3b","icon":{"id":"icon","icon":"calendar",":type":"snowflake-site/components/icon","appliedCssClassNames":"snowflake-icon-blue"},"lastModifiedDatePrefix":"Updated","lastModifiedDate":"2025-12-20",":type":"snowflake-site/components/quickstart/quickstart-last-modified","appliedCssClassNames":"snowflake-responsive-component-top-padding-small"},"text":{"id":"text-21ef4f431c","additionalClasses":"qs-disclaimer-text","text":"\u003Cp\u003E\u003Cspan style=\"color: #666;\"\u003EThis content is provided as is, and is not maintained on an ongoing basis. It may be out of date with current Snowflake instances\u003C/span\u003E\u003C/p\u003E\r\n","richText":true,":type":"snowflake-site/components/text","appliedCssClassNames":"snowflake-responsive-component-top-padding-small"}},":type":"snowflake-site/components/flexible-column-container/flexible-column-content-container"},"flexible_column_content_container_2":{"layout":"SIMPLE","id":"container-3b440234a5",":itemsOrder":[],":items":{},":type":"snowflake-site/components/flexible-column-container/flexible-column-content-container"},"isBlogPage":false,"isActiveTOC":false,":type":"snowflake-site/components/flexible-column-container"}},":type":"snowflake-site/components/flexible-column-container/flexible-column-content-container"},"flexible_column_content_container_2":{"layout":"SIMPLE","id":"container-a5d682d56a",":itemsOrder":["quickstart_table_of_"],":items":{"quickstart_table_of_":{"layout":"SIMPLE","id":"container-9e841fb3d4","isDeveloperGuidesPage":false,":itemsOrder":["quickstart_table_of_","quickstart_button"],":items":{"quickstart_table_of_":{"id":"quickstart-table-of-content-690b240173",":type":"snowflake-site/components/quickstart/quickstart-table-of-content","fragmentPath":"/content/dam/snowflake-site/en/content-fragments/quickstarts/getting-started-with-unstructured-data","headings":["\u003Ch2\u003EOverview\u003C/h2\u003E","\u003Ch2\u003ENotice and Terms of Use\u003C/h2\u003E","\u003Ch2\u003EPrepare your lab environment\u003C/h2\u003E","\u003Ch2\u003EStore & Access Unstructured Data\u003C/h2\u003E","\u003Ch2\u003EGovern Unstructured Data Access\u003C/h2\u003E","\u003Ch2\u003ECatalog Unstructured Data using Directory Tables\u003C/h2\u003E","\u003Ch2\u003EURLs for Secure Access\u003C/h2\u003E","\u003Ch2\u003EPerform Natural Language Processing\u003C/h2\u003E","\u003Ch2\u003EShare Unstructured Data\u003C/h2\u003E","\u003Ch2\u003EConclusion\u003C/h2\u003E"]},"quickstart_button":{"id":"quickstart-button-d3a90df6fc",":type":"snowflake-site/components/quickstart/quickstart-button","fragmentPath":"/content/dam/snowflake-site/en/content-fragments/quickstarts/getting-started-with-unstructured-data","appliedCssClassNames":"snowflake-responsive-component-top-padding-none"}},":type":"snowflake-site/components/quickstart/quickstart-table-of-content/quickstart-table-of-content-container"}},":type":"snowflake-site/components/flexible-column-container/flexible-column-content-container"},"isBlogPage":false,"isActiveTOC":false,":type":"snowflake-site/components/flexible-column-container"},"markup_editor":{"id":"markup-editor-ad7d4db174","title":"Page CSS","cssContent":"#quickstart-template-main-flexible-container{padding:24px}#quickstart-template-main-flexible-container \u003E .snowflake-flexible-column-container-items{grid-template-columns:1fr 0}.qs-disclaimer-text p \u003E span{font-size:15px !important}@media (min-width:768px){#quickstart-template-main-flexible-container{padding:24px 32px}#quickstart-template-main-flexible-container \u003E .snowflake-flexible-column-container-items{grid-template-columns:7fr 3fr;gap:48px}}@media (max-width:767px){#quickstart-template-main-flexible-container \u003E .snowflake-flexible-column-container-items{gap:0}}@media (min-width:1024px){#quickstart-template-main-flexible-container{padding:0 92px 48px 92px}#quickstart-template-main-flexible-container \u003E .snowflake-flexible-column-container-items{gap:117px}}","isGSAPEnabled":false,":type":"snowflake-site/components/markup-editor"}},":type":"wcm/foundation/components/responsivegrid"},"modal_container":{"layout":"SIMPLE","id":"container-d058aa33e5",":itemsOrder":[],":items":{},":type":"snowflake-site/components/modal/modal-container"},"experiencefragment-footer":{"id":"experiencefragment-ad88a33584","localizedFragmentVariationPath":"/content/experience-fragments/snowflake-site/language-masters/en/site/footer/master/jcr:content","configured":true,":itemsOrder":["root"],":items":{"root":{"additionalClasses":"sf-footer","layout":"SIMPLE","id":"container-e752f92c7f",":itemsOrder":["container_copy","container_573483281_","markup_editor_copy"],":items":{"container_copy":{"additionalClasses":"sf-footer__inner","gridClassNames":"aem-Grid aem-Grid--12 aem-Grid--default--12","columnClassNames":{"flexible_column_cont":"aem-GridColumn aem-GridColumn--default--12"},"layout":"RESPONSIVE_GRID","columnCount":12,"id":"container-297f8b2059","appliedCssClassNames":"snowflake-container snowflake-responsive-container-inner-padding-small",":itemsOrder":["flexible_column_cont"],":items":{"flexible_column_cont":{"id":"flexible-column-container-f81e8c5d02","type":"1-column","alignColumns":"top","containerMaxWidth":"extra-large","topPadding":"medium","bottomPadding":"extra-small","spaceBetween":"small","reverseOnMobile":false,"carouselOnMobile":false,"propertiesCSSClasses":"sf-footer-grid","backgroundImageOption":"none","flexible_column_content_container_1":{"layout":"SIMPLE","id":"container-a0ce559a90",":itemsOrder":["container"],":items":{"container":{"additionalClasses":"sf-footer-grid__inner","gridClassNames":"aem-Grid aem-Grid--12 aem-Grid--default--12","columnClassNames":{"container":"aem-GridColumn aem-GridColumn--default--12","container_1622723482":"aem-GridColumn aem-GridColumn--default--12","container_copy_copy_":"aem-GridColumn aem-GridColumn--default--12","container_copy_copy":"aem-GridColumn aem-GridColumn--default--12","container_copy":"aem-GridColumn aem-GridColumn--default--12"},"layout":"RESPONSIVE_GRID","columnCount":12,"id":"container-435d501d02","appliedCssClassNames":"snowflake-responsive-container-inner-padding-small",":itemsOrder":["container_1622723482","container","container_copy_copy","container_copy","container_copy_copy_"],":items":{"container_1622723482":{"additionalClasses":"sf-footer__column","gridClassNames":"aem-Grid aem-Grid--12 aem-Grid--default--12","columnClassNames":{"container":"aem-GridColumn aem-GridColumn--default--12"},"layout":"RESPONSIVE_GRID","columnCount":12,"id":"container-5cf9a6563f","appliedCssClassNames":"snowflake-responsive-container-inner-padding-small",":itemsOrder":["container"],":items":{"container":{"additionalClasses":"sf-footer__newsletter-group","gridClassNames":"aem-Grid aem-Grid--12 aem-Grid--default--12","columnClassNames":{"text":"aem-GridColumn aem-GridColumn--default--12","marketo_v2":"aem-GridColumn aem-GridColumn--default--12"},"layout":"RESPONSIVE_GRID","columnCount":12,"id":"container-f4778013a7","appliedCssClassNames":"snowflake-responsive-container-inner-padding-small",":itemsOrder":["text","marketo_v2"],":items":{"text":{"id":"text-27c4d6bb52","additionalClasses":"sf-footer__newsletter-title","text":"\u003Cp\u003E\u003Cb\u003ESubscribe to our monthly newsletter\u003C/b\u003E\u003C/p\u003E\r\n\u003Cp\u003EStay up to date on Snowflake’s latest products, expert insights and resources—right in your inbox!\u003C/p\u003E\r\n","richText":true,":type":"snowflake-site/components/text","appliedCssClassNames":"text-size-regular text-color-text-04"},"marketo_v2":{"id":"marketo-v2-b342e3ac10","marketoForm":{"formId":"45871","successUrl":null,"edit":false,"script":null,"hidden":null,"values":null},"munchkinId":"252-RFO-227","serverInstance":"252-RFO-227.mktoweb.com","marketoConfigured":true,"formConfigured":true,":type":"snowflake-site/components/form/marketo-v2"}},":type":"snowflake-site/components/container"}},":type":"snowflake-site/components/container"},"container":{"gridClassNames":"aem-Grid aem-Grid--12 aem-Grid--default--12","columnClassNames":{"text_copy":"aem-GridColumn aem-GridColumn--default--12","text":"aem-GridColumn aem-GridColumn--default--12"},"layout":"RESPONSIVE_GRID","columnCount":12,"id":"container-25de9a9dfe","appliedCssClassNames":"snowflake-responsive-container-inner-padding-medium",":itemsOrder":["text","text_copy"],":items":{"text":{"id":"text-2de4816e84","additionalClasses":"sf-footer__link-group","text":"\u003Cp class=\"sf-footer__column-title\"\u003EProduct\u003C/p\u003E\r\n\u003Cul\u003E\r\n\u003Cli\u003E\u003Ca href=\"https://www.snowflake.com/en/product/platform/\"\u003EPlatform\u003C/a\u003E\u003C/li\u003E\r\n\u003Cli\u003E\u003Ca href=\"/en/product/snowflake-cowork/\"\u003ESnowflake CoWork\u003C/a\u003E\u003C/li\u003E\r\n\u003Cli\u003E\u003Ca href=\"https://www.snowflake.com/en/product/data-engineering/\"\u003EData Engineering\u003C/a\u003E\u003C/li\u003E\r\n\u003Cli\u003E\u003Ca href=\"https://www.snowflake.com/en/product/analytics/\"\u003EAnalytics\u003C/a\u003E\u003C/li\u003E\r\n\u003Cli\u003E\u003Ca href=\"https://www.snowflake.com/en/product/ai/\"\u003EAI\u003C/a\u003E\u003C/li\u003E\r\n\u003Cli\u003E\u003Ca href=\"https://www.snowflake.com/en/product/applications-and-collaboration/\"\u003EApplications &amp; Collaboration\u003C/a\u003E\u003C/li\u003E\r\n\u003Cli\u003E\u003Ca href=\"https://www.snowflake.com/en/pricing-options/\"\u003EPricing\u003C/a\u003E\u003C/li\u003E\r\n\u003C/ul\u003E\r\n","richText":true,":type":"snowflake-site/components/text","appliedCssClassNames":"text-size-small text-color-text-04"},"text_copy":{"id":"text-ead52d3206","additionalClasses":"sf-footer__link-group","text":"\u003Cp class=\"sf-footer__column-title\"\u003ESupport\u003C/p\u003E\r\n\u003Cul\u003E\r\n\u003Cli\u003E\u003Ca href=\"https://www.snowflake.com/en/support/\"\u003ESupport\u003C/a\u003E\u003C/li\u003E\r\n\u003Cli\u003E\u003Ca href=\"https://www.snowflake.com/en/legal/addenda/priority-support-services-description/\"\u003EPriority Support\u003C/a\u003E\u003C/li\u003E\r\n\u003Cli\u003E\u003Ca href=\"https://status.snowflake.com/\" target=\"_blank\" rel=\"noopener noreferrer\"\u003EStatus\u003C/a\u003E\u003C/li\u003E\r\n\u003C/ul\u003E\r\n","richText":true,":type":"snowflake-site/components/text","appliedCssClassNames":"text-size-small text-color-text-04"}},":type":"snowflake-site/components/container"},"container_copy_copy":{"gridClassNames":"aem-Grid aem-Grid--12 aem-Grid--default--12","columnClassNames":{"text":"aem-GridColumn aem-GridColumn--default--12"},"layout":"RESPONSIVE_GRID","columnCount":12,"id":"container-ff60ca377b","appliedCssClassNames":"snowflake-responsive-container-inner-padding-small",":itemsOrder":["text"],":items":{"text":{"id":"text-8293d74578","additionalClasses":"sf-footer__link-group","text":"\u003Cp class=\"sf-footer__column-title\"\u003E\u003Ca href=\"/en/solutions/industries/\"\u003EIndustries\u003C/a\u003E\u003C/p\u003E\r\n\u003Cul\u003E\r\n\u003Cli\u003E\u003Ca href=\"/en/solutions/industries/advertising-media-entertainment/\"\u003EAdvertising, Media &amp; Entertainment\u003C/a\u003E\u003C/li\u003E\r\n\u003Cli\u003E\u003Ca href=\"/en/solutions/industries/financial-services/\"\u003EFinancial Services\u003C/a\u003E\u003C/li\u003E\r\n\u003Cli\u003E\u003Ca href=\"/en/solutions/industries/healthcare-and-life-sciences/\"\u003EHealthcare &amp; Life Sciences\u003C/a\u003E\u003C/li\u003E\r\n\u003Cli\u003E\u003Ca href=\"/en/solutions/industries/manufacturing/\"\u003EManufacturing\u003C/a\u003E\u003C/li\u003E\r\n\u003Cli\u003E\u003Ca href=\"/en/solutions/industries/public-sector/\"\u003EPublic Sector\u003C/a\u003E\u003C/li\u003E\r\n\u003Cli\u003E\u003Ca href=\"/en/solutions/industries/retail-consumer-goods/\"\u003ERetail &amp; Consumer Goods\u003C/a\u003E\u003C/li\u003E\r\n\u003Cli\u003E\u003Ca href=\"/en/solutions/industries/telecom/\"\u003ETelecom\u003C/a\u003E\u003C/li\u003E\r\n\u003Cli\u003E\u003Ca href=\"https://www.snowflake.com/en/solutions/industries/technology/\"\u003ETechnology\u003C/a\u003E\u003C/li\u003E\r\n\u003C/ul\u003E\r\n","richText":true,":type":"snowflake-site/components/text","appliedCssClassNames":"text-size-small text-color-text-04"}},":type":"snowflake-site/components/container"},"container_copy":{"gridClassNames":"aem-Grid aem-Grid--12 aem-Grid--default--12","columnClassNames":{"text":"aem-GridColumn aem-GridColumn--default--12"},"layout":"RESPONSIVE_GRID","columnCount":12,"id":"container-2e54775121","appliedCssClassNames":"snowflake-responsive-container-inner-padding-small",":itemsOrder":["text"],":items":{"text":{"id":"text-f027df355c","additionalClasses":"sf-footer__link-group","text":"\u003Cp class=\"sf-footer__column-title\"\u003ECompany\u003C/p\u003E\r\n\u003Cul\u003E\r\n\u003Cli\u003E\u003Ca href=\"https://www.snowflake.com/en/company/overview/about-snowflake/\"\u003EAbout Snowflake\u003C/a\u003E\u003C/li\u003E\r\n\u003Cli\u003E\u003Ca href=\"https://www.snowflake.com/en/company/overview/leadership-and-board/\"\u003ELeadership &amp; Board\u003C/a\u003E\u003C/li\u003E\r\n\u003Cli\u003E\u003Ca href=\"https://careers.snowflake.com/us/en\" target=\"_blank\" rel=\"noopener noreferrer\"\u003ECareers\u003C/a\u003E\u003C/li\u003E\r\n\u003Cli\u003E\u003Ca href=\"https://investors.snowflake.com/overview/default.aspx\" target=\"_blank\" rel=\"noopener noreferrer\"\u003EInvestor Relations\u003C/a\u003E\u003C/li\u003E\r\n\u003Cli\u003E\u003Ca href=\"https://trust.snowflake.com/\" target=\"_blank\" rel=\"noopener noreferrer\"\u003ETrust Center\u003C/a\u003E\u003C/li\u003E\r\n\u003Cli\u003E\u003Ca href=\"https://www.snowflake.com/brand-guidelines/\" target=\"_blank\" rel=\"noopener noreferrer\"\u003EBrand Guidelines\u003C/a\u003E\u003C/li\u003E\r\n\u003Cli\u003E\u003Ca href=\"https://www.snowflake.com/en/contact/\"\u003EContact\u003C/a\u003E\u003C/li\u003E\r\n\u003Cli\u003E\u003Ca href=\"https://www.snowflake.com/en/news/\"\u003ENewsroom\u003C/a\u003E\u003C/li\u003E\r\n\u003Cli\u003E\u003Ca href=\"https://www.snowflake.com/en/company/overview/esg/\"\u003EEnvironmental, Social &amp; Governance\u003C/a\u003E\u003C/li\u003E\r\n\u003Cli\u003E\u003Ca href=\"https://www.snowflake.com/en/company/overview/snowflake-ventures/\"\u003ESnowflake Ventures\u003C/a\u003E\u003C/li\u003E\r\n\u003Cli\u003E\u003Ca href=\"https://www.snowflake.com/en/company/overview/end-data-disparity/\"\u003EEnd Data Disparity\u003C/a\u003E\u003C/li\u003E\r\n\u003Cli\u003E\u003Ca href=\"/en/summit/\"\u003ESnowflake Summit 26\u003C/a\u003E\u003C/li\u003E\r\n\u003C/ul\u003E\r\n","richText":true,":type":"snowflake-site/components/text","appliedCssClassNames":"text-size-small text-color-text-04"}},":type":"snowflake-site/components/container"},"container_copy_copy_":{"gridClassNames":"aem-Grid aem-Grid--12 aem-Grid--default--12","columnClassNames":{"text":"aem-GridColumn aem-GridColumn--default--12"},"layout":"RESPONSIVE_GRID","columnCount":12,"id":"container-6f0cc8f976","appliedCssClassNames":"snowflake-responsive-container-inner-padding-small",":itemsOrder":["text"],":items":{"text":{"id":"text-570c1cfb00","additionalClasses":"sf-footer__link-group","text":"\u003Cp class=\"sf-footer__column-title\"\u003ELearn\u003C/p\u003E\r\n\u003Cul\u003E\r\n\u003Cli\u003E\u003Ca href=\"https://snowflake.com/en/resources/\"\u003EResource Library\u003C/a\u003E\u003C/li\u003E\r\n\u003Cli\u003E\u003Ca href=\"/en/webinars/demo/\"\u003ELive Demos\u003C/a\u003E\u003C/li\u003E\r\n\u003Cli\u003E\u003Ca href=\"https://www.snowflake.com/en/fundamentals/\"\u003EFundamentals\u003C/a\u003E\u003C/li\u003E\r\n\u003Cli\u003E\u003Ca href=\"https://www.snowflake.com/en/resources/learn/training/\"\u003ETraining\u003C/a\u003E\u003C/li\u003E\r\n\u003Cli\u003E\u003Ca href=\"https://www.snowflake.com/en/resources/learn/certifications/\"\u003ECertifications\u003C/a\u003E\u003C/li\u003E\r\n\u003Cli\u003E\u003Ca rel=\"noopener noreferrer\" target=\"_blank\" href=\"https://learn.snowflake.com/en/\"\u003ESnowflake University\u003C/a\u003E\u003C/li\u003E\r\n\u003Cli\u003E\u003Ca href=\"https://www.snowflake.com/en/developers/guides\"\u003EDeveloper Guides\u003C/a\u003E\u003C/li\u003E\r\n\u003Cli\u003E\u003Ca rel=\"noopener noreferrer\" target=\"_blank\" href=\"https://docs.snowflake.com/\"\u003EDocumentation\u003C/a\u003E\u003C/li\u003E\r\n\u003Cli\u003E\u003Ca href=\"/en/data-governance/\"\u003EData Governance\u003C/a\u003E\u003C/li\u003E\r\n\u003C/ul\u003E\r\n","richText":true,":type":"snowflake-site/components/text","appliedCssClassNames":"text-size-small text-color-text-04"}},":type":"snowflake-site/components/container"}},":type":"snowflake-site/components/container"}},":type":"snowflake-site/components/flexible-column-container/flexible-column-content-container"},"isBlogPage":false,"isActiveTOC":false,":type":"snowflake-site/components/flexible-column-container"}},":type":"snowflake-site/components/container"},"container_573483281_":{"additionalClasses":"sf-footer__bottom","gridClassNames":"aem-Grid aem-Grid--12 aem-Grid--default--12","columnClassNames":{"container_112062425":"aem-GridColumn aem-GridColumn--default--12"},"layout":"RESPONSIVE_GRID","columnCount":12,"id":"container-8c697dbd6a","appliedCssClassNames":"snowflake-responsive-container-inner-padding-none",":itemsOrder":["container_112062425"],":items":{"container_112062425":{"gridClassNames":"aem-Grid aem-Grid--12 aem-Grid--default--12","columnClassNames":{"flexible_column_cont":"aem-GridColumn aem-GridColumn--default--12"},"layout":"RESPONSIVE_GRID","columnCount":12,"id":"container-be17504243","appliedCssClassNames":"snowflake-container snowflake-responsive-container-inner-padding-small",":itemsOrder":["flexible_column_cont"],":items":{"flexible_column_cont":{"id":"flexible-column-container-358512ebeb","type":"1-column","alignColumns":"top","containerMaxWidth":"extra-large","topPadding":"none","bottomPadding":"none","spaceBetween":"small","reverseOnMobile":false,"carouselOnMobile":false,"backgroundImageOption":"none","flexible_column_content_container_1":{"layout":"SIMPLE","id":"container-6a2c0f0a61",":itemsOrder":["container"],":items":{"container":{"additionalClasses":"sf-footer__legal-container","gridClassNames":"aem-Grid aem-Grid--12 aem-Grid--default--12","columnClassNames":{"container":"aem-GridColumn aem-GridColumn--default--12","text_copy_copy_16360":"aem-GridColumn aem-GridColumn--default--12","markup_editor":"aem-GridColumn aem-GridColumn--default--12"},"layout":"RESPONSIVE_GRID","columnCount":12,"id":"container-ef74ccb9bb","appliedCssClassNames":"snowflake-responsive-container-inner-padding-none",":itemsOrder":["container","text_copy_copy_16360","markup_editor"],":items":{"container":{"gridClassNames":"aem-Grid aem-Grid--12 aem-Grid--default--12","columnClassNames":{"image":"aem-GridColumn aem-GridColumn--default--12"},"layout":"RESPONSIVE_GRID","columnCount":12,"id":"container-40ef840ec5","appliedCssClassNames":"snowflake-responsive-container-inner-padding-extra-small",":itemsOrder":["image"],":items":{"image":{"id":"image-8ab99bf469","additionalClasses":"sf-footer__logo","imageLink":{"valid":true,"url":"/en/"},"lazyEnabled":true,"alt":"Snowflake logo","src":"https://www.snowflake.com/content/experience-fragments/snowflake-site/language-masters/en/site/footer/master/_jcr_content/root/container_573483281_/container_112062425/flexible_column_cont/flexible_column_content_container_1/container/container/image.coreimg.svg/1747882370694/nav-icon-snowflake-bug.svg","height":"64","width":"64",":type":"snowflake-site/components/image"}},":type":"snowflake-site/components/container"},"text_copy_copy_16360":{"id":"text-0ea1ea628f","additionalClasses":"sf-footer__legal-links","text":"\u003Cul\u003E\r\n\u003Cli\u003E© 2026 Snowflake Inc. All Rights Reserved\u003C/li\u003E\r\n\u003Cli\u003E\u003Ca href=\"https://www.snowflake.com/en/legal/privacy/privacy-policy/\"\u003EPrivacy Policy\u003C/a\u003E\u003C/li\u003E\r\n\u003Cli\u003E\u003Ca href=\"https://snowflake.com/en/legal/snowflake-site-terms/\"\u003ESite Terms\u003C/a\u003E\u003C/li\u003E\r\n\u003Cli\u003E\u003Ca href=\"https://info.snowflake.com/Preference-center.html\"\u003ECommunication Preferences\u003C/a\u003E\u003C/li\u003E\r\n\u003Cli\u003E\u003Cbutton id=\"ot-sdk-btn\" class=\"ot-sdk-show-settings\"\u003ECookie Settings\u003C/button\u003E\u003C/li\u003E\r\n\u003Cli\u003E\u003Ca href=\"https://www.snowflake.com/en/legal/privacy/privacy-policy/#12\"\u003EDo Not Share My Personal Information\u003C/a\u003E\u003C/li\u003E\r\n\u003Cli\u003E\u003Ca href=\"https://www.snowflake.com/en/legal/\"\u003ELegal\u003C/a\u003E\u003C/li\u003E\r\n\u003C/ul\u003E\r\n","richText":true,":type":"snowflake-site/components/text","appliedCssClassNames":"text-size-small text-color-text-04"},"markup_editor":{"id":"markup-editor-477c6ea651","title":" ","htmlContent":"\u003Cdiv class=\"sf-footer__social\"\u003E\r\n\u003Cdiv data-testid=\"snowflake-footer-twitter\" class=\"snowflake-button-icon snowflake-button-white snowflake-footer-social-item\"\u003E\u003Cdiv class=\"snowflake-button-icon \"\u003E\u003Ca href=\"https://x.com/Snowflake\" data-testid=\"button-external\" aria-label=\"X (Twitter)\" role=\"button\" class=\"snowflake-button-container\" title=\"X (Twitter)\" tabindex=\"0\" target=\"_blank\" rel=\"noreferrer\"\u003E\u003Cdiv data-testid=\"button-icon-wrapper\"\u003E\u003Csvg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 59 53\" class=\"button-icon\"\u003E\u003Cpath fill=\"currentColor\" d=\"M46.614 0h9.044L35.8 22.49 59 53H40.795L26.54 34.46 10.223 53H1.18l21.036-24.055L0 0h18.657l12.878 16.937zM43.45 47.72h5.013L16.023 5.085h-5.387z\"\u003E\u003C/path\u003E\u003C/svg\u003E\u003C/div\u003E\u003C/a\u003E\u003Cdiv\u003E\u003C/div\u003E\u003C/div\u003E\u003C/div\u003E\u003Cdiv data-testid=\"snowflake-footer-linkedin\" class=\"snowflake-button-icon snowflake-button-white snowflake-footer-social-item\"\u003E\u003Cdiv class=\"snowflake-button-icon \"\u003E\u003Ca href=\"https://www.linkedin.com/company/3653845\" data-testid=\"button-external\" aria-label=\"LinkedIn\" role=\"button\" class=\"snowflake-button-container\" title=\"LinkedIn\" tabindex=\"0\" target=\"_blank\" rel=\"noreferrer\"\u003E\u003Cdiv data-testid=\"button-icon-wrapper\"\u003E\u003Csvg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 24 24\" class=\"button-icon\"\u003E\u003Cpath d=\"M22.223 0H1.772C.792 0 0 .773 0 1.73v20.536C0 23.222.792 24 1.772 24h20.451c.98 0 1.777-.778 1.777-1.73V1.73C24 .773 23.203 0 22.223 0ZM7.12 20.452H3.558V8.995H7.12v11.457ZM5.34 7.434a2.064 2.064 0 1 1 0-4.125 2.063 2.063 0 0 1 0 4.125Zm15.112 13.018h-3.558v-5.57c0-1.326-.024-3.037-1.852-3.037-1.851 0-2.133 1.449-2.133 2.944v5.663H9.356V8.995h3.413v1.566h.047c.473-.9 1.636-1.852 3.365-1.852 3.605 0 4.27 2.372 4.27 5.457v6.286Z\"\u003E\u003C/path\u003E\u003C/svg\u003E\u003C/div\u003E\u003C/a\u003E\u003Cdiv\u003E\u003C/div\u003E\u003C/div\u003E\u003C/div\u003E\u003Cdiv data-testid=\"snowflake-footer-facebook\" class=\"snowflake-button-icon snowflake-button-white snowflake-footer-social-item\"\u003E\u003Cdiv class=\"snowflake-button-icon \"\u003E\u003Ca href=\"https://www.facebook.com/snowflakedb/\" data-testid=\"button-external\" aria-label=\"Facebook\" role=\"button\" class=\"snowflake-button-container\" title=\"Facebook\" tabindex=\"0\" target=\"_blank\" rel=\"noreferrer\"\u003E\u003Cdiv data-testid=\"button-icon-wrapper\"\u003E\u003Csvg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 24 24\" class=\"button-icon\"\u003E\u003Cpath d=\"M24 12c0-6.627-5.373-12-12-12S0 5.373 0 12c0 5.99 4.388 10.954 10.125 11.854V15.47H7.078V12h3.047V9.356c0-3.007 1.792-4.668 4.533-4.668 1.312 0 2.686.234 2.686.234v2.953H15.83c-1.491 0-1.956.925-1.956 1.875V12h3.328l-.532 3.469h-2.796v8.385C19.612 22.954 24 17.99 24 12Z\"\u003E\u003C/path\u003E\u003C/svg\u003E\u003C/div\u003E\u003C/a\u003E\u003Cdiv\u003E\u003C/div\u003E\u003C/div\u003E\u003C/div\u003E\u003Cdiv data-testid=\"snowflake-footer-youtube\" class=\"snowflake-button-icon snowflake-button-white snowflake-footer-social-item\"\u003E\u003Cdiv class=\"snowflake-button-icon \"\u003E\u003Ca href=\"https://www.youtube.com/user/snowflakecomputing\" data-testid=\"button-external\" aria-label=\"YouTube\" role=\"button\" class=\"snowflake-button-container\" title=\"YouTube\" tabindex=\"0\" target=\"_blank\" rel=\"noreferrer\"\u003E\u003Cdiv data-testid=\"button-icon-wrapper\"\u003E\u003Csvg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 24 24\" class=\"button-icon\"\u003E\u003Cpath d=\"M23.76 7.2s-.233-1.655-.955-2.381c-.914-.956-1.936-.961-2.405-1.017-3.356-.244-8.395-.244-8.395-.244h-.01s-5.039 0-8.395.244c-.469.056-1.49.06-2.405 1.017C.473 5.545.244 7.2.244 7.2S0 9.145 0 11.086v1.819c0 1.94.24 3.886.24 3.886s.233 1.654.95 2.38c.915.957 2.115.924 2.65 1.027 1.92.183 8.16.24 8.16.24s5.044-.01 8.4-.249c.469-.056 1.49-.06 2.405-1.017.722-.727.956-2.381.956-2.381S24 14.85 24 12.905v-1.819c0-1.94-.24-3.886-.24-3.886ZM9.52 15.113V8.367l6.483 3.385-6.483 3.36Z\"\u003E\u003C/path\u003E\u003C/svg\u003E\u003C/div\u003E\u003C/a\u003E\u003Cdiv\u003E\u003C/div\u003E\u003C/div\u003E\u003C/div\u003E\r\n\u003C/div\u003E","isGSAPEnabled":false,":type":"snowflake-site/components/markup-editor"}},":type":"snowflake-site/components/container"}},":type":"snowflake-site/components/flexible-column-container/flexible-column-content-container"},"isBlogPage":false,"isActiveTOC":false,":type":"snowflake-site/components/flexible-column-container"}},":type":"snowflake-site/components/container"}},":type":"snowflake-site/components/container"},"markup_editor_copy":{"id":"markup-editor-f5aa7e03e8","title":"New css","cssContent":".snowflake-image-container img{background-color:transparent}div.snowflake-person-chip-avatar{width:80px !important}#snowflake-blog-template-main-container .snowflake-quote-item-card{margin-top:40px}#snowflake-blog-template-main-container .aem-GridColumn:has(.vertical-video){background-color:#000;border-radius:16px;overflow:hidden}#snowflake-blog-template-main-container .is-vertical img{max-width:400px;margin-left:auto;margin-right:auto}#snowflake-blog-template-main-container .vertical-video{max-width:240px;margin-left:auto;margin-right:auto}@media screen and (min-width:1367px){.dynamic .heading-1-v2 .snowflake-title-v2-line{font-size:72px !important;line-height:60px !important}}.snowflake-flexible-column-container-items-alignment-match-height .download-card,.snowflake-flexible-column-container-items-alignment-match-height .download-card\u003E.container{height:100%}.download-card div.code-toolbar\u003E.toolbar .copy-to-clipboard-button{background-color:white;border:1px solid #a9e1f6;margin-right:4px;top:6px;border-radius:16px;height:26px;width:40px}.download-card .snowflake-code-snippet\u003Ediv.code-toolbar\u003E.toolbar\u003E.toolbar-item\u003Ebutton:before{content:'';background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='9' y='9' width='13' height='13' rx='2' ry='2' style='stroke:%23249EDC;'%3E%3C/rect%3E%3Cpath d='M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1' style='stroke:%23249EDC;'%3E%3C/path%3E%3C/svg%3E\");background-size:auto 65%;background-position:center;background-repeat:no-repeat;top:0;left:0;width:100%;height:100%}.download-card .snowflake-code-snippet\u003Ediv.code-toolbar\u003E.toolbar\u003E.toolbar-item\u003Ebutton:hover:before{background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='9' y='9' width='13' height='13' rx='2' ry='2' style='stroke:%23fff;'%3E%3C/rect%3E%3Cpath d='M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1' style='stroke:%23fff;'%3E%3C/path%3E%3C/svg%3E\")}.download-card\u003Ediv{background-color:#fff;border:1px solid #ccc;border-radius:8px;padding:24px}.download-chip__headline{border-bottom:1px solid #ccc;padding-bottom:16px;margin-bottom:16px}.download-chip{padding:8px 12px !important;border-radius:4px;transition:300ms ease background-color}.download-chip .black-blue-text-color .snowflake-title-v2-line{color:#000 !important;padding-right:24px;font-family:'Lato',sans-serif;font-size:14px !important;font-weight:500 !important}.download-chip .black-blue-text-color .snowflake-title-v2-line:not(:first-child){opacity:.6;font-style:italic !important}.download-chip .snowflake-content-chip-button{display:none}.download-chip.is-external-link{background-size:16px 16px;background-image:url(\"data:image/svg+xml,%3Csvg width='15' height='15' viewBox='0 0 15 15' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1.06055 13.0607L11.8605 2.26067M13.0605 10.6607V1.06067H3.46055' stroke='%23249EDC' stroke-width='2.12132' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E%0A\")}.download-chip{background-image:url(\"data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg clip-path='url(%23clip0_883_7979)'%3E%3Cpath d='M3.375 16.875H14.625' stroke='%23249EDC' stroke-width='1.40625' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cpath d='M9 1.125V11.25' stroke='%23249EDC' stroke-width='1.40625' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cpath d='M4.5 7.875L9 12.375L13.5 7.875' stroke='%23249EDC' stroke-width='1.40625' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='clip0_883_7979'%3E%3Crect width='18' height='18' fill='white'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E%0A\");background-size:24px auto;background-repeat:no-repeat;background-position:calc(100% - 12px) center}.download-chip__headline{display:flex;gap:16px;flex-direction:row !important;flex-wrap:nowrap}.download-chip__headline::before{content:'';display:inline-block;width:24px;height:24px;background-position:center;background-image:url(\"data:image/svg+xml,%3Csvg width='21' height='21' viewBox='0 0 21 21' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M7.50005 9.89999C8.13657 9.89999 8.74702 9.64713 9.19711 9.19704C9.64719 8.74696 9.90005 8.13651 9.90005 7.49999V2.69999C9.90005 2.06347 9.64719 1.45302 9.19711 1.00293C8.74702 .552844 8.13657 .299988 7.50005 .299988H2.70005C2.06353 .299988 1.45308 .552844 1.00299 1.00293C.552905 1.45302 .300049 2.06347 .300049 2.69999V7.49999C.300049 8.13651 .552905 8.74696 1.00299 9.19704C1.45308 9.64713 2.06353 9.89999 2.70005 9.89999H7.50005ZM7.50005 7.49999H2.70005V2.69999H7.50005V7.49999Z' fill='%23249EDC' stroke='white' stroke-width='.6'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M7.50005 20.3C8.13657 20.3 8.74702 20.0472 9.19711 19.5971C9.64719 19.147 9.90005 18.5365 9.90005 17.9V13.1C9.90005 12.4635 9.64719 11.853 9.19711 11.403C8.74702 10.9529 8.13657 10.7 7.50005 10.7H2.70005C2.06353 10.7 1.45308 10.9529 1.00299 11.403C.552905 11.853 .300049 12.4635 .300049 13.1V17.9C.300049 18.5365 .552905 19.147 1.00299 19.5971C1.45308 20.0472 2.06353 20.3 2.70005 20.3H7.50005ZM7.50005 17.9H2.70005V13.1H7.50005V17.9Z' fill='%23249EDC' stroke='white' stroke-width='.6'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M17.9001 9.89999C18.5366 9.89999 19.147 9.64713 19.5971 9.19704C20.0472 8.74696 20.3001 8.13651 20.3001 7.49999V2.69999C20.3001 2.06347 20.0472 1.45302 19.5971 1.00293C19.147 .552844 18.5366 .299988 17.9001 .299988H13.1001C12.4636 .299988 11.8531 .552844 11.403 1.00293C10.9529 1.45302 10.7001 2.06347 10.7001 2.69999V7.49999C10.7001 8.13651 10.9529 8.74696 11.403 9.19704C11.8531 9.64713 12.4636 9.89999 13.1001 9.89999H17.9001ZM17.9001 7.49999H13.1001V2.69999H17.9001V7.49999Z' fill='%23249EDC' stroke='white' stroke-width='.6'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M17.9001 20.3C18.5366 20.3 19.147 20.0472 19.5971 19.5971C20.0472 19.147 20.3001 18.5365 20.3001 17.9V13.1C20.3001 12.4635 20.0472 11.853 19.5971 11.403C19.147 10.9529 18.5366 10.7 17.9001 10.7H13.1001C12.4636 10.7 11.8531 10.9529 11.403 11.403C10.9529 11.853 10.7001 12.4635 10.7001 13.1V17.9C10.7001 18.5365 10.9529 19.147 11.403 19.5971C11.8531 20.0472 12.4636 20.3 13.1001 20.3H17.9001ZM17.9001 17.9H13.1001V13.1H17.9001V17.9Z' fill='%23249EDC' stroke='white' stroke-width='.6'/%3E%3C/svg%3E%0A\");background-size:contain;background-repeat:no-repeat}.download-chip__headline.is-cli::before{background-image:url(\"data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M4 17L10 11L4 5' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cpath d='M12 19H20' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E%0A\")}.download-card pre[class*=language-]{padding:8px 12px;background-color:var(--ui-background-05);overflow:hidden}.download-chip__headline.is-windows,.download-chip__headline.is-mac{gap:12px}.download-chip__headline.is-windows::before{width:16px;height:20px;background-image:url(\"data:image/svg+xml,%3Csvg width='4875' height='4875' viewBox='0 0 4875 4875' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg clip-path='url(%23clip0_122_201)'%3E%3Cpath d='M0 0H2311V2310H0V0ZM2564 0H4875V2310H2564V0ZM0 2564H2311V4875H0V2564ZM2564 2564H4875V4875H2564' fill='%23000'/%3E%3C/g%3E%3C/svg%3E\")}.download-chip__headline.is-mac::before{width:16px;height:20px;background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' id='Layer_1' xmlns:x='ns_extend;' xmlns:i='ns_ai;' xmlns:graph='ns_graphs;' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0' y='0' viewBox='0 0 41.5 51' style='enable-background:new 0 0 41.5 51;' xml:space='preserve'%3E%3Cmetadata%3E%3Csfw xmlns='ns_sfw;'%3E%3Cslices%3E%3C/slices%3E%3CsliceSourceBounds bottomLeftOrigin='true' height='51' width='41.5' x='166.1' y='-208.1'%3E%3C/sliceSourceBounds%3E%3C/sfw%3E%3C/metadata%3E%3Cg%3E%3Cpath d='M40.2,17.4c-3.4,2.1-5.5,5.7-5.5,9.7c0,4.5,2.7,8.6,6.8,10.3c-.8,2.6-2,5-3.5,7.2c-2.2,3.1-4.5,6.3-7.9,6.3s-4.4-2-8.4-2 c-3.9,0-5.3,2.1-8.5,2.1s-5.4-2.9-7.9-6.5C2,39.5,.1,33.7,0,27.6c0-9.9,6.4-15.2,12.8-15.2c3.4,0,6.2,2.2,8.3,2.2 c2,0,5.2-2.3,9-2.3C34.1,12.2,37.9,14.1,40.2,17.4z M28.3,8.1C30,6.1,30.9,3.6,31,1c0-.3,0-.7-.1-1c-2.9,.3-5.6,1.7-7.5,3.9 c-1.7,1.9-2.7,4.3-2.8,6.9c0,.3,0,.6,.1,.9c.2,0,.5,.1,.7,.1C24.1,11.6,26.6,10.2,28.3,8.1z'%3E%3C/path%3E%3C/g%3E%3C/svg%3E\")}.download-chip__headline.is-desktop::before{background-image:url(\"data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg opacity='.8'%3E%3Cpath d='M1.5 21H22.5V18H1.5V21Z' fill='%23000' stroke='white' stroke-width='.75'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M19.5 15C20.2956 15 21.0587 14.6839 21.6213 14.1213C22.1839 13.5587 22.5 12.7956 22.5 12V6C22.5 5.20435 22.1839 4.44129 21.6213 3.87868C21.0587 3.31607 20.2956 3 19.5 3H4.5C3.70435 3 2.94129 3.31607 2.37868 3.87868C1.81607 4.44129 1.5 5.20435 1.5 6V12C1.5 12.7956 1.81607 13.5587 2.37868 14.1213C2.94129 14.6839 3.70435 15 4.5 15H19.5ZM19.5 12H4.5V6H19.5V12Z' fill='%23000' stroke='white' stroke-width='.75'/%3E%3C/g%3E%3C/svg%3E%0A\")}.download-card .snowflake-code-snippet,.download-card .snowflake-code-snippet code,.download-card .snowflake-code-snippet pre{font-size:14px;color:#000;text-shadow:none !important}.download-chip:hover{background-color:var(--ui-background-05) !important;transition:300ms ease background-color}body:has(.snowflake-skip-to-content[style]) #subNav,.pushdown-banner-dismissed #subNav{top:var(--scroll-padding-top) !important;transition:300ms ease top}body:has(.snowflake-skip-to-content[style*=\"58\"]) #subNav{top:34px !important}body:has(.snowflake-skip-to-content[style*=\"82\"]) #subNav{top:58px !important}body:has(.snowflake-skip-to-content[style*=\"130\"]) #subNav{top:106px !important}body:has(.snowflake-skip-to-content[style*=\"138\"]) #subNav{top:114px !important}body:has(.snowflake-skip-to-content[style*=\"146\"]) #subNav{top:122px !important}.is-hidden .snowflake-person-chip-avatar{display:none}.is-small .snowflake-person-chip-avatar{width:56px;height:56px}.ai-summary ul{margin:16px 0 0 0 !important;padding:0 !important;list-style-type:none}.ai-summary li{margin:0;padding:0 0 0 32px;position:relative}.ai-summary li::before{content:\"\";display:block;border-radius:100%;background:#29b5e8;width:18px;height:18px;position:absolute;top:4px;left:0;border:5px solid #e5f2f7;box-sizing:border-box}.ai-summary li:not(:last-child){margin-bottom:1rem}.snowflake-content-chip-image__image{aspect-ratio:5 / 3 !important}.content-chip-new .snowflake-content-chip-image__image{height:100% !important;aspect-ratio:unset !important}.snapshot-card .snowflake-text p:not(:first-child){margin-top:var(--spacing-01)}.snapshot-card\u003E.container\u003E.cmp-container\u003E.aem-container\u003Ediv:nth-child(2) p:has(b){font-family:'Texta',sans-serif;margin-top:24px}.snapshot-card\u003E.container\u003E.cmp-container\u003E.aem-container\u003Ediv:nth-child(2) p b{font-weight:700 !important}.snapshot-card\u003E.container\u003E.cmp-container\u003E.aem-container\u003Ediv:nth-child(2){border-bottom:1px solid #ccc;padding-bottom:24px}.snapshot-card\u003E.container\u003E.cmp-container\u003E.aem-container\u003Ediv:nth-child(3) p:first-child:has(b){font-family:'Texta',sans-serif;font-size:20px !important;margin-bottom:1rem !important}.snapshot-card\u003E.container\u003E.cmp-container\u003E.aem-container\u003Ediv:nth-child(3) li{display:inline-block}.snapshot-card\u003E.container\u003E.cmp-container\u003E.aem-container\u003Ediv:nth-child(3) li a{display:inline-block;text-decoration:none;padding:4px 16px !important;border:1px solid #ccc;border-radius:24px;color:#666 !important}.snapshot-card\u003E.container\u003E.cmp-container\u003E.aem-container\u003Ediv:nth-child(3) ul{list-style-type:none;display:flex;padding:0 !important;margin:0 !important;gap:12px}.snapshot-card\u003E.container\u003E.cmp-container\u003E.aem-container img{width:90%;max-width:240px;margin:0 auto}.snapshot-card\u003E.container\u003E.cmp-container\u003E.aem-container{padding:40px;max-width:450px;margin:0 0 0 auto;background-color:#fff;box-shadow:0 2px 6px 0 rgba(152,162,179,.25),0 10px 20px 0 rgba(152,162,179,.10);border-radius:8px;border-top:4px solid var(--ui-01)}.ai-summary{background-color:#f3fbfe;border-left:2px solid var(--ui-01);padding:40px}.ai-summary\u003Espan p:last-child:has(i){color:#666;font-size:14px !important}.ai-summary\u003Espan p:last-child:has(i) a{color:#666 !important;text-decoration:underline !important}.ai-summary\u003Espan p:last-child:has(i) a:hover{color:var(--ui-01) !Important}.ai-summary\u003Espan p:first-child:has(b)::after{content:'';display:inline-block;width:20px;height:20px;background-image:url(\"data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M9.3158 3.15226C8.6475 6.2258 6.22698 8.64545 3.15232 9.31587C2.94923 9.36072 2.94923 9.63928 3.15232 9.68413C6.22698 10.3522 8.6475 12.7742 9.3158 15.8477C9.36067 16.0508 9.63933 16.0508 9.6842 15.8477C10.3525 12.7742 12.773 10.3545 15.8477 9.68413C16.0508 9.63928 16.0508 9.36072 15.8477 9.31587C12.773 8.64781 10.3525 6.2258 9.6842 3.15226C9.63933 2.94925 9.36067 2.94925 9.3158 3.15226Z' fill='%23249EDC'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M17.3725 11.5461C16.9098 13.6739 15.2341 15.3491 13.1054 15.8132C12.9649 15.8443 12.9649 16.0371 13.1054 16.0681C15.2341 16.5307 16.9098 18.2074 17.3725 20.3353C17.4035 20.4758 17.5965 20.4758 17.6275 20.3353C18.0902 18.2074 19.7659 16.5323 21.8946 16.0681C22.0352 16.0371 22.0352 15.8443 21.8946 15.8132C19.7659 15.3507 18.0902 13.6739 17.6275 11.5461C17.5965 11.4055 17.4035 11.4055 17.3725 11.5461Z' fill='%23249EDC'/%3E%3C/svg%3E%0A\");background-repeat:no-repeat;background-size:contain;background-position:center;vertical-align:middle;margin-left:8px}.ai-summary\u003Espan p:first-child:has(b){color:var(--ui-01) !important;text-transform:uppercase}.border-top{border-top:1px solid rgba(0,0,0,.2)}.border-top\u003Espan{display:block;padding-top:32px}body .snowflake-card-v2-advanced-image__image{aspect-ratio:16 / 9 !important}.content-chip-new .snowflake-content-chip-image__image{border-radius:0;object-fit:cover;height:100%}.sf-footer #ot-sdk-btn.ot-sdk-show-settings,.sf-footer #ot-sdk-btn.optanon-show-settings{color:rgba(255,255,255,.7) !important;text-underline-offset:4px;border-top:none;border-left:none;border-right:none;border-bottom:1px dotted transparent;background-color:transparent !important;background-image:none !important;transition:300ms ease text-decoration-color;padding:0 !important;font-size:12px;font-family:'Lato',sans-serif}.sf-footer #ot-sdk-btn.ot-sdk-show-settings:hover,.sf-footer #ot-sdk-btn.optanon-show-settings:hover{color:rgba(255,255,255,1) !important;border-bottom:1px dotted var(--ui-01);transition:300ms ease text-decoration-color}.sf-footer__legal-container\u003E.container\u003E.cmp-container\u003E.aem-container\u003Ediv:last-child{flex-shrink:0}.sf-footer__disclaimers{background-color:#042130}.sf-footer__disclaimers .snowflake-simple-stat-disclaimer p a{color:inherit;text-decoration:none !important}.sf-footer__disclaimers .snowflake-simple-stat-disclaimer p sup{margin-right:2px}.sf-footer__disclaimers .snowflake-simple-stat-disclaimer p{text-indent:-5px;padding-left:5px}.sf-footer__disclaimers-inner{border-top:1px solid rgba(255,255,255,.25);padding:40px 0}.sf-footer__disclaimers .snowflake-simple-stat{align-items:flex-start;text-align:left;color:rgba(255,255,255,.7);margin-bottom:10px}.sf-footer__social{display:flex;justify-content:center;gap:12px}.sf-footer .snowflake-footer-social-item{margin:0 !important}.sf-footer .snowflake-footer-social-item a{line-height:0;background-color:rgba(3,24,35,.8);display:inline-block;width:48px !important;height:48px;border-radius:8px;display:inline-flex;justify-content:center;align-items:center;transition:300ms ease background-color}.sf-footer .snowflake-footer-social-item a:hover{background-color:var(--ui-01) !important;transition:300ms ease background-color}.sf-footer__bottom{padding-bottom:40px}.sf-footer .snowflake-marketo-form .mktoFormRow .mktoFieldWrap .mktoError .mktoErrorMsg{max-width:100%;color:#fff}.sf-footer .mktoForm .mktoError .mktoErrorMsg .mktoErrorDetail{display:inline-block}.sf-footer .mktoFormRow:has(.mktoHtmlText:empty){display:none}.sf-footer .mktoFormRow .mktoHtmlText span{color:#fff !important}.sf-footer{background-color:#042130}.sf-footer .optanon-toggle-display:hover{text-decoration-color:var(--ui-01) !important;cursor:pointer !important;text-underline-offset:4px;text-decoration-style:dotted !important;text-decoration-color:var(--ui-01);color:#fff !important;transition:300ms ease text-decoration-color;text-decoration:underline;opacity:1}.sf-footer__logo{width:40px}.sf-footer-grid__inner\u003E.container\u003E.cmp-container\u003E.aem-container{row-gap:32px}.sf-footer__legal-container\u003E.container\u003E.cmp-container\u003E.aem-container{display:flex;justify-content:space-between;align-items:center;text-align:center;row-gap:16px}.sf-footer__legal-container\u003E.container\u003E.cmp-container\u003E.aem-container\u003Ediv:nth-child(2){text-align:center;flex-grow:1}.sf-footer__legal-links li button,.sf-footer__legal-links li a,.sf-footer__legal-links li{margin:0;color:rgba(255,255,255,.7) !important;font-weight:500}.sf-footer__legal-links li a:hover{color:rgba(255,255,255,1) !important}.sf-footer div.sf-footer__copyright p,.sf-footer div.sf-footer__legal-links li,.sf-footer div.sf-footer__legal-links a,.sf-footer div.sf-footer__legal-links p{font-size:12px !important}.sf-footer__legal-links ul{list-style-type:none;margin:0;padding:0;display:flex;gap:20px;row-gap:4px;justify-content:center;flex-wrap:wrap;text-align:center}.sf-footer__legal-links li:last-child{width:100%}.sf-footer .mktoFormRow:has(.mktoPlaceholder),.sf-footer .mktoFormRow:has(input[type=\"hidden\"]){display:none !important}.sf-footer .mktoFormCol{margin-bottom:0 !important}.sf-footer label[for=\"adhoc1\"]{width:auto !important;flex-grow:1;margin-left:16px}.sf-footer .mktoFieldWrap:has(label[for=\"adhoc1\"]){display:flex;flex-direction:row-reverse;margin-top:22px}.sf-footer .snowflake-marketo-form .mktoFormRow .mktoFieldWrap .mktoCheckboxList input[type=checkbox]{background-color:transparent !important;border:1px solid rgba(255,255,255,.4) !important;border-radius:4px !important}.sf-footer .snowflake-marketo-form .mktoFormRow .mktoFieldWrap .mktoEmailField,.sf-footer .snowflake-marketo-form .mktoFormRow .mktoFieldWrap .mktoTelField,.sf-footer .snowflake-marketo-form .mktoFormRow .mktoFieldWrap .mktoTextField,.sf-footer .snowflake-marketo-form .mktoFormRow .mktoFieldWrap select{background-color:transparent !important;color:#fff !important;height:auto !important;border:1px solid rgba(255,255,255,.4) !important;border-radius:4px !important;padding:12px 18px !important}.sf-footer .snowflake-marketo-form .mktoFormRow .mktoFieldWrap .mktoEmailField:focus,.sf-footer .snowflake-marketo-form .mktoFormRow .mktoFieldWrap .mktoTelField:focus,.sf-footer .snowflake-marketo-form .mktoFormRow .mktoFieldWrap .mktoTextField:focus,.sf-footer .snowflake-marketo-form .mktoFormRow .mktoFieldWrap select:focus{border-color:var(--ui-01) !important}.sf-footer .mktoForm *{padding:0 !important}.sf-footer .mktoForm,.sf-footer .snowflake-marketo-form-container{padding:0 !important;background:transparent;margin-bottom:0;box-shadow:none}.sf-footer .mktoHtmlText.mktoHasWidth{width:100% !important;margin:24px 0}.sf-footer .mktoFormRow{flex-direction:column}.sf-footer .mktoForm .mktoButtonWrap{margin:0 !important}.sf-footer select{background-image:url(\"data:image/svg+xml,%3Csvg width='14' height='8' viewBox='0 0 14 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M.981445 1.43496L6.90897 7.32496L12.9314 1.33496' stroke='white' stroke-width='1.33333' stroke-miterlimit='10' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E%0A\") !important}.sf-footer .snowflake-marketo-form .mktoButtonWrap.mktoNative{justify-content:flex-start}.sf-footer *::placeholder{color:#fff !important;opacity:.8}.sf-footer .mktoForm .mktoButtonWrap.mktoSimple .mktoButton{background-color:var(--ui-01) !important;color:#fff !important;width:100% !important;padding:12px 16px !important;border:1px solid var(--ui-01) !important;background-image:none !important;border-radius:48px;text-transform:uppercase;font-weight:800 !important;font-family:'Texta',sans-serif !important;font-size:16px !important;line-height:1.2}.sf-footer .snowflake-marketo-form .mktoFormRow .mktoFieldWrap .mktoHtmlText\u003Espan,.sf-footer .snowflake-marketo-form .mktoFormRow .mktoFieldWrap .mktoLabel\u003Espan,.sf-footer .snowflake-marketo-form .mktoFormRow .mktoFieldWrap label.mktoLabel{color:#fff !important}.sf-footer__newsletter-title p:not(:first-child){margin-top:8px !important}.sf-footer__newsletter-title p b{font-weight:800 !important;font-family:'Texta',sans-serif !important;font-size:22px !important;line-height:1.2}.sf-footer__newsletter-title p:last-child{font-size:14px !important;opacity:.8}.sf-footer__link-group li a[target=\"_blank\"]::after{content:'';display:inline-block;width:10px;height:10px;margin-left:5px;background-image:url(\"data:image/svg+xml,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M6.72222 1.22222C6.38471 1.22222 6.11111 .948616 6.11111 .611111C6.11111 .273607 6.38471 0 6.72222 0H10.3889C10.551 0 10.7064 .0643867 10.821 .178988C10.9356 .293596 11 .449032 11 .611111V4.27778C11 4.61529 10.7264 4.88889 10.3889 4.88889C10.0514 4.88889 9.77778 4.61529 9.77778 4.27778V2.08647L4.09879 7.76545C3.86013 8.00409 3.4732 8.00409 3.23454 7.76545C2.99589 7.52681 2.99589 7.13986 3.23454 6.90122L8.91355 1.22222H6.72222ZM0 2.44444C0 1.76943 .547207 1.22222 1.22222 1.22222H4.27778C4.61529 1.22222 4.88889 1.49583 4.88889 1.83333C4.88889 2.17084 4.61529 2.44444 4.27778 2.44444H1.22222V9.77778H8.55556V6.72222C8.55556 6.38471 8.82915 6.11111 9.16667 6.11111C9.50418 6.11111 9.77778 6.38471 9.77778 6.72222V9.77778C9.77778 10.4528 9.23059 11 8.55556 11H1.22222C.547207 11 0 10.4528 0 9.77778V2.44444Z' fill='white'/%3E%3C/svg%3E%0A\");background-size:contain;background-repeat:no-repeat;background-position:center}.sf-footer__link-group ul,.sf-footer__link-group li{margin:0;padding:0;list-style-type:none}.sf-footer__link-group ul{margin-top:20px !important}.sf-footer__link-group li{margin-top:15px}.sf-footer div.sf-footer__link-group\u003Espan\u003Ep\u003Ea,.sf-footer div.sf-footer__link-group\u003Espan\u003Ep{color:var(--ui-01) !important;font-weight:800 !important;font-family:'Texta',sans-serif !important;font-size:20px !important;line-height:1.2}.sf-footer__link-group li a{opacity:.9;color:#fff !important;font-weight:500 !important;font-size:15px !important;line-height:1.3}.sf-footer__link-group li a:hover{opacity:1}.sf-footer-grid__inner\u003E.container\u003E.cmp-container\u003E.aem-container::before,.sf-footer-grid__inner\u003E.container\u003E.cmp-container\u003E.aem-container::after{display:none}.sf-footer__column{flex-grow:1}.sf-footer-grid__inner\u003E.container\u003E.cmp-container\u003E.aem-container\u003Ediv:not(:first-child){width:50%}@media (min-width:800px){.sf-footer__legal-links ul{justify-content:flex-start;text-align:left}.sf-footer__social{justify-content:flex-end}.sf-footer__legal-links ul{padding-left:24px}.sf-footer__legal-container\u003E.container\u003E.cmp-container\u003E.aem-container{text-align:right;flex-wrap:nowrap}.sf-footer__legal-links.align-left ul{justify-content:flex-start}.sf-footer-grid__inner\u003E.container\u003E.cmp-container\u003E.aem-container{display:flex;justify-content:space-between;flex-direction:row}.sf-footer-grid__inner\u003E.container\u003E.cmp-container\u003E.aem-container\u003Ediv{width:auto !important;max-width:200px}.sf-footer-grid__inner\u003E.container\u003E.cmp-container\u003E.aem-container\u003Ediv:first-child{flex-grow:1;order:2;width:100% !important;max-width:none}.sf-footer__legal-container\u003E.container\u003E.cmp-container\u003E.aem-container\u003Ediv{width:auto}}@media screen and (min-width:1380px){.sf-footer-grid__inner\u003E.container\u003E.cmp-container\u003E.aem-container{flex-wrap:nowrap}.sf-footer-grid__inner\u003E.container\u003E.cmp-container\u003E.aem-container\u003Ediv:first-child{padding-right:48px;max-width:380px;background-color:rgba(3,24,35,.4);padding:32px;margin-left:48px;border-radius:16px}.sf-footer__link-group li,.sf-footer__link-group li a{font-size:14px !important;line-height:1.3}}@media screen and (max-width:991px){.sf-footer-grid__inner\u003E.container\u003E.cmp-container\u003E.aem-container\u003Ediv:first-child{order:2;margin-top:24px !important}}@media screen and (max-width:420px){.is-reduced-mobile .heading-1-v2,.is-reduced-mobile .heading-1-v2-sm{font-size:32px;line-height:28px}}.quote-content-chip{background-color:var(--ui-background-05);padding:24px;border-radius:12px;position:relative}.quote-content-chip .black-blue-text-color .snowflake-title-v2-line\u003Espan{color:rgba(0,0,0,.8) !important;font-size:15px !important;line-height:1.5 !important;font-family:'Lato',sans-serif;font-weight:400 !important}.quote-content-chip .black-blue-text-color .snowflake-title-v2-line\u003Espan:not(:first-child){max-width:calc(100% - 200px)}.quote-content-chip .black-blue-text-color .snowflake-title-v2-line\u003Espan:nth-child(2){font-family:'Texta',sans-serif;color:#000 !important;font-size:20px !important;font-weight:800 !important;margin-top:24px}.quote-content-chip .snowflake-content-chip-image{width:140px !important}@media screen and (min-width:992px){.quote-content-chip .snowflake-content-chip-image{position:absolute !important;bottom:24px;right:16px}}@media screen and (max-width:991px){.quote-content-chip .snowflake-content-chip-image{margin-bottom:40px}.quote-content-chip{flex-direction:column}}#spa-root{background-color:#fff}.lowercase .snowflake-title-v2-line{text-transform:none !important}.centered .snowflake-logo-content-container-inner{justify-content:center}div.snowflake-linklist-dropdown-menu{max-height:380px}.first-line-blue .snowflake-typographyv2 .snowflake-title-v2-line:first-child{color:var(--ui-01) !important}.is-front{position:relative;z-index:2}.use-case-body .snowflake-text h1,.use-case-body .snowflake-text h2,.use-case-body .snowflake-text h3,.use-case-body .snowflake-text h4,.use-case-body .snowflake-text h5,.use-case-body .snowflake-text h6{font-family:'Texta',sans-serif;color:#000;margin:.25rem 0 0 0}.pc-hero .button-group\u003E.container\u003E.cmp-container\u003E.aem-container{justify-content:flex-start}.sf-footer .mktoFormRow .mktoHtmlText span{font-family:'Lato',sans-serif !important}.snowflake-button-primary.snowflake-button-blue .snowflake-button-container{justify-content:center}.related-chip-25{background-color:#fff;border:1px solid rgba(204,204,204,.5);border-radius:8px;padding:20px;position:relative}.related-chip-25:hover{box-shadow:rgba(152,162,179,.1) 0 10px 20px 0}.related-chip-25:hover::after{right:24px;transition:300ms ease right}.related-chip-25::after{content:'';display:block;transition:300ms ease right;background-image:url(\"data:image/svg+xml,%3Csvg width='8' height='14' viewBox='0 0 8 14' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M7.66699 7C7.66699 6.6571 7.53559 6.32825 7.30169 6.08578L2.34446 .947072C1.84529 .429617 1.0164 .429617 .517219 .947072C.0427878 1.43887 .042788 2.21798 .517219 2.70978L4.65591 7L.51722 11.2902C.0427889 11.782 .0427887 12.5611 .51722 13.0529C1.0164 13.5704 1.84529 13.5704 2.34447 13.0529L7.30169 7.91421C7.53559 7.67175 7.66699 7.34289 7.66699 7Z' fill='%2329B5E8'/%3E%3C/svg%3E%0A\");width:8px;height:14px;display:block;position:absolute;right:30px;top:50%;transform:translateY(-50%);background-size:contain;background-position:center;background-repeat:no-repeat}.related-chip-25 .heading-5-v2{font-size:22px;line-height:1.1}.related-chip-25 .snowflake-content-chip-image{width:48px;flex-shrink:0}.related-chip-25 .snowflake-content-chip-image__image{aspect-ratio:1;height:auto;object-fit:contain}.related-chip-25 .snowflake-content-chip-button{display:none}.related-chip-25 .snowflake-content-chip-content-without-tag{flex-grow:1;padding-right:24px}.case-study-25.small-logo .snowflake-case-study-card-logo img{width:60px !important}.swiper-slide .case-study-25{width:95%;margin-left:auto;margin-right:auto}.case-study-25 .snowflake-case-study-card-logo img{width:140px !important;height:auto !important;transform:none !important;margin:24px 0 8px 0}.case-study-25 .snowflake-case-study-card-image__image{object-position:left center}.case-study-25 .snowflake-case-study-card-information-container{padding-right:24px}.case-study-25 ul{list-style-type:none;padding:0;margin:8px 0 0 0}.case-study-25 li{font-size:15px !important;line-height:1.3 !important;display:flex;flex-direction:column;border-left:4px solid var(--ui-01);padding-left:24px;margin-top:24px;color:#535862;gap:4px}.case-study-25 li b{display:block;font-family:'Texta',sans-serif;font-weight:900 !important;font-size:48px !important;line-height:.9 !important;color:var(--ui-01)}.case-study-25 .snowflake-case-study-card-description p{color:#535862}.case-study-25 .snowflake-case-study-card-description p:nth-child(2):not(:has(a)){color:#000;font-family:Texta;font-size:30px !important;line-height:1 !important;font-style:normal;font-weight:700;text-indent:-8px}.case-study-25.is-story .snowflake-case-study-card-description p:nth-child(2):not(:has(a)){text-indent:0}.case-study-25 .snowflake-case-study-card-key-card{background-color:transparent}.case-study-25 .snowflake-case-study-card-button{display:none}.case-study-25{border-radius:24px;overflow:hidden}@media screen and (min-width:1024px){.case-study-25 .snowflake-case-study-card-left-container{position:static;width:60%;min-height:0}.case-study-25 .snowflake-case-study-card-right-container::after{content:'';display:block;width:60%;max-width:340px;padding-bottom:50%;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 22 16' class='snowflake-pushdown-banner-placeholder-arrow'%3E%3Cpath fill='%2329B5E8' fill-rule='evenodd' d='M17.865 8.756c.088-.274.124-.555.118-.834a2.551 2.551 0 0 0-1.3-2.142L7.887.76C6.645.055 5.063.475 4.35 1.7a2.535 2.535 0 0 0 .947 3.494l4.916 2.809-4.916 2.801a2.543 2.543 0 0 0-.947 3.502c.713 1.222 2.295 1.64 3.537.934l8.796-5.024a2.541 2.541 0 0 0 1.182-1.46Z' clip-rule='evenodd'%3E%3C/path%3E%3C/svg%3E\");background-size:contain;background-repeat:no-repeat;position:absolute;top:-10%;left:-20%}.case-study-25 .snowflake-case-study-card-right-container{max-width:none;width:40%;position:absolute;top:-5%;right:-5%;z-index:0;height:110%}}@media screen and (min-width:768px){.case-study-25 li{max-width:50%}.case-study-25 ul{display:flex;gap:48px}}.snowflake-text.section-eyebrow p{margin-left:auto;margin-right:auto;margin-bottom:16px !important}.snowflake-text.section-eyebrow p,.snowflake-text.eyebrow-text p{text-transform:uppercase;font-family:'Texta',sans-serif !important;font-weight:800 !important;letter-spacing:.025em;margin-bottom:12px;line-height:1.1 !important}.snowflake-title-v2.dynamic .heading-2-v2 span.snowflake-title-v2-line{font-size:clamp(2.5rem,4.5vw,4rem) !important;line-height:.82 !important}.checklist ul{padding:0;margin:0}.checklist ul li{list-style-type:none;padding-left:32px;position:relative}.checklist ul li:not(:last-child){margin-bottom:1em}.checklist ul li::before{content:'';display:inline-block;width:20px;height:20px;background-image:url(\"data:image/svg+xml,%3Csvg width='24' height='25' viewBox='0 0 24 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Crect y='.985352' width='24' height='24' rx='12' fill='%23D4F0FA'/%3E%3Cpath d='M7.28613 13.2967L10.7147 16.7253L17.5718 9.86816' stroke='%2329B5E8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E%0A\");background-size:contain;background-repeat:no-repeat;position:absolute;top:3px;left:0}.last-line-blue .snowflake-typographyv2 .snowflake-title-v2-line:last-child{color:var(--ui-01)}.snowflake-text p sup{line-height:0}.snowflake-title-v2.lowercase .heading-3-v2{font-size:28px;line-height:1;text-transform:none;font-weight:700}.snowflake-title-v2.lowercase .heading-2-v2{font-size:32px;line-height:1;text-transform:none;font-weight:700}.content-chip-new{border:1px solid rgba(204,204,204,.5);border-radius:16px;overflow:hidden}.content-chip-new .snowflake-image-container{border-radius:0;display:none}.content-chip-new .snowflake-content-chip-image{margin-right:0;max-width:180px;flex-shrink:0}.content-chip-new .snowflake-content-chip-content{padding:24px}.content-chip-new .black-blue-text-color .snowflake-title-v2-line:first-child{font-size:24px;line-height:1.1}.content-chip-new .black-blue-text-color .snowflake-title-v2-line:not(:first-child){font-family:'Lato',sans-serif;font-size:17px;color:#535862 !important;font-weight:500;line-height:1.45;margin-top:8px;display:none}div.snowflake-text a{font-weight:normal;color:var(--ui-01);text-decoration:underline;text-underline-offset:4px;text-decoration-style:dotted !important;text-decoration-color:transparent;transition:300ms ease text-decoration-color}div.snowflake-text a:hover{text-decoration-color:var(--ui-01);transition:300ms ease text-decoration-color}.footer-nav__link-group .snowflake-button-container,.subnav__item--button,.snowflake-card-v2-advanced-button .snowflake-button-container{justify-content:flex-start}.button-container\u003E.container\u003E.cmp-container\u003E.aem-container{align-items:center}.button-container\u003E.container\u003E.cmp-container\u003E.aem-container .snowflake-button-primary+.snowflake-button-link{margin-left:12px !important}.snowflake-button-regular.snowflake-button-link .snowflake-button-container{font-size:18px !important;text-align:left;justify-content:flex-start;line-height:1.4 !important}body .snowflake-card-v2-advanced{border:1px solid rgba(204,204,204,.5);border-radius:var(--spacing-02);transition:300ms ease all}body .snowflake-card-v2-advanced:hover{transform:translateY(-10px);box-shadow:rgba(152,162,179,.1) 0 10px 20px 0;transition:300ms ease all}body .snowflake-card-v2-advanced-inner{border-bottom:none}body .snowflake-card-v2-advanced-image{line-height:0}body .snowflake-card-v2-advanced-image__image{aspect-ratio:16 / 9}body .snowflake-card-v2-advanced-content{position:relative}body .snowflake-card-v2-advanced-content::after{content:'';display:block;position:absolute;bottom:0;left:0;transition:300ms ease all;width:20%;height:4px;background-color:var(--ui-01);opacity:0}body .snowflake-card-v2-advanced:hover .snowflake-card-v2-advanced-content::after{width:100%;opacity:1;transition:300ms ease all}body .snowflake-card-v2-advanced .snowflake-button-link.snowflake-button-blue .snowflake-button-container\u003E.link-icon{transition:300ms ease transform}body .snowflake-card-v2-advanced:hover .snowflake-button-link.snowflake-button-blue .snowflake-button-container\u003E.link-icon{transform:translateX(4px);transition:300ms ease transform}.six-columns\u003E.container\u003E.cmp-container\u003E.aem-container,.three-columns\u003E.container\u003E.cmp-container\u003E.aem-container,.four-columns\u003E.container\u003E.cmp-container\u003E.aem-container,.five-columns\u003E.container\u003E.cmp-container\u003E.aem-container{display:flex;flex-wrap:wrap;gap:24px}.six-columns.align-center\u003E.container\u003E.cmp-container\u003E.aem-container,.three-columns.align-center\u003E.container\u003E.cmp-container\u003E.aem-container,.four-columns.align-center\u003E.container\u003E.cmp-container\u003E.aem-container,.five-columns.align-center\u003E.container\u003E.cmp-container\u003E.aem-container{justify-content:center}.three-columns\u003E.container\u003E.cmp-container\u003E.aem-container\u003Ediv{width:100%;margin:0 !important}.six-columns\u003E.container\u003E.cmp-container\u003E.aem-container\u003Ediv,.four-columns\u003E.container\u003E.cmp-container\u003E.aem-container\u003Ediv,.five-columns\u003E.container\u003E.cmp-container\u003E.aem-container\u003Ediv{width:calc(50% - 12px);margin:0 !important}@media screen and (min-width:768px){.three-columns\u003E.container\u003E.cmp-container\u003E.aem-container\u003Ediv{width:calc(50% - 12px)}.six-columns\u003E.container\u003E.cmp-container\u003E.aem-container\u003Ediv,.four-columns\u003E.container\u003E.cmp-container\u003E.aem-container\u003Ediv,.five-columns\u003E.container\u003E.cmp-container\u003E.aem-container\u003Ediv{width:calc(33.333% - 16px)}}@media screen and (min-width:1024px){.snowflake-title-v2.lowercase .heading-3-v2{font-size:34px}.snowflake-title-v2.lowercase.larger .heading-2-v2{font-size:44px;line-height:.95}.three-columns\u003E.container\u003E.cmp-container\u003E.aem-container\u003Ediv{width:calc(33.333% - 16px)}.four-columns\u003E.container\u003E.cmp-container\u003E.aem-container\u003Ediv{width:calc(25% - 18px)}.five-columns\u003E.container\u003E.cmp-container\u003E.aem-container\u003Ediv{width:calc(20% - 19.2px)}.six-columns\u003E.container\u003E.cmp-container\u003E.aem-container\u003Ediv{width:calc(16.6666% - 20px)}.snowflake-title-v2.lowercase .heading-3-v2{font-size:28px !important}}@media screen and (min-width:1200px){.snowflake-title-v2.lowercase .heading-2-v2{font-size:40px}.content-chip-new .snowflake-content-chip-content{padding:32px}.content-chip-new .snowflake-image-container,.content-chip-new .black-blue-text-color .snowflake-title-v2-line:not(:first-child){display:block}}.promo-banner-25{border-radius:16px;overflow:hidden}.promo-banner-25 .snowflake-premium-content-banner-image-container{position:relative;max-width:380px}.promo-banner-25 .snowflake-text{color:#535862}.promo-banner-25 .snowflake-premium-content-banner-image__image{transform:translateY(8px);transition:300ms ease transform;border-radius:0;width:85%;margin:0 auto;display:block;position:relative;z-index:1}.promo-banner-25 .snowflake-premium-content-banner-image__link:hover .snowflake-premium-content-banner-image__image{transform:translateY(0);transition:300ms ease transform}.promo-banner-25 .snowflake-premium-content-banner-image__inner{height:auto;padding-top:24px}.promo-banner-25 .snowflake-premium-content-banner-image__link{position:relative;z-index:1;height:auto}.promo-banner-25 .snowflake-premium-content-banner-image__link::after{content:'';display:block;position:absolute;clip-path:polygon(0 0,66% 0,100% 100%,0 100%);bottom:0;left:0;width:100%;height:100%;background:var(--ui-01);transition:300ms ease width}.promo-banner-25 .snowflake-premium-content-banner-image__link:hover::after{width:110%;transition:300ms ease width}.sf-footer .snowflake-marketo-form .mktoFormRow .mktoFieldWrap select{background-position:95% 50%}.sf-footer__disclaimers .text-size-small .snowflake-text p{color:#fff !important;font-size:10px !important;opacity:.8}@media screen and (min-width:768px){.sf-footer__disclaimers .text-size-small .snowflake-text p{font-size:12px !important}}@media screen and (max-width:1023px){.mobile-top-padding{padding-top:64px}}@media (max-width:799px){.sf-footer .snowflake-marketo-form .mktoButtonWrap.mktoNative .mktoButton{width:100% !important}.sf-footer__logo{text-align:center;display:block;margin:0 auto}}.customer-card .snowflake-card-v2-advanced-image{aspect-ratio:4.35 / 1}.customer-card .snowflake-card-v2-advanced-image__image{width:100%;height:100%;padding-left:8px;object-fit:contain;object-position:left center;margin:0 !important;aspect-ratio:initial}.customer-card .snowflake-card-v2-advanced-image__inner{height:110px}.customer-card .snowflake-card-v2-advanced-tag-indicator{display:none}.pc-hero .snowflake-container-arrow-small-gray-image{top:-34% !important;width:18% !important}.pc-hero .snowflake-container-arrow-small-gray-image path{fill:var(--ui-01);opacity:1}@media screen and (max-width:767px){.mobile-padding-top{padding-top:64px}.hide-mobile{display:none !important}.pc-hero{padding-top:52px}.pc-hero .snowflake-text p,.pc-hero .left-alignment .snowflake-title-v2-line,.pc-hero h1 span{text-align:center !important}}div.snowflake-pushdown-banner-button{margin-top:0}.button-group.align-center\u003E.container\u003E.cmp-container\u003E.aem-container{align-items:center;justify-content:center !important}.text-center .snowflake-breadcrumb-swiper .swiper-wrapper{justify-content:center}div.snowflake-breadcrumb a.snowflake-breadcrumb-item,.snowflake-breadcrumb div.snowflake-breadcrumb-item{text-transform:none;font-weight:500}.snowflake-breadcrumb svg{display:none !important}.snowflake-breadcrumb a:has(svg)::after{content:'/';margin:0 12px;color:#666}.hide-filters .snowflake-filterable-and-searchable-grid-top-part{display:none !important}.page-section{padding-left:24px;padding-right:24px}@media screen and (min-width:768px){.page-section{padding-left:48px;padding-right:48px}}.download-card pre[class*=language-]{overflow-x:scroll !important}","isGSAPEnabled":false,":type":"snowflake-site/components/markup-editor"}},":type":"snowflake-site/components/container"}},":type":"snowflake-site/components/experiencefragment","classNames":"aem-xf"},"markup_editor":{"id":"markup-editor-35f74bbb83","title":"Quickstarts Overrides","cssContent":".snowflake-markdown blockquote{padding:24px 32px;background:#f6f9fa;border:1px solid #29b5e8;border-radius:16px}.snowflake-markdown .snowflake-image-container img{width:auto !important;max-width:100%}.snowflake-markdown .snowflake-text ol{padding-left:20px !important}.snowflake-markdown .snowflake-text li{margin:0 0 12px 0 !important}.snowflake-markdown h3.snowflake-markdown-h3{font-size:20px !important;font-family:Texta,sans-serif !important}@media (min-width:768px){.snowflake-markdown h3.snowflake-markdown-h3{font-size:28px !important}}","isGSAPEnabled":false,":type":"snowflake-site/components/markup-editor"}},":type":"wcm/foundation/components/responsivegrid"}},"analyticsContentTags":["snowflake-site:taxonomy/snowflake-feature/unstructured-data-analysis","snowflake-site:taxonomy/solution-center/certification/quickstart","snowflake-site:taxonomy/product/ai","snowflake-site:taxonomy/product/data-engineering"],"analyticsEnabled":true,"isPasswordProtected":false,"coveoConfig":{"organizationId":"snowflakecomputingproduction8neljofn","apiKey":"xx335921a6-2a0a-40f2-a167-e390b4766c3d","pipeline":"snowflake.com","searchHub":"snowflake.com"},"analyticsDebugMode":false,"analyticsData":{"excludeFromAnalytics":false,"subCategory":"","pageType":"quickstart-page-template","templateName":"quickstart-page-template","siteName":"snowflake","pageUrl":"/content/snowflake-site/global/en/developers/guides/getting-started-with-unstructured-data","language":"en","category":"general","pageName":"Getting Started with Unstructured Data","contentTags":["snowflake-site:taxonomy/snowflake-feature/unstructured-data-analysis","snowflake-site:taxonomy/solution-center/certification/quickstart","snowflake-site:taxonomy/product/ai","snowflake-site:taxonomy/product/data-engineering"]},":mappedPath":"/en/developers/guides/getting-started-with-unstructured-data/",":type":"snowflake-site/components/structure/page",":hierarchyType":"page",":path":"/content/snowflake-site/global/en/developers/guides/getting-started-with-unstructured-data","locale":"en"}
  