Вертикальный вывод в кДБ - PullRequest
1 голос
/ 22 апреля 2020

Имеет kdb вертикальный вывод? В ClickHouse я могу указать FORMAT VERTICAL

SELECT * FROM foo FORMAT VERTICAL;

Row 1:
──────
date:            2020-04-21
datetime:        2020-04-21 09:00:01

Row 2:
──────
date:            2020-04-21
datetime:        2020-04-21 09:00:01

Ответы [ 2 ]

2 голосов
/ 22 апреля 2020

Kdb + не имеет встроенного вертикального форматера, но его легко создать:

vformat:{
  {-1 hdr:"Row ", string[x], ":"; -1 count[hdr]#"_"; -1 .Q.s y;}'[1+til count x; x:0!x];
}

q)vformat ([a:til 10]b:10?`4;long_col_name:10?.Q.A)
Row 1:
______
a            | 0
b            | `bghg
long_col_name| "M"

Row 2:
______
a            | 1
b            | `ifna
long_col_name| "I"
...
1 голос
/ 22 апреля 2020

Таблицы KDB - это списки словарей, так что вы можете просто «показать» словари. Есть много способов добиться этого в зависимости от ваших предпочтений:

q)show tab:([]col1:`a`b`c;col2:1 2 3)
col1 col2
---------
a    1
b    2
c    3

q)0N!'tab;
`col1`col2!(`a;1)
`col1`col2!(`b;2)
`col1`col2!(`c;3)

q){show x;show`}each tab;
col1| `a
col2| 1
`
col1| `b
col2| 2
`
col1| `c
col2| 3
`

, но обратите внимание, что это действительно будет работать только в терминале - графический интерфейс / IDE может отображать это неправильно.

Из графического интерфейса / IDE вы можете использовать что-то вроде

q)enlist each tab
+`col1`col2!(,`a;,1)
+`col1`col2!(,`b;,2)
+`col1`col2!(,`c;,3)

/or
q)raze string[til count tab],'.Q.s2 each tab
"0"
"col1| `a"
"col2| 1"
"1"
"col1| `b"
"col2| 2"
"2"
"col1| `c"
"col2| 3"
...