Permite obtener un producto cartesiano entre dos tablas virtuales, es decir, dados dos tablas virtuales retorna otra tabla virtual donde cada fila contiene la unión de la columnas de la primera y la segunda.
1 vtable.product
Añade registros a una tabla virtual.
<vtable.product
group-columns='group-columns'
left-columns='left-columns'
right-columns='right-columns'
auto-sort='auto-sort'
>
<var1 /> !
<var2 /> !
</vtable.product>
Attributes | |||||
---|---|---|---|---|---|
Name | Type | Required | Default | Description | |
Agroup-columns | string | Lista de las columnas de la primera tabla virtual por las cuales se agrupa. | |||
Aleft-columns | string | Lista de las columnas de la primera tabla virtual por las cuales se realiza la unión con la segunda tabla virtual. | |||
Aright-columns | string | Lista de las columnas de la segunda tabla virtual por las cuales se realiza la unión con la primera tabla virtual. | |||
Aauto-sort | boolean | false | En caso de true se realiza una ordenación automatica por las columnas definidas en los atributos group-columns y left-columns. |
Arguments | |||||
---|---|---|---|---|---|
Name | Type | Required | Unique | Nullable | Description |
Evar1 | vtable | Tabla virtual principal. | |||
Evar2 | vtable | Tabla virtual secundaria. |
Returns | |
---|---|
Type | Description |
Vtable | Retorna una nueva vtable con el producto cartesiano de las dos tablas virtuales. |
Remarks
Los registros de la primera tabla virtual deben estar ordenadas como mininmo por las columnas especificadas en ls atributos group-columns y left-columns.
Example
Producto cartesiano de las columnas region, product de la primera tabla virtual con la columna date de la segunda tabla virtual.
Copy
<xsql-script name='vtable_product'> <body> <vtable name='v1_fact'> <column name='region' type='char' /> <column name='product' type='char' /> <column name='sales' type='decimal' /> <column name='date' type='date' /> </vtable> <vtable.insert name='v1_fact'> <matrix date-format='dd-MM-yyyy'> {"USA ","NIKE ", "12", "01-01-2012" } {"USA ","PUMA ", "20", "03-01-2012"} {"USA ","PUMA ", "50", "07-01-2012"} {"CAN ","REEBOK ", "15", "05-01-2012"} {"MEX ","REEBOK ", "15", "02-01-2012"} </matrix> </vtable.insert> <vtable name='v2_dim'> <column name='date' type='date' /> </vtable> <vtable.insert name='v2_dim'> <matrix date-format='dd-MM-yyyy'> { "01-01-2012" } { "02-01-2012" } { "03-01-2012" } { "04-01-2012" } { "05-01-2012" } { "06-01-2012" } { "07-01-2012" } { "08-01-2012" } { "09-01-2012" } { "10-01-2012" } { "11-01-2012" } { "12-01-2012" } { "13-01-2012" } { "14-01-2012" } { "15-01-2012" } </matrix> </vtable.insert> <set name='v3'> <vtable.product group-columns='region, product' left-columns='date' right-columns='date'> <v1_fact /> <v2_dim /> </vtable.product> </set> <println><v1_fact/></println> <!-- Result: +------+-------+-------+----------+ |region|product|sales |date | |char |char |decimal|date | +------+-------+-------+----------+ |USA |NIKE | 12|01-01-2012| |USA |PUMA | 20|03-01-2012| |USA |PUMA | 50|07-01-2012| |CAN |REEBOK | 15|05-01-2012| |MEX |REEBOK | 15|02-01-2012| +------+-------+-------+----------+ --> <println><v2_dim/></println> <!-- Result: +----------+ |date | |date | +----------+ |01-01-2012| |02-01-2012| |03-01-2012| |04-01-2012| |05-01-2012| |06-01-2012| |07-01-2012| |08-01-2012| |09-01-2012| |10-01-2012| |11-01-2012| |12-01-2012| |13-01-2012| |14-01-2012| |15-01-2012| +----------+ --> <println><v3/></println> <!-- Result: +------+-------+-------+----------+ |region|product|sales |date | |char |char |decimal|date | +------+-------+-------+----------+ |USA |PUMA | |01-01-2012| |USA |PUMA | |02-01-2012| |USA |PUMA | 20|03-01-2012| |USA |PUMA | |04-01-2012| |USA |PUMA | |05-01-2012| |USA |PUMA | |06-01-2012| |USA |PUMA | 50|07-01-2012| |USA |PUMA | |08-01-2012| |USA |PUMA | |09-01-2012| |USA |PUMA | |10-01-2012| |USA |PUMA | |11-01-2012| |USA |PUMA | |12-01-2012| |USA |PUMA | |13-01-2012| |USA |PUMA | |14-01-2012| |USA |PUMA | |15-01-2012| |CAN |REEBOK | |01-01-2012| |CAN |REEBOK | |02-01-2012| |CAN |REEBOK | |03-01-2012| |CAN |REEBOK | |04-01-2012| |CAN |REEBOK | 15|05-01-2012| |CAN |REEBOK | |06-01-2012| |CAN |REEBOK | |07-01-2012| |CAN |REEBOK | |08-01-2012| |CAN |REEBOK | |09-01-2012| |CAN |REEBOK | |10-01-2012| |CAN |REEBOK | |11-01-2012| |CAN |REEBOK | |12-01-2012| |CAN |REEBOK | |13-01-2012| |CAN |REEBOK | |14-01-2012| |CAN |REEBOK | |15-01-2012| |MEX |REEBOK | |01-01-2012| |MEX |REEBOK | 15|02-01-2012| |MEX |REEBOK | |03-01-2012| |MEX |REEBOK | |04-01-2012| |MEX |REEBOK | |05-01-2012| |MEX |REEBOK | |06-01-2012| |MEX |REEBOK | |07-01-2012| |MEX |REEBOK | |08-01-2012| |MEX |REEBOK | |09-01-2012| |MEX |REEBOK | |10-01-2012| |MEX |REEBOK | |11-01-2012| |MEX |REEBOK | |12-01-2012| |MEX |REEBOK | |13-01-2012| |MEX |REEBOK | |14-01-2012| |MEX |REEBOK | |15-01-2012| +------+-------+-------+----------+ --> </body> </xsql-script>