{"id":2347,"date":"2016-07-22T22:29:17","date_gmt":"2016-07-22T22:29:16","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2347"},"modified":"2024-09-12T02:27:09","modified_gmt":"2024-09-12T09:27:09","slug":"modelling-the-taxlot-process-with-n1ql","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/modelling-the-taxlot-process-with-n1ql\/","title":{"rendered":"Modelizaci\u00f3n del proceso de correspondencia de taxlotes en N1QL"},"content":{"rendered":"<h2><strong>Objeto de este art\u00edculo<\/strong><\/h2>\n<p>Este art\u00edculo enumera c\u00f3mo el proceso de comparaci\u00f3n de lotes fiscales puede ser modelado y ejecutado en Couchbase. Mientras que el modelo de datos en s\u00ed es algo subjetivo, este art\u00edculo s\u00f3lo va a enumerar las principales entidades involucradas en el modelo y la consulta N1QL que se puede utilizar para ejecutar el proceso de comparaci\u00f3n de lote de impuestos.<\/p>\n<p>Antes de sumergirnos en la soluci\u00f3n asumo que el lector es consciente o est\u00e1 dispuesto a invertir alg\u00fan tiempo familiariz\u00e1ndose con algunas de las estructuras en N1QL que son muy parecidas a SQL pero tiene algunas caracter\u00edsticas extra espec\u00edficas de JSON.<\/p>\n<ol>\n<li>La cl\u00e1usula NEST puede utilizarse contra matrices para transponer filas a columnas<\/li>\n<li>UNNEST se puede utilizar para desensamblar un array en filas<\/li>\n<\/ol>\n<p>Dado que los documentos JSON y N1QL son tan ricos en funciones, ser\u00eda muy \u00fatil disponer de una introducci\u00f3n r\u00e1pida a la sintaxis.<\/p>\n<p><a href=\"https:\/\/learn.couchbase.com\/store\/\">https:\/\/learn.couchbase.com\/store\/<\/a><\/p>\n<p><a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/4.1\/n1ql\/n1ql-language-reference\/index.html\">https:\/\/developer.couchbase.com\/documentation\/server\/4.1\/n1ql\/n1ql-language-reference\/index.html<\/a><\/p>\n<h2><strong>\u00bfQu\u00e9 es un lote fiscal? <\/strong><\/h2>\n<p>A\u00a0<strong>lote fiscal<\/strong>\u00a0es un registro de una operaci\u00f3n de apertura (por ejemplo, una compra o una venta al descubierto) en su cartera. Si una orden se ejecuta en varias partes, lo que se denomina ejecuciones parciales, los precios se promediar\u00e1n y se representar\u00e1n mediante un \u00fanico registro.\u00a0<strong>lote fiscal<\/strong>\u00a0n\u00famero. Puede tener varios\u00a0<strong>lotes fiscales<\/strong>\u00a0dentro de la posici\u00f3n global de un valor.<\/p>\n<p>Cada vez que adquiere un valor, la nueva posici\u00f3n es distinta y separada.\u00a0<em>lote fiscal<\/em>\u00a0- incluso si ya pose\u00eda acciones del mismo valor. (Un lote fiscal es un registro de una transacci\u00f3n y sus implicaciones fiscales, que incluye la fecha de compra y el n\u00famero de acciones).\u00a0<\/p>\n<p>A\u00a0<em>m\u00e9todo de identificaci\u00f3n del lote fiscal<\/em>\u00a0es la forma en que determinamos qu\u00e9 lotes fiscales deben venderse cuando usted tiene una posici\u00f3n consistente en m\u00faltiples compras realizadas en diferentes fechas a distintos precios, y usted realiza una operaci\u00f3n para vender s\u00f3lo una parte de la posici\u00f3n. La ley nos obliga a seguir y conservar esta informaci\u00f3n, y a comunicarle a usted y a Hacienda la base de coste y los ingresos.<\/p>\n<p>Su elecci\u00f3n del m\u00e9todo de identificaci\u00f3n fiscal del lote puede tener un impacto significativo en la cantidad de impuestos que puede pagar cuando vende un activo.<\/p>\n<h2><strong>Metodolog\u00edas de asignaci\u00f3n de lotes fiscales<\/strong><\/h2>\n<p>Las consultas que se muestran en este art\u00edculo mostrar\u00e1n s\u00f3lo el m\u00e9todo FIFO, ya que parece ser la metodolog\u00eda m\u00e1s popular, pero estoy enumerando las metodolog\u00edas de todos modos<\/p>\n<p>\u00a0<\/p>\n<p><strong>Primero en entrar, primero en salir (FIFO)<\/strong><\/p>\n<ol>\n<li>El m\u00e9todo por defecto para emparejar lotes fiscales. Las ventas se emparejan con las compras m\u00e1s antiguas secuencialmente. FIFO supone que los activos que permanecen en el inventario se emparejan con los activos comprados o producidos m\u00e1s recientemente. FIFO se utiliza siempre para futuros y opciones sobre futuros.<\/li>\n<\/ol>\n<p>\u00a0<\/p>\n<p><strong>\u00daltima entrada, primera salida (LIFO)<\/strong><\/p>\n<ol>\n<li>Cada venta se empareja con la compra m\u00e1s reciente posible. LIFO supone que una entidad vende, utiliza o enajena primero sus existencias m\u00e1s recientes.<\/li>\n<\/ol>\n<p style=\"margin-left:.75in\">\u00a0<\/p>\n<p><strong>Maximizar las ganancias a largo plazo<\/strong> - Las ventas se emparejan en funci\u00f3n del siguiente conjunto de prioridades:<\/p>\n<p style=\"margin-left:.5in\">1. Maximizar la ganancia por acci\u00f3n a largo plazo<\/p>\n<p style=\"margin-left:.5in\">2. Maximizar la ganancia por acci\u00f3n a corto plazo<\/p>\n<p style=\"margin-left:.5in\">3. Minimizar las p\u00e9rdidas a corto plazo por acci\u00f3n<\/p>\n<p style=\"margin-left:.5in\">4. Minimizar las p\u00e9rdidas por acci\u00f3n a largo plazo<\/p>\n<p style=\"margin-left:.5in\">\u00a0<\/p>\n<p><strong>Maximizar las p\u00e9rdidas a largo plazo<\/strong> - Las ventas se emparejan en funci\u00f3n del siguiente conjunto de prioridades:<\/p>\n<p style=\"margin-left:.5in\">1. Maximizar la p\u00e9rdida por acci\u00f3n a largo plazo<\/p>\n<p style=\"margin-left:.5in\">2. Maximizar las p\u00e9rdidas por acci\u00f3n a corto plazo<\/p>\n<p style=\"margin-left:.5in\">3. Minimizar la ganancia por acci\u00f3n a corto plazo<\/p>\n<p style=\"margin-left:.5in\">4. Minimizar la ganancia por acci\u00f3n a largo plazo<\/p>\n<p style=\"margin-left:.5in\">\u00a0<\/p>\n<p><strong>Maximizar las ganancias a corto plazo<\/strong> - Las ventas se emparejan en funci\u00f3n del siguiente conjunto de prioridades:<\/p>\n<p style=\"margin-left:.5in\">1. Maximizar la ganancia por acci\u00f3n a corto plazo<\/p>\n<p style=\"margin-left:.5in\">2. Maximizar la ganancia por acci\u00f3n a largo plazo<\/p>\n<p style=\"margin-left:.5in\">3. Minimizar las p\u00e9rdidas por acci\u00f3n a largo plazo<\/p>\n<p style=\"margin-left:.5in\">4. Minimizar las p\u00e9rdidas a corto plazo por acci\u00f3n<\/p>\n<p style=\"margin-left:.5in\">\u00a0<\/p>\n<p><strong>Maximizar las p\u00e9rdidas a corto plazo<\/strong> - Las ventas se emparejan en funci\u00f3n del siguiente conjunto de prioridades:<\/p>\n<p style=\"margin-left:.5in\">1. Maximizar las p\u00e9rdidas por acci\u00f3n a corto plazo<\/p>\n<p style=\"margin-left:.5in\">2. Maximizar las p\u00e9rdidas por acci\u00f3n a largo plazo<\/p>\n<p style=\"margin-left:.5in\">3. Minimizar la ganancia por acci\u00f3n a largo plazo<\/p>\n<p style=\"margin-left:.5in\">4. Minimizar la ganancia por acci\u00f3n a corto plazo<\/p>\n<p style=\"margin-left:.5in\">\u00a0<\/p>\n<p><strong>Coste m\u00e1s elevado<\/strong> - Busca maximizar las p\u00e9rdidas minimizando las ganancias. Las ventas se emparejan en funci\u00f3n<\/p>\n<p>en las siguientes normas:<\/p>\n<ul>\n<li>En primer lugar, examina todas las opciones posibles para hacer coincidir una operaci\u00f3n de cierre con un lote abierto.<\/li>\n<li>Si cualquiera de las coincidencias posibles da como resultado una p\u00e9rdida, el m\u00e9todo elige la coincidencia que<\/li>\n<\/ul>\n<p>resulta en la mayor p\u00e9rdida posible.<\/p>\n<ul>\n<li>Si no hay ninguna coincidencia posible que d\u00e9 como resultado una p\u00e9rdida, el m\u00e9todo elige la coincidencia que da como resultado<\/li>\n<\/ul>\n<p>en la menor ganancia posible.<\/p>\n<p>\u00a0<\/p>\n<p><strong>Lote espec\u00edfico<\/strong> - Le permite ver todos sus lotes fiscales y operaciones de cierre y, a continuaci\u00f3n, emparejar lotes manualmente.<\/p>\n<p>a las operaciones. Lote espec\u00edfico est\u00e1 disponible para hoy o una posici\u00f3n, pero no est\u00e1 disponible como el<\/p>\n<p>Cuenta M\u00e9todo de concordancia por defecto.<\/p>\n<p><strong style=\"font-size: 1.5em;line-height: 1.2em\">Utilizar un ejemplo vivo<\/strong><\/p>\n<p>Dado que las entradas tienen este aspecto<\/p>\n<div>\n<h2><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/july\/modelling-the-taxlot-process-with-n1ql\/tax1.png\" \/><\/h2>\n<\/div>\n<p>\u00a0<\/p>\n<p>\u00a0<\/p>\n<p>Las reglas de negocio establecen que Para minimizar los impuestos, cada transacci\u00f3n necesita ser emparejada con una transacci\u00f3n que ocurra despu\u00e9s de la transacci\u00f3n actual con un Tipo de Operaci\u00f3n opuesto, por ejemplo: B significa Compra y necesitar\u00e1 ser cerrada con una transacci\u00f3n que tenga el Tipo de Operaci\u00f3n opuesto en este caso S o VENTA y la Cantidad necesita ser igual o mayor que la Operaci\u00f3n que est\u00e1 siendo cerrada y tiene que tener una Fecha de Operaci\u00f3n mayor que la Fecha de Operaci\u00f3n de la operaci\u00f3n que est\u00e1 siendo cerrada.<\/p>\n<h2><strong>Entidades en un Lote Fiscal Espec\u00edfico de Coincidencia<\/strong><\/h2>\n<p>El supuesto es que esto est\u00e1 siendo ejecutado por un fondo de cobertura, empresa de servicios financieros que presta servicios a varios clientes, los clientes. Aunque el # de elementos que se capturan es mucho m\u00e1s amplio de lo que se enumera aqu\u00ed, mi intento es simplemente mostrar los elementos m\u00e1s importantes que participan en el proceso de Tax Lot Matching. Modelar esto en Couchbase puede tomar dos caminos<\/p>\n<ol>\n<li>Si est\u00e1 migrando desde una base de datos relacional y desea migrar r\u00e1pidamente algunos datos y luego adaptar la NoSQL para que modele su negocio, podr\u00eda crear un tipo de documento para cada entidad, es decir, Trader podr\u00eda ser una entidad, Instrument podr\u00eda ser otra entidad. Y usted puede incluir un elemento de tipo en cada documento que significar\u00eda el tipo de documento<\/li>\n<\/ol>\n<p>\u00a0<\/p>\n<p><strong>Un modelo relacional de ejemplo tendr\u00eda el siguiente aspecto,<\/strong><\/p>\n<p style=\"margin-left: 80px\"><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/july\/modelling-the-taxlot-process-with-n1ql\/taxlot-relational.png\" \/><\/p>\n<p>\u00a0<\/p>\n<p>\u00a0<\/p>\n<p><strong>Traduciendo esto literalmente para adaptarlo a un modelo documental las entidades quedar\u00edan as\u00ed<\/strong><\/p>\n<p>\u00a0<\/p>\n<p style=\"margin-left: 80px\"><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/july\/modelling-the-taxlot-process-with-n1ql\/taxlot-cb-relational.png\" \/><\/p>\n<p>\u00a0<\/p>\n<p>\u00a0<\/p>\n<p><strong>Ejemplo de modelo desnormalizado para la entidad TradeOrder, que es realmente donde tendr\u00e1 lugar el proceso TaxLot Matching.<\/strong><\/p>\n<p style=\"margin-left: 80px\"><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/july\/modelling-the-taxlot-process-with-n1ql\/tax2.png\" \/><\/p>\n<p>\n<strong>Ejecuci\u00f3n del proceso de lote fiscal mediante N1QL<\/strong><\/p>\n<p>Vamos a asumir el m\u00e9todo FIFO para TaxLot Matching. Si bien este proceso es muy adecuado para un lenguaje funcional, ya que necesita iterar a trav\u00e9s de las filas a trav\u00e9s de un orden predeterminado y necesita almacenar en cach\u00e9 el conjunto de resultados, quer\u00eda enumerar c\u00f3mo se puede ejecutar esto en N1QL debido a la riqueza y versatilidad del lenguaje.<\/p>\n<p>Pasos<\/p>\n<ol style=\"list-style-type:lower-alpha\">\n<li>Se supone que el lector est\u00e1 familiarizado con Couchbase y puede navegar por la consola de administraci\u00f3n.<\/li>\n<li>Cree un cubo, llam\u00e9moslo Taxlot_Demo<\/li>\n<li>Cree los documentos necesarios para disponer de un buen banco de pruebas<\/li>\n<li>A continuaci\u00f3n crearemos un bucket temporal que crear\u00e1 un array de todas las operaciones para un grupo de criterios de coincidencia. Suponiendo en este caso que s\u00f3lo queremos coincidir entre un determinado fondo, trader, broker, estrategia, instrumento y TradeType la imagen antes y despu\u00e9s se ve as\u00ed.<\/li>\n<\/ol>\n<p>\u00a0<\/p>\n<p style=\"margin-left: 80px\"><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/july\/modelling-the-taxlot-process-with-n1ql\/tax3.png\" \/><\/p>\n<p>\u00a0<\/p>\n<p style=\"margin-left: 80px\"><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/july\/modelling-the-taxlot-process-with-n1ql\/tax4.png\" \/><\/p>\n<p><span style=\"line-height: 1.6em\">5.Luego en una sola consulta obtendremos las coincidencias del lote fiscal, como la consulta alcanza para mucho la desglosar\u00e9 en pasos para facilitar la comprensi\u00f3n y listar\u00e9 la consulta completa al final. <\/span><strong style=\"line-height: 1.6em\"><em><u>El paso e es la \u00fanica consulta necesaria para ejecutar el proceso Taxlot en Couchbase, las vi\u00f1etas intermedias a,b, c, d s\u00f3lo enumeran la consulta mayor del paso e.<\/u><\/em><\/strong><\/p>\n<p>a.  La consulta m\u00e1s interna en el paso f crea una columna concatenada que puede compararse con la clave del paso 4. \u00a0<\/p>\n<p style=\"margin-left: 80px\"><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/july\/modelling-the-taxlot-process-with-n1ql\/tax5.png\" \/><\/p>\n<p>\u00a0<\/p>\n<p>\u00a0b.  A continuaci\u00f3n lo uno a la tabla materializada creada en el paso 4, el resultado de esta consulta ser\u00e1 cada operaci\u00f3n dentro de un criterio de agrupaci\u00f3n y la matriz de posibles coincidencias.<\/p>\n<p>\u00a0<\/p>\n<p style=\"margin-left: 80px\"><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/july\/modelling-the-taxlot-process-with-n1ql\/tax6.png\" \/><\/p>\n<p>c. A continuaci\u00f3n, UNNEST la matriz para crear un muchos a muchos relaci\u00f3n entre todas las filas dentro del grupo <strong><u>FundId,TraderId,BrokerId,Strategy,InstrumentId,LongShort\u00a0 <\/u><\/strong><\/p>\n<p style=\"margin-left: 80px\"><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/july\/modelling-the-taxlot-process-with-n1ql\/tax7.png\" \/><\/p>\n<p>\u00a0<\/p>\n<p>d. A continuaci\u00f3n, aplico las reglas de negocio para obtener una transacci\u00f3n firmada opuesta para encontrar una coincidencia de lote fiscal<\/p>\n<p style=\"margin-left:1.0in\"><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/july\/modelling-the-taxlot-process-with-n1ql\/tax7.png\" \/><\/p>\n<p>\n<span style=\"line-height: 1.6em\">e.\u00a0<\/span><span style=\"line-height: 1.6em\">Y, por \u00faltimo, devolver s\u00f3lo los registros que deben cerrarse.<\/span><\/p>\n<p style=\"margin-left: 80px\">\u00a0<\/p>\n<p style=\"margin-left:1.0in\"><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/july\/modelling-the-taxlot-process-with-n1ql\/tax8.png\" \/><\/p>\n<h2><strong>Resultados<\/strong><\/h2>\n<p>Por lo tanto, dado que su conjunto de datos tiene este aspecto, la operaci\u00f3n 1 se cierra con la operaci\u00f3n 2, ya que la operaci\u00f3n 1 es una operaci\u00f3n de COMPRA y coincide con la operaci\u00f3n 1, que es una operaci\u00f3n de VENTA. La operaci\u00f3n 3 no coincide, por lo que no se cerrar\u00e1.<\/p>\n<p>Del mismo modo, la Operaci\u00f3n 4 se cierra con la Operaci\u00f3n 5.<\/p>\n<p>Las operaciones 7 a 9 son todas de COMPRA y no tienen una operaci\u00f3n de VENTA correspondiente, por lo que no se cierran.<\/p>\n<p>\u00a0<img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/july\/modelling-the-taxlot-process-with-n1ql\/tax10.png\" \/><\/p>\n<p><span style=\"font-size: 2em;font-weight: bold;line-height: 1.2em\">Conclusi\u00f3n<\/span><\/p>\n<p>\u00a0<\/p>\n<p>El prop\u00f3sito de este art\u00edculo era enumerar c\u00f3mo se puede utilizar N1QL para resolver consultas muy complejas de acceso a datos. Si uno est\u00e1 acostumbrado a escribir funcionalidades complejas en SQL ahora se puede hacer muy f\u00e1cilmente en <strong>N1QL<\/strong>. Los ejemplos utilizados para este art\u00edculo se han simplificado a prop\u00f3sito para que sea f\u00e1cil de seguir, es posible que haya que a\u00f1adir un par de ajustes o uniones o consultas adicionales para llegar al resultado que su organizaci\u00f3n est\u00e1 buscando obtener.<\/p>\n<p>\u00a0<\/p>\n<p><strong>Para una mejor comprensi\u00f3n de la arquitectura de Couchbase Server consulte el siguiente enlace <\/strong><a href=\"https:\/\/www.couchbase.com\/blog\/es\/downloads\/?family=couchbase-server\"><strong>https:\/\/www.couchbase.com\/downloads\/?family=couchbase-server\/<\/strong><\/a><\/p>\n<p>\u00a0<\/p>\n<p><strong>Para una exposici\u00f3n m\u00e1s profunda de N1Ql y las construcciones que ofrece , consulte este enlace<\/strong><\/p>\n<p><a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/4.1\/n1ql\/index.html\"><strong>https:\/\/developer.couchbase.com\/documentation\/server\/4.1\/n1ql\/index.html<\/strong><\/a><\/p>\n<p>\u00a0<\/p>\n<p>\u00a0<\/p>\n<p><u>____________________________________________________________________________<\/u><\/p>\n<p>Este art\u00edculo ha sido escrito por Sandhya Krishnamurthy, Ingeniera Superior de Soluciones de <strong>Couchbase<\/strong>proveedor l\u00edder de bases de datos NoSQL.<\/p>\n<p>P\u00f3ngase en contacto con el autor en <a href=\"mailto:sandhya.krishnamurthy@couchbase.com\">sandhya.krishnamurthy@couchbase.com<\/a><\/p>\n<ul>\n<li>Hable con nosotros en los foros<\/li>\n<li>S\u00edguenos en <a href=\"https:\/\/twitter.com\/couchbasedev\">@couchbasedev<\/a> y <a href=\"https:\/\/twitter.com\/couchbase\">@couchbase<\/a><\/li>\n<\/ul>\n<p>\u00a0<\/p>\n<p>Visite los siguientes sitios para obtener m\u00e1s informaci\u00f3n sobre los productos Couchbase, descargas gratuitas de productos y formaci\u00f3n gratuita<\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/es\/\"><strong>www.couchbase.com<\/strong><\/a><\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/es\/downloads\/\"><strong>https:\/\/www.couchbase.com\/downloads\/<\/strong><\/a><\/p>\n<p><a href=\"https:\/\/learn.couchbase.com\/store\/\"><strong>https:\/\/learn.couchbase.com\/store\/<\/strong><\/a><\/p>\n<p>\u00a0<\/p>","protected":false},"excerpt":{"rendered":"<p>Purpose of this Article This article enumerates how the tax lot matching process can be modelled and the run in Couchbase. While the data model itself is a subjective thing, this article is going to only list the major entities [&hellip;]<\/p>","protected":false},"author":66,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1812],"tags":[],"ppma_author":[9038],"class_list":["post-2347","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-n1ql-query"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.7.1 (Yoast SEO v25.7) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Modelling the Taxlot Matching Process in N1QL - The Couchbase Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/es\/modelling-the-taxlot-process-with-n1ql\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Modelling the Taxlot Matching Process in N1QL\" \/>\n<meta property=\"og:description\" content=\"Purpose of this Article This article enumerates how the tax lot matching process can be modelled and the run in Couchbase. While the data model itself is a subjective thing, this article is going to only list the major entities [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/modelling-the-taxlot-process-with-n1ql\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2016-07-22T22:29:16+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-09-12T09:27:09+00:00\" \/>\n<meta name=\"author\" content=\"Sandhya Krishnamurthy, Senior Solutions Engineer, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Sandhya Krishnamurthy, Senior Solutions Engineer, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/modelling-the-taxlot-process-with-n1ql\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/modelling-the-taxlot-process-with-n1ql\/\"},\"author\":{\"name\":\"Sandhya Krishnamurthy, Senior Solutions Engineer, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/2d421ebd7ebf63e5491a9371909ab723\"},\"headline\":\"Modelling the Taxlot Matching Process in N1QL\",\"datePublished\":\"2016-07-22T22:29:16+00:00\",\"dateModified\":\"2024-09-12T09:27:09+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/modelling-the-taxlot-process-with-n1ql\/\"},\"wordCount\":1605,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/modelling-the-taxlot-process-with-n1ql\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"SQL++ \/ N1QL Query\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/modelling-the-taxlot-process-with-n1ql\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/modelling-the-taxlot-process-with-n1ql\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/modelling-the-taxlot-process-with-n1ql\/\",\"name\":\"Modelling the Taxlot Matching Process in N1QL - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/modelling-the-taxlot-process-with-n1ql\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/modelling-the-taxlot-process-with-n1ql\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2016-07-22T22:29:16+00:00\",\"dateModified\":\"2024-09-12T09:27:09+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/modelling-the-taxlot-process-with-n1ql\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/modelling-the-taxlot-process-with-n1ql\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/modelling-the-taxlot-process-with-n1ql\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/modelling-the-taxlot-process-with-n1ql\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Modelling the Taxlot Matching Process in N1QL\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/2d421ebd7ebf63e5491a9371909ab723\",\"name\":\"Sandhya Krishnamurthy, Senior Solutions Engineer, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/f4d7b0d0e3660d30cbd035db5621088e\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/b2f1ee16accb4f849269e443ba5b34bc512dd5d425b4399779ebbaf3d1154557?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/b2f1ee16accb4f849269e443ba5b34bc512dd5d425b4399779ebbaf3d1154557?s=96&d=mm&r=g\",\"caption\":\"Sandhya Krishnamurthy, Senior Solutions Engineer, Couchbase\"},\"description\":\"Sandhya Krishnamurthy is a technologist with a strong database development background and pre-sales experience. She is a part-time artist, part-time singer and full-time mom.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/es\/author\/sandhya-krishnamurthy\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Modelling the Taxlot Matching Process in N1QL - The Couchbase Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/es\/modelling-the-taxlot-process-with-n1ql\/","og_locale":"es_MX","og_type":"article","og_title":"Modelling the Taxlot Matching Process in N1QL","og_description":"Purpose of this Article This article enumerates how the tax lot matching process can be modelled and the run in Couchbase. While the data model itself is a subjective thing, this article is going to only list the major entities [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/es\/modelling-the-taxlot-process-with-n1ql\/","og_site_name":"The Couchbase Blog","article_published_time":"2016-07-22T22:29:16+00:00","article_modified_time":"2024-09-12T09:27:09+00:00","author":"Sandhya Krishnamurthy, Senior Solutions Engineer, Couchbase","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Sandhya Krishnamurthy, Senior Solutions Engineer, Couchbase","Est. reading time":"10 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/modelling-the-taxlot-process-with-n1ql\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/modelling-the-taxlot-process-with-n1ql\/"},"author":{"name":"Sandhya Krishnamurthy, Senior Solutions Engineer, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/2d421ebd7ebf63e5491a9371909ab723"},"headline":"Modelling the Taxlot Matching Process in N1QL","datePublished":"2016-07-22T22:29:16+00:00","dateModified":"2024-09-12T09:27:09+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/modelling-the-taxlot-process-with-n1ql\/"},"wordCount":1605,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/modelling-the-taxlot-process-with-n1ql\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["SQL++ \/ N1QL Query"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/modelling-the-taxlot-process-with-n1ql\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/modelling-the-taxlot-process-with-n1ql\/","url":"https:\/\/www.couchbase.com\/blog\/modelling-the-taxlot-process-with-n1ql\/","name":"Modelling the Taxlot Matching Process in N1QL - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/modelling-the-taxlot-process-with-n1ql\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/modelling-the-taxlot-process-with-n1ql\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2016-07-22T22:29:16+00:00","dateModified":"2024-09-12T09:27:09+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/modelling-the-taxlot-process-with-n1ql\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/modelling-the-taxlot-process-with-n1ql\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/modelling-the-taxlot-process-with-n1ql\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/modelling-the-taxlot-process-with-n1ql\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Modelling the Taxlot Matching Process in N1QL"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"El blog de Couchbase","description":"Couchbase, la base de datos NoSQL","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"El blog de Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/2d421ebd7ebf63e5491a9371909ab723","name":"Sandhya Krishnamurthy, Ingeniera Superior de Soluciones, Couchbase","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/f4d7b0d0e3660d30cbd035db5621088e","url":"https:\/\/secure.gravatar.com\/avatar\/b2f1ee16accb4f849269e443ba5b34bc512dd5d425b4399779ebbaf3d1154557?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b2f1ee16accb4f849269e443ba5b34bc512dd5d425b4399779ebbaf3d1154557?s=96&d=mm&r=g","caption":"Sandhya Krishnamurthy, Senior Solutions Engineer, Couchbase"},"description":"Sandhya Krishnamurthy es una tecn\u00f3loga con una s\u00f3lida formaci\u00f3n en desarrollo de bases de datos y experiencia en preventa. Es artista a tiempo parcial, cantante a tiempo parcial y madre a tiempo completo.","url":"https:\/\/www.couchbase.com\/blog\/es\/author\/sandhya-krishnamurthy\/"}]}},"authors":[{"term_id":9038,"user_id":66,"is_guest":0,"slug":"sandhya-krishnamurthy","display_name":"Sandhya Krishnamurthy, Senior Solutions Engineer, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/b155c5b9bb4bc33f88ee8b7a387044ccc4e23146d3058e66ea7c3a82dd1f51c0?s=96&d=mm&r=g","first_name":"Sandhya","last_name":"Krishnamurthy","user_url":"","author_category":"","description":"Sandhya Krishnamurthy es una tecn\u00f3loga con una s\u00f3lida formaci\u00f3n en desarrollo de bases de datos y experiencia en preventa. Es artista a tiempo parcial, cantante a tiempo parcial y madre a tiempo completo."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/2347","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/users\/66"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=2347"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/2347\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=2347"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=2347"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=2347"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=2347"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}