def parse_record(self, raw, indx=0):
        """Parse raw data (that is retrieved by "request") and return pandas.DataFrame.
           Returns tuple (data, metadata)

           data - pandas.DataFrame with retrieved data.
           metadata - pandas.DataFrame with info about symbol, currency, frequency,
                      displayname and status of given request
        """
        suffix = '' if indx == 0 else '_%i' % (indx + 1)

        # Parsing status
        status = self.status(raw)

        # Testing if no errors
        if status['StatusType'] != 'Connected':
            if self.raise_on_error:
                raise DatastreamException('%s (error %i): %s --> "%s"' %
                                          (status['StatusType'], status['StatusCode'],
                                           status['StatusMessage'], status['Request']))
            else:
                self._test_status_and_warn()
                return pd.DataFrame(), {}

        record = self.extract_data(raw)
        get_field = lambda fldname: record[fldname + suffix]

        try:
            error = get_field('INSTERROR')
            if self.raise_on_error:
                raise DatastreamException('Error: %s --> "%s"' %
                                          (error, status['Request']))
            else:
                self.last_status['StatusMessage'] = error
                self.last_status['StatusType'] = 'INSTERROR'
                self._test_status_and_warn()
                metadata = {'Frequency': '', 'Currency': '', 'DisplayName': '',
                            'Symbol': '', 'Status': error}
        except KeyError:
            # Parsing metadata of the symbol
            # NB! currency might be returned as symbol thus "unicode" should be used
            metadata = {'Frequency': ustr(get_field('FREQUENCY')),
                        'Currency': ustr(get_field('CCY')),
                        'DisplayName': ustr(get_field('DISPNAME')),
                        'Symbol': ustr(get_field('SYMBOL')),
                        'Status': 'OK'}

        # Fields with data
        if suffix == '':
            fields = [ustr(x) for x in record if '_' not in x]
        else:
            fields = [ustr(x) for x in record if suffix in x]

        # Filter metadata
        meta_fields = ['CCY', 'DISPNAME', 'FREQUENCY', 'SYMBOL', 'DATE', 'INSTERROR']
        fields = [x.replace(suffix, '') for x in fields
                  if not any([y in x for y in meta_fields])]

        if 'DATE' + suffix in record:
            date = record['DATE' + suffix]
        elif 'DATE' in record:
            date = record['DATE']
        else:
            date = None

        if len(fields) > 0 and date is not None:
            # Check if we have a single value or a series
            if isinstance(date, dt.datetime):
                data = pd.DataFrame({x: [get_field(x)] for x in fields},
                                    index=[date])
            else:
                data = pd.DataFrame({x: get_field(x)[0] for x in fields},
                                    index=date[0])
        else:
            data = pd.DataFrame()

        metadata = pd.DataFrame(metadata, index=[indx])
        metadata = metadata[['Symbol', 'DisplayName', 'Currency', 'Frequency', 'Status']]
        return data, metadata
Parse raw data (that is retrieved by "request") and return pandas.DataFrame.
           Returns tuple (data, metadata)

           data - pandas.DataFrame with retrieved data.
           metadata - pandas.DataFrame with info about symbol, currency, frequency,
                      displayname and status of given request