PageSourceSearch

https://steam-insight.vercel.app/_next/static/chunks/pages/data-cleaning-2f75cd7f4de7d05b.js

js steam-insight.vercel.app collected 2026-10-03 07:48:10 UTC 24,327 bytes, 1 lines download raw bytes

1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[637],{91395:function(e,n,a){(window.__NEXT_P=window.__NEXT_P||[]).push(["/data-cleaning",function(){return a(25712)}])},54119:function(e,n,a){"use strict";a.d(n,{Z:function(){return E}});var t=a(85893),i=a(67294),s=a(98396),r=a(87357),o=a(65582),g=a(51233),m=a(15861),l=a(41796);function p(e){let{title:n,leftNavAction:a}=e;return(0,t.jsx)(t.Fragment,{children:(0,t.jsx)(r.Z,{component:"header",sx:{backdropFilter:"blur(6px)",backgroundColor:e=>(0,l.Fq)(e.palette.background.default,.8),position:"fixed",left:{lg:"".concat(280,"px")},top:0,width:{xs:"100%",lg:"calc(100% - ".concat(280,"px)")},zIndex:e=>e.zIndex.appBar},children:(0,t.jsx)(o.Z,{children:(0,t.jsxs)(g.Z,{alignItems:"center",direction:"row",justifyContent:"flex-start",spacing:2,sx:{minHeight:64},children:[a,n&&(0,t.jsx)(m.Z,{variant:"h6",children:n})]})})})})}var c=a(9008),u=a.n(c);function d(){return(0,t.jsxs)(u(),{children:[(0,t.jsx)("title",{children:"Steam Insight"}),(0,t.jsx)("meta",{name:"description",content:"Generated by create next app"}),(0,t.jsx)("meta",{name:"viewport",content:"width=device-width, initial-scale=1"}),(0,t.jsx)("link",{rel:"icon",href:"/favicon.ico"})]})}var _=a(41664),h=a.n(_),y=a(11163),f=a(77533),x=a(83321),I=a(93946),j=a(53219),v=a(44149),C=a(77488),b=a(80607),D=a(64537),k=a(2525);let w=[{id:"data-insight",title:"Data Insight",icon:(0,t.jsx)(j.Z,{children:(0,t.jsx)(C,{})}),href:"/"},{id:"background",title:"Background",icon:(0,t.jsx)(j.Z,{children:(0,t.jsx)(b,{})}),href:"/background"},{id:"data-cleaning",title:"Data Cleaning",icon:(0,t.jsx)(j.Z,{children:(0,t.jsx)(D,{})}),href:"/data-cleaning"},{id:"comphrehensive",title:"Comprehensive",icon:(0,t.jsx)(j.Z,{children:(0,t.jsx)(k,{})}),href:"/comprehensive"}];function T(e){let{open:n,onClose:a}=e,i=(0,s.Z)(e=>e.breakpoints.up("lg"));return(0,t.jsx)(t.Fragment,{children:(0,t.jsx)(f.ZP,{anchor:"left",onClose:a,open:n,PaperProps:{sx:{backgroundColor:"neutral.800",color:"common.white",width:280}},sx:{zIndex:e=>e.zIndex.appBar+100},variant:i?"permanent":"temporary",children:(0,t.jsx)(S,{})})})}function S(){return(0,t.jsxs)(r.Z,{children:[(0,t.jsx)(r.Z,{sx:{height:"".concat(64,"px"),display:"flex",alignItems:"center",justifyContent:"flex-start",px:2},children:(0,t.jsx)(m.Z,{variant:"h6",children:"Steam Insight"})}),(0,t.jsx)(B,{})]})}function N(e){let{active:n,href:a,icon:i,disabled:s,title:o}=e;return(0,t.jsx)(r.Z,{component:"li",children:(0,t.jsxs)(x.Z,{component:h(),href:a,sx:{alignItems:"center",borderRadius:1,display:"flex",justifyContent:"flex-start",pl:"16px",pr:"16px",py:"6px",textAlign:"left",width:"100%",...n&&{backgroundColor:"rgba(255, 255, 255, 0.04)"},"&:hover":{backgroundColor:"rgba(255, 255, 255, 0.04)"}},variant:"text",disabled:s,children:[i&&(0,t.jsx)(r.Z,{component:"span",sx:{alignItems:"center",color:"neutral.400",display:"inline-flex",justifyContent:"center",mr:2,...n&&{color:"primary.main"}},children:i}),(0,t.jsx)(r.Z,{component:"span",sx:{color:"neutral.400",flexGrow:1,fontFamily:e=>e.typography.fontFamily,fontSize:14,fontWeight:600,lineHeight:"24px",whiteSpace:"nowrap",...n&&{color:"common.white"},...s&&{color:"neutral.500"}},children:o})]})})}function B(){let{pathname:e}=(0,y.useRouter)();return(0,t.jsx)(g.Z,{component:"ul",spacing:.5,sx:{listStyle:"none",p:0,m:0},children:w.map(n=>(0,t.jsx)(N,{title:n.title,href:n.href,icon:n.icon,active:e===n.href,disabled:n.disabled},n.title))})}function M(e){let{onClick:n}=e;return(0,t.jsx)(I.Z,{onClick:n,children:(0,t.jsx)(j.Z,{fontSize:"small",children:(0,t.jsx)(v.Z,{})})})}function q(e){let{children:n}=e;return(0,t.jsx)(r.Z,{component:"div",className:"markdown-body",id:"markdown-body",children:n})}function E(e){let{headerProps:n,markdown:a}=e,[g,m]=i.useState(!1),l=(0,s.Z)(e=>e.breakpoints.up("lg")),c=()=>{m(!1)},u=()=>{m(!0)},_=i.useCallback(()=>l?null:(0,t.jsx)(M,{onClick:u}),[l]);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(p,{...n,leftNavAction:(0,t.jsx)(_,{})}),(0,t.jsx)(d,{}),(0,t.jsx)(T,{open:g,onClose:c}),(0,t.jsx)(r.Z,{sx:{backgroundColor:e=>e.palette.background.default,paddingTop:"".concat(64,"px"),paddingBottom:"".concat(64,"px"),ml:{lg:"".concat(280,"px")},width:{lg:"calc(100% - ".concat(280,"px)")}},children:(0,t.jsx)(o.Z,{sx:{minHeight:"calc(100vh - ".concat(128,"px)")},children:a?(0,t.jsx)(q,{children:e.children}):(0,t.jsx)(t.Fragment,{children:e.children})})})]})}a(78510)},25712:function(e,n,a){"use strict";a.r(n);var t=a(85893),i=a(11151),s=a(54119);let r=e=>{let{children:n}=e;return(0,t.jsx)(s.Z,{headerProps:{title:"Data Cleaning"},markdown:!0,children:n})};function o(e){let n=Object.assign({h2:"h2",pre:"pre",code:"code",p:"p"},(0,i.ah)(),e.components);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h2,{children:"[Main Table] [Entity] games"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",children:"from sqlalchemy import create_engine, String, Column, Integer, \\\n    DateTime, Numeric, TEXT, Boolean, BigInteger, select, func\nfrom sqlalchemy.orm import declarative_base, sessionmaker\nimport os\nimport json\nimport time\nfrom datetime import datetime\n\nengine = create_engine('mysql://root:@127.0.0.1:4000/test')\nBase = declarative_base()\n\nclass Games(Base):\n    __tablename__ = \"games\"\n\n    app_id = Column(Integer, primary_key=True)\n    name = Column(String(256))\n    release_date = Column(DateTime)\n    estimated_owners = Column(String(256))\n    peak_ccu = Column(Integer)\n    required_age = Column(Integer)\n    price = Column(Numeric)\n    dlc_count = Column(Integer)\n    short_description = Column(TEXT)\n    supported_languages = Column(String(4096))\n    full_audio_languages = Column(String(4096))\n    reviews = Column(TEXT)\n    header_image = Column(String(1024))\n    website = Column(String(1024))\n    support_url = Column(String(1024))\n    support_email = Column(String(1024))\n    windows = Column(Boolean)\n    mac = Column(Boolean)\n    linux = Column(Boolean)\n    metacritic_score = Column(Integer)\n    metacritic_url = Column(String(1024))\n    user_score = Column(Integer)\n    positive = Column(Integer)\n    negative = Column(Integer)\n    score_rank = Column(BigInteger)\n    achievements = Column(Integer)\n    recommendations = Column(Integer)\n    notes = Column(TEXT)\n    average_playtime_forever = Column(Integer)\n    average_playtime_two_weeks = Column(Integer)\n    median_playtime_forever = Column(Integer)\n    median_playtime_two_weeks = Column(Integer)\n    developers = Column(String(1024))\n    publishers = Column(String(1024))\n    categories = Column(String(1024))\n    genres = Column(String(1024))\n    tags = Column(String(1024))\n    screenshots = Column(TEXT)\n    movies = Column(TEXT)\n\nBase.metadata.create_all(engine)\nSession = sessionmaker(bind=engine)\nwith Session() as session:\n    dataset = {}\n    if os.path.exists('games.json'):\n        with open('games.json', 'r', encoding='utf-8') as fin:\n            text = fin.read()\n            if len(text) > 0:\n                dataset = json.loads(text)\n\n    for app in dataset:\n        appID = app  # AppID, unique identifier for each app (string).\n        game = dataset[app]\n\n        name = game['name']  # Game name (string).\n        try:\n            releaseDateTime = time.strptime(game['release_date'], '%b %d, %Y')\n        except ValueError:\n            try:\n                releaseDateTime = time.strptime(game['release_date'], '%b %Y')\n            except ValueError:\n                releaseDateTime = time.strptime(game['release_date'], '%Y-%m-%d')\n\n        releaseDate = f'{releaseDateTime.tm_year}-{releaseDateTime.tm_mon}-{releaseDateTime.tm_mday}'\n        estimatedOwners = game['estimated_owners']  # Estimated owners (string, e.g.: \"0 - 20000\").\n        peakCCU = game['peak_ccu']  # Number of concurrent users, yesterday (int).\n        required_age = game['required_age']  # Age required to play, 0 if it is for all audiences (int).\n        price = game['price']  # Price in USD, 0.0 if its free (float).\n        dlcCount = game['dlc_count']  # Number of DLCs, 0 if you have none (int).\n        shortDesc = game['short_description']  # Brief description of the game,\n        languages = json.dumps(game['supp
1orted_languages'])  # Comma-separated enumeration of supporting languages.\n        fullAudioLanguages = json.dumps(game['full_audio_languages'])\n        reviews = game['reviews']\n        headerImage = game['header_image']  # Header image URL in the store (string).\n        website = game['website']  # Game website (string).\n        supportWeb = game['support_url']  # Game support URL (string).\n        supportEmail = game['support_email']  # Game support email (string).\n        supportWindows = game['windows']  # Does it support Windows? (bool).\n        supportMac = game['mac']  # Does it support Mac? (bool).\n        supportLinux = game['linux']  # Does it support Linux? (bool).\n        metacriticScore = game['metacritic_score']  # Metacritic score, 0 if it has none (int).\n        metacriticURL = game['metacritic_url']  # Metacritic review URL (string).\n        userScore = game['user_score']  # Users score, 0 if it has none (int).\n        positive = game['positive']  # Positive votes (int).\n        negative = game['negative']  # Negative votes (int).\n        scoreRank = None\n        if game['score_rank'] != \"\": scoreRank = game['score_rank']\n        achievements = game['achievements']  # Number of achievements, 0 if it has none (int).\n        recommens = game['recommendations']  # User recommendations, 0 if it has none (int).\n        notes = game['notes']  # Extra information about the game content (string).\n        averagePlaytime = game['average_playtime_forever']  # Average playtime since March 2009, in minutes (int).\n        averageplaytime2W = game['average_playtime_2weeks']  # Average playtime in the last two weeks, in minutes (int).\n        medianPlaytime = game['median_playtime_forever']  # Median playtime since March 2009, in minutes (int).\n        medianPlaytime2W = game['median_playtime_2weeks']  # Median playtime in the last two weeks, in minutes (int).\n        developers = json.dumps(game['developers'])\n        publishers = json.dumps(game['publishers'])\n        categories = json.dumps(game['categories'])\n        genres = json.dumps(game['genres'])\n        screenshots = json.dumps(game['screenshots'])\n        movies = json.dumps(game['movies'])\n        tags = json.dumps(game['tags'])\n\n        session.add(Games(\n            app_id=appID,\n            name=name,\n            release_date=releaseDate,\n            estimated_owners=estimatedOwners,\n            peak_ccu=peakCCU,\n            required_age=required_age,\n            price=price,\n            dlc_count=dlcCount,\n            short_description=shortDesc,\n            supported_languages=languages,\n            full_audio_languages=fullAudioLanguages,\n            reviews=reviews,\n            header_image=headerImage,\n            website=website,\n            support_url=supportWeb,\n            support_email=supportEmail,\n            windows=supportWindows,\n            mac=supportMac,\n            linux=supportLinux,\n            metacritic_score=metacriticScore,\n            metacritic_url=metacriticURL,\n            user_score=userScore,\n            positive=positive,\n            negative=negative,\n            score_rank=scoreRank,\n            achievements=achievements,\n            recommendations=recommens,\n            notes=notes,\n            average_playtime_forever=averagePlaytime,\n            average_playtime_two_weeks=averageplaytime2W,\n            median_playtime_forever=medianPlaytime,\n            median_playtime_two_weeks=medianPlaytime2W,\n            developers=developers,\n            publishers=publishers,\n            categories=categories,\n            genres=genres,\n            screenshots=screenshots,\n            movies=movies,\n            tags=tags\n        ))\n\n        session.commit()\n"})}),"\n",(0,t.jsx)(n.h2,{children:"[Entity] company / [Relation] developer / [Relation] publisher"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",children:"from sqlalchemy import create_engine, String, Column, Integer, \\\n    DateTime, Numeric, TEXT, Boolean, BigInteger, select, func\nfrom sqlalchemy.orm import declarative_base, sessionmaker\nimport os\nimport json\n\nengine = create_engine('mysql://root:@127.0.0.1:4000/test')\nBase = declarative_base()\n\nclass Company(Base):\n    __tablename__ = \"company\"\n\n    company_id = Column(Integer, primary_key=True)\n    company_name = Column(String(256))\n\nclass Developer(Base):\n    __tablename__ = \"developer\"\n\n    app_id = Column(Integer, primary_key=True)\n    company_id = Column(Integer, primary_key=True)\n\nclass Publisher(Base):\n    __tablename__ = \"publisher\"\n\n    app_id = Column(Integer, primary_key=True)\n    company_id = Column(Integer, primary_key=True)\n\nBase.metadata.create_all(engine)\nSession = sessionmaker(bind=engine)\n\ndef add_company_and_return_id(session, company_map, company_name):\n    if company_map.get(company_name) is None:\n        company_id = session.query(func.max(Company.company_id)).scalar()\n        if company_id is None:\n            company_id = 0\n        company_id += 1\n        company = Company(company_id=company_id, company_name=company_name)\n        company_map[company_name] = company_id\n        session.add(company)\n        session.commit()\n    return company_map.get(company_name)\n\nwith Session() as session:\n    dataset = {}\n    if os.path.exists('games.json'):\n        with open('games.json', 'r', encoding='utf-8') as fin:\n            text = fin.read()\n            if len(text) > 0:\n                dataset = json.loads(text)\n    index = 0\n    companyMap = {}\n\n    for app in dataset:\n        appID = app\n        game = dataset[app]\n        developers = game['developers']\n        publishers = game['publishers']\n\n        if developers is not None:\n            devSet = {}\n            for developer in developers:\n                company_id = add_company_and_return_id(session, companyMap, developer)\n                if devSet.get(f\"{appID}/{company_id}\") is not None:\n                    continue\n                developer = Developer(app_id=appID, company_id=company_id)\n                session.add(developer)\n                devSet[f\"{developer.app_id}/{developer.company_id}\"] = True\n\n        if publishers is not None:\n            pubSet = {}\n            for publisher in publishers:\n                company_id = add_company_and_return_id(session, companyMap, publisher)\n                if pubSet.get(f\"{appID}/{company_id}\") is not None:\n                    continue\n                publisher = Publisher(app_id=appID, company_id=company_id)\n                session.add(publisher)\n                pubSet[f\"{publisher.app_id}/{publisher.company_id}\"] = True\n\n        session.commit()\n        index += 1\n        if index % 100 == 0:\n            print(f'[{index}/68223] {game[\"name\"]}')\n\n"})}),"\n",(0,t.jsx)(n.h2,{children:"[Entity] language / [Relation] supported_language / [Relation] all_audio_language"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",children:"from sqlalchemy import create_engine, String, Column, Integer, \\\n    DateTime, Numeric, TEXT, Boolean, BigInteger, select, func\nfrom sqlalchemy.orm import declarative_base, sessionmaker\nimport os\nimport json\n\nengine = create_engine('mysql://root:@127.0.0.1:4000/test')\nBase = declarative_base()\n\nclass Language(Base):\n    __tablename__ = \"language\"\n\n    language_id = Column(Integer, primary_key=True)\n    language_name = Column(String(256))\n\nclass SupportedLanguage(Base):\n    __tablename__ = \"supported_language\"\n\n    app_id = Column(Integer, primary_key=True)\n    language_id = Column(Integer, primary_key=True)\n\nclass AllAudioLanguage(Base):\n    __tablename__ = \"all_audio_language\"\n\n    app_id = Column(Integer, primary_key=True)\n    language_id = Column(Integer, primary_key=True)\n\nBase.metadata.create_all(engine)\nSession = sessionmaker(bind=engine)\n\nwith Session() as session:\n    dataset = {}\n    if os.path.exists('games.json'):\n        with open('games.json', 'r', encoding='utf-8') as fin:\n            text = fin.read()\n            if len(text) > 0:\n                dataset = json.loads(text)\n\n    index = 0\n    languageMap = {}\n\n    for app in dataset:\n        appID = app\n        game = dataset[app]\n        languages = game['supp
1orted_languages']\n        fullAudioLanguages = game['full_audio_languages']\n\n        if languages is not None:\n            for language in languages:\n                languageName = language\n                if languageMap.get(languageName) is None:\n                    languageID = session.query(func.max(Language.language_id)).scalar()\n                    if languageID is None:\n                        languageID = 0\n                    languageID += 1\n                    language = Language(language_id=languageID, language_name=languageName)\n                    session.add(language)\n                    languageMap[languageName] = languageID\n\n                supportedLanguage = SupportedLanguage(app_id=appID, language_id=languageMap.get(languageName))\n                session.add(supportedLanguage)\n\n        if fullAudioLanguages is not None:\n            for language in fullAudioLanguages:\n                languageName = language\n                if languageMap.get(languageName) is None:\n                    languageID = session.query(func.max(Language.language_id)).scalar()\n                    if languageID is None:\n                        languageID = 0\n                    languageID += 1\n                    language = Language(language_id=languageID, language_name=languageName)\n                    session.add(language)\n                    languageMap[languageName] = languageID\n\n                allAudioLanguage = AllAudioLanguage(app_id=appID, language_id=languageMap.get(languageName))\n                session.add(allAudioLanguage)\n\n        session.commit()\n        index += 1\n        print(f'[{index}/68223] {game[\"name\"]}')\n\n"})}),"\n",(0,t.jsx)(n.h2,{children:"[Entity] category / [Relation] game_category"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",children:"from sqlalchemy import create_engine, String, Column, Integer, \\\n    DateTime, Numeric, TEXT, Boolean, BigInteger, select, func\nfrom sqlalchemy.orm import declarative_base, sessionmaker\nimport os\nimport json\n\nengine = create_engine('mysql://root:@127.0.0.1:4000/test')\nBase = declarative_base()\n\nclass Category(Base):\n    __tablename__ = \"category\"\n\n    category_id = Column(Integer, primary_key=True)\n    category_name = Column(String(256))\n\nclass GameCategory(Base):\n    __tablename__ = \"game_category\"\n\n    app_id = Column(Integer, primary_key=True)\n    category_id = Column(Integer, primary_key=True)\n\nBase.metadata.create_all(engine)\nSession = sessionmaker(bind=engine)\n\nwith Session() as session:\n    dataset = {}\n    if os.path.exists('games.json'):\n        with open('games.json', 'r', encoding='utf-8') as fin:\n            text = fin.read()\n            if len(text) > 0:\n                dataset = json.loads(text)\n    index = 0\n    categoryMap = {}\n\n    for app in dataset:\n        appID = app\n        game = dataset[app]\n        categories = game['categories']\n        catSet = {}\n\n        for category in categories:\n            categoryID = categoryMap.get(category)\n            if categoryID is None:\n                categoryID = len(categoryMap) + 1\n                categoryMap[category] = categoryID\n                session.add(Category(category_id=categoryID, category_name=category))\n            if catSet.get(f\"{appID}/{categoryID}\") is not None:\n                continue\n\n            session.add(GameCategory(app_id=appID, category_id=categoryID))\n            catSet[f\"{appID}/{categoryID}\"] = True\n\n        session.commit()\n\n        index += 1\n        if index % 100 == 0:\n            print(f'[{index}/68223]')\n"})}),"\n",(0,t.jsx)(n.h2,{children:"[Entity] genre / [Relation] game_genre"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",children:"from sqlalchemy import create_engine, String, Column, Integer, \\\n    DateTime, Numeric, TEXT, Boolean, BigInteger, select, func\nfrom sqlalchemy.orm import declarative_base, sessionmaker\nimport os\nimport json\n\nengine = create_engine('mysql://root:@127.0.0.1:4000/test')\nBase = declarative_base()\n\nclass Genre(Base):\n    __tablename__ = \"genre\"\n\n    genre_id = Column(Integer, primary_key=True)\n    genre_name = Column(String(256))\n\nclass GameGenre(Base):\n    __tablename__ = \"game_genre\"\n\n    app_id = Column(Integer, primary_key=True)\n    genre_id = Column(Integer, primary_key=True)\n\nBase.metadata.create_all(engine)\nSession = sessionmaker(bind=engine)\n\nwith Session() as session:\n    dataset = {}\n    if os.path.exists('games.json'):\n        with open('games.json', 'r', encoding='utf-8') as fin:\n            text = fin.read()\n            if len(text) > 0:\n                dataset = json.loads(text)\n    index = 0\n    genreMap = {}\n\n    for app in dataset:\n        appID = app\n        game = dataset[app]\n        genres = game['genres']\n        for genre in genres:\n            genreID = genreMap.get(genre)\n            if genreID is None:\n                genreID = len(genreMap) + 1\n                genreMap[genre] = genreID\n                session.add(Genre(genre_id=genreID, genre_name=genre))\n            session.add(GameGenre(app_id=appID, genre_id=genreID))\n        session.commit()\n\n        index += 1\n        if index % 100 == 0:\n            print(f'[{index}/68223]')\n\n"})}),"\n",(0,t.jsx)(n.h2,{children:"[Entity] tag / [Relation] game_tag"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",children:"from sqlalchemy import create_engine, String, Column, Integer, \\\n    DateTime, Numeric, TEXT, Boolean, BigInteger, select, func\nfrom sqlalchemy.orm import declarative_base, sessionmaker\nimport os\nimport json\n\nengine = create_engine('mysql://root:@127.0.0.1:4000/test')\nBase = declarative_base()\n\nclass Tag(Base):\n    __tablename__ = \"tag\"\n\n    tag_id = Column(Integer, primary_key=True)\n    tag_name = Column(String(256))\n\nclass GameTag(Base):\n    __tablename__ = \"game_tag\"\n\n    app_id = Column(Integer, primary_key=True)\n    tag_id = Column(Integer, primary_key=True)\n    agree_num = Column(Integer)\n\nBase.metadata.create_all(engine)\nSession = sessionmaker(bind=engine)\n\nwith Session() as session:\n    dataset = {}\n    if os.path.exists('games.json'):\n        with open('games.json', 'r', encoding='utf-8') as fin:\n            text = fin.read()\n            if len(text) > 0:\n                dataset = json.loads(text)\n    index = 0\n    tagMap = {}\n\n    for app in dataset:\n        appID = app\n        game = dataset[app]\n        tags = game['tags']\n\n        for tag in tags:\n            tagID = tagMap.get(tag)\n            if tagID is None:\n                tagID = len(tagMap) + 1\n                tagMap[tag] 
1= tagID\n                session.add(Tag(tag_id=tagID, tag_name=tag))\n\n            session.add(GameTag(app_id=appID, tag_id=tagID, agree_num=tags[tag]))\n\n        session.commit()\n\n        index += 1\n        if index % 100 == 0:\n            print(f'[{index}/68223]')\n"})}),"\n",(0,t.jsx)(n.h2,{children:"Remove the redundant columns from the main table"}),"\n",(0,t.jsx)(n.p,{children:"That's optional."})]})}n.default=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,t.jsx)(r,Object.assign({},e,{children:(0,t.jsx)(o,e)}))}},11151:function(e,n,a){"use strict";a.d(n,{ah:function(){return s}});var t=a(67294);let i=t.createContext({});function s(e){let n=t.useContext(i);return t.useMemo(()=>"function"==typeof e?e(n):{...n,...e},[n,e])}}},function(e){e.O(0,[159,774,888,179],function(){return e(e.s=91395)}),_N_E=e.O()}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.