具有 mongoDB(无 SQL 数据库)的 Apache 超集

Apache superset with mongoDB(NO SQL database)

我正在使用 MongoDB。我的任务是为数据构建仪表板图表。所以,我正在使用 Apache 超集。我将 MongoDB 连接到 apache drill,因为它不会直接连接超集。然后将 apache drill 连接到 Apachesueperset。我的 collection 是嵌套的。我如何处理此嵌套数据以用于仪表板 charts.My 数据如下所示

{
  "_id": {
    "$oid": "6229d3cfdbfc81a8777e4821"
  },
  "jobs": [
    {
      "job_ID": {
        "$oid": "62289ded8079821eb24760e0"
      },
      "New": false,
      "Expired": false
    },
    {
      "job_ID": {
        "$oid": "6228a252fb4554dd5c48202a"
      },
      "New": true,
      "Expired": true
    },
    {
      "job_ID": {
        "$oid": "622af1c391b290d34701af9f"
      },
      "New": true,
      "Expired": false
    }
  ],
  "email": "mani2090996@ail.com"
}

我在apache drill中查询如下

SELECT flat.fill FROM (SELECT FLATTEN(t.jobs) AS fill FROM mongo.recruitingdb.flatten.`Vendorjobs` t) flat WHERE flat.fill.New  = flase;

我遇到了解析错误 org.apache.drill.common.exceptions.UserRemoteException:解析错误:遇到“。”在第 1 行,第 123 列。

Superset 并不能很好地处理嵌套数据。但是 Drill 可以,因此您必须精心设计查询以生成可以可视化的列。
看这里:https://drill.apache.org/docs/json-data-model/ 在这里:https://drill.apache.org/docs/querying-complex-data-introduction/.

更新:

试试下面的查询。 FROM 子句可能不完全正确,但你应该从这里得到灵感。

请注意,您可以通过两种方式访问​​ Drill 中的地图:

  • tablename.mapname.field
  • mapname['field']

您可以对任何级别的嵌套执行此操作。

SELECT mongoTable.jobs.job_ID.`$oid` AS job_ID,
mongoTable.jobs.`New` AS new,
mongoTable.jobs.`Expired` AS expired
FROM 
(
   SELECT flatten(jobs) AS jobs
   FROM mongo.recruitingdb.flatten.`Vendorjobs` AS t1
   WHERE t1.jobs.New = false
) AS mongoTable