[{"data":1,"prerenderedAt":316},["ShallowReactive",2],{"navigation":3,"page-\u002Fcreating-datasets\u002Fload-data-from-csv":130,"\u002Fcreating-datasets\u002Fload-data-from-csv-surround":310,"comments-\u002Fcreating-datasets\u002Fload-data-from-csv":315},[4],{"title":5,"path":6,"stem":7,"children":8,"page":129},"En","\u002Fen","en",[9,53,87],{"title":10,"path":11,"stem":12,"children":13,"icon":52},"CRM Analytics Foundations","\u002Fen\u002Ffoundations","en\u002F1.foundations\u002F1.index",[14,16,20,24,28,32,36,40,44,48],{"title":15,"path":11,"stem":12},"Welcome & Dev Org",{"title":17,"path":18,"stem":19},"Graded Quiz","\u002Fen\u002Ffoundations\u002Fquiz","en\u002F1.foundations\u002F10.quiz",{"title":21,"path":22,"stem":23},"What Is CRM Analytics?","\u002Fen\u002Ffoundations\u002Fwhat-is-crm-analytics","en\u002F1.foundations\u002F2.what-is-crm-analytics",{"title":25,"path":26,"stem":27},"Architecture","\u002Fen\u002Ffoundations\u002Farchitecture-and-data-flow","en\u002F1.foundations\u002F3.architecture-and-data-flow",{"title":29,"path":30,"stem":31},"The Data Layer","\u002Fen\u002Ffoundations\u002Fthe-data-layer","en\u002F1.foundations\u002F4.the-data-layer",{"title":33,"path":34,"stem":35},"The Design Layer","\u002Fen\u002Ffoundations\u002Fthe-design-layer","en\u002F1.foundations\u002F5.the-design-layer",{"title":37,"path":38,"stem":39},"The Intelligence Layer","\u002Fen\u002Ffoundations\u002Fthe-intelligence-layer","en\u002F1.foundations\u002F6.the-intelligence-layer",{"title":41,"path":42,"stem":43},"Hands-On Tour","\u002Fen\u002Ffoundations\u002Fhands-on-tour","en\u002F1.foundations\u002F7.hands-on-tour",{"title":45,"path":46,"stem":47},"Six Adoption Steps","\u002Fen\u002Ffoundations\u002Fsix-steps-and-interview-prep","en\u002F1.foundations\u002F8.six-steps-and-interview-prep",{"title":49,"path":50,"stem":51},"Interview Questions","\u002Fen\u002Ffoundations\u002Finterview-questions","en\u002F1.foundations\u002F9.interview-questions","i-lucide-compass",{"title":54,"path":55,"stem":56,"children":57,"icon":86},"Setup & User Provisioning","\u002Fen\u002Fsetup","en\u002F2.setup\u002F1.index",[58,60,64,68,72,76,80,83],{"title":59,"path":55,"stem":56},"Provisioning Users",{"title":61,"path":62,"stem":63},"Licenses & Permissions","\u002Fen\u002Fsetup\u002Flicenses-and-permission-sets","en\u002F2.setup\u002F2.licenses-and-permission-sets",{"title":65,"path":66,"stem":67},"Integration User","\u002Fen\u002Fsetup\u002Fthe-integration-user","en\u002F2.setup\u002F3.the-integration-user",{"title":69,"path":70,"stem":71},"Security User","\u002Fen\u002Fsetup\u002Fthe-security-user","en\u002F2.setup\u002F4.the-security-user",{"title":73,"path":74,"stem":75},"Analytics Settings","\u002Fen\u002Fsetup\u002Fanalytics-settings","en\u002F2.setup\u002F5.analytics-settings",{"title":77,"path":78,"stem":79},"Hands-On Access","\u002Fen\u002Fsetup\u002Fhands-on-assigning-access","en\u002F2.setup\u002F6.hands-on-assigning-access",{"title":17,"path":81,"stem":82},"\u002Fen\u002Fsetup\u002Fquiz","en\u002F2.setup\u002F7.quiz",{"title":49,"path":84,"stem":85},"\u002Fen\u002Fsetup\u002Finterview-questions","en\u002F2.setup\u002F8.interview-questions","i-lucide-settings-2",{"title":88,"path":89,"stem":90,"children":91,"icon":128},"Creating Datasets","\u002Fen\u002Fcreating-datasets","en\u002F3.creating-datasets\u002F1.index",[92,94,97,101,105,109,113,117,121,125],{"title":93,"path":89,"stem":90},"What Is a Dataset?",{"title":17,"path":95,"stem":96},"\u002Fen\u002Fcreating-datasets\u002Fquiz","en\u002F3.creating-datasets\u002F10.quiz",{"title":98,"path":99,"stem":100},"The Data Landscape","\u002Fen\u002Fcreating-datasets\u002Fthe-data-landscape","en\u002F3.creating-datasets\u002F2.the-data-landscape",{"title":102,"path":103,"stem":104},"Upload a CSV","\u002Fen\u002Fcreating-datasets\u002Fload-data-from-csv","en\u002F3.creating-datasets\u002F3.load-data-from-csv",{"title":106,"path":107,"stem":108},"Grain, Lookups & Joins","\u002Fen\u002Fcreating-datasets\u002Fgrain-lookups-and-joins","en\u002F3.creating-datasets\u002F4.grain-lookups-and-joins",{"title":110,"path":111,"stem":112},"Dataset Builder","\u002Fen\u002Fcreating-datasets\u002Fbuild-with-dataset-builder","en\u002F3.creating-datasets\u002F5.build-with-dataset-builder",{"title":114,"path":115,"stem":116},"Run the Dataflow","\u002Fen\u002Fcreating-datasets\u002Frun-and-troubleshoot-the-dataflow","en\u002F3.creating-datasets\u002F6.run-and-troubleshoot-the-dataflow",{"title":118,"path":119,"stem":120},"Build with a Recipe","\u002Fen\u002Fcreating-datasets\u002Fbuild-the-same-dataset-with-a-recipe","en\u002F3.creating-datasets\u002F7.build-the-same-dataset-with-a-recipe",{"title":122,"path":123,"stem":124},"Combine Datasets","\u002Fen\u002Fcreating-datasets\u002Fcombine-datasets","en\u002F3.creating-datasets\u002F8.combine-datasets",{"title":49,"path":126,"stem":127},"\u002Fen\u002Fcreating-datasets\u002Finterview-questions","en\u002F3.creating-datasets\u002F9.interview-questions","i-lucide-database",false,{"id":131,"title":132,"access":133,"body":134,"description":300,"extension":301,"interview":133,"links":133,"meta":302,"navigation":303,"passScore":133,"path":103,"quiz":133,"seo":304,"stem":104,"video":305,"__hash__":309},"docs\u002Fen\u002F3.creating-datasets\u002F3.load-data-from-csv.md","Load Data from a CSV File",null,{"type":135,"value":136,"toc":292},"minimark",[137,141,155,175,180,183,187,198,202,217,234,239,254,261,265,268,272,281],[138,139,132],"h1",{"id":140},"load-data-from-a-csv-file",[142,143,144,145,149,150,154],"p",{},"The fastest way to get data into CRM Analytics is a ",[146,147,148],"strong",{},"CSV upload",". It's a manual, one-time load — no sync, no dataflow, no recipe — and it's perfect for data that lives ",[151,152,153],"em",{},"outside"," Salesforce or that you just need to get in quickly.",[142,156,157,158,162,163,166,167,170,171,174],{},"Our example file, ",[159,160,161],"code",{},"Opportunity External Amounts",", ships in the EA training files (the zip from the first video). It mimics data arriving from a separate system: a ",[146,164,165],{},"Name",", an ",[146,168,169],{},"Original Amount",", and an ",[146,172,173],{},"External Invoice Amount",". Imagine finance tracks an external invoice figure that Salesforce doesn't have, and you've exported it to CSV.",[176,177,179],"h2",{"id":178},"the-upload-flow","The upload flow",[142,181,182],{},"From Analytics Studio, the path is short and worth memorizing:",[184,185],"lesson-steps",{":items":186},"[{\"title\":\"Open Analytics Studio\",\"description\":\"App Launcher → scroll to Analytics Studio → open it. You'll land on the Studio home.\"},{\"title\":\"Create → Dataset\",\"description\":\"Click Create, then Dataset. Pick the first option: CSV file.\"},{\"title\":\"Choose your file\",\"description\":\"Select your CSV (here, the opportunity external amounts file) and click Next.\"},{\"title\":\"Name the dataset\",\"description\":\"Give it a clear name, and add a suffix if you like — it lands in your private app unless you choose another.\"},{\"title\":\"Review field types, then upload\",\"description\":\"Check the dimensions, measures, and dates the engine detected, adjust if needed, and click Upload File.\"}]",[142,188,189,190,193,194,197],{},"When you land back in the Studio, the dataset is ready to use. Notice something important on the data-landscape diagram from the last lesson: a CSV dataset sits ",[146,191,192],{},"on its own"," — it's ",[151,195,196],{},"not"," wired into a dataflow or sync, because it was a manual, one-time load. The data is simply there, ready for you.",[176,199,201],{"id":200},"the-metadata-schema-a-little-advanced","The metadata schema (a little advanced)",[142,203,204,205,208,209,212,213,216],{},"When you upload, the data engine reads your CSV and ",[146,206,207],{},"guesses"," each field's type: text becomes a ",[146,210,211],{},"dimension",", numbers become ",[146,214,215],{},"measures",". You can override those guesses right in the UI.",[142,218,219,220,223,224,227,228,230,231,233],{},"The classic example is ",[146,221,222],{},"zip code",". It's digits, so the engine reads it as a ",[151,225,226],{},"measure"," (something to sum or average) — but you'd never add up zip codes. You slice and group by them. So change it from ",[146,229,226],{}," to ",[146,232,211],{}," on the spot.",[235,236],"lesson-cards",{":columns":237,":items":238},"2","[{\"title\":\"Dimension\",\"icon\":\"i-lucide-tags\",\"description\":\"A field you group or filter by — account name, stage, region, zip code. The categorical stuff.\"},{\"title\":\"Measure\",\"icon\":\"i-lucide-calculator\",\"description\":\"A numeric field you aggregate — amount, quantity, count. The stuff you sum and average.\"}]",[142,240,241,242,245,246,249,250,253],{},"Most of the time the UI is all you need. But some things — like ",[146,243,244],{},"multi-value fields"," — can't be defined in the UI. For those, download the generated ",[146,247,248],{},"metadata schema file",", edit it by hand (for example, set ",[159,251,252],{},"isMultiValue: true"," on a field), re-upload it, and finish the upload.",[255,256,258],"tip",{"icon":257},"i-lucide-info",[142,259,260],{},"Reach for the schema file only when the UI can't express what you need — multi-value fields, precise number formatting, or forcing a type the engine got wrong. For 90% of uploads, the on-screen dimension\u002Fmeasure\u002Fdate review is enough. We cover the schema file fully in the Data Manager lessons.",[176,262,264],{"id":263},"automating-csv-uploads","Automating CSV uploads",[142,266,267],{},"A manual upload is great once. But what if a system drops a fresh CSV every night? Two options practitioners actually use:",[269,270],"lesson-links",{":items":271},"[{\"label\":\"Dataset Utils (GitHub)\",\"to\":\"https:\u002F\u002Fgithub.com\u002Fforcedotcom\u002FAnalytics-Cloud-Dataset-Utils\",\"icon\":\"i-simple-icons-github\",\"description\":\"A community tool that runs on a local or virtual machine. Set up a folder listener: when a CSV is dropped in, it auto-uploads, upserts, or replaces the dataset.\"},{\"label\":\"Trailblazer Community thread\",\"to\":\"https:\u002F\u002Ftrailhead.salesforce.com\u002Ftrailblazer-community\",\"icon\":\"i-lucide-messages-square\",\"description\":\"An older but useful thread collecting several approaches to scripting and automating CSV loads.\"}]",[255,273,275],{"icon":274},"i-lucide-triangle-alert",[142,276,277,280],{},[146,278,279],{},"Dataset Utils is not officially part of the product."," It's a community tool. It has held up well across releases and gets patched when something breaks, but treat it accordingly — test it, and don't build a business-critical pipeline on it without a fallback.",[142,282,283,284,287,288,291],{},"CSV upload covers external and one-off data beautifully. But the heart of CRM Analytics is ",[146,285,286],{},"Salesforce"," data — and for that we need a smarter approach. Before we build one, the next lesson covers the single most important concept in dataset design: ",[146,289,290],{},"grain",".",{"title":293,"searchDepth":294,"depth":295,"links":296},"",1,2,[297,298,299],{"id":178,"depth":295,"text":179},{"id":200,"depth":295,"text":201},{"id":263,"depth":295,"text":264},"Create a CRM Analytics dataset by uploading a CSV file. Walk through the upload flow, review dimensions, measures, and dates, control field types with the metadata schema, and automate uploads with Dataset Utils.","md",{},{"title":102},{"title":132,"description":300},{"id":306,"start":307,"end":308},"-0mp2mUjyVI",369,702,"k9bb4yhUjuU1N1kIAkn4SCdReqrtLRF7lL-vyeoBy_g",[311,313],{"title":98,"path":99,"stem":100,"description":312,"children":-1},"Before you build a dataset, understand the CRM Analytics data landscape: the Connect\u002FSync staging layer, how data comes in from Salesforce, Snowflake, CSVs, and ETL tools, and where dataflows and recipes fit.",{"title":106,"path":107,"stem":108,"description":314,"children":-1},"The one concept that makes or breaks a CRM Analytics dataset: grain. Understand grain, why you start from your lowest-level object, and how lookups and joins pull related data onto each row without multiplying it.",[],1783475168178]