代码之家  ›  专栏  ›  技术社区  ›  gaurav burman

如何使用SQL或Tableau计算组之间的唯一公共值?

  •  0
  • gaurav burman  · 技术社区  · 3 年前

    我无法找到使用Power Query、SQL或Tableau计算组之间唯一公共值的方法。

    INPUT:我有一个这样的数据集:

    Group   Value
    A   1
    A   2
    A   3
    A   4
    A   5
    B   3
    B   5
    B   6
    B   7
    C   8
    C   3
    C   6
    C   9
    

    OUTPUT:我想要一个对称矩阵,给出不同组组合之间唯一值的计数

        A   B   C   Total Unique
    A   5   2   1   5
    B   2   4   1   4
    C   1   1   4   4
    

    在创建辅助COUNTIF列后,我尝试使用透视表,但无法解决问题。此外,我的数据集有超过2M行。

    0 回复  |  直到 3 年前
        1
  •  1
  •   horseyride    3 年前

    当C/B同时共享3和6时,它是=1,这对我来说没有意义,这似乎表明应该是=2

    也就是说,下面是一些powerquery,它似乎可以做我认为你想做的事情。然而,在其顶部合并200万行可能会使powerquery窒息,但请尝试一下。我推荐另一种工具

    let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Removed Duplicates" = Table.Distinct(Source),
    Distinct = Table.Group(#"Removed Duplicates", {"Group"}, {{"Distinct", each Table.RowCount(_), Int64.Type}}),
    #"Merged Queries" = Table.NestedJoin(#"Removed Duplicates", {"Value"}, #"Removed Duplicates", {"Value"}, "Changed Type", JoinKind.LeftOuter),
    #"Expanded Changed Type" = Table.ExpandTableColumn(#"Merged Queries", "Changed Type", {"Group"}, {"Group2"}),
    #"Removed Columns" = Table.RemoveColumns(#"Expanded Changed Type",{"Value"}),
    #"Added Custom" = Table.AddColumn(#"Removed Columns", "Custom", each 1),
    #"Pivoted Column" = Table.Pivot(#"Added Custom", List.Distinct(#"Added Custom"[Group2]), "Group2", "Custom", List.Sum),
    #"Merged Queries1" = Table.NestedJoin(#"Pivoted Column", {"Group"}, Distinct, {"Group"}, "aaa", JoinKind.LeftOuter),
    Expanded = Table.ExpandTableColumn(#"Merged Queries1", "aaa", {"Distinct"}, {"Distinct"})
    in  Expanded
    

    enter image description here