我有一列包含一个活动的已处理数据元素的值,如下所示:
<块引用>[数据主体:信息类型]数据元素
因此,如果信息类型或数据主体不同,则将其写为单独的数据段,以分号作为分隔符。
我需要从一个单元格(一组值)中提取数据主体的所有唯一值(在“[”和“:”之间)和信息类型(在“:”和“]”之间)。信息类型应该用换行符分隔(无法在此表中显示所以我会写(换行符))
数据主体和个人数据 | 数据将由 Atos 处理的人员类别(预期结果) | 处理的个人数据类别(预期结果) |
---|---|---|
[(新/前)员工:联系信息] 电话号码、个人邮箱、家庭住址、联系方式、专业邮箱、紧急联系方式; [(新/离职)员工:就业信息] 劳动力管理详情、合同详情 | (新/离职)员工 | 联系信息(换行)就业信息 |
【业务合作伙伴:联系方式】专业邮箱; [商业伙伴:个人身份证明]姓,名; 【客户/客户:联系方式】专业邮箱; 【访客:健康资讯】血型 | 商业伙伴;客户/客户;访客 | 联系信息(换行)个人身份(换行)健康信息 |
答案 0 :(得分:0)
这是进行转换的 M 代码:
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Added Custom" = Table.AddColumn(Source, "newCol", each [#"Data Subjects & Personal Data"]),
#"Split Column by Delimiter" = Table.ExpandListColumn(Table.TransformColumns(#"Added Custom", {{"newCol", Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "newCol"),
#"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"newCol", type text}}),
#"Added Custom1" = Table.AddColumn(#"Changed Type1", "persons", each Text.Replace( Text.Split( Text.Trim([newCol]),":"){0},"[","")),
#"Added Custom2" = Table.AddColumn(#"Added Custom1", "data", each Text.Trim( Text.Split( Text.Split([newCol],":"){1},"]"){0})),
PersonalCategory = Table.Distinct( Table.SelectColumns(#"Added Custom2",{"Data Subjects & Personal Data","persons"})),
PersonalCombined = Table.Group(PersonalCategory,"Data Subjects & Personal Data",{"Personal Category",each Text.Combine([persons],"; ")}),
DataCategory = Table.Distinct( Table.SelectColumns(#"Added Custom2",{"Data Subjects & Personal Data","data"})),
DataCombined = Table.Group(DataCategory,"Data Subjects & Personal Data",{"Data Category",each Text.Combine([data],Character.FromNumber(10))}),
withPersonal = Table.NestedJoin(Source,{"Data Subjects & Personal Data"},PersonalCombined,{"Data Subjects & Personal Data"}, "personal",JoinKind.LeftOuter),
PersonalExpanded = Table.ExpandTableColumn(withPersonal, "personal",{"Personal Category"}),
withData = Table.NestedJoin(PersonalExpanded,{"Data Subjects & Personal Data"},DataCombined,{"Data Subjects & Personal Data"},"data",JoinKind.LeftOuter),
#"Expanded data" = Table.ExpandTableColumn(withData, "data", {"Data Category"}, {"Data Category"})
in
#"Expanded data"