売上分析

次のサンプルは、複数のマスタテーブルデータを使用して作成したテーブルシートにリレーションシップを追加し、結合したリレーショナルビューを基にピボットテーブルを追加する方法を示しています。 また、新しいデータが追加されると自動的に列にデフォルト値を設定するトリガー数式機能を確認できます。

このサンプルでは、「売上クロステーブル」シートで販売日や売上金額などを修正すると、修正後のデータが集計され、「販売店別年間平均売上」と「年間売上比較」列、「売上分析」ピボットテーブルに反映されます。 「売上クロステーブル」シート: 売上データに対して、テーブルシートを使用して関連するテーブル「商品マスタ」、「店舗マスタ」と「販売実績」を結合し、カスタムビューを表示しています。 列「販売店エリア」「販売店ID」「カテゴリー」「商品ID」「商品名」に対し、列ヘッダーフィットモードを設定し、列ヘッダーを積み上げで表示しています。 ビューの行と列をピン留め機能を使用し、重要な販売データや、販売店名と販売日を常に先頭に表示させます。 既存の行アクションのほか、アイコンや処理をカスタマイズしたカスタムアクションを追加しています。行アクションの感嘆符を押下すると警告を出す処理を実装しています。 トリガー数式機能を利用し、新しいレコードが追加されると、注文IDに連番を振ることや販売店と商品情報の列にデフォルト値が設定されます。また、データが更新されると更新日時が更新されます。 Window関数を使用して、各販売店に対して販売日の年別でデータを並べ替え、ひとつのwindow frameとして定義し、年単位での平均売上の分析を行います。また、各レコードと比較した結果をバリスパークラインとして表現しています。 販売店別年間平均売上列にて各商品の売上データに対して年間平均値を計算し、その結果を各行に格納します。 データソーススキーマのwindowプロパティでWINDOWDEFを使用してウィンドウを事前に定義しています。ここでFRAMEGROUPSを利用してグループ単位の集計を行っています。FRAMEGROUPS以外、FRAMEROWS(行単位)とFRAMERANGE(距離単位)の集計も提供していますが、今回は年単位のグループで集計を行うためFRAMEGROUPSを使用します。 年間売上比較列に各売上が販売店全体の年間平均売上を上回っているか、または下回っているかを視覚的に確認できるために、バリスパークラインを利用してデータの比較を行っています。 データを編集すると、Window関数を使用したデータ分析にも反映されます。 「売上ピボットレポート」シート: 複数のテーブルシートから結合したリレーショナルビューの「売上クロステーブル」をデータソースとして利用し、ピボットテーブルでデータの集計を行います。 小計の位置を集計フィールドの上にカスタマイズできます。 タイムラインスライサーを追加し、日付フィールドの集計を変更できます。
const spreadNS = GC.Spread.Sheets; const spreadPT = GC.Spread.Pivot; window.onload = function () { // 初期化 var spread = new spreadNS.Workbook('ss', { sheetCount: 0 }); // スプレッドシートのオプション設定 spread.options.allowDynamicArray = true; spread.options.highlightInvalidData = true; spread.options.calcOnDemand = true; spread.options.autoFitType = spreadNS.AutoFitType.cellWithHeader; spread.options.backColor = "#fafdff"; spread.options.grayAreaBackColor = "#ebf6f7"; spread.options.allowUserZoom = true; spread.options.tabStripPosition = spreadNS.TabStripPosition.top; spread.options.tabNavigationVisible = false; spread.options.tabEditable = true; spread.options.newTabVisible = false; // 行アクションのコマンドを追加 registerCommands(); // シートの初期化 initSpread(spread); // シートタブの順番の変更 spread.changeSheetPosition("売上クロステーブル", 0); // アクティブタブの設定 spread.setActiveSheetTab(0); // シートタブスタイル const sheetTabStyle1 = { backColor: '#c3d825', foreColor: '#3e62ad', font: 'normal 12pt Calibri' }; const sheetTabStyle2 = { backColor: '#f7b977', foreColor: '#3e62ad', font: 'normal 12pt Calibri' }; const state = spreadNS.SheetTabState.normal; const sheetNames1 = ['売上クロステーブル', '売上ピボットレポート']; const sheetNames2 = ['商品マスタ', '店舗マスタ', '販売実績']; spread.sheetTabStyles.add(state, sheetTabStyle1, sheetNames1); spread.sheetTabStyles.add(state, sheetTabStyle2, sheetNames2); spread.options.tabStripWidth = 500; }; // スプレッド初期化 function initSpread(spread) { spread.suspendPaint(); spread.addSheet(1); // dataManagerの初期化 var dataManager = spread.dataManager(); // テーブルシートの初期化 initTableSheet(spread, dataManager); spread.resumePaint(); } // テーブルシート初期化 function initTableSheet(spread, dataManager) { // productテーブルシートを作成 var productTable = dataManager.addTable("product", { data: productData, schema: { columns: { ProductID: { dataType: "number", lookup: "sales", defaultValue: "=MAX(OFFSET($A$1,0,COLUMN()-1,ROW()-1,1))+1", }, ProductName: { dataType: "string", lookup: "sales" }, Category: { dataType: "string", lookup: ["果物", "野菜", "ベーカリー"] } } } }); productTable.primaryKey("ProductID"); var productSheet = spread.addSheetTab(1, "商品マスタ", spreadNS.SheetType.tableSheet); var productView = productTable.addView("productView", [ { value: 'ProductID', caption: "商品ID", width: 150 }, { value: 'Category', caption: "商品分類", width: 150 }, { value: 'ProductName', caption: "商品名", width: 150 }, ], undefined, { defaultColumnWidth: 30 } ); productView.fetch().then(function () { productSheet.setDataView(productView); }); // storeテーブルシートを作成 var storeTable = dataManager.addTable("store", { data: storeData, schema: { columns: { StoreID: { dataType: "number", defaultValue: "=MAX(OFFSET($A$1,0,COLUMN()-1,ROW()-1,1))+1", }, Location: { dataType: "string" }, Area: { dataType: "string", lookup: ["東日本", "西日本"] }, StoreName: { dataType: "string" }, Address: { dataType: "string" }, PhoneNumber: { dataType: "string" } } } }); storeTable.primaryKey("StoreID"); var storeSheet = spread.addSheetTab(2, "店舗マスタ", spreadNS.SheetType.tableSheet); var storeView = storeTable.addView("storeView", [ { value: 'StoreID', caption: "販売店ID", width: 150 }, { value: 'Area', caption: "販売エリア", width: 150 }, { value: 'Location', caption: "拠点", width: 150 }, { value: 'StoreName', caption: "販売店名", width: 150 }, { value: 'Address', caption: "所在地", width: 250 }, { value: 'PhoneNumber', caption: "電話番号", width: 150 } ], undefined, { defaultColumnWidth: 30 } ); storeView.fetch().then(function () { storeSheet.setDataView(storeView); }); // salesテーブルシートを作成 var salesTable = dataManager.addTable("sales", { data: salesData, schema: { columns: { SaleID: { dataType: "number", required: true, defaultValue: "=MAX(OFFSET($A$1,0,COLUMN()-1,ROW()-1,1))+1", }, SalesDate: { dataType: "date", trigger: { when: "onNew", formula: "=TODAY()" } }, StoreID: { dataType: "number", lookup: { name: 'store', columns: [ { value: "StoreID", caption: "販売店ID" }, { value: "Area", caption: "販売エリア", width: 100 }, { value: "StoreName", caption: "販売店名", width: 100 }, { value: "PhoneNumber", caption: "電話番号", width: 150 } ] }, trigger: { when: "onNew", formula: "=201", fields: "*" } }, ProductID: { dataType: "number", lookup: { name: 'product', columns: [ { value: 'ProductID', caption: "商品ID" }, { value: 'ProductName', caption: "商品名", width: 100 }, { value: 'Category', caption: "商品分類", width: 110 }, ] }, trigger: { when: "onNew", formula: "=101", fields: "*" } }, UnitsSold: { dataType: "number" }, Revenue: { dataType: "number", trigger: { when: "onNew", formula: "=0", fields: "*" } }, YearlyAverageRevenue: { dataType: 'formula', value: '=WINDOW(AVERAGE([Revenue]), "ProductYearly")' }, RevenueTrend: { dataType: 'formula', value: '=VARISPARKLINE(ROUND(([@Revenue] - [@YearlyAverageRevenue]) / [@Revenue], 2),0,,,,0.2,TRUE,"#4d5aaf","#e95295")' }, CreatedDateTime: { dataType: "string", defaultValue: '=TEXT(NOW(), "yyyy/MM/dd")' }, LastUpdatedDateTime: { dataType: "string", trigger: { when: "onNewAndUpdate", formula: '=TEXT(NOW(), "yyyy/MM/dd")', fields: "*" } }, }, window: { ProductYearly: '=WINDOWDEF(PARTITIONBY([StoreID]), ORDERBY(VALUE(DATEPART([@SalesDate], "Y"))), FRAMEGROUPS([@], [@]))' } } }); salesTable.primaryKey("SaleID"); var salesSheet = spread.addSheetTab(2, "販売実績", spreadNS.SheetType.tableSheet); var salesView = salesTable.addView("salesView", [ { value: 'SaleID', caption: "注文ID", width: 100 }, { value: 'SalesDate', caption: "販売日", width: 150, style: { formatter: "yyyy/MM/dd" } }, { value: 'StoreID', caption: "販売店ID", width: 100 }, { value: 'ProductID', caption: "商品ID", width: 100 }, { value: 'UnitsSold', caption: "販売数量", width: 100 }, { value: 'Revenue', caption: "売上金額", width: 150, style: { formatter: "#,##0" }, }, ], undefined, { defaultColumnWidth: 30 } ); salesView.fetch().then(function () { salesSheet.setDataView(salesView); }); // リレーションシップを追加 dataManager.addRelationship(salesTable, "ProductID", "product", productTable, "ProductID", "sales"); dataManager.addRelationship(salesTable, "StoreID", "store", storeTable, "StoreID", "sales"); // crossテーブルシートを作成 var crossSheet = spread.addSheetTab(0, "売上クロステーブル", spreadNS.SheetType.tableSheet); crossSheet.setDefaultRowHeight(40, 1); crossSheet.setDefaultRowHeight(40); crossSheet.setDefaultRowHeight(20, spreadNS.SheetArea.colHeader); crossSheet.applyTableTheme(spreadNS.Tables.TableThemes.light9); crossSheet.zoom(0.9); // スタイルルールを追加 var crossViewOptions = { defaultColumnWidth: 30, styleRules: { "notAchieved": { style: { foreColor: "red" }, rule: { formula: "[@Revenue]<1000" } }, } }; // ヘッダースタイルを追加 var fitModeHeaderStyle1 = { backColor: "#bbdbf3", foreColor: "#333333", font: "bold 12pt 'Times New Roman', serif", } var fitModeHeaderStyle2 = { backColor: "#C8D6E5", foreColor: "#333333", font: "bold 10pt 'Times New Roman', serif", } var fitModeHeaderStyle3 = { backColor: "#FAFAD2", foreColor: "#333333", font: "bold 12pt 'Times New Roman', serif", } var timestampStyle = { font: "bold 10pt 'Courier New', monospace", color: "#FFFFFF", foreColor: "#1E3A8A" } // 条件付き書式ルール var formulaRule = { ruleType: "formulaRule", formula: "@<1000", style: { font: "bold 12pt 'Times New Roman', serif", backColor: "#FFC0CB", foreColor: "#8B0000" } }; var inputValidator = { type: "formula", formula: '@>0', highlightStyle: { type: 'icon', color: "#ea5506", position: 'outsideRight', } }; // ビュー追加 var crossView = salesTable.addView("crossView", [ { value: 'SaleID', caption: "注文ID", width: 85, headerStyle: fitModeHeaderStyle1 }, { value: 'StoreID', caption: "販売店ID", width: 75, headerFit: "stack", style: { backColor: "#E6E6FA", foreColor: "#374151" }, headerStyle: fitModeHeaderStyle1 }, { value: 'store.Area', caption: "販売地域", width: 100, headerStyle: fitModeHeaderStyle1 }, { value: 'store.StoreName', caption: "販売店名", width: 100, headerStyle: fitModeHeaderStyle1 }, { value: 'ProductID', caption: "商品ID", width: 75, headerFit: "stack", style: { backColor: "#E6E6FA", foreColor: "#374151" }, headerStyle: fitModeHeaderStyle1 }, { value: 'product.Category', caption: "商品分類", headerFit: "stack", width: 90, headerStyle: fitModeHeaderStyle1 }, { value: 'product.ProductName', caption: "商品名", width: 85, headerStyle: fitModeHeaderStyle1 }, { value: 'SalesDate', caption: "販売日", width: 110, required: true, style: { formatter: "yyyy/MM/dd", backColor: "#E6E6FA", foreColor: "#374151" }, headerStyle: fitModeHeaderStyle1 }, { value: 'Revenue', caption: "売上金額", width: 100, required: true, conditionalFormats: [formulaRule], validator: inputValidator, style: { formatter: "¥#,##0", backColor: "#E6E6FA", foreColor: "#1E3A8A", font: "bold 15px Arial, sans-serif", border: "1px solid #000" }, headerStyle: fitModeHeaderStyle1 }, { value: 'YearlyAverageRevenue', caption: "販売店別年間平均売上", width: 165, style: { formatter: "¥#,##0", backColor: "#dbebc4", foreColor: "#1E3A8A" }, headerStyle: fitModeHeaderStyle2 }, { value: 'RevenueTrend', caption: "年間売上比較", width: 165, style: { backColor: "#dbebc4", foreColor: "#1E3A8A" }, headerStyle: fitModeHeaderStyle2 }, { value: "CreatedDateTime", caption: "作成日", width: 100, readonly: true, style: timestampStyle, headerStyle: fitModeHeaderStyle3 }, { value: "LastUpdatedDateTime", caption: "更新日", width: 100, readonly: true, style: timestampStyle, headerStyle: fitModeHeaderStyle3 }, ], undefined, crossViewOptions ); crossView.fetch(true).then(function () { crossSheet.setDataView(crossView); // 販売店名と販売日をピン留め crossSheet.togglePinnedColumns([3, 7]); // 売上金額がトップ3のデータをソートして行ピン留めを行う const crossTableSheet = spread.getActiveSheetTab().getSheet(); crossTableSheet.rowFilter().sortColumn(8, false); crossSheet.togglePinnedRows([0, 1, 2]); crossTableSheet.rowFilter().sortColumn(2, true); }).then(() => { // ピボットテーブルを作成する var pivotSheet = spread.getSheet(0); pivotSheet.zoom(0.95); pivotSheet.options.gridline = { showVerticalGridline: false, showHorizontalGridline: false }; pivotSheet.frozenRowCount(8); pivotSheet.setColumnWidth(0, 20); // セルを結合してラベルを設定する。 pivotSheet.addSpan(1, 1, 2, 8); var titleStyle = new spreadNS.Style(); titleStyle.backColor = '#ffd900'; titleStyle.foreColor = 'black'; pivotSheet.setStyle(1, 1, titleStyle, spreadNS.SheetArea.viewport); pivotSheet.getCell(1, 1).text('販売店別売上分析').font('italic bold 25px/35px "Didot", serif'); pivotSheet.getCell(1, 1).vAlign(spreadNS.VerticalAlign.center).hAlign(spreadNS.HorizontalAlign.center); pivotSheet.name("売上ピボットレポート"); pivotSheet.setColumnWidth(1, 100); pivotSheet.setColumnWidth(2, 100); pivotSheet.setColumnWidth(3, 100); pivotSheet.setColumnWidth(4, 100); pivotSheet.setColumnWidth(5, 100); pivotSheet.setColumnWidth(6, 100); pivotSheet.setColumnWidth(7, 100); pivotSheet.setColumnWidth(8, 100); pivotSheet.setColumnWidth(9, 100); pivotSheet.setColumnWidth(10, 100); let option = { showRowHeader: true, showColumnHeader: true, bandRows: true, bandColumns: true, enableDataValueEditing: true }; var pivotTable = pivotSheet.pivotTables.add("PivotTable", "売上クロステーブル", 8, 1, spreadPT.PivotTableLayoutType.outline, spreadPT.PivotTableThemes.medium8, option); pivotTable.suspendLayout(); pivotTable.add("商品分類", "商品別", spreadPT.PivotTableFieldType.columnField); // ピボットグループ追加 let groupInfo = { originFieldName: "販売日", dateGroups: [ { by: GC.Pivot.DateGroupType.years }, { by: GC.Pivot.DateGroupType.quarters }, { by: GC.Pivot.DateGroupType.months }, { by: GC.Pivot.DateGroupType.days } ] }; pivotTable.group(groupInfo); pivotTable.add("年 (販売日)", "年", spreadPT.PivotTableFieldType.rowField); pivotTable.add("四半期 (販売日)", "四半期", spreadPT.PivotTableFieldType.rowField); pivotTable.add("月 (販売日)", "月", spreadPT.PivotTableFieldType.rowField); pivotTable.add("売上金額", "売上金額", spreadPT.PivotTableFieldType.valueField, GC.Pivot.SubtotalType.sum); pivotTable.subtotalPosition("四半期", spreadPT.SubtotalsPosition.top); let style = new spreadNS.Style(); style.formatter = "#,##0"; style.foreColor = "#17184b"; pivotTable.setStyle({ dataOnly: true }, style); pivotTable.theme(spreadPT.PivotTableThemes.light12); initSlicer(pivotSheet, pivotTable); pivotTable.resumeLayout(); }); // スタイルルールを設定する var hoverStyle = new spreadNS.Style(); hoverStyle.backColor = '#fff462'; hoverStyle.foreColor = '#4B0082'; crossView.addStyleRule("hover-row", hoverStyle, { state: GC.Data.RowColumnStates.hover, direction: GC.Data.StateRuleDirection.row }); crossView.addStyleRule("hover-column", hoverStyle, { state: GC.Data.RowColumnStates.hover, direction: GC.Data.StateRuleDirection.column }); var pinStyle = new spreadNS.Style(); pinStyle.foreColor = 'yellow'; crossView.addStyleRule("pin-row", pinStyle, { state: GC.Data.RowColumnStates.pin, direction: GC.Data.StateRuleDirection.row, area: GC.Data.ViewArea.viewport }); // 行アクションを追加する var rowActions = spreadNS.TableSheet.BuiltInRowActions; let options = crossSheet.rowActionOptions(); options.push( rowActions.saveRow, { name: 'attention', icons: ["data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAACMklEQVR4nO3XP2wScRTA8bdoQicdLlzCCSgeLeghhYCiCJZCPSgiFJpGUnUz0Vnn/ll11llnnXVxsVoXdTAFy5+WcgK1FIScxYrLM+hW82M0z+Q+yTdveMvvNz4AjUaj0VCxP595vX89g8zm0ytAWe9a8uf3bApZDfZA2d5cors3dxXZJTpAmZqern/LxJGVmo7XgDI1JRfUVBSHtA6Uda9MfegmLiO7qfdAWScWXulMh5FZLPwKKGvJoRdtOYSsWvLEc6BsNxJ81ooEkdVuJPAUKGuGLjxphvw4pMdA2U7A92gneB5ZfQn4HgJl237vg23/WRzSfaCs7vMsNnweZDXYA2U1r+te3etCVjWv6y5Qpricdz67zyCrqttxGyirOqWbilNCVlWn4wZQtiXZM1uSHZk5TqWBsorNGq3Yx5CdVQbKNkUxsDEqIjNRvAiUlS0Wd/nkCWRVslhcQNkns3m0eNyMrAZ7oKxoMAgF4zFkJggGoOyj0Xh03WBAVhWT6QhQtma3H87zPLJ6B3AIqMtx3Mscx+HB1jiO9jWmoQJvxUd62eRyL5sq97LJ/p+ZWsLZWR1QV4/HR9SZ2Ft1JoZ/F10l/4m2HFr+Gp1EVu3oJO2DpnnJX25O+HFIJaCs4fP0h52UjXOeH0CZ4pTKyriErKrjp4tA2YZNXNq0WZHZmHUBKFMEQVcwG1eLZhMerGA2vRnsgTpFEHQ5vX4xz/OlvF7f/z15fuG/eLxGo4F/7hctu5PvxZpySgAAAABJRU5ErkJggg=="], tooltip: "Show Attention", iconSelector: function (item) { return item.Revenue ? item.Revenue < 1000 : false; }, command: "ShowAttention" }); crossSheet.rowActionOptions(options); } // 行アクションのコマンドを追加 function registerCommands() { var Commands = spreadNS.Commands; Commands["ShowAttention"] = { canUndo: false, execute: function (context, options) { if (options.item.Revenue < 1000) { alert("目標未達成です。売上は " + options.item.Revenue + " です。"); } return true; } }; } // ピボットテーブルのスライサーを追加 function initSlicer(sheet, pivottable) { sheet.suspendPaint(); // 販売店名のスライサー let slicer_area = sheet.slicers.add("slicer_area", pivottable.name(), "販売地域", spreadNS.Slicers.SlicerStyles.light1(), spreadNS.Slicers.SlicerType.pivotTable); setSlicerProp(slicer_area, 20, 75, 300, 80, 1, true, true); slicer_area.columnCount(2); let slicer_storeName = sheet.slicers.add("slicer_storeName", pivottable.name(), "販売店名", spreadNS.Slicers.SlicerStyles.light2(), spreadNS.Slicers.SlicerType.pivotTable); setSlicerProp(slicer_storeName, 320, 75, 500, 80, 1, true, true); slicer_storeName.columnCount(5); // タイムラインスライサーを追加 let timelineslicer_year = sheet.slicers.add("timelineslicer_year", pivottable.name(), "販売日", spreadNS.Slicers.TimelineStyles.dark3(), spreadNS.Slicers.SlicerType.pivotTimeline); timelineslicer_year.position(new spreadNS.Point(830, 200)); timelineslicer_year.level(spreadNS.Slicers.TimelineLevel.years); timelineslicer_year.showSelectionLabel(false); timelineslicer_year.showTimeLevel(false); timelineslicer_year.showHorizontalScrollbar(false); timelineslicer_year.height(100); timelineslicer_year.captionName("年"); let timelineslicer_quarter = sheet.slicers.add("timelineslicer_quarter", pivottable.name(), "販売日", spreadNS.Slicers.TimelineStyles.light6(), spreadNS.Slicers.SlicerType.pivotTimeline); timelineslicer_quarter.position(new spreadNS.Point(830, 310)); timelineslicer_quarter.level(spreadNS.Slicers.TimelineLevel.quarters); timelineslicer_quarter.captionName("四半期"); timelineslicer_quarter.showSelectionLabel(false); let timelineslicer_month = sheet.slicers.add("timelineslicer_month", pivottable.name(), "販売日", spreadNS.Slicers.TimelineStyles.light5(), spreadNS.Slicers.SlicerType.pivotTimeline); timelineslicer_month.position(new spreadNS.Point(830, 460)); timelineslicer_quarter.level(spreadNS.Slicers.TimelineLevel.mouth); timelineslicer_month.captionName("月"); sheet.resumePaint(); } // スライサー設定 function setSlicerProp(slicer, x, y, width, height, columnCount, showHeader, showNoDataItemsInLast) { slicer.position({ x, y }); slicer.width(width); slicer.height(height); if (columnCount) { slicer.columnCount(columnCount); } slicer.showHeader(!!showHeader); slicer.showNoDataItemsInLast(!!showNoDataItemsInLast); slicer.allowMove(false); slicer.allowResize(false); }
<!DOCTYPE html> <html style="height: 100%; font-size: 14px"> <head> <meta name="spreadjs culture" content="ja-jp" /> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <link rel="stylesheet" type="text/css" href="style.css" /> <link rel="stylesheet" type="text/css" href="$DEMOROOT$/ja/purejs/node_modules/@mescius/spread-sheets/styles/gc.spread.sheets.excel2013white.css"> <script src="$DEMOROOT$/ja/purejs/node_modules/@mescius/spread-sheets/dist/gc.spread.sheets.all.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/ja/purejs/node_modules/@mescius/spread-sheets-shapes/dist/gc.spread.sheets.shapes.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/ja/purejs/node_modules/@mescius/spread-sheets-slicers/dist/gc.spread.sheets.slicers.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/ja/purejs/node_modules/@mescius/spread-sheets-pivot-addon/dist/gc.spread.pivot.pivottables.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/ja/purejs/node_modules/@mescius/spread-sheets-tablesheet/dist/gc.spread.sheets.tablesheet.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/ja/purejs/node_modules/@mescius/spread-sheets-resources-ja/dist/gc.spread.sheets.resources.ja.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/spread/source/js/license.js" type="text/javascript"></script> <script src="data.js" type="text/javascript"></script> <script src="app.js" type="text/javascript"></script> </head> <body> <div class="sample-tutorial"> <div id="ss" style="width:100%;height:100%"></div> </div> </body> </html>
const productData = [ { "ProductID": 101, "ProductName": "りんご", "Category": "果物" }, { "ProductID": 102, "ProductName": "バナナ", "Category": "果物" }, { "ProductID": 103, "ProductName": "オレンジ", "Category": "果物" }, { "ProductID": 104, "ProductName": "にんじん", "Category": "野菜" }, { "ProductID": 105, "ProductName": "きゅうり", "Category": "野菜" }, { "ProductID": 106, "ProductName": "トマト", "Category": "野菜" }, { "ProductID": 107, "ProductName": "ドーナツ", "Category": "ベーカリー" }, { "ProductID": 108, "ProductName": "パン", "Category": "ベーカリー" }, { "ProductID": 109, "ProductName": "牛乳", "Category": "飲料" }, { "ProductID": 110, "ProductName": "ヨーグルト", "Category": "飲料" } ]; const storeData = [ { "StoreID": 201, "Location": "東京", "Area": "東日本", "StoreName": "東京本店", "Address": "東京都千代田区1-1-1", "PhoneNumber": "03-1234-5678" }, { "StoreID": 202, "Location": "大阪", "Area": "西日本", "StoreName": "大阪支店", "Address": "大阪府大阪市北区2-2-2", "PhoneNumber": "06-1234-5678" }, { "StoreID": 203, "Location": "名古屋", "Area": "西日本", "StoreName": "名古屋支店", "Address": "愛知県名古屋市中区3-3-3", "PhoneNumber": "052-1234-5678" }, { "StoreID": 204, "Location": "福岡", "Area": "西日本", "StoreName": "福岡支店", "Address": "福岡県福岡市博多区4-4-4", "PhoneNumber": "092-1234-5678" }, { "StoreID": 205, "Location": "仙台", "Area": "東日本", "StoreName": "仙台支店", "Address": "宮城県仙台市青葉区6-6-6", "PhoneNumber": "022-1234-5678" } ]; const salesData = [ { "SaleID": 1, "SalesDate": "2023/10/05", "StoreID": 204, "ProductID": 108, "UnitsSold": 1, "Revenue": 622, "CreatedDateTime": "2023/10/05" }, { "SaleID": 2, "SalesDate": "2023/12/17", "StoreID": 201, "ProductID": 107, "UnitsSold": 4, "Revenue": 4844, "CreatedDateTime": "2023/12/17" }, { "SaleID": 3, "SalesDate": "2023/02/02", "StoreID": 203, "ProductID": 105, "UnitsSold": 2, "Revenue": 9630, "CreatedDateTime": "2023/02/02" }, { "SaleID": 4, "SalesDate": "2023/10/17", "StoreID": 204, "ProductID": 101, "UnitsSold": 1, "Revenue": 0, "CreatedDateTime": "2023/10/17" }, { "SaleID": 5, "SalesDate": "2023/11/10", "StoreID": 204, "ProductID": 104, "UnitsSold": 5, "Revenue": 5053, "CreatedDateTime": "2023/11/10" }, { "SaleID": 6, "SalesDate": "2023/10/16", "StoreID": 204, "ProductID": 110, "UnitsSold": 1, "Revenue": 1680, "CreatedDateTime": "2023/10/16" }, { "SaleID": 7, "SalesDate": "2023/09/20", "StoreID": 203, "ProductID": 106, "UnitsSold": 5, "Revenue": 8373, "CreatedDateTime": "2023/09/20" }, { "SaleID": 8, "SalesDate": "2023/01/21", "StoreID": 201, "ProductID": 105, "UnitsSold": 6, "Revenue": 953, "CreatedDateTime": "2023/01/21" }, { "SaleID": 9, "SalesDate": "2023/09/08", "StoreID": 204, "ProductID": 102, "UnitsSold": 6, "Revenue": 8172, "CreatedDateTime": "2023/09/08" }, { "SaleID": 10, "SalesDate": "2023/01/28", "StoreID": 201, "ProductID": 108, "UnitsSold": 6, "Revenue": 3510, "CreatedDateTime": "2023/01/28" }, { "SaleID": 11, "SalesDate": "2023/01/08", "StoreID": 201, "ProductID": 106, "UnitsSold": 8, "Revenue": 8809, "CreatedDateTime": "2023/01/08" }, { "SaleID": 12, "SalesDate": "2023/03/26", "StoreID": 204, "ProductID": 109, "UnitsSold": 3, "Revenue": 1570, "CreatedDateTime": "2023/03/26" }, { "SaleID": 13, "SalesDate": "2023/09/22", "StoreID": 203, "ProductID": 109, "UnitsSold": 10, "Revenue": 5996, "CreatedDateTime": "2023/09/22" }, { "SaleID": 14, "SalesDate": "2023/11/16", "StoreID": 203, "ProductID": 105, "UnitsSold": 10, "Revenue": 1295, "CreatedDateTime": "2023/11/16" }, { "SaleID": 15, "SalesDate": "2023/03/04", "StoreID": 202, "ProductID": 103, "UnitsSold": 10, "Revenue": 8871, "CreatedDateTime": "2023/03/04" }, { "SaleID": 16, "SalesDate": "2023/10/06", "StoreID": 201, "ProductID": 106, "UnitsSold": 5, "Revenue": 7923, "CreatedDateTime": "2023/10/06" }, { "SaleID": 17, "SalesDate": "2023/02/27", "StoreID": 201, "ProductID": 107, "UnitsSold": 4, "Revenue": 8346, "CreatedDateTime": "2023/02/27" }, { "SaleID": 18, "SalesDate": "2023/09/28", "StoreID": 205, "ProductID": 107, "UnitsSold": 5, "Revenue": 3642, "CreatedDateTime": "2023/09/28" }, { "SaleID": 19, "SalesDate": "2023/01/23", "StoreID": 204, "ProductID": 104, "UnitsSold": 8, "Revenue": 3135, "CreatedDateTime": "2023/01/23" }, { "SaleID": 20, "SalesDate": "2023/12/21", "StoreID": 202, "ProductID": 107, "UnitsSold": 1, "Revenue": 9299, "CreatedDateTime": "2023/12/21" }, { "SaleID": 21, "SalesDate": "2023/03/15", "StoreID": 202, "ProductID": 105, "UnitsSold": 5, "Revenue": 7518, "CreatedDateTime": "2023/03/15" }, { "SaleID": 22, "SalesDate": "2023/11/30", "StoreID": 202, "ProductID": 102, "UnitsSold": 7, "Revenue": 5119, "CreatedDateTime": "2023/11/30" }, { "SaleID": 23, "SalesDate": "2023/02/07", "StoreID": 201, "ProductID": 104, "UnitsSold": 10, "Revenue": 4241, "CreatedDateTime": "2023/02/07" }, { "SaleID": 24, "SalesDate": "2023/12/08", "StoreID": 205, "ProductID": 104, "UnitsSold": 4, "Revenue": 5253, "CreatedDateTime": "2023/12/08" }, { "SaleID": 25, "SalesDate": "2023/01/14", "StoreID": 205, "ProductID": 101, "UnitsSold": 3, "Revenue": 5281, "CreatedDateTime": "2023/01/14" }, { "SaleID": 26, "SalesDate": "2023/02/28", "StoreID": 201, "ProductID": 110, "UnitsSold": 2, "Revenue": 4530, "CreatedDateTime": "2023/02/28" }, { "SaleID": 27, "SalesDate": "2023/02/02", "StoreID": 204, "ProductID": 102, "UnitsSold": 6, "Revenue": 9432, "CreatedDateTime": "2023/02/02" }, { "SaleID": 28, "SalesDate": "2023/03/02", "StoreID": 202, "ProductID": 101, "UnitsSold": 2, "Revenue": 860, "CreatedDateTime": "2023/03/02" }, { "SaleID": 29, "SalesDate": "2023/11/18", "StoreID": 202, "ProductID": 102, "UnitsSold": 7, "Revenue": 6418, "CreatedDateTime": "2023/11/18" }, { "SaleID": 30, "SalesDate": "2023/11/06", "StoreID": 204, "ProductID": 103, "UnitsSold": 5, "Revenue": 2727, "CreatedDateTime": "2023/11/06" }, { "SaleID": 31, "SalesDate": "2023/02/08", "StoreID": 201, "ProductID": 106, "UnitsSold": 3, "Revenue": 5087, "CreatedDateTime": "2023/02/08" }, { "SaleID": 32, "SalesDate": "2023/05/18", "StoreID": 204, "ProductID": 110, "UnitsSold": 7, "Revenue": 3944, "CreatedDateTime": "2023/05/18" }, { "SaleID": 33, "SalesDate": "2023/09/20", "StoreID": 201, "ProductID": 107, "UnitsSold": 1, "Revenue": 4770, "CreatedDateTime": "2023/09/20" }, { "SaleID": 34, "SalesDate": "2023/09/24", "StoreID": 202, "ProductID": 101, "UnitsSold": 10, "Revenue": 3557, "CreatedDateTime": "2023/09/24" }, { "SaleID": 35, "SalesDate": "2023/12/12", "StoreID": 201, "ProductID": 102, "UnitsSold": 3, "Revenue": 5287, "CreatedDateTime": "2023/12/12" }, { "SaleID": 36, "SalesDate": "2023/08/17", "StoreID": 204, "ProductID": 107, "UnitsSold": 10, "Revenue": 1551, "CreatedDateTime": "2023/08/17" }, { "SaleID": 37, "SalesDate": "2023/03/16", "StoreID": 202, "ProductID": 109, "UnitsSold": 3, "Revenue": 5480, "CreatedDateTime": "2023/03/16" }, { "SaleID": 38, "SalesDate": "2023/07/22", "StoreID": 204, "ProductID": 105, "UnitsSold": 10, "Revenue": 9633, "CreatedDateTime": "2023/07/22" }, { "SaleID": 39, "SalesDate": "2023/01/27", "StoreID": 201, "ProductID": 107, "UnitsSold": 6, "Revenue": 2414, "CreatedDateTime": "2023/01/27" }, { "SaleID": 40, "SalesDate": "2023/08/26", "StoreID": 202, "ProductID": 101, "UnitsSold": 10, "Revenue": 1195, "CreatedDateTime": "2023/08/26" }, { "SaleID": 41, "SalesDate": "2023/02/02", "StoreID": 201, "ProductID": 101, "UnitsSold": 4, "Revenue": 7095, "CreatedDateTime": "2023/02/02" }, { "SaleID": 42, "SalesDate": "2023/09/22", "StoreID": 205, "ProductID": 105, "UnitsSold": 3, "Revenue": 1794, "CreatedDateTime": "2023/09/22" }, { "SaleID": 43, "SalesDate": "2023/03/10", "StoreID": 202, "ProductID": 103, "UnitsSold": 8, "Revenue": 7248, "CreatedDateTime": "2023/03/10" }, { "SaleID": 44, "SalesDate": "2023/10/13", "StoreID": 205, "ProductID": 102, "UnitsSold": 8, "Revenue": 5839, "CreatedDateTime": "2023/10/13" }, { "SaleID": 45, "SalesDate": "2023/10/08", "StoreID": 201, "ProductID": 106, "UnitsSold": 4, "Revenue": 3254, "CreatedDateTime": "2023/10/08" }, { "SaleID": 46, "SalesDate": "2023/09/26", "StoreID": 205, "ProductID": 107, "UnitsSold": 9, "Revenue": 6598, "CreatedDateTime": "2023/09/26" }, { "SaleID": 47, "SalesDate": "2023/12/29", "StoreID": 202, "ProductID": 106, "UnitsSold": 2, "Revenue": 1562, "CreatedDateTime": "2023/12/29" }, { "SaleID": 48, "SalesDate": "2023/02/21", "StoreID": 201, "ProductID": 106, "UnitsSold": 3, "Revenue": 762, "CreatedDateTime": "2023/02/21" }, { "SaleID": 49, "SalesDate": "2023/01/07", "StoreID": 204, "ProductID": 106, "UnitsSold": 10, "Revenue": 2350, "CreatedDateTime": "2023/01/07" }, { "SaleID": 50, "SalesDate": "2023/05/06", "StoreID": 204, "ProductID": 105, "UnitsSold": 4, "Revenue": 4428, "CreatedDateTime": "2023/05/06" }, { "SaleID": 51, "SalesDate": "2023/08/09", "StoreID": 202, "ProductID": 110, "UnitsSold": 9, "Revenue": 3576, "CreatedDateTime": "2023/08/09" }, { "SaleID": 52, "SalesDate": "2023/09/14", "StoreID": 204, "ProductID": 102, "UnitsSold": 1, "Revenue": 8357, "CreatedDateTime": "2023/09/14" }, { "SaleID": 53, "SalesDate": "2023/01/21", "StoreID": 201, "ProductID": 110, "UnitsSold": 3, "Revenue": 6168, "CreatedDateTime": "2023/01/21" }, { "SaleID": 54, "SalesDate": "2023/12/18", "StoreID": 203, "ProductID": 109, "UnitsSold": 8, "Revenue": 8838, "CreatedDateTime": "2023/12/18" }, { "SaleID": 55, "SalesDate": "2023/05/15", "StoreID": 203, "ProductID": 110, "UnitsSold": 10, "Revenue": 4249, "CreatedDateTime": "2023/05/15" }, { "SaleID": 56, "SalesDate": "2023/06/27", "StoreID": 201, "ProductID": 105, "UnitsSold": 6, "Revenue": 710, "CreatedDateTime": "2023/06/27" }, { "SaleID": 57, "SalesDate": "2023/07/11", "StoreID": 202, "ProductID": 101, "UnitsSold": 9, "Revenue": 7624, "CreatedDateTime": "2023/07/11" }, { "SaleID": 58, "SalesDate": "2023/02/28", "StoreID": 204, "ProductID": 105, "UnitsSold": 4, "Revenue": 8861, "CreatedDateTime": "2023/02/28" }, { "SaleID": 59, "SalesDate": "2023/10/14", "StoreID": 204, "ProductID": 101, "UnitsSold": 6, "Revenue": 5790, "CreatedDateTime": "2023/10/14" }, { "SaleID": 60, "SalesDate": "2023/10/14", "StoreID": 201, "ProductID": 109, "UnitsSold": 9, "Revenue": 9421, "CreatedDateTime": "2023/10/14" }, { "SaleID": 61, "SalesDate": "2023/03/22", "StoreID": 201, "ProductID": 107, "UnitsSold": 4, "Revenue": 1594, "CreatedDateTime": "2023/03/22" }, { "SaleID": 62, "SalesDate": "2023/09/21", "StoreID": 203, "ProductID": 107, "UnitsSold": 4, "Revenue": 1134, "CreatedDateTime": "2023/09/21" }, { "SaleID": 63, "SalesDate": "2023/01/02", "StoreID": 204, "ProductID": 109, "UnitsSold": 2, "Revenue": 7608, "CreatedDateTime": "2023/01/02" }, { "SaleID": 64, "SalesDate": "2023/11/03", "StoreID": 201, "ProductID": 105, "UnitsSold": 1, "Revenue": 8494, "CreatedDateTime": "2023/11/03" }, { "SaleID": 65, "SalesDate": "2023/04/17", "StoreID": 204, "ProductID": 106, "UnitsSold": 6, "Revenue": 1800, "CreatedDateTime": "2023/04/17" }, { "SaleID": 66, "SalesDate": "2023/04/15", "StoreID": 204, "ProductID": 107, "UnitsSold": 9, "Revenue": 9849, "CreatedDateTime": "2023/04/15" }, { "SaleID": 67, "SalesDate": "2023/06/28", "StoreID": 201, "ProductID": 101, "UnitsSold": 4, "Revenue": 3623, "CreatedDateTime": "2023/06/28" }, { "SaleID": 68, "SalesDate": "2023/01/05", "StoreID": 205, "ProductID": 103, "UnitsSold": 9, "Revenue": 8735, "CreatedDateTime": "2023/01/05" }, { "SaleID": 69, "SalesDate": "2023/10/20", "StoreID": 205, "ProductID": 110, "UnitsSold": 1, "Revenue": 4904, "CreatedDateTime": "2023/10/20" }, { "SaleID": 70, "SalesDate": "2023/07/27", "StoreID": 204, "ProductID": 107, "UnitsSold": 1, "Revenue": 8849, "CreatedDateTime": "2023/07/27" }, { "SaleID": 71, "SalesDate": "2023/11/11", "StoreID": 203, "ProductID": 105, "UnitsSold": 2, "Revenue": 5361, "CreatedDateTime": "2023/11/11" }, { "SaleID": 72, "SalesDate": "2023/01/11", "StoreID": 205, "ProductID": 105, "UnitsSold": 8, "Revenue": 4880, "CreatedDateTime": "2023/01/11" }, { "SaleID": 73, "SalesDate": "2023/12/14", "StoreID": 205, "ProductID": 105, "UnitsSold": 5, "Revenue": 1215, "CreatedDateTime": "2023/12/14" }, { "SaleID": 74, "SalesDate": "2023/08/02", "StoreID": 202, "ProductID": 104, "UnitsSold": 5, "Revenue": 9029, "CreatedDateTime": "2023/08/02" }, { "SaleID": 75, "SalesDate": "2023/11/05", "StoreID": 202, "ProductID": 102, "UnitsSold": 1, "Revenue": 9018, "CreatedDateTime": "2023/11/05" }, { "SaleID": 76, "SalesDate": "2023/08/24", "StoreID": 203, "ProductID": 104, "UnitsSold": 2, "Revenue": 6692, "CreatedDateTime": "2023/08/24" }, { "SaleID": 77, "SalesDate": "2023/02/08", "StoreID": 203, "ProductID": 110, "UnitsSold": 6, "Revenue": 7908, "CreatedDateTime": "2023/02/08" }, { "SaleID": 78, "SalesDate": "2023/03/26", "StoreID": 201, "ProductID": 101, "UnitsSold": 4, "Revenue": 2467, "CreatedDateTime": "2023/03/26" }, { "SaleID": 79, "SalesDate": "2023/07/10", "StoreID": 201, "ProductID": 110, "UnitsSold": 7, "Revenue": 3093, "CreatedDateTime": "2023/07/10" }, { "SaleID": 80, "SalesDate": "2023/07/10", "StoreID": 203, "ProductID": 105, "UnitsSold": 5, "Revenue": 9002, "CreatedDateTime": "2023/07/10" }, { "SaleID": 81, "SalesDate": "2023/10/08", "StoreID": 204, "ProductID": 108, "UnitsSold": 8, "Revenue": 1564, "CreatedDateTime": "2023/10/08" }, { "SaleID": 82, "SalesDate": "2023/11/12", "StoreID": 203, "ProductID": 106, "UnitsSold": 9, "Revenue": 4494, "CreatedDateTime": "2023/11/12" }, { "SaleID": 83, "SalesDate": "2023/08/31", "StoreID": 202, "ProductID": 102, "UnitsSold": 6, "Revenue": 8072, "CreatedDateTime": "2023/08/31" }, { "SaleID": 84, "SalesDate": "2023/03/11", "StoreID": 205, "ProductID": 102, "UnitsSold": 10, "Revenue": 5139, "CreatedDateTime": "2023/03/11" }, { "SaleID": 85, "SalesDate": "2023/09/09", "StoreID": 202, "ProductID": 101, "UnitsSold": 1, "Revenue": 7081, "CreatedDateTime": "2023/09/09" }, { "SaleID": 86, "SalesDate": "2023/11/03", "StoreID": 202, "ProductID": 108, "UnitsSold": 6, "Revenue": 3918, "CreatedDateTime": "2023/11/03" }, { "SaleID": 87, "SalesDate": "2023/12/28", "StoreID": 202, "ProductID": 108, "UnitsSold": 10, "Revenue": 588, "CreatedDateTime": "2023/12/28" }, { "SaleID": 88, "SalesDate": "2023/09/14", "StoreID": 201, "ProductID": 107, "UnitsSold": 4, "Revenue": 2508, "CreatedDateTime": "2023/09/14" }, { "SaleID": 89, "SalesDate": "2023/05/27", "StoreID": 205, "ProductID": 103, "UnitsSold": 4, "Revenue": 4015, "CreatedDateTime": "2023/05/27" }, { "SaleID": 90, "SalesDate": "2023/10/30", "StoreID": 204, "ProductID": 110, "UnitsSold": 8, "Revenue": 4573, "CreatedDateTime": "2023/10/30" }, { "SaleID": 91, "SalesDate": "2023/06/21", "StoreID": 201, "ProductID": 105, "UnitsSold": 3, "Revenue": 8960, "CreatedDateTime": "2023/06/21" }, { "SaleID": 92, "SalesDate": "2023/03/01", "StoreID": 203, "ProductID": 108, "UnitsSold": 5, "Revenue": 7227, "CreatedDateTime": "2023/03/01" }, { "SaleID": 93, "SalesDate": "2023/12/28", "StoreID": 201, "ProductID": 103, "UnitsSold": 4, "Revenue": 1677, "CreatedDateTime": "2023/12/28" }, { "SaleID": 94, "SalesDate": "2023/01/23", "StoreID": 204, "ProductID": 109, "UnitsSold": 1, "Revenue": 8028, "CreatedDateTime": "2023/01/23" }, { "SaleID": 95, "SalesDate": "2023/01/21", "StoreID": 204, "ProductID": 106, "UnitsSold": 5, "Revenue": 1254, "CreatedDateTime": "2023/01/21" }, { "SaleID": 96, "SalesDate": "2023/03/09", "StoreID": 202, "ProductID": 101, "UnitsSold": 9, "Revenue": 6148, "CreatedDateTime": "2023/03/09" }, { "SaleID": 97, "SalesDate": "2023/03/03", "StoreID": 204, "ProductID": 102, "UnitsSold": 8, "Revenue": 6644, "CreatedDateTime": "2023/03/03" }, { "SaleID": 98, "SalesDate": "2023/09/18", "StoreID": 201, "ProductID": 102, "UnitsSold": 9, "Revenue": 1356, "CreatedDateTime": "2023/09/18" }, { "SaleID": 99, "SalesDate": "2023/04/02", "StoreID": 205, "ProductID": 110, "UnitsSold": 9, "Revenue": 2568, "CreatedDateTime": "2023/04/02" }, { "SaleID": 100, "SalesDate": "2023/12/06", "StoreID": 202, "ProductID": 101, "UnitsSold": 5, "Revenue": 9676, "CreatedDateTime": "2023/12/06" }, { "SaleID": 101, "SalesDate": "2024/01/22", "StoreID": 202, "ProductID": 105, "UnitsSold": 7, "Revenue": 2617, "CreatedDateTime": "2024/01/22" }, { "SaleID": 102, "SalesDate": "2023/06/06", "StoreID": 201, "ProductID": 105, "UnitsSold": 1, "Revenue": 9553, "CreatedDateTime": "2023/06/06" }, { "SaleID": 103, "SalesDate": "2023/06/21", "StoreID": 204, "ProductID": 109, "UnitsSold": 2, "Revenue": 3528, "CreatedDateTime": "2023/06/21" }, { "SaleID": 104, "SalesDate": "2023/09/18", "StoreID": 203, "ProductID": 103, "UnitsSold": 4, "Revenue": 2725, "CreatedDateTime": "2023/09/18" }, { "SaleID": 105, "SalesDate": "2023/09/01", "StoreID": 202, "ProductID": 107, "UnitsSold": 4, "Revenue": 3437, "CreatedDateTime": "2023/09/01" }, { "SaleID": 106, "SalesDate": "2024/01/15", "StoreID": 205, "ProductID": 110, "UnitsSold": 10, "Revenue": 1833, "CreatedDateTime": "2024/01/15" }, { "SaleID": 107, "SalesDate": "2024/03/23", "StoreID": 203, "ProductID": 110, "UnitsSold": 2, "Revenue": 4900, "CreatedDateTime": "2024/03/23" }, { "SaleID": 108, "SalesDate": "2024/03/26", "StoreID": 204, "ProductID": 107, "UnitsSold": 9, "Revenue": 6270, "CreatedDateTime": "2024/03/26" }, { "SaleID": 109, "SalesDate": "2023/07/13", "StoreID": 203, "ProductID": 104, "UnitsSold": 3, "Revenue": 3016, "CreatedDateTime": "2023/07/13" }, { "SaleID": 110, "SalesDate": "2023/09/26", "StoreID": 201, "ProductID": 110, "UnitsSold": 4, "Revenue": 8589, "CreatedDateTime": "2023/09/26" }, { "SaleID": 111, "SalesDate": "2024/05/10", "StoreID": 201, "ProductID": 103, "UnitsSold": 1, "Revenue": 6214, "CreatedDateTime": "2024/05/10" }, { "SaleID": 112, "SalesDate": "2023/08/08", "StoreID": 205, "ProductID": 102, "UnitsSold": 10, "Revenue": 8875, "CreatedDateTime": "2023/08/08" }, { "SaleID": 113, "SalesDate": "2023/08/09", "StoreID": 201, "ProductID": 106, "UnitsSold": 2, "Revenue": 6663, "CreatedDateTime": "2023/08/09" }, { "SaleID": 114, "SalesDate": "2023/09/03", "StoreID": 203, "ProductID": 102, "UnitsSold": 7, "Revenue": 8588, "CreatedDateTime": "2023/09/03" }, { "SaleID": 115, "SalesDate": "2023/09/21", "StoreID": 201, "ProductID": 107, "UnitsSold": 4, "Revenue": 9734, "CreatedDateTime": "2023/09/21" }, { "SaleID": 116, "SalesDate": "2024/04/25", "StoreID": 201, "ProductID": 109, "UnitsSold": 6, "Revenue": 4423, "CreatedDateTime": "2024/04/25" }, { "SaleID": 117, "SalesDate": "2024/04/02", "StoreID": 201, "ProductID": 103, "UnitsSold": 2, "Revenue": 693, "CreatedDateTime": "2024/04/02" }, { "SaleID": 118, "SalesDate": "2023/06/21", "StoreID": 203, "ProductID": 106, "UnitsSold": 5, "Revenue": 2152, "CreatedDateTime": "2023/06/21" }, { "SaleID": 119, "SalesDate": "2024/04/08", "StoreID": 204, "ProductID": 106, "UnitsSold": 9, "Revenue": 2461, "CreatedDateTime": "2024/04/08" }, { "SaleID": 120, "SalesDate": "2024/02/16", "StoreID": 205, "ProductID": 101, "UnitsSold": 6, "Revenue": 2169, "CreatedDateTime": "2024/02/16" }, { "SaleID": 121, "SalesDate": "2023/09/26", "StoreID": 202, "ProductID": 105, "UnitsSold": 10, "Revenue": 9611, "CreatedDateTime": "2023/09/26" }, { "SaleID": 122, "SalesDate": "2023/10/10", "StoreID": 205, "ProductID": 104, "UnitsSold": 4, "Revenue": 1387, "CreatedDateTime": "2023/10/10" }, { "SaleID": 123, "SalesDate": "2024/05/17", "StoreID": 205, "ProductID": 110, "UnitsSold": 3, "Revenue": 4108, "CreatedDateTime": "2024/05/17" }, { "SaleID": 124, "SalesDate": "2023/12/02", "StoreID": 204, "ProductID": 103, "UnitsSold": 8, "Revenue": 2998, "CreatedDateTime": "2023/12/02" }, { "SaleID": 125, "SalesDate": "2024/01/20", "StoreID": 204, "ProductID": 103, "UnitsSold": 5, "Revenue": 4040, "CreatedDateTime": "2024/01/20" }, { "SaleID": 126, "SalesDate": "2024/05/22", "StoreID": 205, "ProductID": 103, "UnitsSold": 9, "Revenue": 4325, "CreatedDateTime": "2024/05/22" }, { "SaleID": 127, "SalesDate": "2023/09/05", "StoreID": 201, "ProductID": 101, "UnitsSold": 10, "Revenue": 1039, "CreatedDateTime": "2023/09/05" }, { "SaleID": 128, "SalesDate": "2023/06/17", "StoreID": 203, "ProductID": 104, "UnitsSold": 8, "Revenue": 5649, "CreatedDateTime": "2023/06/17" }, { "SaleID": 129, "SalesDate": "2024/01/05", "StoreID": 202, "ProductID": 106, "UnitsSold": 1, "Revenue": 8093, "CreatedDateTime": "2024/01/05" }, { "SaleID": 130, "SalesDate": "2023/11/19", "StoreID": 202, "ProductID": 101, "UnitsSold": 7, "Revenue": 8335, "CreatedDateTime": "2023/11/19" }, { "SaleID": 131, "SalesDate": "2023/07/02", "StoreID": 201, "ProductID": 108, "UnitsSold": 10, "Revenue": 9005, "CreatedDateTime": "2023/07/02" }, { "SaleID": 132, "SalesDate": "2023/11/14", "StoreID": 201, "ProductID": 102, "UnitsSold": 6, "Revenue": 7822, "CreatedDateTime": "2023/11/14" }, { "SaleID": 133, "SalesDate": "2023/12/19", "StoreID": 204, "ProductID": 110, "UnitsSold": 9, "Revenue": 9917, "CreatedDateTime": "2023/12/19" }, { "SaleID": 134, "SalesDate": "2023/11/05", "StoreID": 203, "ProductID": 103, "UnitsSold": 3, "Revenue": 3662, "CreatedDateTime": "2023/11/05" }, { "SaleID": 135, "SalesDate": "2023/11/16", "StoreID": 204, "ProductID": 105, "UnitsSold": 8, "Revenue": 6029, "CreatedDateTime": "2023/11/16" }, { "SaleID": 136, "SalesDate": "2024/03/24", "StoreID": 201, "ProductID": 104, "UnitsSold": 10, "Revenue": 2112, "CreatedDateTime": "2024/03/24" }, { "SaleID": 137, "SalesDate": "2023/11/17", "StoreID": 203, "ProductID": 104, "UnitsSold": 1, "Revenue": 742, "CreatedDateTime": "2023/11/17" }, { "SaleID": 138, "SalesDate": "2023/11/20", "StoreID": 201, "ProductID": 108, "UnitsSold": 10, "Revenue": 2825, "CreatedDateTime": "2023/11/20" }, { "SaleID": 139, "SalesDate": "2023/10/13", "StoreID": 204, "ProductID": 107, "UnitsSold": 1, "Revenue": 8005, "CreatedDateTime": "2023/10/13" }, { "SaleID": 140, "SalesDate": "2024/05/17", "StoreID": 204, "ProductID": 101, "UnitsSold": 3, "Revenue": 8005, "CreatedDateTime": "2024/05/17" }, { "SaleID": 141, "SalesDate": "2023/06/17", "StoreID": 202, "ProductID": 103, "UnitsSold": 9, "Revenue": 8668, "CreatedDateTime": "2023/06/17" }, { "SaleID": 142, "SalesDate": "2023/10/04", "StoreID": 203, "ProductID": 102, "UnitsSold": 6, "Revenue": 10265, "CreatedDateTime": "2023/10/04" }, { "SaleID": 143, "SalesDate": "2024/01/27", "StoreID": 201, "ProductID": 101, "UnitsSold": 4, "Revenue": 9672, "CreatedDateTime": "2024/01/27" }, { "SaleID": 144, "SalesDate": "2024/01/09", "StoreID": 205, "ProductID": 102, "UnitsSold": 1, "Revenue": 7912, "CreatedDateTime": "2024/01/09" }, { "SaleID": 145, "SalesDate": "2023/07/18", "StoreID": 202, "ProductID": 105, "UnitsSold": 8, "Revenue": 1929, "CreatedDateTime": "2023/07/18" }, { "SaleID": 146, "SalesDate": "2023/07/01", "StoreID": 201, "ProductID": 107, "UnitsSold": 8, "Revenue": 696, "CreatedDateTime": "2023/07/01" }, { "SaleID": 147, "SalesDate": "2023/10/01", "StoreID": 203, "ProductID": 106, "UnitsSold": 7, "Revenue": 3142, "CreatedDateTime": "2023/10/01" }, { "SaleID": 148, "SalesDate": "2023/09/10", "StoreID": 204, "ProductID": 109, "UnitsSold": 10, "Revenue": 3056, "CreatedDateTime": "2023/09/10" }, { "SaleID": 149, "SalesDate": "2023/12/12", "StoreID": 201, "ProductID": 108, "UnitsSold": 8, "Revenue": 8066, "CreatedDateTime": "2023/12/12" }, { "SaleID": 150, "SalesDate": "2023/06/17", "StoreID": 201, "ProductID": 106, "UnitsSold": 6, "Revenue": 4467, "CreatedDateTime": "2023/06/17" }, { "SaleID": 151, "SalesDate": "2023/10/02", "StoreID": 203, "ProductID": 102, "UnitsSold": 1, "Revenue": 7352, "CreatedDateTime": "2023/10/02" }, { "SaleID": 152, "SalesDate": "2023/12/22", "StoreID": 204, "ProductID": 105, "UnitsSold": 7, "Revenue": 8102, "CreatedDateTime": "2023/12/22" }, { "SaleID": 153, "SalesDate": "2023/07/02", "StoreID": 203, "ProductID": 109, "UnitsSold": 7, "Revenue": 7227, "CreatedDateTime": "2023/07/02" }, { "SaleID": 154, "SalesDate": "2023/10/11", "StoreID": 201, "ProductID": 102, "UnitsSold": 7, "Revenue": 4016, "CreatedDateTime": "2023/10/11" }, { "SaleID": 155, "SalesDate": "2024/01/11", "StoreID": 201, "ProductID": 104, "UnitsSold": 6, "Revenue": 5379, "CreatedDateTime": "2024/01/11" }, { "SaleID": 156, "SalesDate": "2024/04/02", "StoreID": 204, "ProductID": 110, "UnitsSold": 7, "Revenue": 5543, "CreatedDateTime": "2024/04/02" }, { "SaleID": 157, "SalesDate": "2024/03/13", "StoreID": 205, "ProductID": 103, "UnitsSold": 7, "Revenue": 4274, "CreatedDateTime": "2024/03/13" }, { "SaleID": 158, "SalesDate": "2023/10/10", "StoreID": 205, "ProductID": 106, "UnitsSold": 2, "Revenue": 6665, "CreatedDateTime": "2023/10/10" }, { "SaleID": 159, "SalesDate": "2023/10/16", "StoreID": 201, "ProductID": 107, "UnitsSold": 8, "Revenue": 5880, "CreatedDateTime": "2023/10/16" }, { "SaleID": 160, "SalesDate": "2024/04/28", "StoreID": 205, "ProductID": 101, "UnitsSold": 7, "Revenue": 710, "CreatedDateTime": "2024/04/28" }, { "SaleID": 161, "SalesDate": "2024/03/20", "StoreID": 201, "ProductID": 108, "UnitsSold": 1, "Revenue": 4754, "CreatedDateTime": "2024/03/20" }, { "SaleID": 162, "SalesDate": "2023/07/16", "StoreID": 201, "ProductID": 106, "UnitsSold": 3, "Revenue": 632, "CreatedDateTime": "2023/07/16" }, { "SaleID": 163, "SalesDate": "2024/04/12", "StoreID": 204, "ProductID": 107, "UnitsSold": 5, "Revenue": 10193, "CreatedDateTime": "2024/04/12" }, { "SaleID": 164, "SalesDate": "2024/01/27", "StoreID": 202, "ProductID": 104, "UnitsSold": 1, "Revenue": 6607, "CreatedDateTime": "2024/01/27" }, { "SaleID": 165, "SalesDate": "2024/01/14", "StoreID": 203, "ProductID": 105, "UnitsSold": 2, "Revenue": 9167, "CreatedDateTime": "2024/01/14" }, { "SaleID": 166, "SalesDate": "2023/08/07", "StoreID": 201, "ProductID": 104, "UnitsSold": 4, "Revenue": 5588, "CreatedDateTime": "2023/08/07" }, { "SaleID": 167, "SalesDate": "2024/03/17", "StoreID": 202, "ProductID": 108, "UnitsSold": 9, "Revenue": 1396, "CreatedDateTime": "2024/03/17" }, { "SaleID": 168, "SalesDate": "2023/12/01", "StoreID": 202, "ProductID": 103, "UnitsSold": 3, "Revenue": 2693, "CreatedDateTime": "2023/12/01" }, { "SaleID": 169, "SalesDate": "2023/12/26", "StoreID": 201, "ProductID": 101, "UnitsSold": 6, "Revenue": 3960, "CreatedDateTime": "2023/12/26" }, { "SaleID": 170, "SalesDate": "2023/11/14", "StoreID": 204, "ProductID": 109, "UnitsSold": 4, "Revenue": 3926, "CreatedDateTime": "2023/11/14" }, { "SaleID": 171, "SalesDate": "2023/07/07", "StoreID": 201, "ProductID": 101, "UnitsSold": 9, "Revenue": 1274, "CreatedDateTime": "2023/07/07" }, { "SaleID": 172, "SalesDate": "2023/10/21", "StoreID": 202, "ProductID": 103, "UnitsSold": 8, "Revenue": 8422, "CreatedDateTime": "2023/10/21" }, { "SaleID": 173, "SalesDate": "2024/03/07", "StoreID": 204, "ProductID": 110, "UnitsSold": 1, "Revenue": 10061, "CreatedDateTime": "2024/03/07" }, { "SaleID": 174, "SalesDate": "2023/08/07", "StoreID": 204, "ProductID": 110, "UnitsSold": 6, "Revenue": 9018, "CreatedDateTime": "2023/08/07" }, { "SaleID": 175, "SalesDate": "2024/05/22", "StoreID": 204, "ProductID": 103, "UnitsSold": 6, "Revenue": 3823, "CreatedDateTime": "2024/05/22" }, { "SaleID": 176, "SalesDate": "2024/04/11", "StoreID": 203, "ProductID": 101, "UnitsSold": 7, "Revenue": 7550, "CreatedDateTime": "2024/04/11" }, { "SaleID": 177, "SalesDate": "2024/02/07", "StoreID": 203, "ProductID": 109, "UnitsSold": 5, "Revenue": 3831, "CreatedDateTime": "2024/02/07" }, { "SaleID": 178, "SalesDate": "2024/02/24", "StoreID": 201, "ProductID": 108, "UnitsSold": 10, "Revenue": 3909, "CreatedDateTime": "2024/02/24" }, { "SaleID": 179, "SalesDate": "2024/01/23", "StoreID": 201, "ProductID": 108, "UnitsSold": 3, "Revenue": 912, "CreatedDateTime": "2024/01/23" }, { "SaleID": 180, "SalesDate": "2023/10/10", "StoreID": 204, "ProductID": 107, "UnitsSold": 1, "Revenue": 3564, "CreatedDateTime": "2023/10/10" }, { "SaleID": 181, "SalesDate": "2024/03/04", "StoreID": 204, "ProductID": 109, "UnitsSold": 7, "Revenue": 10214, "CreatedDateTime": "2024/03/04" }, { "SaleID": 182, "SalesDate": "2023/11/10", "StoreID": 205, "ProductID": 110, "UnitsSold": 1, "Revenue": 3831, "CreatedDateTime": "2023/11/10" }, { "SaleID": 183, "SalesDate": "2023/09/14", "StoreID": 201, "ProductID": 110, "UnitsSold": 1, "Revenue": 9457, "CreatedDateTime": "2023/09/14" }, { "SaleID": 184, "SalesDate": "2023/09/05", "StoreID": 202, "ProductID": 109, "UnitsSold": 3, "Revenue": 2688, "CreatedDateTime": "2023/09/05" }, { "SaleID": 185, "SalesDate": "2024/05/16", "StoreID": 203, "ProductID": 101, "UnitsSold": 1, "Revenue": 6907, "CreatedDateTime": "2024/05/16" }, { "SaleID": 186, "SalesDate": "2024/05/24", "StoreID": 202, "ProductID": 106, "UnitsSold": 7, "Revenue": 8086, "CreatedDateTime": "2024/05/24" }, { "SaleID": 187, "SalesDate": "2023/12/10", "StoreID": 205, "ProductID": 108, "UnitsSold": 10, "Revenue": 10371, "CreatedDateTime": "2023/12/10" }, { "SaleID": 188, "SalesDate": "2023/09/04", "StoreID": 204, "ProductID": 101, "UnitsSold": 1, "Revenue": 7216, "CreatedDateTime": "2023/09/04" }, { "SaleID": 189, "SalesDate": "2023/07/27", "StoreID": 201, "ProductID": 103, "UnitsSold": 5, "Revenue": 4556, "CreatedDateTime": "2023/07/27" }, { "SaleID": 190, "SalesDate": "2023/12/08", "StoreID": 205, "ProductID": 107, "UnitsSold": 8, "Revenue": 7501, "CreatedDateTime": "2023/12/08" }, { "SaleID": 191, "SalesDate": "2024/02/21", "StoreID": 202, "ProductID": 105, "UnitsSold": 9, "Revenue": 8795, "CreatedDateTime": "2024/02/21" }, { "SaleID": 192, "SalesDate": "2023/10/27", "StoreID": 204, "ProductID": 109, "UnitsSold": 9, "Revenue": 3011, "CreatedDateTime": "2023/10/27" }, { "SaleID": 193, "SalesDate": "2024/03/26", "StoreID": 201, "ProductID": 109, "UnitsSold": 9, "Revenue": 10202, "CreatedDateTime": "2024/03/26" }, { "SaleID": 194, "SalesDate": "2024/05/06", "StoreID": 201, "ProductID": 109, "UnitsSold": 6, "Revenue": 9989, "CreatedDateTime": "2024/05/06" }, { "SaleID": 195, "SalesDate": "2024/05/04", "StoreID": 204, "ProductID": 105, "UnitsSold": 1, "Revenue": 3129, "CreatedDateTime": "2024/05/04" }, { "SaleID": 196, "SalesDate": "2023/11/13", "StoreID": 204, "ProductID": 104, "UnitsSold": 7, "Revenue": 8811, "CreatedDateTime": "2023/11/13" }, { "SaleID": 197, "SalesDate": "2023/08/07", "StoreID": 203, "ProductID": 107, "UnitsSold": 3, "Revenue": 8272, "CreatedDateTime": "2023/08/07" }, { "SaleID": 198, "SalesDate": "2023/10/17", "StoreID": 205, "ProductID": 107, "UnitsSold": 5, "Revenue": 6715, "CreatedDateTime": "2023/10/17" }, { "SaleID": 199, "SalesDate": "2024/01/28", "StoreID": 201, "ProductID": 108, "UnitsSold": 6, "Revenue": 6980, "CreatedDateTime": "2024/01/28" }, { "SaleID": 200, "SalesDate": "2023/07/22", "StoreID": 204, "ProductID": 108, "UnitsSold": 1, "Revenue": 7944, "CreatedDateTime": "2023/07/22" } ];