Не можете обработать данные с помощью Azure Stream Analytics? - PullRequest
0 голосов
/ 24 сентября 2019

Я отправляю данные в концентратор событий из функции azure со следующим кодом.

module.exports = async function (context, myTimer) {
    const {  EventHubClient, EventData, EventPosition, OnMessage, OnError, MessagingError } = require("@azure/event-hubs");
    const connectionString = "Endpoint=connection string"
    const eventHubsName = "eventhub_2"
    var axios = require('axios')

    const client = EventHubClient.createFromConnectionString(connectionString, eventHubsName);
    context.log('sssaaa')
    var response = await axios.get('https://nseindia.com/live_market/dynaContent/live_watch/stock_watch/nifty500StockWatch.json')
    await client.send(response['data']['data'])
    context.log('message sent')

};

Я могу отправить данные, но когда я обрабатываю их с помощью потоковой аналитики Azure, яПолучение следующего

error:
No events found for 'NSEStockInput'.
Start time: Tuesday, September 24, 2019, 12:30:18 PM
End time: Tuesday, September 24, 2019, 12:33:18 PM
Last time arrival: Tuesday, September 24, 2019, 12:33:18 PM
Diagnostics: Source '<unknown_location>' had 1 occurrences of kind 'InputDeserializerError.InvalidData' between processing times '2019-09-24T07:03:22.9492042Z' and '2019-09-24T07:03:22.9492042Z'. Json input stream should either be an array of objects or line separated objects. Found token type: Null

'InputDeserializerError.InvalidData' означает здесь, что он сериализует данные, поэтому мне нужно отправлять данные десериализованным способом, но client.send или client.batch могут принимать только данные, типизированные объектом JSON.Это образец JSON, который отправляется в концентратор событий.

[ { symbol: 'ALLCARGO',
    open: '106.90',
    high: '114.90',
    low: '106.70',
    ltP: '109.75',
    ptsC: '8.60',
    per: '8.50',
    trdVol: '8.20',
    trdVolM: '0.82',
    ntP: '9.03',
    mVal: '0.09',
    wkhi: '124.45',
    wklo: '87.15',
    wkhicm_adj: '357.70',
    wklocm_adj: '102.00',
    xDt: '31-DEC-2999',
    cAct: '-',
    previousClose: '101.15',
    dayEndClose: '-',
    iislPtsChange: '8.60',
    iislPercChange: '8.50',
    yPC: '3.98',
    mPC: '19.55' },
  { symbol: 'IDBI',
    open: '30.80',
    high: '33.80',
    low: '30.40',
    ltP: '33.25',
    ptsC: '2.30',
    per: '7.43',
    trdVol: '132.04',
    trdVolM: '13.20',
    ntP: '43.01',
    mVal: '0.43',
    wkhi: '65.75',
    wklo: '23.65',
    wkhicm_adj: '116.40',
    wklocm_adj: '52.90',
    xDt: '09-AUG-2019',
    cAct: 'ANNUAL GENERAL MEETING',
    previousClose: '30.95',
    dayEndClose: '-',
    iislPtsChange: '2.30',
    iislPercChange: '7.43',
    yPC: '-36.91',
    mPC: '18.54' }]

error message screen shot

stream analytics input

Это прекрасно работает, когда я использую приведенный ниже код с концентратором событий как out bind в функции azure module.exports = асинхронная функция (context, myTimer) {var axios = require ('axios') var response = await axios.get ('https://nseindia.com/live_market/dynaContent/live_watch/stock_watch/nifty500StockWatch.json') // var sendBatchData = {body: response ['data'] ['data'], partitionKey: "pk12345"} // context.log (response ['data'] ['data']) //sample = [{'name': 'saran'}, {'name': 'jeeva'}] return JSON.stringify (response ['data'] ['data'])

};

...