You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何整合MySQL与DB2查询数组,按sku_id统计生成报表/CSV?

嘿,我来帮你捋捋怎么搞定这个数组整合和报表生成的事儿!

分步解决数组整合与报表生成问题

第一步:明确数组关联逻辑

首先得把两个数组的关联关系抓准——既然核心是sku_id,那先确认产品数组里的sku_id和客户交易数组里的对应字段(大概率也是sku_id)是完全匹配的,比如:
产品数组结构示例:

$products = [
    ['sku_id' => 'SKU001', 'product_name' => '无线耳机', 'category' => '数码'],
    ['sku_id' => 'SKU002', 'product_name' => '纯棉T恤', 'category' => '服饰'],
    ...
];

客户交易数组结构示例:

$customerTransactions = [
    ['sku_id' => 'SKU001', 'customer_id' => 'C001', 'quantity' => 2, 'amount' => 399.98],
    ['sku_id' => 'SKU001', 'customer_id' => 'C002', 'quantity' => 1, 'amount' => 199.99],
    ['sku_id' => 'SKU002', 'customer_id' => 'C003', 'quantity' => 3, 'amount' => 299.97],
    ...
];

第二步:构建整合后的统计数组

接下来遍历产品数组,把每个sku_id对应的交易数据聚合起来,顺便算出总数量和总交易量:

PHP版本示例

$finalReportData = [];

foreach ($products as $product) {
    $currentSku = $product['sku_id'];
    // 筛选当前sku的所有交易记录
    $skuTransactions = array_filter($customerTransactions, function($trans) use ($currentSku) {
        return $trans['sku_id'] === $currentSku;
    });
    
    // 统计核心指标
    $totalQuantity = array_sum(array_column($skuTransactions, 'quantity'));
    $totalAmount = array_sum(array_column($skuTransactions, 'amount'));
    
    // 组装最终数据
    $finalReportData[] = [
        'sku_id' => $currentSku,
        'product_name' => $product['product_name'],
        'category' => $product['category'],
        'total_quantity' => $totalQuantity,
        'total_amount' => $totalAmount,
        'transaction_details' => $skuTransactions // 可选:保留交易明细
    ];
}

Python版本示例

final_report_data = []

for product in products:
    current_sku = product['sku_id']
    # 筛选当前sku的交易记录
    sku_transactions = [t for t in customer_transactions if t['sku_id'] == current_sku]
    
    # 统计指标
    total_quantity = sum(t['quantity'] for t in sku_transactions)
    total_amount = sum(t['amount'] for t in sku_transactions)
    
    # 组装数据
    final_report_data.append({
        'sku_id': current_sku,
        'product_name': product['product_name'],
        'category': product['category'],
        'total_quantity': total_quantity,
        'total_amount': total_amount,
        'transaction_details': sku_transactions
    })

第三步:生成CSV或报表文件

生成汇总CSV(PHP为例)

直接用内置函数快速生成汇总报表:

// 创建汇总CSV文件
$csvHandle = fopen('sku_summary_report.csv', 'w');
// 写入表头
fputcsv($csvHandle, ['SKU编号', '商品名称', '分类', '总购买数量', '总交易金额']);
// 写入数据行
foreach ($finalReportData as $row) {
    fputcsv($csvHandle, [
        $row['sku_id'],
        $row['product_name'],
        $row['category'],
        $row['total_quantity'],
        $row['total_amount']
    ]);
}
fclose($csvHandle);

单个SKU独立生成CSV

如果需要每个sku单独输出报表,循环处理即可:

foreach ($finalReportData as $skuData) {
    $fileName = "sku_{$skuData['sku_id']}_detail_report.csv";
    $csvHandle = fopen($fileName, 'w');
    // 写入表头
    fputcsv($csvHandle, ['SKU编号', '商品名称', '客户ID', '购买数量', '交易金额']);
    // 写入明细
    foreach ($skuData['transaction_details'] as $trans) {
        fputcsv($csvHandle, [
            $skuData['sku_id'],
            $skuData['product_name'],
            $trans['customer_id'],
            $trans['quantity'],
            $trans['amount']
        ]);
    }
    // 追加统计行
    fputcsv($csvHandle, ['', '', '总计', $skuData['total_quantity'], $skuData['total_amount']]);
    fclose($csvHandle);
}

几个实用优化建议

  • 如果数据量很大,别用数组筛选,建议直接在数据库层面做关联聚合:比如把DB2的数据同步到MySQL(或者反过来),用JOIN+GROUP BY sku_id直接算出统计结果,性能会提升很多。
  • 提前校验数据一致性:比如确保所有sku_id都是字符串类型,避免数字和字符串混合导致匹配失败。
  • 处理空交易场景:如果某个sku没有交易记录,要把统计值设为0,避免报表出现空值。

内容的提问来源于stack exchange,提问作者Geoff_S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:31:25