数据转换非常棘手的问题

问题描述 投票:0回答:1

我想根据以下规则选择数据并添加一个名为“检查”的新列:

  1. 对于每个“consumer”列,如果消费者没有 master_consumer 值(在 master_consumer 中显示“null”)并且如果其 bill_group 是“Consumer”,则其“check”与“Consumer_scope”中的值相同' 栏目
  2. 对于每个“Master_Consumer”列,如果它不为空并且数字也在消费者列之一中,如果“Consumer_scope”为“超出范围”,则属于该“Master_Consumer”的所有消费者都为“超出范围”例如,数字7是master_consumer和消费者,数字8和9是消费者,虽然8和9是“In Scope”,但它们属于数字7,所以它们的“check”值仍然是“Out of Scope” ' 与数字 7 相同
  3. 如果消费者的产品包含“乳制品”并且该消费者属于 master_consumer,则 Master_Consumer 中的所有“检查”值都为“超出范围” 我理想的输出如下:

我已经创建了代码,但非常非常慢,因为这是示例数据,所以只是想知道有人可以帮忙吗? 谢谢

我已经创建了代码,但是非常非常慢,因为这是示例数据

sql-server dataframe etl data-transfer
1个回答
0
投票
case
    when Master_Consumer is null then
        case when Bill_group = 'Consumer'
            then Consumer_scope
            else '' -- ??
        end
    when 
        min(case when Master_Consumer = Consumer and Consumer_scope = 'Out of scope' then 1 end)
            over (partition by Master_Consumer) = 1
        or Product like '%For Dairy%'
        then 'Out of scope'
    else Consumer_scope -- ??
end
© www.soinside.com 2019 - 2024. All rights reserved.