コード例 #1
0
        async Task ProcessDimensions(List <Data.Model.TrendingTopic> trendingTopicsToAdd)
        {
            var trendingTopics = trendingTopicsToAdd
                                 .Select(i => new TrendingTopic
            {
                IsPromoted = i.IsPromoted,
                Name       = Sanitize(i.Text)
            })
                                 .ToList();

            var geographies = trendingTopicsToAdd
                              .Select(i => i.Country)
                              .Distinct()
                              .Select(i => new Geography
            {
                Name = i
            }).ToList();

            await _dwhRepository.UpsertAsync(geographies);

            await _dwhRepository.UpsertAsync(trendingTopics);
        }
コード例 #2
0
        async Task ProcessDimensionsAsync(List <RAWMessage> message)
        {
            var channels           = message.Select(chat => GetChannelFrom(chat)).ToList();
            var conversationTracks = message.Select(chat => GetConversationTrackFrom(chat)).ToList();
            var languages          = message.Where(i => !string.IsNullOrWhiteSpace(i.SourceLanguage))
                                     .Select(chat => GetSourceLanguageFrom(chat)).ToList();
            var messageTypes = message.Select(chat => GetMessageTypeFrom(chat)).ToList();
            var userFroms    = message.Select(chat => GetUserFrom(chat)).ToList();
            var userTos      = message.Select(chat => GetUserTo(chat)).ToList();
            var requestWords = message.SelectMany(chat => chat.Request
                                                  .Split(new string[] { " ", ",", "." }, StringSplitOptions.RemoveEmptyEntries)
                                                  .Select(i => new Data.DWH.Model.Dimensions.SingleWord
            {
                Text = SaniziteWord(i)
            })
                                                  .ToList()).ToList();
            var responseWords = message.SelectMany(chat => chat.Response
                                                   .Split(new string[] { " ", ",", "." }, StringSplitOptions.RemoveEmptyEntries)
                                                   .Select(i => new Data.DWH.Model.Dimensions.SingleWord
            {
                Text = SaniziteWord(i)
            })
                                                   .ToList()).ToList();

            var wordsToUpsert = requestWords.Concat(responseWords).ToList();
            var usersToUpsert = userTos.Concat(userFroms).ToList();

            await _dwhRepository.UpsertAsync(channels);

            await _dwhRepository.UpsertAsync(conversationTracks);

            await _dwhRepository.UpsertAsync(languages);

            await _dwhRepository.UpsertAsync(messageTypes);

            await _dwhRepository.UpsertAsync(usersToUpsert);

            await _dwhRepository.UpsertAsync(wordsToUpsert);
        }