Columnas de referencia extraídas del análisis Filtro de datos seleccione dóndeQuiero usar una interfaz de filtro de datos para un uso diferente.
Luego necesito analizar la cláusula "seleccionar dónde" y usar la información allí.
Puedo analizar la cláusula Where e identificar la columna diferente en la expresión
pero no hacer referencia a ellos
DFClause=Currentdatafilter << get where clause();<BR />SelectInnerExpr=Arg(parse(DFClause),1);<BR />// let assume for a second this will always return an expression of this type to simplify the example <BR />SelectInnerExpr= expr(:study_owner == "name" & :Is Electr. == 1);<BR /><BR />//so i can parse it with a simple for loop
for(iA=1,iA<=NArg(SelectInnerExpr),iA++,
TestColExp=Arg(Arg(SelectInnerExpr,iA),1); // here i can get the column as i need but as :ColumName
TestCol=eval(TestColExp); // so this does not really retun the column reference<BR /> colname= TestCol<< Get Name;
);
sin embargo, obtengo la columna como: ColumName
¿Cómo obtengo ahora la referencia de la columna para luego continuar con el script?
nombre de columna = TestCol << Obtener nombre
ventanasRe: Columnas de referencia extraídas del análisis Filtro de datos seleccione dónde¿Es esto lo que estás buscando? Modifiqué su ciclo For() para poner el primer bit en un char, luego saqué y analicé la primera palabra. Guión completo adjunto. También hay formas más elegantes de hacer esto que otros pueden agregar.
For( iA = 1, iA <= N Arg( SelectInnerExpr ), iA++,
TestColExp = Char( Arg( Arg( SelectInnerExpr, iA ), 1 ) ); // put all into a char()
TestCol = Parse( Word( 1, TestColExp ) ); //now returns test col
);
Re: Referenciar columnas extraídas del análisis de Datafilter select whereEsto también parece funcionar, pero en el caso no tan inusual de tener un paréntesis abierto en el nombre de la columna, fallará. Tendría que realizar una trampa para eso si es un problema.
Names Default To Here( 1 );
dt = open("$Sample_Data\Car Physical Data.jmp");
gb = dt << Graph Builder(
Size( 526, 668 ),
Show Control Panel( 0 ),
Variables( X( :Turning Circle ), Y( :Horsepower ) ),
Elements( Points( X, Y, Legend( 5 ) ), Smoother( X, Y, Legend( 6 ) ) ),
Local Data Filter(
Show Histograms and Bars( 0 ),
Add Filter( columns( :Country, :Type ), Display( :Type, N Items( 5 ) ) ),
Add Filter( columns( :Weight ), Display( :Weight, Height( 20 ) ) )
)
);
<BR /><BR /><BR /><BR />//////////// processing here
ob = (report(gb) << parent)[outlinebox(1)];
lis = (ob << xpath( "//TabPageBox" )) << get title;
colnames = Transform Each( {v, i}, lis[2 :: (N Items( lis ) - 1)],
Trim Whitespace( Items( [1 1], v, "(" )[1] )
);