【问题标题】:KDB: how to get distinct values of rows in a table?KDB:如何获取表中行的不同值?
【发布时间】:2021-09-09 07:44:11
【问题描述】:

所以我有一个包含一些值的行数的表。我想获取唯一值,而不是唯一行。

columnA
"AZ;B;C"
"AT;B;D"
"E;F"
"C;D"
"A;D"
"A"

所以这是我的桌子。我想获取以下列表:A;AT;AZ;B;C;D;E;F。 我试过select distinct from flip indicators,它只是把它变成了一个很长的行列表

【问题讨论】:

    标签: kdb


    【解决方案1】:

    你可以试试这个:

    q)tbl:([] columnA:("AZ;B;C";"AT;B;C";"A;B;D";"E;F";"C;D";"A;D";enlist"A"))
    q)tbl
    columnA
    --------
    "AZ;B;C"
    "AT;B;C"
    "A;B;D"
    "E;F"
    "C;D"
    "A;D"
    ,"A"
    q)";"sv asc distinct exec";"vs";"sv columnA from tbl
    "A;AT;AZ;B;C;D;E;F"
    

    如果你的表的最后一行是一个原子,那么你可以试试这个:

    q)tbl:([] columnA:("AZ;B;C";"AT;B;C";"A;B;D";"E;F";"C;D";"A;D";"A"))
    q)tbl
    columnA
    --------
    "AZ;B;C"
    "AT;B;C"
    "A;B;D"
    "E;F"
    "C;D"
    "A;D"
    "A"
    q)exec ";"sv asc distinct ";"vs -1_raze{x,";"}each columnA from tbl
    "A;AT;AZ;B;C;D;E;F"
    

    【讨论】:

    • 谢谢,它几乎可以工作,。我想要的是 A;B;C;D;E;F。您的解决方案返回 ABCDEF。我已编辑问题以获得更多可能的值
    • @duckman Maurice 用解决方案编辑了他的原始答案。
    【解决方案2】:

    这是你可以做的:

    q)t:([]a:`a`b`c;b:`a`f`g;c:`f`e`a)
    q)t
    a b c
    -----
    a a f
    b f e
    c g a
    
    q)distinct raze value flip t
    `a`b`c`f`g`e
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多