微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何解决错误 cubejs 'From members are not found ... 请确保连接字段引用维度而不是列'

如何解决如何解决错误 cubejs 'From members are not found ... 请确保连接字段引用维度而不是列'

我有错误:在 [] 中找不到来自成员的加入 {"join":{"relationship":"belongsTo"},"from":"Conversations","to" :"Advisers","originalFrom":"Conversations","originalTo":"Advisers"}。请确保连接字段引用维度而不是列。休闲模式与休闲模式。

cube(`Conversations`,{
  sql: `
    select
      appUUID,roomId,sessionId,count(1) Messages,min(channel) channel,min(createdAt) FirstMessage,max(createdAt) LastMessage,max(case when type='status' and status='ended' then \`payload.selectedOption\` else '' end) EndReason,max(
        case
          when type='status' and status='ended' and sender='bot' then 'Robot'
          when type='status' and status='ended' and sender <> 'bot' then
            (
              \`advisorId\`
            )
          else ''
        end
      ) EndAdvisor,max(userGuest) userGuest,max(userGuestLocal) userGuestLocal
    from
      \`keybe-conversations\`.messages
    where
      ${Security_CONTEXT.appUUID.filter(
        'appUUID'
      )}
    group by
      appUUID,sessionId
  `,joins:{
    Advisers: {
      relationship: 'belongsTo',sql: ` concat(${CUBE}.\`appUUID\`,'-',${CUBE}.\`EndAdvisor\`) = concat(${Advisers}.\`appUUID\`,${Advisers}.\`userId\`)`
    }
  },measures: {
    count: {
      type: `count`,drillMembers: [userGuest,userGuestLocal,channel]
    },totalMessages: {
      type: `sum`,sql: `Messages`,title: 'Total Messages'
    },ended: {
      type: `count`,filters: [
        {
          sql: `${CUBE}.EndReason <> ''`
        }
      ],notEnded: {
      type: `count`,filters: [
        {
          sql: `${CUBE}.EndReason = ''`
        }
      ],channel]
    }
  },dimensions: {
    pk: {
      sql: `concat(${CUBE}.\`appUUID\`,${CUBE}.\`roomId\`,${CUBE}.\`sessionId\`)`,type: `string`,primaryKey: true
    },channel: {
      sql: `channel`,type: `string`
    },appUUID: {
      sql: `${CUBE}.\`appUUID\``,title: `AppUUID`
    },roomId: {
      sql: `${CUBE}.\`roomId\``,title: `RoomId`
    },sessionId: {
      sql: `${CUBE}.\`sessionId\``,title: `Session Id`
    },endReason: {
      sql: `${CUBE}.\`EndReason\``,title: `End Reason`
    },endAdvisor: {
      sql: `${CUBE}.\`EndAdvisor\``,title: `End Advisor`
    },firstMessage: {
      sql: `${CUBE}.\`FirstMessage\``,type: `time`,title: `First Message`
    },lastMessage: {
      sql: `DATE_FORMAT(${CUBE}.\`LastMessage\`,'%Y-%m-%d %H:%m:%s')`,title: `Last Message`
    },initialMessage: {
      sql: `DATE_FORMAT(${CUBE}.\`FirstMessage\`,title: `Initial Message`
    },userGuest: {
      sql: `${CUBE}.\`userGuest\``,title: `UserGuest`
    },userGuestLocal: {
      sql: `${CUBE}.\`userGuestLocal\``,title: `UserGuestLocal`
    },takenTime: {
      sql: `TIMESTAMPDIFF(HOUR,DATE_FORMAT(${CUBE}.\`FirstMessage\`,'%Y-%m-%d %H:%m:%s'),DATE_FORMAT(${CUBE}.\`LastMessage\`,'%Y-%m-%d %H:%m:%s'))`,type: 'string',title: 'TakenTime'
    }
  },preAggregations: {
    // main: {
    //   type: `originalsql`,//   external: true
    // },ConversationsRollup: {
      type: `rollup`,measureReferences: [Conversations.count],dimensionReferences: [Conversations.appUUID,Conversations.channel,Conversations.endAdvisor,Conversations.firstMessage,Conversations.lastMessage,Conversations.userGuest,Conversations.userGuestLocal],external: true
    },joinedWithAdvisersRollup: {
      type: `rollupJoin`,dimensionReferences: [Advisers.name],rollupReferences: [Advisers.AdvisersRollup,Conversations.ConversationsRollup],external: true,}
  },segments: {
    humanAdvisor: {
      sql: `${CUBE}.EndAdvisor <> 'Robot' AND ${CUBE}.EndAdvisor <> ''`,},robotAdvisor: {
      sql: `${CUBE}.EndAdvisor = "Robot"`,withoutAdvisor: {
      sql: `${CUBE}.EndAdvisor = ''`,}
  }
})

cube(`Advisers`,{
  sql: `
    SELECT * FROM \`keybe-conversations\`.advisers where
    ${Security_CONTEXT.appUUID.filter(
      'appUUID'
    )}
  `,joins: {
    Rooms: {
      relationship: 'hasMany',sql: `concat(${CUBE}.\`appUUID\`,${CUBE}.\`userId\`) = concat(${Rooms}.\`appUUID\`,${Rooms}.\`advisorId\`)`
    },Conversations: {
      relationship: 'hasMany',${CUBE}.\`userId\`) = concat(${Conversations}.\`appUUID\`,${Conversations}.\`EndAdvisor\`)`
    }
  },drillMembers: [name,email,userId]
    }
  },${CUBE}.\`userId\`)`,appUUID: {
      sql:`${CUBE}.\`appUUID\``,status: {
      sql: `${CUBE}.\`status\``,title: `Status`
    },name: {
      sql:`${CUBE}.\`name\``,title: `Name`
    },email: {
      sql:`${CUBE}.\`email\``,title: `Email`
    },phone: {
      sql:`concat(COALESCE(${CUBE}.\`countryCode\`,'NO NULO-'),${CUBE}.\`phone\`)`,title: `Phone`
    },userId: {
      sql:`${CUBE}.\`userId\``,shown: false
    }
  },preAggregations: {
    AdvisersRollup: {
      type: 'rollup',measureReferences:[Advisers.count],dimensionReferences:[Advisers.status,Advisers.name,Advisers.email,Advisers.phone,Advisers.appUUID],external: true
    }
  }
})

先谢谢你。

解决方法

您能否尝试将 Conversation 多维数据集中的联接更新为如下所示:

  joins:{
    Advisers: {
      relationship: 'belongsTo',sql: ` concat(${CUBE.appUUID},'-',${CUBE.endAdvisor}) = concat(${Advisers.appUUID},${Advisers.userId})`
    }
  },

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。