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

Power Query中按资产统一更新SourceType状态的实现方案

批量更新资产状态的实现方案

需求规则

  • 若同一资产(Name)下存在任意一个SourceType的状态为In-Active,则该资产下所有SourceType的状态统一更新为In-Active
  • 仅当某资产下所有3个SourceType的状态均为Active时,才保留Active状态

原始数据表格

NameSourceTypeDateStatus
Asset 1Security27-03-2024Active
Asset 1Application24-03-2024In-Active
Asset 1System27-03-2024Active
Asset 2System27-03-2024Active
Asset 2Security21-02-2024In-Active
Asset 2Application15-06-2023In-Active
Asset 3System27-03-2024Active
Asset 3Security21-02-2024Active
Asset 3Application15-06-2023Active

期望输出表格

NameSourceTypeDateStatus
Asset 1Security27-03-2024In-Active
Asset 1Application24-03-2024In-Active
Asset 1System27-03-2024In-Active
Asset 2System27-03-2024In-Active
Asset 2Security21-02-2024In-Active
Asset 2Application15-06-2023In-Active
Asset 3System27-03-2024Active
Asset 3Security21-02-2024Active
Asset 3Application15-06-2023Active

实现方法

方法1:Excel/Google Sheets 公式实现

假设数据在A2:D10区域,新增一列E作为更新后的状态,在E2单元格输入以下公式,下拉填充即可:

=IF(COUNTIFS($A$2:$A$10,A2,$D$2:$D$10,"In-Active")>0,"In-Active","Active")

公式逻辑:统计当前资产对应的所有行中,状态为In-Active的数量,若大于0则返回In-Active,否则返回Active。之后可将E列值复制粘贴到D列替换原状态。

方法2:Python Pandas 实现

import pandas as pd

# 读取数据(可替换为直接构造DataFrame或读取其他格式文件)
df = pd.read_csv("your_data.csv")

# 按资产分组,判断每组是否存在In-Active状态
asset_final_status = df.groupby("Name")["Status"].apply(
    lambda x: "In-Active" if (x == "In-Active").any() else "Active"
)

# 将分组结果映射回原表格
df["Status"] = df["Name"].map(asset_final_status)

# 输出并保存结果
print(df)
df.to_csv("updated_asset_status.csv", index=False)

方法3:SQL 实现

假设数据表名为asset_status,执行以下SQL语句更新状态:

-- 先通过临时表确定每个资产的最终状态
WITH asset_final_status AS (
    SELECT 
        Name,
        CASE 
            WHEN EXISTS (SELECT 1 FROM asset_status a2 WHERE a2.Name = a1.Name AND a2.Status = 'In-Active') 
            THEN 'In-Active' 
            ELSE 'Active' 
        END AS final_status
    FROM asset_status a1
    GROUP BY Name
)
-- 更新原表的状态字段
UPDATE asset_status a
SET Status = (SELECT final_status FROM asset_final_status afs WHERE afs.Name = a.Name);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 22:56:03