如何在 KDB 中将字典列表转换为 table?

How do I turn a list of dictionaries into a table in KDB?

我已经解码 JSON 生成一个 list 形式:

T       v       vw       o      c       h       l        t            n
---------------------------------------------------------------------------
"VMAR"  62737   5.0392   5.19   5.07    5.3     4.9555   1.640639e+12 345
"RADA"  376883  9.6936   9.49   9.64    9.87    9.43     1.640639e+12 3216
"MMLG"  23222   27.5049  27.3   27.54   27.55   27.3     1.640639e+12 89
"ITM"   92400   51.3968  51.4   51.4    51.42   51.38    1.640639e+12 307
"IBDS"  111584  26.5429  26.47  26.55   26.57   26.47    1.640639e+12 270
"VGZ"   441111  0.665    0.675  0.67    0.684   0.66     1.640639e+12 533
"MGTX"  110759  22.3499  22.52  22.53   22.62   21.78    1.640639e+12 1672
"AVID"  241058  32.7345  32.16  32.96   33.08   31.87    1.640639e+12 4512
"VBR"   311815  177.2026 176.54 178.52  178.52  175.47   1.640639e+12 4046
"EBIZ"  25115   27.5717  27.52  27.55   27.74   27.48    1.640639e+12 239
"WWJD"  503027  31.2307  31     31.1874 31.26   31       1.640639e+12 248
"OXACW" 6300    0.4      0.4    0.4     0.4     0.4      1.640639e+12 1
"MSOS"  835924  25.4539  25.41  25.29   25.74   25.15    1.640639e+12 5566

每一行都是一个dict

我正在尝试将其变成 table。我该怎么做?

要复制的代码,如果您在 KDB 上设置了 TLS:

baseUrl: ":https://api.polygon.io/v2/aggs/grouped/locale/us/market/stocks/"
apiKey: "?apiKey=B__L_1gX9IPlqaSW7JDXv_Ef4i_LhObVOwd_yT"
polyDay: {(.j.k .Q.hg baseUrl, x, apiKey)`results}
r: polyDay["2021-12-27"]

对于不一致的字典列表,您可以强制将其折叠为 table,如下所示:

q)show D:(`a`b!1 2;`b`c!20 30);
`a`b!1 2
`b`c!20 30
q)(distinct raze key each D)#/:D
a b  c
-------
1 2
  20 30

但是,由于您的数据包含各种数据类型,该解决方案将导致某些列为混合类型,这是不受欢迎的,例如下面,列 vwn 包含混合类型

q)meta (distinct raze key each r)#/:r
c | t f a
--| -----
T | C
v | f
vw|
o | f
c | f
h | f
l | f
t | f
n |

以下应该有效。感谢 Attila Vrabecz,最初在这里给出的解决方案 - How to merge a list of tables with different columns

q)\ts t:{raze((uj/)0#'x)uj/:x}enlist each r
70 9854464

或者如果您事先知道架构,您可以简化为

q)t:0#t // predefined schema
q)\ts t:raze t uj/:enlist each r
34 7768736
q)
q)meta t
c | t f a
--| -----
T | C
v | f
vw| f
o | f
c | f
h | f
l | f
t | f
n | f