private string GetEmptyHierarchyValue(string columnName, EntitySchema entitySchema)
        {
            string message = new LocalizableString(UserConnection.ResourceStorage,
                                                   nameof(ForecastHierarchyRowDataRepository), "LocalizableStrings.EmptyHierarchyValue.Value");
            var entityColumn = entitySchema.GetSchemaColumnByPath(columnName);

            return(string.Format(message, entityColumn.Caption));
        }
        /// <summary>
        /// Save recommendation prediction result using model parameters.
        /// </summary>
        /// <param name="modelConfig">Model config.</param>
        /// <param name="predictionResult">Prediction result.</param>
        public virtual void SaveRecommendationPrediction(MLModelConfig modelConfig,
                                                         RecommendationResponse predictionResult)
        {
            EntitySchema       schema           = _userConnection.EntitySchemaManager.GetInstanceByUId(modelConfig.CFResultSchemaUId);
            var                entityCollection = new EntityCollection(_userConnection, schema);
            EntitySchemaColumn userColumn       = schema.GetSchemaColumnByPath(modelConfig.CFResultUserColumnName);
            EntitySchemaColumn itemColumn       = schema.GetSchemaColumnByPath(modelConfig.CFResultItemColumnName);
            EntitySchemaColumn valueColumn      = modelConfig.CFResultValueColumnName.IsNotNullOrWhiteSpace()
                                ? schema.FindSchemaColumnByPath(modelConfig.CFResultValueColumnName)
                                : null;
            EntitySchemaColumn modelColumn = modelConfig.CFResultModelColumnName.IsNotNullOrWhiteSpace()
                                ? schema.FindSchemaColumnByPath(modelConfig.CFResultModelColumnName)
                                : null;
            EntitySchemaColumn timestampColumn = modelConfig.CFResultTimestampColumnName.IsNotNullOrWhiteSpace()
                                ? schema.FindSchemaColumnByPath(modelConfig.CFResultTimestampColumnName)
                                : null;

            foreach (RecommendationOutput output in predictionResult.Outputs)
            {
                foreach (RecommendedItem item in output.Items)
                {
                    Entity entity = schema.CreateEntity(_userConnection);
                    entity.UseAdminRights = UseAdminRights;
                    entity.SetColumnValue("Id", Guid.NewGuid());
                    entity.SetColumnValue(userColumn, output.UserId);
                    entity.SetColumnValue(itemColumn, item.ItemId);
                    if (valueColumn != null)
                    {
                        entity.SetColumnValue(valueColumn, item.Score);
                    }
                    if (modelColumn != null)
                    {
                        entity.SetColumnValue(modelColumn, modelConfig.Id);
                    }
                    if (timestampColumn != null)
                    {
                        entity.SetColumnValue(timestampColumn, DateTime.UtcNow);
                    }
                    entityCollection.Add(entity);
                }
            }
            entityCollection.Save();
        }
示例#3
0
        /// <summary>
        /// Gets entity type column value.
        /// </summary>
        /// <param name="entitySchema"<see cref="EntitySchema"/> instance.</param>
        /// <param name="recordId">Record unique identifier.</param>
        /// <param name="typeColumnName">Entity type column name.</param>
        /// <returns>Return entity type column value.</returns>
        private Guid GetEntityTypeColumnValue(EntitySchema entitySchema, Guid recordId, string typeColumnName)
        {
            if (string.IsNullOrEmpty(typeColumnName))
            {
                return(Guid.Empty);
            }
            var typeColumn = entitySchema.GetSchemaColumnByPath(typeColumnName);
            var select     = new Select(UserConnection)
                             .Column(typeColumn.ColumnValueName)
                             .From(entitySchema.Name)
                             .Where(entitySchema.PrimaryColumn.Name).IsEqual(Column.Parameter(recordId)) as Select;

            try {
                return(select.ExecuteScalar <Guid>());
            } catch (Exception ex) {
                throw new NotFoundEntityException($"Entity not found with name = {entitySchema.Name}, recordId = {recordId}", ex);
            }
        }