ClickHouse 按列输出,而不是按行输出转置实际上没有转置?

问题描述

有没有办法不按行而是按列从 ClickHouse 返回数据?

因此,对于列 2021-06-02 13:39:14.547 1778-1954/? E/ScreenModeManager: updateGlobalModeId modeId 1 mCurrentModeId 1 2021-06-02 13:39:14.550 4172-4191/? E/oiface: client not found,skipped 2021-06-02 13:39:14.552 1778-9509/? E/ScreenModeManager: updateGlobalModeId modeId 1 mCurrentModeId 1 2021-06-02 13:39:14.556 1778-9251/? E/ScreenModeManager: updateGlobalModeId modeId 1 mCurrentModeId 1 2021-06-02 13:39:14.559 3150-3150/? E/filemap: mmap(3710025728,2684) Failed: Invalid argument 2021-06-02 13:39:14.559 3150-3150/? E/NewUnityProjec: Failed to mmap file 'resources.arsc' in APK '/data/app/com.DefaultCompany.NewUnityProject--LwelO8ZsoptnAlXFv36ig==/base.apk' 2021-06-02 13:39:14.559 3150-3150/? E/NewUnityProjec: Failed to open 'resources.arsc' in APK '/data/app/com.DefaultCompany.NewUnityProject--LwelO8ZsoptnAlXFv36ig==/base.apk'. 2021-06-02 13:39:14.559 3150-3150/? E/ResourcesManager: Failed to add asset path /data/app/com.DefaultCompany.NewUnityProject--LwelO8ZsoptnAlXFv36ig==/base.apk 2021-06-02 13:39:14.559 3150-3150/? E/ActivityThread: updateLocaleListFromAppContext context.getResources() is null,return 2021-06-02 13:39:14.562 3150-3150/? E/filemap: mmap(3710025728,2684) Failed: Invalid argument 2021-06-02 13:39:14.562 3150-3150/? E/NewUnityProjec: Failed to mmap file 'resources.arsc' in APK '/data/app/com.DefaultCompany.NewUnityProject--LwelO8ZsoptnAlXFv36ig==/base.apk' 2021-06-02 13:39:14.562 3150-3150/? E/NewUnityProjec: Failed to open 'resources.arsc' in APK '/data/app/com.DefaultCompany.NewUnityProject--LwelO8ZsoptnAlXFv36ig==/base.apk'. 2021-06-02 13:39:14.562 3150-3150/? E/ResourcesManager: Failed to add asset path /data/app/com.DefaultCompany.NewUnityProject--LwelO8ZsoptnAlXFv36ig==/base.apk 2021-06-02 13:39:14.563 3150-3150/? E/filemap: mmap(3710025728,2684) Failed: Invalid argument 2021-06-02 13:39:14.563 3150-3150/? E/NewUnityProjec: Failed to mmap file 'resources.arsc' in APK '/data/app/com.DefaultCompany.NewUnityProject--LwelO8ZsoptnAlXFv36ig==/base.apk' 2021-06-02 13:39:14.563 3150-3150/? E/NewUnityProjec: Failed to open 'resources.arsc' in APK '/data/app/com.DefaultCompany.NewUnityProject--LwelO8ZsoptnAlXFv36ig==/base.apk'. 2021-06-02 13:39:14.563 3150-3150/? E/ResourcesManager: Failed to add asset path /data/app/com.DefaultCompany.NewUnityProject--LwelO8ZsoptnAlXFv36ig==/base.apk 2021-06-02 13:39:14.564 3150-3150/? E/AndroidRuntime: FATAL EXCEPTION: main Process: com.DefaultCompany.NewUnityProject,PID: 3150 java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.AssetManager android.content.res.Resources.getAssets()' on a null object reference at android.app.LoadedApk.getAssets(LoadedApk.java:1247) at android.app.LoadedApk.makeApplication(LoadedApk.java:1336) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6882) at android.app.ActivityThread.access$1500(ActivityThread.java:235) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2068) at android.os.Handler.dispatchMessage(Handler.java:107) at android.os.Looper.loop(Looper.java:238) at android.app.ActivityThread.main(ActivityThread.java:7890) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:983) a

而不是产生以下形式
一个 b
1 2
3 4
5 6

我会得到一个转置结果

- - -
1 3 5
2 4 6

关键是我想访问每列的数据,例如。迭代列 b 中的所有内容

我正在检查可用的输出格式 - Arrow 可以,但我的平台目前不支持它。

我正在寻找一种最有效的方法。例如。考虑到 ClickHouse 已经将数据存储在列中,它不必将其处理成行,因此我可以在之后使用数组函数将其传输回列。我不太熟悉内部结构,但我想知道如果数据已经在列中,我可以以某种方式跳过转置行。

解决方法

显然没有简单的方法可以做到。 还有一个更大的问题是它违反了 SQL 概念。


您可以使用本机协议,但您将获得 65k 行的列。

col_a 65k values,col_b 65k values,col_a next 65k values,col_b next 65k values