Ioanna Lykourentzou

92 papers A* 4A 3B 3C 2Misc 2Journal 39Unranked 32
YearRankTypeTitle / Venue / Authors
2026 conf
CHI Extended Abstracts
Muhammad Raees, Ioanna Lykourentzou, Vassilis-Javed Khan, Konstantinos Papangelis
2026 A* conf
CHI
Muhammad Raees, Vassilis-Javed Khan, Ioanna Lykourentzou, Konstantinos Papangelis
2025 J jnl
CoRR
Aaron Kessler, Tim Scheiber, Heinz Schmitz, Ioanna Lykourentzou
2025 Misc conf
MuC
Alice Vitali, Isaac Alpizar Chacon, Christina Schneegass, Tilman Dingler, Ioanna Lykourentzou
2025 J jnl
CoRR
Lyle Regenwetter, Yazan Abu Obaideh, Fabien Chiotti, Ioanna Lykourentzou, Faez Ahmed
2025 conf
Koli Calling
Isaac Alpizar Chacon, Hieke Keuning, Imke de Jong, Ioanna Lykourentzou, Susan Rings
2025 J jnl
CoRR
Isaac Alpizar Chacon, Hieke Keuning, Imke de Jong, Ioanna Lykourentzou, Susan Rings
2024 J jnl
CoRR
Leah Chong, Jude Rayan, Steven Dow, Ioanna Lykourentzou, Faez Ahmed
2024 J jnl
CoRR
Muhammad Raees, Inge Meijerink, Ioanna Lykourentzou, Vassilis-Javed Khan, Konstantinos Papangelis
2024 J jnl
Int. J. Hum. Comput. Stud.
Muhammad Raees, Inge Meijerink, Ioanna Lykourentzou, Vassilis-Javed Khan, Konstantinos Papangelis
2024 conf
IUI Companion
Kurt Luther, Vikram Mohanty, Benjamin Charles Germain Lee, Ioanna Lykourentzou
2024 ed.
AMID@MobileHCI
Christos Fidas, Stella Sylaiou, Tsvi Kuflik, Fotis Liarokapis, Panayiotis Koutsabasis, Manolis Wallace, Dimitrios Koukopoulos, Angeliki Antoniou, Katerina Mania, Ioanna Lykourentzou
2024 J jnl
CoRR
Leah Chong, I-Ping Lo, Jude Rayan, Steven Dow, Faez Ahmed, Ioanna Lykourentzou
2024 conf
Koli Calling
Hieke Keuning, Isaac Alpizar Chacon, Ioanna Lykourentzou, Lauren Beehler, Christian Köppe, Imke de Jong, Sergey A. Sosnovsky
2024 J jnl
CoRR
Hieke Keuning, Isaac Alpizar Chacon, Ioanna Lykourentzou, Lauren Beehler, Christian Köppe, Imke de Jong, Sergey A. Sosnovsky
2023 conf
AMID@MobileHCI
Angeliki Antoniou, Jeff Love, Ioanna Lykourentzou, Heng Gu, Maria Stathi
2023 conf
MobileHCI (Companion)
Christos Fidas, Stella Sylaiou, Tsvi Kuflik, Fotis Liarokapis, Panayiotis Koutsabasis, Manolis Wallace, Dimitrios Koukopoulos, Angeliki Antoniou, Katerina Mania, Ioanna Lykourentzou
2023 conf
PETRA
Jiayuan Hu, Ioanna Lykourentzou
2023 A* conf
CHI
Yihong Wang, Konstantinos Papangelis, Ioanna Lykourentzou, Michael Saker, Alan Chamberlain, Vassilis-Javed Khan, Hai-Ning Liang, Yong Yue
2022 J jnl
Frontiers Artif. Intell.
Federica Lucia Vinella, Jiayuan Hu, Ioanna Lykourentzou, Judith Masthoff
2022 conf
UMAP (Adjunct Publication)
Federica Lucia Vinella, Amra Delic, Francesco Barile, Ioanna Lykourentzou, Judith Masthoff
2022 J jnl
Frontiers Artif. Intell.
Federica Lucia Vinella, Chinasa Odo, Ioanna Lykourentzou, Judith Masthoff
2022 conf
CHI Extended Abstracts
Jiangnan Xu, Konstantinos Papangelis, John Dunham, Jorge Gonçalves, Nicolas James LaLone, Alan Chamberlain, Ioanna Lykourentzou, Federica Lucia Vinella, David I. Schwartz
2022 A conf
UMAP
Federica Lucia Vinella, Rosa Mosch, Ioanna Lykourentzou, Judith Masthoff
2022 J jnl
Commun. ACM
Yihong Wang, Konstantinos Papangelis, Ioanna Lykourentzou, Vassilis-Javed Khan, Michael Saker, Yong Yue, Jonathan Grudin
2021 J jnl
CoRR
Angeliki Antoniou, Ioanna Lykourentzou, Antonios Liapis, Dimitra Nikolou, Marily Konstantinopoulou
2021 A* conf
CHI
Yihong Wang, Konstantinos Papangelis, Michael Saker, Ioanna Lykourentzou, Vassilis-Javed Khan, Alan Chamberlain, Jonathan Grudin
2021 J jnl
ACM Journal on Computing and Cultural Heritage
George Lepouras, Ioanna Lykourentzou, Antonios Liapis
2021 J jnl
ACM Trans. Soc. Comput.
Konstantinos Papangelis, Ioanna Lykourentzou, Vassilis-Javed Khan, Alan Chamberlain, Ting Cao, Michael Saker, Nicolas J. LaLone
2021 conf
IS-EUD
Nikolaos Batalas, Ioanna Lykourentzou, Vassilis-Javed Khan, Panos Markopoulos
2021 J jnl
CoRR
Ioanna Lykourentzou, Federica Lucia Vinella, Faez Ahmed, Costas Papastathis, Konstantinos Papangelis, Vassilis-Javed Khan, Judith Masthoff
2021 conf
SMAP
Federica Lucia Vinella, Ioanna Lykourentzou, Judith Masthoff
2020 J jnl
Big Data Cogn. Comput.
Costas Vassilakis, Konstantinos Kotis, Dimitris Spiliotopoulos, Dionisis Margaris, Vlasios Kasapakis, Christos-Nikolaos Anagnostopoulos, Georgios M. Santipantakis, George A. Vouros, Theodore Kotsilieris, Volha Petukhova, Andrei Malchanau, Ioanna Lykourentzou, Kaj Michael Helin, Artem Revenko, Nenad Gligoric, Boris Pokric
2020 A* conf
CHI
Yihong Wang, Konstantinos Papangelis, Michael Saker, Ioanna Lykourentzou, Alan Chamberlain, Vassilis-Javed Khan
2020 J jnl
Proc. ACM Hum. Comput. Interact.
Yihong Wang, Konstantinos Papangelis, Ioanna Lykourentzou, Hai-Ning Liang, Irwyn Sadien, Evangelia Demerouti, Vassilis-Javed Khan
2020 J jnl
ACM Journal on Computing and Cultural Heritage
George Lepouras, Ioanna Lykourentzou, Antonios Liapis
2020 conf
UMAP (Adjunct Publication)
Federica Lucia Vinella, Ioanna Lykourentzou, Konstantinos Papangelis
2020 J jnl
ACM Trans. Comput. Hum. Interact.
Konstantinos Papangelis, Alan Chamberlain, Ioanna Lykourentzou, Vassilis-Javed Khan, Michael Saker, Hai-Ning Liang, Irwyn Sadien, Ting Cao
2020 J jnl
Pers. Ubiquitous Comput.
Marcelo Gabriel Armentano, Frank Hopfgartner, Ioanna Lykourentzou, Antonela Tommasel
2019 conf
I3E Workshops
Ioanna Lykourentzou, Antonios Liapis, Costas Papastathis, Konstantinos Papangelis, Costas Vassilakis
2019 book
Macrotask Crowdsourcing
Vassilis-Javed Khan, Konstantinos Papangelis, Ioanna Lykourentzou, Panos Markopoulos
2019 ch.
Macrotask Crowdsourcing
Ioanna Lykourentzou, Vassilis-Javed Khan, Konstantinos Papangelis, Panos Markopoulos
2019 conf
GI-Jahrestagung
Heinz Schmitz, Ioanna Lykourentzou
2019 J jnl
Symmetry
Martín López Nores, Omar Gustavo Bravo-Quezada, Maddalena Bassani, Angeliki Antoniou, Ioanna Lykourentzou, Catherine Emma Jones, Kalliopi Kontiza, Silvia González-Soutelo, Susana Maria Reboreda-Morillo, Yannick Naudet, Andreas Vlachidis, Antonis Bikakis, José Juan Pazos-Arias
2019 conf
CSCW Companion
Yihong Wang, Konstantinos Papangelis, Ioanna Lykourentzou, Vassilis-Javed Khan
2019 J jnl
ACM Journal on Computing and Cultural Heritage
Catherine Emma Jones, Stathis Theodosis, Ioanna Lykourentzou
2018 conf
DH
Kalliopi Kontiza, Catherine Emma Jones, Joseph Padfield, Ioanna Lykourentzou
2018 conf
SIMBig
Harry Halpin, Ioanna Lykourentzou
2018 ch.
Encyclopedia of Database Systems (2nd ed.)
Sihem Amer-Yahia, Senjuti Basu Roy, Gautam Das, Ioanna Lykourentzou, Habibur Rahman, Saravanan Thirumuruganathan
2018 J jnl
ACM Trans. Soc. Comput.
Heinz Schmitz, Ioanna Lykourentzou
2018 ed.
UMCit@KDD
Marcelo Gabriel Armentano, Frank Hopfgartner, Ioanna Lykourentzou, Antonela Tommasel
2018 ed.
mobileCH@Mobile HCI
Sylvain Castagnos, Tsvi Kuflik, Ioanna Lykourentzou, Manolis Wallace
2018 J jnl
Future Internet
Eirini-Eleni Tsiropoulou, George Kousis, Athina Thanou, Ioanna Lykourentzou, Symeon Papavassiliou
2018 J jnl
Proc. ACM Hum. Comput. Interact.
Ioanna Lykourentzou, Faez Ahmed, Costas Papastathis, Irwyn Sadien, Konstantinos Papangelis
2017 conf
CHI Extended Abstracts
Catherine Emma Jones, Antonios Liapis, Ioanna Lykourentzou, Daniele Guido
2017 J jnl
ERCIM News
Susana Maria Reboreda-Morillo, Maddalena Bassani, Ioanna Lykourentzou
2017 A conf
CSCW
Ioanna Lykourentzou, Robert E. Kraut, Steven P. Dow
2016 conf
EuroMed (1)
Costas Vassilakis, Angeliki Antoniou, George Lepouras, Manolis Wallace, Ioanna Lykourentzou, Yannick Naudet
2016 J jnl
CoRR
Heinz Schmitz, Ioanna Lykourentzou
2016 A conf
CSCW
Ioanna Lykourentzou, Angeliki Antoniou, Yannick Naudet, Steven P. Dow
2016 conf
GCH
Ioanna Lykourentzou, Yannick Naudet, Luc Vandenabeele
2016 conf
CHI Extended Abstracts
Ioanna Lykourentzou, Shannon Wang, Robert E. Kraut, Steven P. Dow
2015 J jnl
CoRR
Ioanna Lykourentzou, Angeliki Antoniou, Yannick Naudet
2015 J jnl
Int. J. Virtual Communities Soc. Netw.
Yannick Naudet, Angeliki Antoniou, Ioanna Lykourentzou, Eric Tobias, Jenny Rompa, George Lepouras
2015 J jnl
VLDB J.
Senjuti Basu Roy, Ioanna Lykourentzou, Saravanan Thirumuruganathan, Sihem Amer-Yahia, Gautam Das
2014 J jnl
Ann. Math. Artif. Intell.
Víctor Codocedo, Ioanna Lykourentzou, Amedeo Napoli
2014 J jnl
CoRR
Senjuti Basu Roy, Ioanna Lykourentzou, Saravanan Thirumuruganathan, Sihem Amer-Yahia, Gautam Das
2014 conf
SMAP
Yannick Naudet, Ioanna Lykourentzou
2013 conf
DBCrowd
Senjuti Basu Roy, Ioanna Lykourentzou, Saravanan Thirumuruganathan, Sihem Amer-Yahia, Gautam Das
2013 J jnl
CoRR
Muhammad Imran, Ioanna Lykourentzou, Carlos Castillo
2013 conf
SMAP
Yannick Naudet, Ioanna Lykourentzou, Eric Tobias, Angeliki Antoniou, Jenny Rompa, George Lepouras
2013 B conf
ICCCI
Ioanna Lykourentzou, Dimitrios J. Vergados, Katerina Papadaki, Yannick Naudet
2013 J jnl
Int. J. Semantic Web Inf. Syst.
Ioanna Lykourentzou, Dimitrios J. Vergados, Yannick Naudet
2013 B conf
Intelligent Environments (Workshops)
Ioanna Lykourentzou, Xavier Claude, Yannick Naudet, Eric Tobias, Angeliki Antoniou, George Lepouras, Costas Vassilakis
2013 conf
GALA
Angeliki Antoniou, Ioanna Lykourentzou, Jenny Rompa, Eric Tobias, George Lepouras, Costas Vassilakis, Yannick Naudet
2013 conf
FCA4AI@IJCAI
Víctor Codocedo, Ioanna Lykourentzou, Hernán Astudillo, Amedeo Napoli
2012 conf
CLA
Víctor Codocedo, Ioanna Lykourentzou, Amedeo Napoli
2012 conf
SMAP
Ioanna Lykourentzou, Dimitrios J. Vergados
2012 conf
FCA4AI@ECAI
Víctor Codocedo, Ioanna Lykourentzou, Amedeo Napoli
2012 J jnl
Enterp. Inf. Syst.
Ioanna Lykourentzou, Foteini Dagka, Katerina Papadaki, Giorgos Lepouras, Costas Vassilakis
2011 B conf
CEC
Ioanna Lykourentzou, Katerina Papadaki, Apostolis Kalliakmanis, Younes Djaghloul, Thibaud Latour, Ioannis Charalabis, Epaminondas Kapetanios
2011 conf
DEIS
Ioanna Lykourentzou, Younes Djaghloul, Katerina Papadaki, Foteini Dagka, Thibaud Latour
2011 J jnl
IET Softw.
Vassilis Nikolopoulos, Giorgos Mpardis, Ioannis Giannoukos, Ioanna Lykourentzou, Vassilis Loumos
2010 C conf
MEDES
Dimitrios J. Vergados, Ioanna Lykourentzou, Epaminondas Kapetanios
2010 ch.
Semantics in Adaptive and Personalized Services
Ioannis Giannoukos, Ioanna Lykourentzou, Giorgos Mpardis, Vassilis Nikolopoulos, Vassilis Loumos, Eleftherios Kayafas
2010 J jnl
Inf. Sci.
Ioanna Lykourentzou, Katerina Papadaki, Dimitrios J. Vergados, Despina Polemi, Vassilis Loumos
2009 C conf
MEDES
Ioanna Lykourentzou, Dimitrios J. Vergados, Vassilis Loumos
2009 J jnl
Comput. Educ.
Ioanna Lykourentzou, Ioannis Giannoukos, Vassilis Nikolopoulos, Giorgos Mpardis, Vassilis Loumos
2009 J jnl
J. Assoc. Inf. Sci. Technol.
Ioanna Lykourentzou, Ioannis Giannoukos, Giorgos Mpardis, Vassilis Nikolopoulos, Vassilis Loumos
2008 conf
SMAP
Ioannis Giannoukos, Ioanna Lykourentzou, Giorgos Mpardis, Vassilis Nikolopoulos, Vassilis Loumos, Eleftherios Kayafas
2008 conf
PETRA
Ioannis Giannoukos, Ioanna Lykourentzou, Giorgos Mpardis, Vassilis Nikolopoulos, Vassilis Loumos, Eleftherios Kayafas
2007 Misc conf
AIAI
Ioanna Lykourentzou, Giorgos Mpardis, Vassilis Nikolopoulos, Vassilis Loumos
notebooks/redb-clickhouse-TEST.ipynb
← Index notebooks/redb-clickhouse-TEST.ipynb plaintext
Truncated preview: showing the first 16384 bytes out of 5988848 total.
{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Definitions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "import clickhouse_connect"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "ch_TEST_client = clickhouse_connect.get_client(host='e.rationaledge.io', port=443, username='default', password='werioubTGwvf0-dsbv_', database='redb', verify=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "ch_TEST_BETA_client = clickhouse_connect.get_client(host='k.rationaledge.io', port=443, username='default', password='werioubTGwvf0-dsbv_', database='default', verify=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<bound method HttpClient.close_connections of <clickhouse_connect.driver.httpclient.HttpClient object at 0x105fd64d0>>"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ch_TEST_BETA_client.close_connections"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<clickhouse_connect.driver.summary.QuerySummary at 0x11f900810>"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ch_TEST_BETA_client.command(\"\"\"\n",
    "RENAME DATABASE redb TO orig_redb;\n",
    "\"\"\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## DB Creation (schema 2025-08-02)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "ch_TEST_client.command(\"\"\"\n",
    "CREATE DATABASE IF NOT EXISTS redb;\n",
    "\"\"\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Define General Tables"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "### CREATE FULL REDB DATABASE\n",
    "def create_redb_with_all_tables(client):\n",
    "    client.command(\"\"\"\n",
    "        CREATE DATABASE IF NOT EXISTS redb\n",
    "    \"\"\")\n",
    "    create_all_general_tables(client)\n",
    "    create_all_pe_tables(client)\n",
    "\n",
    "#### CREATE FULL TABLES\n",
    "def create_all_general_tables(client):\n",
    "    create_basic_properties_dbtable(client)\n",
    "    create_hashes_dbtable(client)\n",
    "    create_capa_dbtable(client)\n",
    "    create_die_dbtable(client)\n",
    "    create_extra_findings_dbtable(client)\n",
    "\n",
    "\n",
    "##################################\n",
    "#### CREATE INDIVIDUAL TABLES ####\n",
    "##################################\n",
    "\n",
    "#### GENERAL TABLES ####\n",
    "# All tables have SETTINGS index_granularity = 8192\n",
    "def create_basic_properties_dbtable(client):\n",
    "    # Create samples_metadata table\n",
    "    client.command(\"\"\"\n",
    "        CREATE TABLE IF NOT EXISTS redb_basic_properties (\n",
    "            sha256 FixedString(64), -- primary key\n",
    "            md5 FixedString(32),\n",
    "            sha1 FixedString(40),\n",
    "            filename Nullable(String),\n",
    "            sample_name String,\n",
    "            filesize UInt64,\n",
    "            file_entropy Float64,\n",
    "            filetype LowCardinality(String),\n",
    "            filetype_mime LowCardinality(String),\n",
    "            filetype_magika LowCardinality(String),\n",
    "            analysis_date DateTime64(3, 'UTC'),\n",
    "        ) ENGINE = ReplacingMergeTree(analysis_date)\n",
    "        PRIMARY KEY (sha256)\n",
    "        ORDER BY (sha256)\n",
    "    \"\"\")\n",
    "\n",
    "def create_hashes_dbtable(client):\n",
    "    # Create hashes table\n",
    "    client.command(\"\"\"\n",
    "        CREATE TABLE IF NOT EXISTS redb_hashes (\n",
    "            sha256 FixedString(64), -- primary key\n",
    "            md5 FixedString(32),\n",
    "            sha1 FixedString(40),\n",
    "            ssdeep_hash Nullable(String),\n",
    "            tlsh_hash Nullable(String),\n",
    "            authentihash Nullable(String),\n",
    "            imphash Nullable(String),\n",
    "            impfuzzy Nullable(String),\n",
    "            typerefhash Nullable(String),\n",
    "            richhash Nullable(String),\n",
    "            richpe_hash Nullable(String),\n",
    "            richpv_hash Nullable(String),\n",
    "            richpv_hash_sorted Nullable(String),\n",
    "            dhash Nullable(String),\n",
    "            analysis_date DateTime64(3, 'UTC')\n",
    "        ) ENGINE = ReplacingMergeTree(analysis_date)\n",
    "        PRIMARY KEY (sha256)\n",
    "        ORDER BY (sha256)\n",
    "    \"\"\")\n",
    "\n",
    "def create_capa_dbtable(client):\n",
    "    # Create sample_capabilities table\n",
    "    client.command(\"\"\"\n",
    "        SET enable_json_type = 1;\n",
    "    \"\"\")\n",
    "    client.command(\"\"\"\n",
    "        -- Base table for CAPA analysis results\n",
    "        CREATE TABLE IF NOT EXISTS redb_capa (\n",
    "            sha256 FixedString(64),\n",
    "            md5 FixedString(32),\n",
    "            sha1 FixedString(40),\n",
    "            analysis_date DateTime64(3, 'UTC'),\n",
    "            -- Store full JSON dumps as strings for flexibility\n",
    "            capa_dump JSON CODEC(ZSTD(3)),\n",
    "            attack_dump JSON CODEC(ZSTD(3)),\n",
    "            mbc_dump JSON CODEC(ZSTD(3))\n",
    "        ) ENGINE = ReplacingMergeTree(analysis_date)\n",
    "        ORDER BY sha256;\n",
    "    \"\"\")\n",
    "\n",
    "    client.command(\"\"\"\n",
    "        -- Normalized table for capabilities and namespaces\n",
    "        CREATE TABLE IF NOT EXISTS redb_capa_capabilities (\n",
    "            sha256 FixedString(64),\n",
    "            md5 FixedString(32),\n",
    "            sha1 FixedString(40),\n",
    "            analysis_date DateTime64(3, 'UTC'),\n",
    "            namespace LowCardinality(String),\n",
    "            capability LowCardinality(String)\n",
    "        ) ENGINE = ReplacingMergeTree(analysis_date)\n",
    "        ORDER BY (sha256, namespace, capability);\n",
    "    \"\"\")\n",
    "\n",
    "    client.command(\"\"\"\n",
    "        -- Materialized view for capability statistics\n",
    "        CREATE MATERIALIZED VIEW IF NOT EXISTS redb_capa_capabilities_stats (\n",
    "            namespace LowCardinality(String),\n",
    "            capability LowCardinality(String),\n",
    "            samples_bitmap AggregateFunction(groupBitmap, UInt64),\n",
    "            occurrence_count UInt64\n",
    "        ) ENGINE = AggregatingMergeTree()\n",
    "        ORDER BY (namespace, capability)\n",
    "        AS SELECT\n",
    "            namespace,\n",
    "            capability,\n",
    "            groupBitmapState(cityHash64(sha256)) as samples_bitmap,\n",
    "            count() as occurrence_count\n",
    "        FROM redb_capa_capabilities\n",
    "        GROUP BY namespace, capability;\n",
    "    \"\"\")\n",
    "\n",
    "    client.command(\"\"\"\n",
    "        -- Normalized table for MITRE ATT&CK mappings\n",
    "        CREATE TABLE IF NOT EXISTS redb_capa_attack (\n",
    "            sha256 FixedString(64),\n",
    "            md5 FixedString(32),\n",
    "            sha1 FixedString(40),\n",
    "            analysis_date DateTime64(3, 'UTC'),\n",
    "            tactic LowCardinality(String),\n",
    "            technique LowCardinality(String),\n",
    "            technique_id LowCardinality(String)\n",
    "        ) ENGINE = ReplacingMergeTree(analysis_date)\n",
    "        ORDER BY (sha256, tactic, technique_id);\n",
    "    \"\"\")\n",
    "\n",
    "    client.command(\"\"\"\n",
    "        -- Materialized view for ATT&CK statistics\n",
    "        CREATE MATERIALIZED VIEW IF NOT EXISTS redb_capa_attack_stats (\n",
    "            tactic LowCardinality(String),\n",
    "            technique LowCardinality(String),\n",
    "            technique_id LowCardinality(String),\n",
    "            samples_bitmap AggregateFunction(groupBitmap, UInt64),\n",
    "            occurrence_count UInt64\n",
    "        ) ENGINE = AggregatingMergeTree()\n",
    "        ORDER BY (tactic, technique_id)\n",
    "        AS SELECT\n",
    "            tactic,\n",
    "            technique,\n",
    "            technique_id,\n",
    "            groupBitmapState(cityHash64(sha256)) as samples_bitmap,\n",
    "            count() as occurrence_count\n",
    "        FROM redb_capa_attack\n",
    "        GROUP BY tactic, technique, technique_id;\n",
    "    \"\"\")\n",
    "\n",
    "    client.command(\"\"\"\n",
    "        -- Normalized table for MBC mappings\n",
    "        CREATE TABLE IF NOT EXISTS redb_capa_mbc (\n",
    "            sha256 FixedString(64),\n",
    "            md5 FixedString(32),\n",
    "            sha1 FixedString(40),\n",
    "            analysis_date DateTime64(3, 'UTC'),\n",
    "            objective LowCardinality(String),\n",
    "            behavior LowCardinality(String),\n",
    "            behavior_id LowCardinality(String)\n",
    "        ) ENGINE = ReplacingMergeTree(analysis_date)\n",
    "        ORDER BY (sha256, objective, behavior_id);\n",
    "    \"\"\")\n",
    "\n",
    "    client.command(\"\"\"\n",
    "        -- Materialized view for MBC statistics\n",
    "        CREATE MATERIALIZED VIEW IF NOT EXISTS redb_capa_mbc_stats (\n",
    "            objective LowCardinality(String),\n",
    "            behavior LowCardinality(String),\n",
    "            behavior_id LowCardinality(String),\n",
    "            samples_bitmap AggregateFunction(groupBitmap, UInt64),\n",
    "            occurrence_count UInt64\n",
    "        ) ENGINE = AggregatingMergeTree()\n",
    "        ORDER BY (objective, behavior_id)\n",
    "        AS SELECT\n",
    "            objective,\n",
    "            behavior,\n",
    "            behavior_id,\n",
    "            groupBitmapState(cityHash64(sha256)) as samples_bitmap,\n",
    "            count() as occurrence_count\n",
    "        FROM redb_capa_mbc\n",
    "        GROUP BY objective, behavior, behavior_id;\n",
    "    \"\"\")\n",
    "\n",
    "def create_die_dbtable(client):\n",
    "    # Create sample_die table\n",
    "    client.command(\"\"\"\n",
    "        SET enable_json_type = 1;\n",
    "    \"\"\")\n",
    "    client.command(\"\"\"\n",
    "        CREATE TABLE IF NOT EXISTS redb_die (\n",
    "            sha256 FixedString(64),\n",
    "            md5 FixedString(32),\n",
    "            sha1 FixedString(40),\n",
    "            die_info JSON CODEC(ZSTD(3)),\n",
    "            analysis_date DateTime64(3, 'UTC')\n",
    "        ) ENGINE = ReplacingMergeTree(analysis_date)\n",
    "        PRIMARY KEY (sha256)\n",
    "        ORDER BY (sha256)\n",
    "    \"\"\")\n",
    "\n",
    "    client.command(\"\"\"\n",
    "        CREATE MATERIALIZED VIEW redb_die_mv\n",
    "        (\n",
    "            sha256 FixedString(64),\n",
    "            md5 FixedString(32),\n",
    "            sha1 FixedString(40),\n",
    "            analysis_date DateTime64(3, 'UTC'),\n",
    "            compiler LowCardinality(Nullable(String)),\n",
    "            compiler_full Nullable(String),\n",
    "            format LowCardinality(Nullable(String)),\n",
    "            format_full Nullable(String),\n",
    "            installer LowCardinality(Nullable(String)),\n",
    "            installer_full Nullable(String),\n",
    "            joiner LowCardinality(Nullable(String)),\n",
    "            joiner_full Nullable(String),\n",
    "            language LowCardinality(Nullable(String)),\n",
    "            language_full Nullable(String),\n",
    "            library LowCardinality(Nullable(String)),\n",
    "            library_full Nullable(String),\n",
    "            linker LowCardinality(Nullable(String)),\n",
    "            linker_full Nullable(String),\n",
    "            operation_system LowCardinality(Nullable(String)),\n",
    "            operation_system_full Nullable(String),\n",
    "            packer LowCardinality(Nullable(String)),\n",
    "            packer_full Nullable(String),\n",
    "            protector LowCardinality(Nullable(String)),\n",
    "            protector_full Nullable(String),\n",
    "            sfx LowCardinality(Nullable(String)),\n",
    "            sfx_full Nullable(String),\n",
    "            sign_tool LowCardinality(Nullable(String)),\n",
    "            sign_tool_full Nullable(String),\n",
    "            stub LowCardinality(Nullable(String)),\n",
    "            stub_full Nullable(String),\n",
    "            tool LowCardinality(Nullable(String)),\n",
    "            tool_full Nullable(String),   \n",
    "            -- overlay JSON CODEC(ZSTD(3)),\n",
    "            -- resource JSON CODEC(ZSTD(3)),\n",
    "            has_overlay UInt8,\n",
    "            has_resources UInt8,\n",
    "            is_packed UInt8\n",
    "        )\n",
    "        ENGINE = ReplacingMergeTree(analysis_date)\n",
    "        ORDER BY (sha256)\n",
    "        POPULATE\n",
    "        AS SELECT\n",
    "            sha256,\n",
    "            md5,\n",
    "            sha1,\n",
    "            analysis_date,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'compiler'), '') AS compiler,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'compiler(full)'), '') AS compiler_full,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'format'), '') AS format,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'format(full)'), '') AS format_full,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'installer'), '') AS installer,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'installer(full)'), '') AS installer_full,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'joiner'), '') AS joiner,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'joiner(full)'), '') AS joiner_full,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'language'), '') AS language,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'language(full)'), '') AS language_full,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'library'), '') AS library,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'library(full)'), '') AS library_full,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'linker'), '') AS linker,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'linker(full)'), '') AS linker_full,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'operation_system'), '') AS operation_system,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'operation_system(full)'), '') AS operation_system_full,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'packer'), '') AS packer,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'packer(full)'), '') AS packer_full,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'protector'), '') AS protector,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'protector(full)'), '') AS protector_full,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'sfx'), '') AS sfx,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'sfx(full)'), '') AS sfx_full,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'sign_tool'), '') AS sign_tool,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'sign_tool(full)'), '') AS sign_tool_full,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'stub'), '') AS stub,\n",
    "            nullIf(JSONExtractString(toString(die_info),