Ejemplo n.º 1
0
        public static string BuildColumnCommandText(TabularItems.Table table, DaxFilter daxFilter)
        {
            //TODO: problem is that column name = "Tran_YearMonthDay"
            // this needs to be Tran_Year and TranMonth
            TabularItems.Column column = null;

            string commandText = "";

            if (daxFilter.IsHierarchy)
            {
                for (int i = 0; i < daxFilter.ValueHierarchy.Length; i++)
                {
                    DaxColumn dc = daxFilter.ColumnNameHierarchy[i];
                    column = table.Columns.Find(dc.ColumnName);
                    if (!string.IsNullOrEmpty(commandText))
                    {
                        commandText += " && ";
                    }
                    commandText += BuildColumnCommandText(column, dc.TableName, dc.ColumnName,
                                                          daxFilter.ValueHierarchy[i]);
                }
            }
            else
            {
                column      = table.Columns.Find(daxFilter.ColumnName);
                commandText = BuildColumnCommandText(column, daxFilter.TableName, daxFilter.ColumnName, daxFilter.Value);
            }
            return(commandText);
        }
Ejemplo n.º 2
0
        public static string BuildColumnCommandText(TabularItems.Column column, string tableName, string columnName, string value)
        {
            if (column == null)
            {
                throw new InvalidOperationException(
                          string.Format("Column '{0} was not found in Tabular database", columnName));
            }

            string commandText;

            switch (column.DataType)
            {
            case SSAS.DataType.String:
                commandText = string.Format("{0}[{1}] = \"{2}\"", tableName, columnName, value);
                break;

            case SSAS.DataType.DateTime:
                var date     = Convert.ToDateTime(value);
                var dateExpr = string.Format("DATE({0},{1},{2})", date.Year, date.Month, date.Day);
                commandText = string.Format("{0}[{1}] = {2}", tableName, columnName, dateExpr);
                break;

            case SSAS.DataType.Int64:
            case SSAS.DataType.Decimal:
            case SSAS.DataType.Double:
                if (value == null)
                {
                    commandText = string.Format("{0}[{1}] = BLANK()", tableName, columnName);
                }
                else
                {
                    commandText = string.Format("{0}[{1}] = {2}", tableName, columnName, value);
                }
                break;

            case SSAS.DataType.Boolean:
                if (value.ToLower() == "true")
                {
                    commandText = string.Format("{0}[{1}] = {2}", tableName, columnName, "TRUE");
                }
                else
                {
                    commandText = string.Format("{0}[{1}] = {2}", tableName, columnName, "FALSE");
                }
                break;

            default:
                commandText = string.Format("{0}[{1}] = \"{2}\"", tableName, columnName, value);
                break;
            }
            return(commandText);
        }