(l=e.charCodeAt(n))||l>57){k=(46===l?a+e.slice(n+1):e.slice(n))+k,e=e.slice(0,n);break}}g&&!h&&(e=t(e,1/0));var E=d.length+e.length+k.length,C=E>1)+d+e+k+C.slice(E);break;default:e=C+d+e+k}return i(e)}return v=void 0===v?6:/[gprs]/.test(y)?Math.max(1,Math.min(21,v)):Math.max(0,Math.min(20,v)),k.toString=function(){return e+""},k}return{format:s,formatPrefix:function(e,t){var n=s(((e=hn(e)).type="f",e)),r=3*Math.max(-8,Math.min(8,Math.floor(function(e){return(e=mn(Math.abs(e)))?e[1]:NaN}(t)/3))),a=Math.pow(10,-r),i=xn[8+r/3];return function(e){return n(a*e)+i}}}}({decimal:".",thousands:",",grouping:[3],currency:["$",""],minus:"-"})).format,vn.formatPrefix;var kn=new Date,Tn=new Date;function En(e,t,n,r){function a(t){return e(t=0===arguments.length?new Date:new Date(+t)),t}return a.floor=function(t){return e(t=new Date(+t)),t},a.ceil=function(n){return e(n=new Date(n-1)),t(n,1),e(n),n},a.round=function(e){var t=a(e),n=a.ceil(e);return e-t0))return o;do{o.push(l=new Date(+n)),t(n,i),e(n)}while(l=t)for(;e(t),!n(t);)t.setTime(t-1)}),(function(e,r){if(e>=e)if(r<0)for(;++r<=0;)for(;t(e,-1),!n(e););else for(;--r>=0;)for(;t(e,1),!n(e););}))},n&&(a.count=function(t,r){return kn.setTime(+t),Tn.setTime(+r),e(kn),e(Tn),Math.floor(n(kn,Tn))},a.every=function(e){return e=Math.floor(e),isFinite(e)&&e>0?e>1?a.filter(r?function(t){return r(t)%e==0}:function(t){return a.count(0,t)%e==0}):a:null}),a}var Cn=En((function(e){e.setMonth(0,1),e.setHours(0,0,0,0)}),(function(e,t){e.setFullYear(e.getFullYear()+t)}),(function(e,t){return t.getFullYear()-e.getFullYear()}),(function(e){return e.getFullYear()}));Cn.every=function(e){return isFinite(e=Math.floor(e))&&e>0?En((function(t){t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)}),(function(t,n){t.setFullYear(t.getFullYear()+n*e)})):null};var Sn=Cn,Mn=((Cn.range,En((function(e){e.setDate(1),e.setHours(0,0,0,0)}),(function(e,t){e.setMonth(e.getMonth()+t)}),(function(e,t){return t.getMonth()-e.getMonth()+12*(t.getFullYear()-e.getFullYear())}),(function(e){return e.getMonth()}))).range,6e4),Pn=6048e5;function An(e){return En((function(t){t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)}),(function(e,t){e.setDate(e.getDate()+7*t)}),(function(e,t){return(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*Mn)/Pn}))}var Nn=An(0),On=An(1),Rn=An(2),zn=An(3),Ln=An(4),Dn=An(5),Fn=An(6),In=(Nn.range,On.range,Rn.range,zn.range,Ln.range,Dn.range,Fn.range,En((function(e){e.setHours(0,0,0,0)}),(function(e,t){e.setDate(e.getDate()+t)}),(function(e,t){return(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*Mn)/864e5}),(function(e){return e.getDate()-1}))),Un=In,$n=((((In.range,En((function(e){e.setTime(e-e.getMilliseconds()-1e3*e.getSeconds()-e.getMinutes()*Mn)}),(function(e,t){e.setTime(+e+36e5*t)}),(function(e,t){return(t-e)/36e5}),(function(e){return e.getHours()}))).range,En((function(e){e.setTime(e-e.getMilliseconds()-1e3*e.getSeconds())}),(function(e,t){e.setTime(+e+t*Mn)}),(function(e,t){return(t-e)/Mn}),(function(e){return e.getMinutes()}))).range,En((function(e){e.setTime(e-e.getMilliseconds())}),(function(e,t){e.setTime(+e+1e3*t)}),(function(e,t){return(t-e)/1e3}),(function(e){return e.getUTCSeconds()}))).range,En((function(){}),(function(e,t){e.setTime(+e+t)}),(function(e,t){return t-e})));function Bn(e){return En((function(t){t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)}),(function(e,t){e.setUTCDate(e.getUTCDate()+7*t)}),(function(e,t){return(t-e)/Pn}))}$n.every=function(e){return e=Math.floor(e),isFinite(e)&&e>0?e>1?En((function(t){t.setTime(Math.floor(t/e)*e)}),(function(t,n){t.setTime(+t+n*e)}),(function(t,n){return(n-t)/e})):$n:null},$n.range;var Hn=Bn(0),jn=Bn(1),Vn=Bn(2),Wn=Bn(3),qn=Bn(4),Yn=Bn(5),Qn=Bn(6),Xn=(Hn.range,jn.range,Vn.range,Wn.range,qn.range,Yn.range,Qn.range,En((function(e){e.setUTCHours(0,0,0,0)}),(function(e,t){e.setUTCDate(e.getUTCDate()+t)}),(function(e,t){return(t-e)/864e5}),(function(e){return e.getUTCDate()-1}))),Kn=Xn,Gn=(Xn.range,En((function(e){e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),(function(e,t){e.setUTCFullYear(e.getUTCFullYear()+t)}),(function(e,t){return t.getUTCFullYear()-e.getUTCFullYear()}),(function(e){return e.getUTCFullYear()})));Gn.every=function(e){return isFinite(e=Math.floor(e))&&e>0?En((function(t){t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),(function(t,n){t.setUTCFullYear(t.getUTCFullYear()+n*e)})):null};var Zn=Gn;function Jn(e){if(0<=e.y&&e.y<100){var t=new Date(-1,e.m,e.d,e.H,e.M,e.S,e.L);return t.setFullYear(e.y),t}return new Date(e.y,e.m,e.d,e.H,e.M,e.S,e.L)}function er(e){if(0<=e.y&&e.y<100){var t=new Date(Date.UTC(-1,e.m,e.d,e.H,e.M,e.S,e.L));return t.setUTCFullYear(e.y),t}return new Date(Date.UTC(e.y,e.m,e.d,e.H,e.M,e.S,e.L))}function tr(e,t,n){return{y:e,m:t,d:n,H:0,M:0,S:0,L:0}}Gn.range;var nr,rr={"-":"",_:" ",0:"0"},ar=/^\s*\d+/,ir=/^%/,lr=/[\\^$*+?|[\]().{}]/g;function or(e,t,n){var r=e<0?"-":"",a=(r?-e:e)+"",i=a.length;return r+(i68?1900:2e3),n+r[0].length):-1}function yr(e,t,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(n,n+6));return r?(e.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function br(e,t,n){var r=ar.exec(t.slice(n,n+1));return r?(e.q=3*r[0]-3,n+r[0].length):-1}function _r(e,t,n){var r=ar.exec(t.slice(n,n+2));return r?(e.m=r[0]-1,n+r[0].length):-1}function wr(e,t,n){var r=ar.exec(t.slice(n,n+2));return r?(e.d=+r[0],n+r[0].length):-1}function xr(e,t,n){var r=ar.exec(t.slice(n,n+3));return r?(e.m=0,e.d=+r[0],n+r[0].length):-1}function kr(e,t,n){var r=ar.exec(t.slice(n,n+2));return r?(e.H=+r[0],n+r[0].length):-1}function Tr(e,t,n){var r=ar.exec(t.slice(n,n+2));return r?(e.M=+r[0],n+r[0].length):-1}function Er(e,t,n){var r=ar.exec(t.slice(n,n+2));return r?(e.S=+r[0],n+r[0].length):-1}function Cr(e,t,n){var r=ar.exec(t.slice(n,n+3));return r?(e.L=+r[0],n+r[0].length):-1}function Sr(e,t,n){var r=ar.exec(t.slice(n,n+6));return r?(e.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function Mr(e,t,n){var r=ir.exec(t.slice(n,n+1));return r?n+r[0].length:-1}function Pr(e,t,n){var r=ar.exec(t.slice(n));return r?(e.Q=+r[0],n+r[0].length):-1}function Ar(e,t,n){var r=ar.exec(t.slice(n));return r?(e.s=+r[0],n+r[0].length):-1}function Nr(e,t){return or(e.getDate(),t,2)}function Or(e,t){return or(e.getHours(),t,2)}function Rr(e,t){return or(e.getHours()%12||12,t,2)}function zr(e,t){return or(1+Un.count(Sn(e),e),t,3)}function Lr(e,t){return or(e.getMilliseconds(),t,3)}function Dr(e,t){return Lr(e,t)+"000"}function Fr(e,t){return or(e.getMonth()+1,t,2)}function Ir(e,t){return or(e.getMinutes(),t,2)}function Ur(e,t){return or(e.getSeconds(),t,2)}function $r(e){var t=e.getDay();return 0===t?7:t}function Br(e,t){return or(Nn.count(Sn(e)-1,e),t,2)}function Hr(e,t){var n=e.getDay();return e=n>=4||0===n?Ln(e):Ln.ceil(e),or(Ln.count(Sn(e),e)+(4===Sn(e).getDay()),t,2)}function jr(e){return e.getDay()}function Vr(e,t){return or(On.count(Sn(e)-1,e),t,2)}function Wr(e,t){return or(e.getFullYear()%100,t,2)}function qr(e,t){return or(e.getFullYear()%1e4,t,4)}function Yr(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+or(t/60|0,"0",2)+or(t%60,"0",2)}function Qr(e,t){return or(e.getUTCDate(),t,2)}function Xr(e,t){return or(e.getUTCHours(),t,2)}function Kr(e,t){return or(e.getUTCHours()%12||12,t,2)}function Gr(e,t){return or(1+Kn.count(Zn(e),e),t,3)}function Zr(e,t){return or(e.getUTCMilliseconds(),t,3)}function Jr(e,t){return Zr(e,t)+"000"}function ea(e,t){return or(e.getUTCMonth()+1,t,2)}function ta(e,t){return or(e.getUTCMinutes(),t,2)}function na(e,t){return or(e.getUTCSeconds(),t,2)}function ra(e){var t=e.getUTCDay();return 0===t?7:t}function aa(e,t){return or(Hn.count(Zn(e)-1,e),t,2)}function ia(e,t){var n=e.getUTCDay();return e=n>=4||0===n?qn(e):qn.ceil(e),or(qn.count(Zn(e),e)+(4===Zn(e).getUTCDay()),t,2)}function la(e){return e.getUTCDay()}function oa(e,t){return or(jn.count(Zn(e)-1,e),t,2)}function ua(e,t){return or(e.getUTCFullYear()%100,t,2)}function sa(e,t){return or(e.getUTCFullYear()%1e4,t,4)}function ca(){return"+0000"}function fa(){return"%"}function da(e){return+e}function ha(e){return Math.floor(+e/1e3)}(nr=function(e){var t=e.dateTime,n=e.date,r=e.time,a=e.periods,i=e.days,l=e.shortDays,o=e.months,u=e.shortMonths,s=sr(a),c=cr(a),f=sr(i),d=cr(i),h=sr(l),p=cr(l),g=sr(o),v=cr(o),m=sr(u),y=cr(u),b={a:function(e){return l[e.getDay()]},A:function(e){return i[e.getDay()]},b:function(e){return u[e.getMonth()]},B:function(e){return o[e.getMonth()]},c:null,d:Nr,e:Nr,f:Dr,H:Or,I:Rr,j:zr,L:Lr,m:Fr,M:Ir,p:function(e){return a[+(e.getHours()>=12)]},q:function(e){return 1+~~(e.getMonth()/3)},Q:da,s:ha,S:Ur,u:$r,U:Br,V:Hr,w:jr,W:Vr,x:null,X:null,y:Wr,Y:qr,Z:Yr,"%":fa},_={a:function(e){return l[e.getUTCDay()]},A:function(e){return i[e.getUTCDay()]},b:function(e){return u[e.getUTCMonth()]},B:function(e){return o[e.getUTCMonth()]},c:null,d:Qr,e:Qr,f:Jr,H:Xr,I:Kr,j:Gr,L:Zr,m:ea,M:ta,p:function(e){return a[+(e.getUTCHours()>=12)]},q:function(e){return 1+~~(e.getUTCMonth()/3)},Q:da,s:ha,S:na,u:ra,U:aa,V:ia,w:la,W:oa,x:null,X:null,y:ua,Y:sa,Z:ca,"%":fa},w={a:function(e,t,n){var r=h.exec(t.slice(n));return r?(e.w=p[r[0].toLowerCase()],n+r[0].length):-1},A:function(e,t,n){var r=f.exec(t.slice(n));return r?(e.w=d[r[0].toLowerCase()],n+r[0].length):-1},b:function(e,t,n){var r=m.exec(t.slice(n));return r?(e.m=y[r[0].toLowerCase()],n+r[0].length):-1},B:function(e,t,n){var r=g.exec(t.slice(n));return r?(e.m=v[r[0].toLowerCase()],n+r[0].length):-1},c:function(e,n,r){return T(e,t,n,r)},d:wr,e:wr,f:Sr,H:kr,I:kr,j:xr,L:Cr,m:_r,M:Tr,p:function(e,t,n){var r=s.exec(t.slice(n));return r?(e.p=c[r[0].toLowerCase()],n+r[0].length):-1},q:br,Q:Pr,s:Ar,S:Er,u:dr,U:hr,V:pr,w:fr,W:gr,x:function(e,t,r){return T(e,n,t,r)},X:function(e,t,n){return T(e,r,t,n)},y:mr,Y:vr,Z:yr,"%":Mr};function x(e,t){return function(n){var r,a,i,l=[],o=-1,u=0,s=e.length;for(n instanceof Date||(n=new Date(+n));++o53)return null;"w"in i||(i.w=1),"Z"in i?(r=(a=(r=er(tr(i.y,0,1))).getUTCDay())>4||0===a?jn.ceil(r):jn(r),r=Kn.offset(r,7*(i.V-1)),i.y=r.getUTCFullYear(),i.m=r.getUTCMonth(),i.d=r.getUTCDate()+(i.w+6)%7):(r=(a=(r=Jn(tr(i.y,0,1))).getDay())>4||0===a?On.ceil(r):On(r),r=Un.offset(r,7*(i.V-1)),i.y=r.getFullYear(),i.m=r.getMonth(),i.d=r.getDate()+(i.w+6)%7)}else("W"in i||"U"in i)&&("w"in i||(i.w="u"in i?i.u%7:"W"in i?1:0),a="Z"in i?er(tr(i.y,0,1)).getUTCDay():Jn(tr(i.y,0,1)).getDay(),i.m=0,i.d="W"in i?(i.w+6)%7+7*i.W-(a+5)%7:i.w+7*i.U-(a+6)%7);return"Z"in i?(i.H+=i.Z/100|0,i.M+=i.Z%100,er(i)):Jn(i)}}function T(e,t,n,r){for(var a,i,l=0,o=t.length,u=n.length;l=u)return-1;if(37===(a=t.charCodeAt(l++))){if(a=t.charAt(l++),!(i=w[a in rr?t.charAt(l++):a])||(r=i(e,n,r))<0)return-1}else if(a!=n.charCodeAt(r++))return-1}return r}return b.x=x(n,b),b.X=x(r,b),b.c=x(t,b),_.x=x(n,_),_.X=x(r,_),_.c=x(t,_),{format:function(e){var t=x(e+="",b);return t.toString=function(){return e},t},parse:function(e){var t=k(e+="",!1);return t.toString=function(){return e},t},utcFormat:function(e){var t=x(e+="",_);return t.toString=function(){return e},t},utcParse:function(e){var t=k(e+="",!0);return t.toString=function(){return e},t}}}({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]})).format,nr.parse,nr.utcFormat,nr.utcParse,((En((function(e){e.setUTCDate(1),e.setUTCHours(0,0,0,0)}),(function(e,t){e.setUTCMonth(e.getUTCMonth()+t)}),(function(e,t){return t.getUTCMonth()-e.getUTCMonth()+12*(t.getUTCFullYear()-e.getUTCFullYear())}),(function(e){return e.getUTCMonth()})).range,En((function(e){e.setUTCMinutes(0,0,0)}),(function(e,t){e.setTime(+e+36e5*t)}),(function(e,t){return(t-e)/36e5}),(function(e){return e.getUTCHours()}))).range,En((function(e){e.setUTCSeconds(0,0)}),(function(e,t){e.setTime(+e+t*Mn)}),(function(e,t){return(t-e)/Mn}),(function(e){return e.getUTCMinutes()}))).range;var pa=function(e){return"string"==typeof e?new Z([document.querySelectorAll(e)],[document.documentElement]):new Z([null==e?[]:e],G)},ga=function(e){return function(){return e}},va=Math.abs,ma=Math.atan2,ya=Math.cos,ba=Math.max,_a=Math.min,wa=Math.sin,xa=Math.sqrt,ka=1e-12,Ta=Math.PI,Ea=Ta/2,Ca=2*Ta;function Sa(e){return e>=1?Ea:e<=-1?-Ea:Math.asin(e)}function Ma(e){return e.innerRadius}function Pa(e){return e.outerRadius}function Aa(e){return e.startAngle}function Na(e){return e.endAngle}function Oa(e){return e&&e.padAngle}function Ra(e,t,n,r,a,i,l){var o=e-n,u=t-r,s=(l?i:-i)/xa(o*o+u*u),c=s*u,f=-s*o,d=e+c,h=t+f,p=n+c,g=r+f,v=(d+p)/2,m=(h+g)/2,y=p-d,b=g-h,_=y*y+b*b,w=a-i,x=d*g-p*h,k=(b<0?-1:1)*xa(ba(0,w*w*_-x*x)),T=(x*b-y*k)/_,E=(-x*y-b*k)/_,C=(x*b+y*k)/_,S=(-x*y+b*k)/_,M=T-v,P=E-m,A=C-v,N=S-m;return M*M+P*P>A*A+N*N&&(T=C,E=S),{cx:T,cy:E,x01:-c,y01:-f,x11:T*(a/w-1),y11:E*(a/w-1)}}var za=function(){var e=Ma,t=Pa,n=ga(0),r=null,a=Aa,i=Na,l=Oa,o=null;function u(){var u,s,c=+e.apply(this,arguments),f=+t.apply(this,arguments),d=a.apply(this,arguments)-Ea,h=i.apply(this,arguments)-Ea,p=va(h-d),g=h>d;if(o||(o=u=Lt()),fka)if(p>Ca-ka)o.moveTo(f*ya(d),f*wa(d)),o.arc(0,0,f,d,h,!g),c>ka&&(o.moveTo(c*ya(h),c*wa(h)),o.arc(0,0,c,h,d,g));else{var v,m,y=d,b=h,_=d,w=h,x=p,k=p,T=l.apply(this,arguments)/2,E=T>ka&&(r?+r.apply(this,arguments):xa(c*c+f*f)),C=_a(va(f-c)/2,+n.apply(this,arguments)),S=C,M=C;if(E>ka){var P=Sa(E/c*wa(T)),A=Sa(E/f*wa(T));(x-=2*P)>ka?(_+=P*=g?1:-1,w-=P):(x=0,_=w=(d+h)/2),(k-=2*A)>ka?(y+=A*=g?1:-1,b-=A):(k=0,y=b=(d+h)/2)}var N=f*ya(y),O=f*wa(y),R=c*ya(w),z=c*wa(w);if(C>ka){var L,D=f*ya(b),F=f*wa(b),I=c*ya(_),U=c*wa(_);if(p1?0:e<-1?Ta:Math.acos(e)}(($*H+B*j)/(xa($*$+B*B)*xa(H*H+j*j)))/2),W=xa(L[0]*L[0]+L[1]*L[1]);S=_a(C,(c-W)/(V-1)),M=_a(C,(f-W)/(V+1))}}k>ka?M>ka?(v=Ra(I,U,N,O,f,M,g),m=Ra(D,F,R,z,f,M,g),o.moveTo(v.cx+v.x01,v.cy+v.y01),Mka&&x>ka?S>ka?(v=Ra(R,z,D,F,c,-S,g),m=Ra(N,O,I,U,c,-S,g),o.lineTo(v.cx+v.x01,v.cy+v.y01),S0)){if(i/=d,d<0){if(i0){if(i>f)return;i>c&&(c=i)}if(i=r-u,d||!(i<0)){if(i/=d,d<0){if(i>f)return;i>c&&(c=i)}else if(d>0){if(i0)){if(i/=h,h<0){if(i0){if(i>f)return;i>c&&(c=i)}if(i=a-s,h||!(i<0)){if(i/=h,h<0){if(i>f)return;i>c&&(c=i)}else if(h>0){if(i0||f<1)||(c>0&&(e[0]=[u+c*d,s+c*h]),f<1&&(e[1]=[u+f*d,s+f*h]),!0)}}}}}function Ka(e,t,n,r,a){var i=e[1];if(i)return!0;var l,o,u=e[0],s=e.left,c=e.right,f=s[0],d=s[1],h=c[0],p=c[1],g=(f+h)/2,v=(d+p)/2;if(p===d){if(g=r)return;if(f>h){if(u){if(u[1]>=a)return}else u=[g,n];i=[g,a]}else{if(u){if(u[1]1)if(f>h){if(u){if(u[1]>=a)return}else u=[(n-o)/l,n];i=[(a-o)/l,a]}else{if(u){if(u[1]=r)return}else u=[t,l*t+o];i=[r,l*r+o]}else{if(u){if(u[0]=-vi)){var h=u*u+s*s,p=c*c+f*f,g=(f*h-s*p)/d,v=(u*p-c*h)/d,m=ti.pop()||new function(){Ba(this),this.x=this.y=this.arc=this.site=this.cy=null};m.arc=e,m.site=a,m.x=g+l,m.y=(m.cy=v+o)+Math.sqrt(g*g+v*v),e.circle=m;for(var y=null,b=hi._;b;)if(m.ygi)o=o.L;else{if(!((a=i-ci(o,l))>gi)){r>-gi?(t=o.P,n=o):a>-gi?(t=o,n=o.N):t=n=o;break}if(!o.R){t=o;break}o=o.R}!function(e){di[e.index]={site:e,halfedges:[]}}(e);var u=ii(e);if(fi.insert(t,u),t||n){if(t===n)return ri(t),n=ii(t.site),fi.insert(u,n),u.edge=n.edge=qa(t.site,u.site),ni(t),void ni(n);if(n){ri(t),ri(n);var s=t.site,c=s[0],f=s[1],d=e[0]-c,h=e[1]-f,p=n.site,g=p[0]-c,v=p[1]-f,m=2*(d*v-h*g),y=d*d+h*h,b=g*g+v*v,_=[(v*y-h*b)/m+c,(d*b-g*y)/m+f];Qa(n.edge,s,p,_),u.edge=qa(s,e,null,_),n.edge=qa(e,p,null,_),ni(t),ni(n)}else u.edge=qa(t.site,u.site)}}function si(e,t){var n=e.site,r=n[0],a=n[1],i=a-t;if(!i)return r;var l=e.P;if(!l)return-1/0;var o=(n=l.site)[0],u=n[1],s=u-t;if(!s)return o;var c=o-r,f=1/i-1/s,d=c/s;return f?(-d+Math.sqrt(d*d-2*f*(c*c/(-2*s)-u+s/2+a-i/2)))/f+r:(r+o)/2}function ci(e,t){var n=e.N;if(n)return si(n,t);var r=e.site;return r[1]===t?r[0]:1/0}var fi,di,hi,pi,gi=1e-6,vi=1e-12;function mi(e,t,n){return(e[0]-n[0])*(t[1]-e[1])-(e[0]-t[0])*(n[1]-e[1])}function yi(e,t){return t[1]-e[1]||t[0]-e[0]}function bi(e,t){var n,r,a,i=e.sort(yi).pop();for(pi=[],di=new Array(e.length),fi=new Wa,hi=new Wa;;)if(a=ei,i&&(!a||i[1]gi||Math.abs(a[0][1]-a[1][1])>gi)||delete pi[i]}(l,o,u,s),function(e,t,n,r){var a,i,l,o,u,s,c,f,d,h,p,g,v=di.length,m=!0;for(a=0;agi||Math.abs(g-d)>gi)&&(u.splice(o,0,pi.push(Ya(l,h,Math.abs(p-e)gi?[e,Math.abs(f-e)gi?[Math.abs(d-r)gi?[n,Math.abs(f-n)gi?[Math.abs(d-t)=o)return null;var u=e-a.site[0],s=t-a.site[1],c=u*u+s*s;do{a=i.cells[r=l],l=null,a.halfedges.forEach((function(n){var r=i.edges[n],o=r.left;if(o!==a.site&&o||(o=r.right)){var u=e-o[0],s=t-o[1],f=u*u+s*s;f *").remove(),pa(".".concat(e.cleanup)).remove(),pa("[class^='subgauge']").remove()):(pa(".gauge").remove(),pa(".".concat(e.cleanup)).remove(),u(e.trellis_limit,pa("[class^='subgauge']").size()+1).forEach((function(e){pa(".subgauge".concat(e)).remove()}))),te(".viz").style("overflow-x","hidden").style("overflow-y","hidden").style("position","fixed").attr("height","100%");var c=te(".viz").append("svg");c.attr("width",e.w).attr("height",e.h).attr("id","svg-viz").attr("class",e.cleanup).attr("preserveAspectRatio","xMidYMid meet").attr("viewBox","".concat(e.w/-2," ").concat(e.h/-2," ").concat(e.w," ").concat(e.h));var f=c.append("g").attr("id","g-viz"),d=za().innerRadius(r).outerRadius(n).startAngle(-l).endAngle(l),h=(f.append("path").attr("class","gauge_background").attr("d",d).attr("fill",e.gauge_background).attr("stroke","none"),ki(e.value||e.range[0],0,1,e.range[0],e.range[1])),p=(2*e.angle*h-e.angle)*Math.PI*2/360,g=e.angle<90?-1:1;if("progress"===e.gauge_fill_type){var v=za().innerRadius(r).outerRadius(n).startAngle(-l).endAngle(p);f.append("path").attr("class","gaugeFill").attr("d",v).attr("fill",e.color).attr("stroke","".concat(e.color)).attr("stroke-width","1px")}else if("segment"===e.gauge_fill_type){var m=e.fill_colors.length;e.fill_colors.map((function(t,a){var i=a/m,l=(2*e.angle*i-e.angle)*Math.PI*2/360,o=(a+1)/m,u=(2*e.angle*o-e.angle)*Math.PI*2/360,s=za().innerRadius(r).outerRadius(n).startAngle(l).endAngle(u);f.append("path").attr("class","gaugeFill-".concat(a)).attr("d",s).attr("fill",e.fill_colors[a]).attr("stroke","".concat(e.fill_colors[a])).attr("stroke-width","1px")}))}else if("progress-gradient"===e.gauge_fill_type){var y=1/e.fill_colors.length,b=Math.floor(h/y);b=h>=1?e.fill_colors.length-1:b,v=za().innerRadius(r).outerRadius(n).startAngle(-l).endAngle(p),f.append("path").attr("class","gaugeFill").attr("d",v).attr("fill",e.fill_colors[b]).attr("stroke","".concat(e.fill_colors[b])).attr("stroke-width","1px")}var _=za().innerRadius(.97*r).outerRadius(i).startAngle(-l).endAngle(-l),w=f.append("path").attr("class","leftArmArc").attr("d",_).attr("fill",e.gauge_background).attr("stroke",e.gauge_background).attr("stroke-width",e.arm_weight/5);f.append("text").attr("class","minLabel").text("".concat(void 0===e.range_formatting||""===e.range_formatting?e.range[0]:xi.a.format(e.range_formatting,e.range[0]))).style("font-size","".concat(e.label_font).concat(t)).style("font-family","Arial, Helvetica, sans-serif").style("fill",e.range_color).style("font-weight","bold").attr("dx","-".concat(e.range_x,"em")).attr("dy","".concat(-1*e.range_y,"em")).attr("transform","translate(".concat(w.node().getBBox().x," ").concat(0+g*w.node().getBBox().height-(e.angle>90?90-e.angle:0),")"));var x=za().innerRadius(.97*r).outerRadius(i).startAngle(l).endAngle(l),k=f.append("path").attr("class","rightArmArc").attr("d",x).attr("fill",e.gauge_background).attr("stroke",e.gauge_background).attr("stroke-width",e.arm_weight/5);f.append("text").attr("class","maxLabel").text("".concat(void 0===e.range_formatting||""===e.range_formatting?e.range[1]:xi.a.format(e.range_formatting,e.range[1]))).style("font-size","".concat(e.label_font).concat(t)).style("font-family","Arial, Helvetica, sans-serif").style("fill",e.range_color).style("font-weight","bold").attr("dx","".concat(e.range_x-1,"em")).attr("dy","".concat(-1*e.range_y,"em")).attr("transform","translate(".concat(k.node().getBBox().x+k.node().getBBox().width," ").concat(0+g*k.node().getBBox().height-(e.angle>90?90-e.angle:0),")"));var T=function(e){if("spinner"===e)return za().innerRadius(0).outerRadius(s).startAngle(p).endAngle(p);if("needle"===e){var t=(f=p-Math.PI/2)-55*Math.PI/60,n=f+55*Math.PI/60,a=s*Math.cos(f),i=s*Math.sin(f),l=.1*s*Math.cos(t),o=.1*s*Math.sin(t),u=.1*s*Math.cos(n),c=.1*s*Math.sin(n);return Ua()([[a,i],[l,o],[u,c]])+"Z"}var f;return"auto"===e?(t=(f=p-Math.PI/2)-55*Math.PI/60,n=f+55*Math.PI/60,a=s*Math.cos(f),i=s*Math.sin(f),l=.15*s*Math.cos(t),o=.15*s*Math.sin(t),u=.15*s*Math.cos(n),c=.15*s*Math.sin(n),Ua()([[a,i],[l,o],[u,c]])+"Z"):"inner"===e?za().innerRadius(r).outerRadius(s).startAngle(p).endAngle(p):void 0}(e.spinner_type),E=f.append("path").attr("class","spinnerArm").attr("d",T).attr("fill",e.spinner_background).attr("stroke",e.spinner_background).attr("stroke-width",e.spinner_weight/10);if(function(t){"spinner"===t?f.append("circle").attr("class","spinnerCenter").attr("r",e.spinner_weight/10).style("fill",e.spinner_background):"needle"===t||"inner"===t||"auto"===t&&f.append("circle").attr("class","spinnerCenter").attr("r",e.spinner_weight/2).style("stroke",e.gauge_background).style("stroke-weight","2px").style("fill","#FFF")}(e.spinner_type),E.on("click",(function(t,n){LookerCharts.Utils.openDrillMenu({links:e.value_links,event:event})})),"off"!==e.target_source)if("both"===e.target_label_type){var C=(R=ki(e.target,0,1,e.range[0],e.range[1]))<.5?-1:1,S=(2*e.angle*R-e.angle)*Math.PI*2/360,M=za().innerRadius(r).outerRadius(n).startAngle(S).endAngle(S),P=(f.append("path").attr("class","targetSpinner").attr("d",M).attr("stroke",e.target_background).attr("stroke-width",e.target_weight/10).attr("stroke-dasharray","".concat(e.target_length," ").concat(e.target_gap)),za().innerRadius(n*e.target_label_padding).outerRadius(n*e.target_label_padding).startAngle(S).endAngle(S)),A=f.append("path").attr("class","targetLabel").attr("d",P);(N=f.append("text").attr("class","targetValue").text("".concat(e.target_rendered," ").concat(e.target_label)).style("font-size","".concat(e.target_label_font).concat(t)).style("font-family","Arial, Helvetica, sans-serif").attr("dy",".35em")).attr("x",(function(){return C>0?A.node().getBBox().x:A.node().getBBox().x-N.node().getBBox().width})).attr("y",(function(){return A.node().getBBox().y}))}else if("dboth"===e.target_label_type){var N;C=(R=ki(e.target,0,1,e.range[0],e.range[1]))<.5?-1:1,S=(2*e.angle*R-e.angle)*Math.PI*2/360,M=za().innerRadius(r).outerRadius(n).startAngle(S).endAngle(S),f.append("path").attr("class","targetSpinner").attr("d",M).attr("stroke",e.target_background).attr("stroke-width",e.target_weight/10).attr("stroke-dasharray","".concat(e.target_length," ").concat(e.target_gap)),P=za().innerRadius(n*e.target_label_padding).outerRadius(n*e.target_label_padding).startAngle(S).endAngle(S),A=f.append("path").attr("class","targetLabel").attr("d",P),(N=f.append("text").attr("class","targetValue").text("".concat(e.target_rendered," ").concat(e.target_dimension)).style("font-size","".concat(e.target_label_font).concat(t)).style("font-family","Arial, Helvetica, sans-serif").attr("dy",".35em")).attr("x",(function(){return C>0?A.node().getBBox().x:A.node().getBBox().x-N.node().getBBox().width})).attr("y",(function(){return A.node().getBBox().y}))}else if("dim"===e.target_label_type)C=(R=ki(e.target,0,1,e.range[0],e.range[1]))<.5?-1:1,S=(2*e.angle*R-e.angle)*Math.PI*2/360,M=za().innerRadius(r).outerRadius(n).startAngle(S).endAngle(S),f.append("path").attr("class","targetSpinner").attr("d",M).attr("stroke",e.target_background).attr("stroke-width",e.target_weight/10).attr("stroke-dasharray","".concat(e.target_length," ").concat(e.target_gap)),P=za().innerRadius(n*e.target_label_padding).outerRadius(n*e.target_label_padding).startAngle(S).endAngle(S),A=f.append("path").attr("class","targetLabel").attr("d",P),(O=f.append("text").attr("class","targetValue").text("".concat(e.target_dimension)).style("font-size","".concat(e.target_label_font).concat(t)).style("font-family","Arial, Helvetica, sans-serif").attr("dy",".35em")).attr("x",(function(){return C>0?A.node().getBBox().x:A.node().getBBox().x-O.node().getBBox().width})).attr("y",(function(){return A.node().getBBox().y}));else if("value"===e.target_label_type)C=(R=ki(e.target,0,1,e.range[0],e.range[1]))<.5?-1:1,S=(2*e.angle*R-e.angle)*Math.PI*2/360,M=za().innerRadius(r).outerRadius(n).startAngle(S).endAngle(S),f.append("path").attr("class","targetSpinner").attr("d",M).attr("stroke",e.target_background).attr("stroke-width",e.target_weight/10).attr("stroke-dasharray","".concat(e.target_length," ").concat(e.target_gap)),P=za().innerRadius(n*e.target_label_padding).outerRadius(n*e.target_label_padding).startAngle(S).endAngle(S),A=f.append("path").attr("class","targetLabel").attr("d",P),(O=f.append("text").attr("class","targetValue").text("".concat(e.target_rendered)).style("font-size","".concat(e.target_label_font).concat(t)).style("font-family","Arial, Helvetica, sans-serif").attr("dy",".35em")).attr("x",(function(){return C>0?A.node().getBBox().x:A.node().getBBox().x-O.node().getBBox().width})).attr("y",(function(){return A.node().getBBox().y}));else if("label"===e.target_label_type){var O;C=(R=ki(e.target,0,1,e.range[0],e.range[1]))<.5?-1:1,S=(2*e.angle*R-e.angle)*Math.PI*2/360,M=za().innerRadius(r).outerRadius(n).startAngle(S).endAngle(S),f.append("path").attr("class","targetSpinner").attr("d",M).attr("stroke",e.target_background).attr("stroke-width",e.target_weight/10).attr("stroke-dasharray","".concat(e.target_length," ").concat(e.target_gap)),P=za().innerRadius(n*e.target_label_padding).outerRadius(n*e.target_label_padding).startAngle(S).endAngle(S),A=f.append("path").attr("class","targetLabel").attr("d",P),(O=f.append("text").attr("class","targetValue").text("".concat(e.target_label)).style("font-size","".concat(e.target_label_font).concat(t)).style("font-family","Arial, Helvetica, sans-serif").attr("dy",".35em")).attr("x",(function(){return C>0?A.node().getBBox().x:A.node().getBBox().x-O.node().getBBox().width})).attr("y",(function(){return A.node().getBBox().y}))}else if("nolabel"===e.target_label_type){var R;C=(R=ki(e.target,0,1,e.range[0],e.range[1]))<.5?-1:1,S=(2*e.angle*R-e.angle)*Math.PI*2/360,M=za().innerRadius(r).outerRadius(n).startAngle(S).endAngle(S),f.append("path").attr("class","targetSpinner").attr("d",M).attr("stroke",e.target_background).attr("stroke-width",e.target_weight/10).attr("stroke-dasharray","".concat(e.target_length," ").concat(e.target_gap))}var z=null,L=null;if("value"===e.value_label_type)(F=f.append("text").attr("class","gaugeValue").text("".concat(e.value_rendered)).style("font-size","".concat(e.value_label_font).concat(t)).style("font-family","Arial, Helvetica, sans-serif").style("color","#282828")).attr("transform","translate(".concat(0-F.node().getBBox().width/2," ").concat(0+a,")")),z=F;else if("label"===e.value_label_type)(D=f.append("text").attr("class","gaugeValueLabel").text("".concat(e.value_label)).style("font-size","".concat(.55*e.value_label_font).concat(t)).style("font-family","Arial, Helvetica, sans-serif").style("color","#707070").attr("dy","1em")).attr("transform","translate(".concat(0-D.node().getBBox().width/2," ").concat(0+a,")")),z=D;else if("both"===e.value_label_type){var D;(F=f.append("text").attr("class","gaugeValue").text("".concat(e.value_rendered)).style("font-size","".concat(e.value_label_font).concat(t)).style("font-family","Arial, Helvetica, sans-serif").style("color","#282828")).attr("transform","translate(".concat(0-F.node().getBBox().width/2," ").concat(0+a,")")),z=F,(D=f.append("text").attr("class","gaugeValueLabel").text("".concat(e.value_label)).style("font-size","".concat(.55*e.value_label_font).concat(t)).style("font-family","Arial, Helvetica, sans-serif").style("color","#707070").attr("dy","1.2em")).attr("transform","translate(".concat(0-D.node().getBBox().width/2," ").concat(0+a,")")),L=D}else if("dim"===e.value_label_type)(I=f.append("text").attr("class","gaugeValueLabel").text("".concat(e.value_dimension)).style("font-size","".concat(.55*e.value_label_font).concat(t)).style("font-family","Arial, Helvetica, sans-serif").style("color","#707070").attr("dy","1em")).attr("transform","translate(".concat(0-I.node().getBBox().width/2," ").concat(0+a,")")),z=I;else if("dboth"===e.value_label_type){var F,I;(F=f.append("text").attr("class","gaugeValue").text("".concat(e.value_rendered)).style("font-size","".concat(e.value_label_font).concat(t)).style("font-family","Arial, Helvetica, sans-serif").style("color","#282828")).attr("transform","translate(".concat(0-F.node().getBBox().width/2," ").concat(0+a,")")),z=F,(I=f.append("text").attr("class","gaugeValueLabel").text("".concat(e.value_dimension)).style("font-size","".concat(.55*e.value_label_font).concat(t)).style("font-family","Arial, Helvetica, sans-serif").style("color","#707070").attr("dy","1.2em")).attr("transform","translate(".concat(0-I.node().getBBox().width/2," ").concat(0+a,")")),L=I}null!==z&&z.on("click",(function(t,n){LookerCharts.Utils.openDrillMenu({links:e.value_links,event:event})})),null!==L&&L.on("click",(function(t,n){LookerCharts.Utils.openDrillMenu({links:e.value_links,event:event})}));var U=.85*e.w/f.node().getBBox().width,$=.85*e.h/f.node().getBBox().height;"none"===e.trellis_by?f.attr("transform","scale(".concat(Math.min(U,$),")translate(0 ").concat((e.h-f.node().getBBox().height)/4,")")):f.attr("transform","scale(1.2)translate(0 ".concat((e.h-f.node().getBBox().height)/4,")"))}(e)}),[e]),a.a.createElement("div",{className:"viz"})},Si=n(8),Mi=n.n(Si);function Pi(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ai(e,t,n,r){var a,i;if(e=void 0===e.length?[e]:e,a=t.fields.dimension_like,i=t.fields.measure_like,a.length>0){var l=a[0].name;e[0][l]}"dim"!==n.value_label_type&&"dboth"!==n.value_label_type||0===a.length&&r.addError({title:"Invalid Input.",message:"Add a dimension or modify label type."}),"dim"!==n.target_label_type&&"dboth"!==n.target_label_type||0===a.length&&r.addError({title:"Invalid Input.",message:"Add a dimension or modify label type."});var o=i[0].name,u=e[0][o],s=void 0===i[0].label_short?i[0].label:i[0].label_short,c=void 0===u.rendered?u.value:u.rendered;if("second"===n.target_source){i.length<2&&r.addError({title:"Invalid Input.",message:"Add a second measure or modify target label source."});var f=i[1].name,d=(m=e[0][f]).value,h=void 0===i[1].label_short?i[1].label:i[1].label_short,p=void 0===m.rendered?m.value:m.rendered,g=void 0===n.target_value_format||""===n.target_value_format?p:xi.a.format(n.target_value_format,d);if(a.length>0)var v=void 0===n.target_label_override||""===n.target_label_override?e[0][l].value:n.target_label_override}else if("first"===n.target_source){var m;"row"===n.viz_trellis_by&&r.addError({title:"Invalid Input.",message:"This option cannot be applied to a trellis. Please modify target label source."}),e.length<2&&r.addError({title:"Invalid Input.",message:"No value to target. Add a second row or modify label type."}),d=(m=e[1][o]).value,p=void 0===m.rendered||""===m.rendered?d:m.rendered,h=s,g=void 0===n.target_value_format||""===n.target_value_format?p:xi.a.format(n.target_value_format,d),a.length>0&&(v=void 0===n.target_label_override||""===n.target_label_override?e[1][l].value:n.target_label_override)}else"override"===n.target_source&&(void 0!==n.target_value_override&&""!==n.target_value_override||r.addError({title:"Invalid Input.",message:"No target override. Add an override value or modify target label source."}),p=d=parseFloat(n.target_value_override),h=n.target_label_override,g=void 0===n.target_value_format||""===n.target_value_format?p:xi.a.format(n.target_value_format,d),a.length>0&&(v=void 0===n.target_label_override||""===n.target_label_override?e[0][l].value:n.target_label_override));return{value:u.value,value_links:u.links,value_label:void 0===n.value_label_override||""===n.value_label_override?s:n.value_label_override,value_rendered:void 0===n.value_formatting||""===n.value_formatting?c:xi.a.format(n.value_formatting,u.value),value_dimension:a.length>0?void 0===n.value_label_override||""===n.value_label_override?e[0][l].value:n.value_label_override:null,target:d,target_rendered:g,target_label:void 0===n.target_label_override||""===n.target_label_override?h:n.target_label_override,target_dimension:v}}looker.plugins.visualizations.add({id:"gauge",label:"Gauge Visualization",primary:!0,options:{arm_length:{type:"number",label:"Arm Length",default:9,section:"Plot",display:"range",min:0,max:50,step:.5,order:200,display_size:"half"},arm_weight:{type:"number",label:"Thickness",default:48,section:"Plot",display:"range",min:0,max:100,order:300,display_size:"half"},spinner_length:{type:"number",label:"Pointer Length",default:153,section:"Plot",display:"range",min:0,max:200,order:400,display_size:"half"},spinner_weight:(Ti={type:"number",label:"Thickness",default:73,section:"Plot",display:"range",min:0,max:100},Pi(Ti,"default",25),Pi(Ti,"order",500),Pi(Ti,"display_size","half"),Ti),target_length:{type:"number",label:"Target Length",default:10,section:"Target",display:"range",min:0,max:30,order:600,display_size:"third"},target_gap:{type:"number",label:"Dash Gap",default:10,section:"Target",display:"range",min:0,max:30,order:610,display_size:"third"},target_weight:(Ei={type:"number",label:"Thickness",default:8,section:"Target",display:"range",min:0,max:100},Pi(Ei,"default",25),Pi(Ei,"order",700),Pi(Ei,"display_size","third"),Ei),range_min:{type:"number",label:"Range Min Override",section:"Plot",order:30,default:0,display_size:"half"},range_max:{type:"number",label:"Range Max Override",section:"Plot",order:31,default:null,display_size:"half"},value_label_type:{type:"string",label:"Value Label Type",display:"select",section:"Value",values:[{"Value and Measure Label":"both"},{"Value and Dimension":"dboth"},{"Only Value":"value"},{"Only Label":"label"},{"Only Dimension":"dim"},{None:"none"}],default:"both",order:40},value_label_font:{type:"number",label:"Value Label Font Size",section:"Value",default:12,order:50},value_formatting:{type:"string",label:"Value Formatting Override",section:"Value",order:51},value_label_override:{type:"string",label:"Value Label Override",section:"Value",order:60},value_label_padding:{type:"number",label:"Value Label Padding",default:45,section:"Value",display:"range",min:0,max:120,order:70},target_source:{type:"string",label:"Target Source",display:"select",section:"Target",values:[{"First Measure":"first"},{"Second Measure":"second"},{Override:"override"},{"No Target":"off"}],default:"off",order:80},target_label_type:{type:"string",label:"Target Label Type",display:"select",section:"Target",values:[{"Value and Label":"both"},{"Only Value":"value"},{"Only Label":"label"},{"Value and Dimension":"dboth"},{"Only Dimension":"dim"},{"No Label":"nolabel"}],default:"both",order:90},target_label_font:{type:"number",label:"Target Label Font Size",section:"Target",default:3,order:100},target_label_override:{type:"string",label:"Target Label Override",section:"Target",order:120},target_value_override:{type:"string",label:"Target Value Override",section:"Target",order:110},target_value_format:{type:"string",label:"Target Value Formatting",section:"Target",order:120},label_font_size:{type:"number",label:"Range Label Font Size",section:"Plot",default:3,order:140},range_formatting:{type:"string",label:"Range Label Value Formatting",section:"Plot",order:150},spinner_type:{type:"string",label:"Spinner Type",display:"select",section:"Plot",values:[{Needle:"needle"},{Spinner:"spinner"},{Automotive:"auto"},{Inner:"inner"}],default:"needle",order:151},fill_color:{type:"string",label:"Gauge Fill Color",section:"Style",display:"color",default:"#0092E5",order:10},background_color:{type:"string",label:"Background Color",default:"#CECECE",section:"Style",display:"color",order:20},spinner_color:{type:"string",label:"Pointer Color",default:"#282828",section:"Style",display:"color",order:30},range_color:{type:"string",label:"Range Label Color",default:"#282828",section:"Style",display:"color",order:40},gauge_fill_type:{type:"string",label:"Gauge Fill Type",display:"select",section:"Style",values:[{Progress:"progress"},{"Progress Segment":"progress-gradient"},{Segment:"segment"}],default:"progress",order:1},fill_colors:{type:"array",label:"Gauge Segment Colors",section:"Style",default:["#7FCDAE","#ffed6f","#EE7772"],display:"colors",order:11},viz_trellis_by:{type:"string",label:"Trellis By",display:"select",section:"Plot",values:[{None:"none"},{Row:"row"},{Pivot:"pivot"}],default:"none",order:0},trellis_rows:{type:"number",label:"Trellis Rows",section:"Plot",display_size:"half",default:2,order:1},trellis_cols:{type:"number",label:"Trellis Columns",section:"Plot",display_size:"half",default:2,order:2},angle:{type:"number",label:"Radial Gauge Angle",default:90,section:"Plot",display:"range",min:10,max:170,order:10},cutout:{type:"number",label:"Radial Gauge Cutout",default:30,section:"Plot",display:"range",min:0,max:100,order:20},range_x:{type:"number",label:"Range Width",default:1,section:"Plot",display:"range",min:-2,max:4,step:.1,order:800},range_y:{type:"number",label:"Range Height",default:1,section:"Plot",display:"range",min:-2,max:4,step:.1,order:900},target_label_padding:{type:"number",label:"Target Label Padding",default:1.06,section:"Target",display:"range",min:1,max:2,step:.01,order:130}},create:function(e,t){this.container=e,this.container.className="gauge-vis"},updateAsync:function(e,t,n,r,i,l){var o=this,u={top:20,right:20,bottom:20,left:20},s=t.clientWidth,c=t.clientHeight;if(this.clearErrors(),!e.length)return this.chart=Mi.a.render(a.a.createElement(a.a.Fragment,null),this.container),void this.addError({title:"No Results"});if(r.fields.dimension_like.length>1||r.fields.measure_like.length>2)this.addError({title:"Invalid Input.",message:"This chart accepts up to 1 dimension and 2 measures."});else if("pivot"!==n.viz_trellis_by||void 0!==r.pivots){var f;void 0===n.arm_length&&function(){for(var e in o.options)void 0===n[e]&&(n[e]=o.options[e].default)}();var d=[];if("row"===n.viz_trellis_by){var h=Math.min(n.trellis_cols*n.trellis_rows,e.length);e.forEach((function(t,a){f=Ai(e[a],r,n,o),a<=h-1&&d.push(f)}))}else if("pivot"===n.viz_trellis_by){var p=Math.min(n.trellis_cols*n.trellis_rows,r.pivots.length);r.pivots.forEach((function(t,a){f=function(e,t,n,r,a){var i,l;if(e=void 0===e.length?[e]:e,i=t.fields.dimension_like,l=t.fields.measure_like,i.length>0){var o=i[0].name;e[0][o][a]}var u=l[0].name,s=e[0][u][a],c=void 0===l[0].label_short?l[0].label:l[0].label_short,f=void 0===s.rendered?s.value:s.rendered;if("second"===n.target_source){l.length<2&&r.addError({title:"Invalid Input.",message:"Add a second measure or modify target label source."});var d=l[1].name,h=(y=e[0][d][a]).value,p=void 0===l[1].label_short?l[1].label:l[1].label_short,g=void 0===y.rendered?y.value:y.rendered,v=void 0===n.target_value_format||""===n.target_value_format?g:xi.a.format(n.target_value_format,h);if(i.length>0)var m=void 0===n.target_label_override||""===n.target_label_override?a:n.target_label_override}else if("first"===n.target_source){var y;"row"===n.viz_trellis_by?r.addError({title:"Invalid Input.",message:"This option cannot be applied to a trellis. Please modify target label source."}):e.length<2&&r.addError({title:"Invalid Input.",message:"No value to target. Add a second row or modify label type."}),h=(y=e[1][u][a]).value,g=void 0===y.rendered||""===y.rendered?h:y.rendered,p=c,v=void 0===n.target_value_format||""===n.target_value_format?g:xi.a.format(n.target_value_format,h),i.length>0&&(m=void 0===n.target_label_override||""===n.target_label_override?a:n.target_label_override)}else"override"===n.target_source&&(void 0!==n.target_value_override&&""!==n.target_value_override||r.addError({title:"Invalid Input.",message:"No target override. Add an override value or modify target label source."}),g=h=parseFloat(n.target_value_override),p=n.target_label_override,v=void 0===n.target_value_format||""===n.target_value_format?g:xi.a.format(n.target_value_format,h),i.length>0&&(m=void 0===n.target_label_override||""===n.target_label_override?a:n.target_label_override));return{value:s.value,value_links:s.links,value_label:void 0===n.value_label_override||""===n.value_label_override?c:n.value_label_override,value_rendered:void 0===n.value_formatting||""===n.value_formatting?f:xi.a.format(n.value_formatting,s.value),value_dimension:void 0===n.value_label_override||""===n.value_label_override?a:n.value_label_override,target:h,target_rendered:v,target_label:void 0===n.target_label_override||""===n.target_label_override?p:n.target_label_override,target_dimension:m}}(e,r,n,o,t.key),a<=p-1&&d.push(f)}))}else f=Ai(e,r,n,this);if(null===n.range_max){var g=Math.max(Math.ceil(f.value),f.target?Math.ceil(f.target):0),v=(g+"").length,m=Math.pow(10,v-1),y=Math.ceil(g/m)*m;n.range_max=y}var b=this;"none"===n.viz_trellis_by?(b.radialProps={cleanup:"gauge",trellis_by:n.viz_trellis_by,w:s,h:c,limiting_aspect:sn.range_max?n.range_max:f.value,value_rendered:f.value_rendered,target:f.target>n.range_max?n.range_max:f.target,value_label:f.value_label,target_label:f.target_label,value_dimension:f.value_dimension,target_dimension:f.target_dimension,target_rendered:f.target_rendered,value_links:f.value_links,label_font:n.label_font_size,range_formatting:n.range_formatting,range_x:n.range_x,range_y:n.range_y,gauge_fill_type:n.gauge_fill_type,fill_colors:n.fill_colors,range_color:n.range_color,spinner:n.spinner_length,spinner_weight:n.spinner_weight,spinner_background:n.spinner_color,spinner_type:n.spinner_type,arm:n.arm_length,arm_weight:n.arm_weight,target_length:n.target_length,target_gap:n.target_gap,target_weight:n.target_weight,target_background:"#282828",target_source:n.target_source,value_label_type:n.value_label_type,value_label_font:n.value_label_font,value_label_padding:n.value_label_padding,target_label_type:n.target_label_type,target_label_font:n.target_label_font,target_label_padding:n.target_label_padding,wrap_width:100},b.chart=Mi.a.render(a.a.createElement(Ci,b.radialProps),b.container)):d.forEach((function(t,i){var l="row"===n.viz_trellis_by?Math.min(n.trellis_cols*n.trellis_rows,e.length):Math.min(n.trellis_cols*n.trellis_rows,r.pivots.length);b.radialProps={cleanup:"subgauge".concat(i),trellis_by:n.viz_trellis_by,trellis_limit:l,w:s/n.trellis_cols,h:c/n.trellis_rows,limiting_aspect:sn.range_max?n.range_max:t.value,value_rendered:t.value_rendered,target:t.target>n.range_max?n.range_max:t.target,value_label:t.value_label,target_label:t.target_label,value_dimension:t.value_dimension,target_dimension:t.target_dimension,target_rendered:t.target_rendered,value_links:t.value_links,label_font:n.label_font_size,range_formatting:n.range_formatting,range_x:n.range_x,range_y:n.range_y,gauge_fill_type:n.gauge_fill_type,fill_colors:n.fill_colors,range_color:n.range_color,spinner:n.spinner_length,spinner_weight:n.spinner_weight,spinner_background:n.spinner_color,spinner_type:n.spinner_type,arm:n.arm_length,arm_weight:n.arm_weight,target_length:n.target_length,target_gap:n.target_gap,target_weight:n.target_weight,target_background:"#282828",target_source:n.target_source,value_label_type:n.value_label_type,value_label_font:n.value_label_font,value_label_padding:n.value_label_padding,target_label_type:n.target_label_type,target_label_font:n.target_label_font,target_label_padding:n.target_label_padding,wrap_width:100},b.chart=Mi.a.render(a.a.createElement(Ci,b.radialProps),b.container)})),l()}else this.addError({title:"Invalid Input.",message:"Add pivots or change trellis type."})}})},8:function(e,t,n){"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),e.exports=n(64)}})}));
diff --git a/models/cortex_sap_operational.model.lkml b/models/cortex_sap_operational.model.lkml
index 106ebb47..166f0901 100644
--- a/models/cortex_sap_operational.model.lkml
+++ b/models/cortex_sap_operational.model.lkml
@@ -27,14 +27,14 @@ persist_with: cortex_default_datagroup
include: "/LookML_Dashboard/*.dashboard.lookml"
-named_value_format: Greek_Number_Format {
- value_format: "[>=1000000000]0.0,,,\"B\";[>=1000000]0.0,,\"M\";[>=1000]0.0,\"K\";0.0"
-}
-
explore: data_intelligence_ar {
sql_always_where: ${Client_ID} = "@{CLIENT}" ;;
}
+explore: data_intelligence_otc{
+ sql_always_where: ${Client_ID} = "@{CLIENT}" ;;
+}
+
explore: sales_orders {
join: language_map {
@@ -47,144 +47,41 @@ explore: sales_orders {
join: deliveries{
type: left_outer
relationship: one_to_many
- sql_on: ${sales_orders.sales_document_vbeln}=${deliveries.sales_order_number_vgbel}
- and ${sales_orders.item_posnr}=${deliveries.sales_order_item_vgpos}
- and ${sales_orders.client_mandt}=${deliveries.client_mandt};;
+ sql_on: ${sales_orders.sales_document_vbeln}=${deliveries.sales_order_number_vgbel} and ${sales_orders.item_posnr}=${deliveries.sales_order_item_vgpos} and ${sales_orders.client_mandt}=${deliveries.client_mandt};;
}
- join: currency_conversion_new {
+ join: materials_md {
type: left_outer
relationship: one_to_many
- sql_on: ${sales_orders.client_mandt}=${currency_conversion_new.mandt}
- and ${sales_orders.currency_waerk}=${currency_conversion_new.fcurr}
- and ${sales_orders.creation_date_erdat_date} = ${currency_conversion_new.conv_date}
- and ${currency_conversion_new.kurst} = "M";;
+ sql_on: ${sales_orders.material_number_matnr}=${materials_md.material_number_matnr} and ${sales_orders.client_mandt}=${materials_md.client_mandt} ;;
}
- join: billing {
+ join: customers_md {
type: left_outer
relationship: one_to_many
- sql_on: ${sales_orders.sales_document_vbeln}=${billing.sales_document_aubel}
- and ${sales_orders.item_posnr}=${billing.sales_document_item_aupos}
- and ${sales_orders.client_mandt}=${billing.client_mandt} ;;
+ sql_on: ${customers_md.customer_number_kunnr}=${sales_orders.sold_to_party_kunnr} and ${sales_orders.client_mandt}=${customers_md.client_mandt} and ${customers_md.language_key_spras}=${language_map.language_key};;
}
- join: materials_md {
+ join: countries_md {
type: left_outer
relationship: one_to_many
- sql_on: ${sales_orders.material_number_matnr}=${materials_md.material_number_matnr}
- and ${sales_orders.client_mandt}=${materials_md.client_mandt} and
- ${materials_md.language_spras}=${language_map.language_key};;
+ sql_on: ${customers_md.country_key_land1}=${countries_md.country_key_land1} and ${countries_md.client_mandt}=${sales_orders.client_mandt} and ${countries_md.language_spras}=${language_map.language_key} ;;
}
- join: customers_md {
+ join: sales_organizations_md {
type: left_outer
relationship: one_to_many
- sql_on: ${sales_orders.client_mandt}=${customers_md.client_mandt}
- and ${sales_orders.sold_to_party_kunnr} = ${customers_md.customer_number_kunnr};;
+ sql_on: ${sales_organizations_md.sales_org_vkorg}=${sales_orders.sales_organization_vkorg} and ${sales_organizations_md.client_mandt}=${sales_orders.client_mandt} and ${sales_organizations_md.language_spras}=${language_map.language_key} ;;
}
-
- join: customers_md_partner_function {
- from: customers_md
+ join: distribution_channels_md {
type: left_outer
relationship: one_to_many
- sql_on: ${sales_orders.client_mandt}=${customers_md_partner_function.client_mandt}
- and ${sales_orders.customer_kunnr} = ${customers_md_partner_function.customer_number_kunnr};;
+ sql_on: ${distribution_channels_md.distribution_channel_vtweg}=${sales_orders.distribution_channel_vtweg} and ${sales_orders.client_mandt}=${distribution_channels_md.client_mandt} and ${distribution_channels_md.language_spras}=${language_map.language_key};;
}
- join: countries_md {
- type: left_outer
- relationship: one_to_many
- sql_on: ${customers_md.country_key_land1}=${countries_md.country_key_land1}
- and ${countries_md.client_mandt}=${sales_orders.client_mandt}
- and ${countries_md.language_spras}=${language_map.language_key} ;;
- }
+ sql_always_where: ${client_mandt} = "@{CLIENT}" ;;
+}
- join: sales_organizations_md {
- type: left_outer
- relationship: one_to_many
- sql_on: ${sales_organizations_md.sales_org_vkorg}=${sales_orders.sales_organization_vkorg}
- and ${sales_organizations_md.client_mandt}=${sales_orders.client_mandt}
- and ${sales_organizations_md.language_spras}=${language_map.language_key} ;;
- }
- join: distribution_channels_md {
- type: left_outer
- relationship: one_to_many
- sql_on: ${distribution_channels_md.distribution_channel_vtweg}=${sales_orders.distribution_channel_vtweg}
- and ${sales_orders.client_mandt}=${distribution_channels_md.client_mandt}
- and ${distribution_channels_md.language_spras}=${language_map.language_key};;
- }
-
- join: sales_order_pricing {
- type: left_outer
- relationship: one_to_many
- sql_on: ${sales_orders.client_mandt}=${sales_order_pricing.client_mandt}
- AND ${sales_orders.condition_number_knumv}=${sales_order_pricing.number_of_the_document_condition_knumv}
- AND ${sales_orders.item_posnr} = ${sales_order_pricing.condition_item_number_kposn};;
- }
-
-
- join: currency_conversion_pricing {
- from: currency_conversion_new
- type: left_outer
- relationship: many_to_one
- sql_on: ${sales_order_pricing.client_mandt} = ${currency_conversion_pricing.mandt}
- AND ${sales_order_pricing.checkbox_kdatu_date} = ${currency_conversion_pricing.conv_date}
- AND ${sales_order_pricing.condition_value_currency_key_waers} = ${currency_conversion_pricing.fcurr}
- AND ${currency_conversion_pricing.kurst} = 'M';;
- }
-
-
- join: one_touch_order {
- type: left_outer
- relationship: one_to_many
- sql_on: ${sales_orders.client_mandt}=${one_touch_order.vbapclient_mandt}
- and ${sales_orders.sales_document_vbeln}=${one_touch_order.vbapsales_document_vbeln}
- and ${sales_orders.item_posnr}=${one_touch_order.vbapsales_document_item_posnr};;
- }
-
- join: sales_order_schedule_line_dt{
- type: left_outer
- relationship: one_to_many
- sql_on: ${sales_orders.client_mandt}=${sales_order_schedule_line_dt.sales_order_schedule_line_client_mandt}
- and ${sales_orders.sales_document_vbeln}=${sales_order_schedule_line_dt.sales_order_schedule_line_sales_document_vbeln}
- and ${sales_orders.item_posnr}=${sales_order_schedule_line_dt.sales_order_schedule_line_sales_document_item_posnr};;
- }
-
- join: divisions_md {
- type: left_outer
- relationship: one_to_many
- sql_on: ${sales_orders.client_mandt}=${divisions_md.client_mandt}
- and ${sales_orders.division_spart}=${divisions_md.division_spart}
- and ${language_map.language_key}=${divisions_md.language_key_spras} ;;
- }
-
- join: sales_order_header_status {
- type: left_outer
- relationship: one_to_many
- sql_on: ${sales_orders.client_mandt}=${sales_order_header_status.client_mandt}
- and ${sales_orders.sales_document_vbeln}=${sales_order_header_status.sales_document_vbeln};;
- }
-
- join: sales_order_partner_function {
- type: left_outer
- relationship: one_to_many
- sql_on: ${sales_orders.client_mandt}=${sales_order_partner_function.client_mandt}
- and ${sales_orders.sales_document_vbeln}= ${sales_order_partner_function.sales_document_vbeln}
- and ${sales_orders.item_posnr} = ${sales_order_partner_function.item_posnr};;
- }
-
- join: sales_order_partner_function_header {
- from: sales_order_partner_function
- type: left_outer
- relationship: one_to_many
- sql_on: ${sales_orders.client_mandt}=${sales_order_partner_function_header.client_mandt}
- and ${sales_orders.sales_document_vbeln}= ${sales_order_partner_function_header.sales_document_vbeln}
- and (${sales_order_partner_function.item_posnr} is Null or ${sales_order_partner_function_header.item_posnr} = '000000');;
- }
-
- sql_always_where: ${client_mandt}='{{ _user_attributes['client_id_rep'] }}' ;;
+explore: Navigation_Bar {}
- }
-explore: Navigation_Bar {}
\ No newline at end of file
diff --git a/views/Data_Intelligence_OTC.view.lkml b/views/Data_Intelligence_OTC.view.lkml
new file mode 100644
index 00000000..e39a7604
--- /dev/null
+++ b/views/Data_Intelligence_OTC.view.lkml
@@ -0,0 +1,1079 @@
+# The name of this view in Looker is "Data Intelligence Otc"
+
+view: data_intelligence_otc {
+ # The sql_table_name parameter indicates the underlying database table
+ # to be used for all fields in this view.
+ sql_table_name: `@{GCP_PROJECT}.@{REPORTING_DATASET}.OrderToCash`
+ ;;
+ # No primary key is defined for this view. In order to join this view in an Explore,
+ # define primary_key: yes on a dimension that has no repeated values.
+ # Here's what a typical dimension looks like in LookML.
+ # A dimension is a groupable field that can be used to filter query results.
+ # This dimension will be called "Actual Quantity Delivered In Sales Units Lfimg" in Explore.
+ parameter: Currency_Required{
+ type: string
+ allowed_value: {
+ label: "USD"
+ value: "USD"
+ }
+ allowed_value: {
+ label: "EUR"
+ value: "EUR"
+ }
+ allowed_value: {
+ label: "CAD"
+ value: "CAD"
+ }
+ allowed_value: {
+ label: "JPY"
+ value: "JPY"
+ }
+ allowed_value: {
+ label: "GBP"
+ value: "GBP"
+ }
+ allowed_value: {
+ label: "ARS"
+ value: "ARS"
+ }
+ allowed_value: {
+ label: "MXN"
+ value: "MXN"
+ }
+ allowed_value: {
+ label: "BRL"
+ value: "BRL"
+ }
+ allowed_value: {
+ label: "AED"
+ value: "AED"
+ }
+ }
+
+ dimension: delivered_qty {
+ type: number
+ sql: ${TABLE}.ActualQuantityDelivered_InSalesUnits_LFIMG ;;
+ }
+
+ dimension: Blocked_Order_Quantity{
+ type: number
+ sql: ${TABLE}.ActualQuantityDelivered_InSalesUnits_LFIMG ;;
+ }
+
+ measure: sum_actual_quantity_delivered{
+ type: sum
+ sql: ${delivered_qty} ;;
+ drill_fields: [delivery_number, delivery_line_item, material_number, delivery_date,actual_delivery_date, Sold_To_Party, Ship_To_Party, Bill_To_Party, sales_order,delivered_qty,Base_UoM, delivered_value_Local_Currency]
+ }
+
+ dimension: back_order {
+ type: string
+ sql: ${TABLE}.BackOrder ;;
+ }
+
+ dimension: billed_qty {
+ type: number
+ sql: ${TABLE}.BilledQty ;;
+ }
+
+ dimension: billing_block{
+ type: string
+ sql: ${TABLE}.BillingBlockInSdDocument_FAKSK ;;
+ }
+
+ # Dates and timestamps can be represented in Looker using a dimension group of type: time.
+ # Looker converts dates and timestamps to the specified timeframes within the dimension group.
+
+ dimension_group: billing_date_for_billing_index_and_printout {
+ type: time
+ timeframes: [
+ raw,
+ date,
+ week,
+ month,
+ quarter,
+ year
+ ]
+ convert_tz: no
+ datatype: date
+ sql: ${TABLE}.BillingDateForBillingIndexAndPrintout_FKDAT ;;
+ }
+
+ dimension: billing_item {
+ type: string
+ sql: ${TABLE}.BillingItem_POSNR ;;
+ }
+
+ dimension: billing_date {
+ type: string
+ sql: ${TABLE}.BillingDate_FKDAT ;;
+ }
+
+ dimension: blocked_order {
+ type: string
+ sql: ${TABLE}.BlockedSalesOrder ;;
+ }
+
+ measure: count_blocked_order {
+ type: count
+ filters: [blocked_order : "Blocked"]
+ drill_fields:[sales_order, sales_order_line_item, product, delivery_block,billing_block,Sold_To_Party,Blocked_Order_Quantity, Base_UoM,Exchange_Rate_Sales_Value,blocked_order_value_Local_Currency,Local_Currency_Key,blocked_order_value_Global_Currency,Global_Currency]
+ }
+
+ dimension: blocked_order_value_Local_Currency {
+ value_format: "0.00"
+ type: number
+ sql: ${TABLE}.DeliveredNetValue ;;
+ }
+
+ dimension: Exchange_Rate_of_blocked_order_Value{
+ value_format: "0.00"
+ type: number
+ sql: ${blocked_order_value_Local_Currency}/${blocked_order_value_Global_Currency};;
+ }
+
+ dimension: blocked_order_value_Global_Currency {
+ value_format: "0.00"
+ type: number
+ #sql: Round(if(${Local_Currency_Key}={% parameter Currency_Required %} ,${delivered_value_Local_Currency},`@{GCP_PROJECT}`.@{REPORTING_DATASET}.Currency_Conversion( ${Client_ID},${Exchange_Rate_Type} ,${Local_Currency_Key},{% parameter Currency_Required %},${actual_delivery_date},${delivered_value_Local_Currency})),ifnull(CAST(`@{GCP_PROJECT}`.@{REPORTING_DATASET}.Currency_Decimal({% parameter Currency_Required %}) AS int),2)) ;;
+ sql: Round(if(${Local_Currency_Key}={% parameter Currency_Required %} ,${blocked_order_value_Local_Currency},`@{GCP_PROJECT}`.@{REPORTING_DATASET}.Currency_Conversion( ${Client_ID},'M',${Local_Currency_Key},{% parameter Currency_Required %},${creation_date_date},${blocked_order_value_Local_Currency})),ifnull(CAST(`@{GCP_PROJECT}`.@{REPORTING_DATASET}.Currency_Decimal({% parameter Currency_Required %}) AS int),2)) ;;
+ }
+
+ dimension: blocked_order_quantity {
+ type: number
+ sql: ${TABLE}.Blocked_Quantity ;;
+ }
+
+ dimension: blocked_order_value {
+ type: number
+ sql: ${TABLE}.Blocked_Value ;;
+ }
+
+ dimension: brand {
+ type: string
+ sql: ${TABLE}.Brand ;;
+ }
+
+ dimension: canceled_order {
+ type: string
+ sql: ${TABLE}.CanceledOrder ;;
+ }
+
+ measure: count_canceled_order {
+ type: count
+ #sql: ${canceled_order} ;;
+ filters: [canceled_order : "Canceled"]
+
+ drill_fields: [sales_order,sales_order_line_item,product, Sold_To_Party, Ship_To_Party, Bill_To_Party,order_status,sales_order_qty,Base_UoM,Exchange_Rate_Sales_Value,sales_order_value_Local_Currecny,Local_Currency_Key,Sales_Order_Value_Global_Currency,Global_Currency]
+ }
+
+ dimension: city {
+ type: string
+ sql: ${TABLE}.City ;;
+ }
+
+ dimension: confirmed_qty {
+ type: number
+ sql: ${TABLE}.ConfirmedOrderQuantity_BMENG ;;
+ }
+
+ dimension: country_code {
+ type: string
+ map_layer_name: countries
+ sql: ${TABLE}.Country ;;
+ }
+
+ dimension: country{
+ type: string
+ sql: ${TABLE}.RegionDescription;;
+ }
+
+ dimension_group: creation_date {
+ type: time
+ timeframes: [
+ raw,
+ date,
+ week,
+ month,
+ quarter,
+ year
+ ]
+ convert_tz: no
+ datatype: date
+ sql: ${TABLE}.CreationDate_ERDAT ;;
+ }
+
+ dimension: cumulative_order_quantity{
+ type: number
+ sql: ${TABLE}.CumulativeOrderQuantity_KWMENG ;;
+ }
+
+ dimension: customer_address {
+ type: string
+ sql: ${TABLE}.CustomerAddress ;;
+ }
+
+ dimension: customer_name1 {
+ type: string
+ sql: ${TABLE}.CustomerName1 ;;
+ }
+
+ dimension: customer_name2 {
+ type: string
+ sql: ${TABLE}.CustomerName2 ;;
+ }
+
+ dimension: order_created_by {
+ type: string
+ sql: ${TABLE}.CustomerNumber ;;
+ }
+
+ dimension: customer_region {
+ type: string
+ sql: ${TABLE}.CustomerRegion ;;
+ }
+
+ dimension_group: actual_delivery {
+ type: time
+ timeframes: [
+ raw,
+ date,
+ week,
+ month,
+ quarter,
+ year
+ ]
+ convert_tz: no
+ datatype: date
+ sql: ${TABLE}.Date__proofOfDelivery___PODAT ;;
+ }
+
+ dimension: delivered_value_Local_Currency {
+ value_format: "0.00"
+ type: number
+ sql: ${TABLE}.DeliveredNetValue ;;
+ }
+
+ dimension: Exchange_Rate_of_Delivered_Value{
+ value_format: "0.00"
+ type: number
+ sql: ${delivered_value_Local_Currency}/${delivered_value_Global_Currency};;
+ }
+
+ dimension: delivered_value_Global_Currency {
+ value_format: "0.00"
+ type: number
+ #sql: Round(if(${Local_Currency_Key}={% parameter Currency_Required %} ,${delivered_value_Local_Currency},`@{GCP_PROJECT}`.@{REPORTING_DATASET}.Currency_Conversion( ${Client_ID},${Exchange_Rate_Type} ,${Local_Currency_Key},{% parameter Currency_Required %},${actual_delivery_date},${delivered_value_Local_Currency})),ifnull(CAST(`@{GCP_PROJECT}`.@{REPORTING_DATASET}.Currency_Decimal({% parameter Currency_Required %}) AS int),2)) ;;
+ sql: Round(if(${Local_Currency_Key}={% parameter Currency_Required %} ,${delivered_value_Local_Currency},`@{GCP_PROJECT}`.@{REPORTING_DATASET}.Currency_Conversion( ${Client_ID},'M',${Local_Currency_Key},{% parameter Currency_Required %},${actual_delivery_date},${delivered_value_Local_Currency})),ifnull(CAST(`@{GCP_PROJECT}`.@{REPORTING_DATASET}.Currency_Decimal({% parameter Currency_Required %}) AS int),2)) ;;
+ }
+
+ measure: sum_delivered_value {
+ type: sum
+ sql: ${delivered_value_Global_Currency} ;;
+ drill_fields: [delivery_number, delivery_line_item, material_number, delivery_date,actual_delivery_date, Sold_To_Party, Ship_To_Party, Bill_To_Party, sales_order,delivered_qty,Base_UoM, delivered_value_Local_Currency]
+ }
+
+
+
+ dimension: delivery_block{
+ type: string
+ sql: ${TABLE}.DeliveryBlock_documentHeader_LIFSK ;;
+ }
+
+ dimension: Ship_To_Party {
+ type: string
+ sql: if(${TABLE}.ShipToPartyItemName_KUNNR is not null,${TABLE}.ShipToPartyItemName_KUNNR,${TABLE}.ShipToPartyHeaderName_KUNNR) ;;
+
+ }
+
+ dimension: Sold_To_Party {
+ type: string
+ sql: ${TABLE}.CustomerName1 ;;
+ }
+
+ dimension: Bill_To_Party {
+ type: string
+ sql: if(${TABLE}.BillToPartyItemName_KUNNR is not null,${TABLE}.BillToPartyItemName_KUNNR,${TABLE}.BillToPartyHeaderName_KUNNR);;
+ }
+
+ dimension: Base_UoM {
+ type: string
+ sql: ${TABLE}.salesUnitMeasure ;;
+ }
+
+
+ dimension: delivery_number {
+ type: string
+ sql: ${TABLE}.Delivery_VBELN ;;
+ }
+
+ measure: count_delivery_number {
+ type: count_distinct
+ sql: ${delivery} ;;
+ filters: [late_deliveries: "Delayed"]
+ drill_fields: [delivery_number,delivery_line_item,product,req_delivery_date,actual_delivery_date,Sold_To_Party,Ship_To_Party,Bill_To_Party,sales_order,delivered_qty,Base_UoM,Exchange_Rate_of_Delivered_Value,delivered_value_Local_Currency,Local_Currency_Key,delivered_value_Global_Currency,Global_Currency]
+ }
+
+ dimension: distribution_channel_number {
+ type: string
+ sql: ${TABLE}.DistributionChannel ;;
+ #drill_fields: [material_description]
+ }
+
+ dimension: distribution_channel {
+ type: string
+ sql: ${TABLE}.DistributionChannelName ;;
+ }
+
+
+ dimension: division{
+ type: string
+ sql: ${TABLE}.Division;;
+ }
+
+ dimension: document_category {
+ type: string
+ sql: ${TABLE}.DocumentCategory_VBTYP ;;
+ }
+
+ dimension: fill_rate {
+ type: number
+ sql: ${TABLE}.FillRatePercent ;;
+ #drill_fields: [sales_order,sales_order_line_items,product, Sold_To_Party, Ship_To_Party, Bill_To_Party,order_status,sales_order_qty,Base_UoM,sales_order_value]
+ }
+
+ measure: average_fill_rate {
+ type: average
+ sql: ${fill_rate} ;;
+ drill_fields: [sales_order,sales_order_line_item,product,req_delivery_date,actual_delivery_date ,Sold_To_Party,Ship_To_Party,Bill_To_Party,sales_order_qty,Base_UoM,confirmed_qty,fill_rate]
+ }
+
+ dimension: payer_item {
+ type: string
+ sql: ${TABLE}.PayerItem_KUNNR ;;
+ }
+
+ dimension: status_of_delivery {
+ type: string
+ sql: ${TABLE}.DeliveryStatus ;;
+ }
+
+ dimension: delivery_status {
+ type: string
+ sql: CASE WHEN ${status_of_delivery} = "A" THEN "Not yet processed"
+ WHEN ${status_of_delivery}="B" THEN "Partially processed"
+ WHEN ${status_of_delivery}="C" THEN "Completely processed"
+ else "Not Relevant" END;;
+ }
+
+ dimension: order_status {
+ type: string
+ sql: if(${canceled_order}="Canceled","Canceled",if(${open_orders}="OpenOrder","Open","Closed")) ;;
+ }
+
+
+
+ dimension: billing_doc {
+ type: string
+ sql: ${TABLE}.BillingDocument_VBELN ;;
+
+
+ }
+
+ dimension: billing_Net_Value_Local_Currecy{
+ value_format: "0.00"
+ type: number
+ sql: ${TABLE}.BillingNetValue ;;
+ }
+
+ dimension: Exchange_Rate_Billing_net_value{
+ value_format: "0.00"
+ type: number
+ sql: ${billing_Net_Value_Local_Currecy}/${billing_Net_Value_Local_Currecy};;
+ }
+
+ dimension: billing_Net_Value_Global_Currecy {
+ value_format: "0.00"
+ type: number
+ #sql: Round(if(${Local_Currency_Key}={% parameter Currency_Required %} ,${intercompany_price_Local_currency},`@{GCP_PROJECT}`.@{REPORTING_DATASET}.Currency_Conversion( ${Client_ID},${Exchange_Rate_Type} ,${Local_Currency_Key},{% parameter Currency_Required %},${billing_date},${intercompany_price_Local_currency})),ifnull(CAST(`@{GCP_PROJECT}`.@{REPORTING_DATASET}.Currency_Decimal({% parameter Currency_Required %}) AS int),2)) ;;
+ sql: Round(if(${Local_Currency_Key}={% parameter Currency_Required %} ,${billing_Net_Value_Local_Currecy},`@{GCP_PROJECT}`.@{REPORTING_DATASET}.Currency_Conversion( ${Client_ID},'M',${Local_Currency_Key},{% parameter Currency_Required %},${billing_date},${billing_Net_Value_Local_Currecy})),ifnull(CAST(`@{GCP_PROJECT}`.@{REPORTING_DATASET}.Currency_Decimal({% parameter Currency_Required %}) AS int),2)) ;;
+ }
+
+ dimension: in_full_delivery {
+ type: string
+ sql: ${TABLE}.InFullDelivery ;;
+ }
+
+
+ dimension: incoming_order {
+ type: string
+ sql: ${TABLE}.IncomingOrderNum ;;
+
+ }
+
+ measure: count_incoming_order {
+ type: count
+ #sql: ${incoming_order} ;;
+ drill_fields: [sales_order,sales_order_line_item,product, Sold_To_Party, Ship_To_Party, Bill_To_Party,order_status,sales_order_qty,Base_UoM,Exchange_Rate_Sales_Value,sales_order_value_Local_Currecny,Local_Currency_Key,Sales_Order_Value_Global_Currency,Global_Currency]
+ #drill_fields: [sales_orders, order_line_items, material_number, requesteddeliverydate_date,actual_delivery_date, SoldToParty, ShipToParty, BillToParty, customer_number, delivery_number,billing_document, delivery_status,order_status, sales_order_qty, BaseUoM, sales_order_value]
+ }
+
+ dimension: intercompany_price_Local_currency {
+ value_format: "0.00"
+ type: number
+ sql: ${TABLE}.IntercompanyPrice ;;
+ }
+
+ dimension: Exchange_Rate_intercompany_price{
+ value_format: "0.00"
+ type: number
+ sql: ${intercompany_price_Local_currency}/${list_price_Global_currency};;
+ }
+
+ dimension: intercompany_price_Global_currency {
+ value_format: "0.00"
+ type: number
+ #sql: Round(if(${Local_Currency_Key}={% parameter Currency_Required %} ,${intercompany_price_Local_currency},`@{GCP_PROJECT}`.@{REPORTING_DATASET}.Currency_Conversion( ${Client_ID},${Exchange_Rate_Type} ,${Local_Currency_Key},{% parameter Currency_Required %},${billing_date},${intercompany_price_Local_currency})),ifnull(CAST(`@{GCP_PROJECT}`.@{REPORTING_DATASET}.Currency_Decimal({% parameter Currency_Required %}) AS int),2)) ;;
+ sql: Round(if(${Local_Currency_Key}={% parameter Currency_Required %} ,${intercompany_price_Local_currency},`@{GCP_PROJECT}`.@{REPORTING_DATASET}.Currency_Conversion( ${Client_ID},'M',${Local_Currency_Key},{% parameter Currency_Required %},${billing_date},cast(${intercompany_price_Local_currency} as numeric))),ifnull(CAST(`@{GCP_PROJECT}`.@{REPORTING_DATASET}.Currency_Decimal({% parameter Currency_Required %}) AS int),2)) ;;
+ }
+ dimension: late_deliveries {
+ type: string
+ sql: ${TABLE}.LateDeliveries ;;
+ }
+
+ dimension: material_number {
+ type: string
+ sql: ${TABLE}.MaterialNumber ;;
+ }
+
+ dimension: product {
+ type: string
+ sql: ${TABLE}.MaterialDescription ;;
+ }
+
+ dimension: net_price {
+ value_format: "0.00"
+ type: number
+ sql: ${TABLE}.NetPrice_NETPR ;;
+ }
+
+ # A measure is a field that uses a SQL aggregate function. Here are defined sum and average
+ # measures for this dimension, but you can also add measures of many different aggregates.
+ # Click on the type parameter to see all the options in the Quick Help panel on the right.
+
+ measure: total_net_price {
+ value_format: "0.00"
+ type: sum
+ sql: ${net_price} ;;
+ }
+
+ measure: average_net_price {
+ value_format: "0.00"
+ type: average
+ sql: ${net_price} ;;
+ }
+
+ dimension: net_value_local_currency {
+ value_format: "0.00"
+ type: number
+ sql: ${TABLE}.BillingNetValue ;;
+ }
+
+ dimension: on_time_delivery {
+ type: string
+ sql: ${TABLE}.OnTimeDelivery ;;
+ }
+
+ dimension: Delivery {
+ type: yesno
+ sql:${actual_delivery_date} is not null ;;
+ }
+
+ measure: count_of_deliveries {
+ type: count_distinct
+ sql: ${delivery_number} ;;
+ filters: [Delivery: "Yes"]
+ }
+
+ measure: count_on_time_delivery {
+ type: count_distinct
+ sql: ${delivery_number} ;;
+ filters: [OnTime: "Yes",Delivery: "Yes"]
+ }
+
+ measure: count_in_full_delivery {
+ type: count_distinct
+ sql: ${delivery_number} ;;
+ filters: [InFull: "Yes", Delivery: "Yes"]
+ }
+
+ measure: count_otif {
+ type: count_distinct
+ sql: ${delivery_number} ;;
+ filters: [OnTime_InFull: "Yes", Delivery: "Yes"]
+ }
+
+ measure: count_latedeliveries {
+ type: count_distinct
+ sql: ${delivery_number} ;;
+ filters: [Late_Delivery: "Yes", Delivery: "Yes"]
+ }
+
+ measure: OnTimePercentage {
+ type: number
+ value_format: "0%"
+ sql: if(${count_of_deliveries}=0,0,round(${count_on_time_delivery}/${count_of_deliveries},2)) ;;
+ }
+
+ measure: InFullPercentage {
+ type: number
+ value_format: "0%"
+ sql: if(${count_of_deliveries}=0,0,round(${count_in_full_delivery}/${count_of_deliveries},2)) ;;
+ }
+
+
+ measure: OTIFPercentage {
+ type: number
+ value_format: "0%"
+ sql: if(${count_of_deliveries}=0,0,round(${count_otif}/${count_of_deliveries},2)) ;;
+ }
+
+
+ measure: LateDeliveryPercentage {
+ type: number
+ value_format: "0%"
+ sql: if(${count_of_deliveries}=0,0,round(${count_latedeliveries}/${count_of_deliveries},2)) ;;
+ }
+
+ dimension: OnTime_InFull {
+ type: yesno
+ sql: ${otif}="OTIF" ;;
+ }
+
+ dimension: OnTime {
+ type: yesno
+ sql: ${on_time_delivery}="DeliveredOnTime" ;;
+ }
+
+ dimension: InFull {
+ type: yesno
+ sql: ${in_full_delivery}="DeliveredInFull" ;;
+ }
+
+ dimension: Late_Delivery {
+ type: yesno
+ sql: ${late_deliveries}="Delayed" ;;
+ }
+
+
+ dimension: open_orders {
+ type: string
+ sql: ${TABLE}.OpenOrder ;;
+ }
+
+ measure:count_open_orders {
+ type: count
+ filters: [open_orders: "OpenOrder"]
+ drill_fields: [sales_order,sales_order_line_item,product, Sold_To_Party, Ship_To_Party, Bill_To_Party,order_status,sales_order_qty,Base_UoM,sales_order_value_Local_Currecny]
+ #drill_fields: [sales_order_number,creation_date_date, material_number, confirmed_order_quantity,sales_order_net_price, shipping_location, requesteddeliverydate_date]
+ }
+
+ dimension: order_cycle_time_in_days {
+ type: number
+ sql: ${TABLE}.OrderCycleTimeInDays ;;
+ }
+
+ dimension: sales_order_line_item {
+ type: string
+ sql: ${TABLE}.Item_POSNR ;;
+ }
+
+ dimension: delivery_line_item {
+ type: string
+ sql: ${TABLE}.DeliveryItem_POSNR ;;
+ }
+
+ dimension: sales_order {
+ type: string
+ sql: ${TABLE}.SalesDocument_VBELN ;;
+ }
+
+ measure: count_sales_orders_line_item{
+ type: number
+ sql: count(${sales_order_line_item}) ;;
+ }
+
+
+ dimension: Total_Sales_Orders {
+ type: number
+ sql: ${TABLE}.TotalOrderItems ;;
+ }
+
+ measure: Total_Sales_Orders_AVG {
+ type: average
+ sql: ${Total_Sales_Orders} ;;
+ }
+
+ dimension: Total_Delevery_Order {
+ type: number
+ sql: ${TABLE}.TotalDeliveries ;;
+ }
+
+ measure: Total_Delevery_Order_AVG {
+ type: average
+ sql: ${Total_Delevery_Order} ;;
+ }
+
+ measure: avg_order_line_items {
+ type: number
+ sql: round(${count_sales_orders_line_item}/${Total_Sales_Orders_AVG},2) ;;
+ }
+
+ dimension: delivery {
+ type: string
+ sql: ${TABLE}.Delivery_VBELN ;;
+ }
+
+ measure: count_deliveries_sales_orders {
+ type: number
+ sql: count(${delivery_line_item}) ;;
+ }
+
+ measure: average_deliveries_sales_orders {
+ type: number
+ sql: round(${count_deliveries_sales_orders}/${Total_Delevery_Order_AVG},2) ;;
+ }
+
+ dimension: otif {
+ type: string
+ sql: ${TABLE}.OTIF ;;
+ }
+
+
+
+ dimension: postal_code {
+ type: string
+ sql: ${TABLE}.PostalCode ;;
+ }
+
+ dimension: product_category {
+ type: string
+ sql: ${TABLE}.ProductCategory ;;
+ }
+
+ dimension: rejection_reason {
+ type: string
+ sql: ${TABLE}.RejectionReason_ABGRU ;;
+ }
+
+ dimension_group: req_delivery{
+ type: time
+ timeframes: [
+ raw,
+ date,
+ week,
+ month,
+ quarter,
+ year
+ ]
+ convert_tz: no
+ datatype: date
+ sql: ${TABLE}.DeliveryDate_LFDAT;;
+ }
+
+ dimension: return_order {
+ type: string
+ sql: ${TABLE}.ReturnOrder ;;
+ }
+
+ measure: count_return_order {
+ type: count
+ filters: [return_order : "Returned"]
+ drill_fields: [sales_order,sales_order_line_item,product, Sold_To_Party, Ship_To_Party, Bill_To_Party,order_status,sales_order_qty,Base_UoM,Exchange_Rate_Sales_Value,sales_order_value_Local_Currecny,Local_Currency_Key,Sales_Order_Value_Global_Currency,Global_Currency]
+ }
+ measure: Return_Order_Percentage {
+ type: number
+ sql: ${count_return_order}/${count_of_delivery} ;;
+ link: {
+ label: "Returned Orders"
+ url: "/dashboards/cortex_sap_operational::returned_orders?"
+ }
+ #drill_fields: [sales_order,sales_order_line_item,product, Sold_To_Party, Ship_To_Party, Bill_To_Party,order_status,sales_order_qty,Base_UoM,Exchange_Rate_Sales_Value,Sales_Order_Value_Global_Currency,Global_Currency,sales_order_value_Local_Currecny,Local_Currency_Key]
+ }
+
+ measure: Cancelled_Order_Percentage {
+ type: number
+ sql: ${count_canceled_order}/${data_intelligence_otc.count} ;;
+ link: {
+ label: "Canceled Orders"
+ url: "/dashboards/cortex_sap_operational::canceled_orders?"
+ }
+
+ }
+
+ measure: count_of_delivery {
+ type: count_distinct
+ sql: ${delivery} ;;
+ }
+
+ dimension: Rebate_Local_Currency {
+ value_format: "0.00"
+ type: number
+ sql: ${TABLE}.rebate ;;
+ }
+
+ dimension: Rebate_Global_Currency {
+ value_format: "0.00"
+ type: number
+ #sql: Round(if(${Local_Currency_Key}={% parameter Currency_Required %} ,${Rebate_Local_Currency},`@{GCP_PROJECT}`.@{REPORTING_DATASET}.Currency_Conversion( ${Client_ID},${Exchange_Rate_Type} ,${Local_Currency_Key},{% parameter Currency_Required %},${billing_date},${Rebate_Local_Currency})),ifnull(CAST(`@{GCP_PROJECT}`.@{REPORTING_DATASET}.Currency_Decimal({% parameter Currency_Required %}) AS int),2)) ;;
+ sql: Round(if(${Local_Currency_Key}={% parameter Currency_Required %} ,${Rebate_Local_Currency},`@{GCP_PROJECT}`.@{REPORTING_DATASET}.Currency_Conversion( ${Client_ID},'M',${Local_Currency_Key},{% parameter Currency_Required %},${billing_date_for_billing_index_and_printout_date},${Rebate_Local_Currency})),ifnull(CAST(`@{GCP_PROJECT}`.@{REPORTING_DATASET}.Currency_Decimal({% parameter Currency_Required %}) AS int),2)) ;;
+ }
+
+ dimension: Tax_Amount_Local_Currency {
+ value_format: "0.00"
+ type: number
+ sql: ${TABLE}.TaxAmount_MWSBK ;;
+ }
+
+ dimension: Exchange_Rate_Tax_Amount{
+ value_format: "0.00"
+ type: number
+ sql: ${Tax_Amount_Local_Currency}/${list_price_Global_currency};;
+ }
+
+ dimension: Tax_Amount_Global_Currency {
+ value_format: "0.00"
+ type: number
+ #sql: Round(if(${Local_Currency_Key}={% parameter Currency_Required %} ,${Tax_Amount_Local_Currency},`@{GCP_PROJECT}`.@{REPORTING_DATASET}.Currency_Conversion( ${Client_ID},${Exchange_Rate_Type} ,${Local_Currency_Key},{% parameter Currency_Required %},${billing_date},${Tax_Amount_Local_Currency})),ifnull(CAST(`@{GCP_PROJECT}`.@{REPORTING_DATASET}.Currency_Decimal({% parameter Currency_Required %}) AS int),2)) ;;
+ sql: Round(if(${Local_Currency_Key}={% parameter Currency_Required %} ,${Tax_Amount_Local_Currency},`@{GCP_PROJECT}`.@{REPORTING_DATASET}.Currency_Conversion( ${Client_ID},'M',${Local_Currency_Key},{% parameter Currency_Required %},${billing_date_for_billing_index_and_printout_date},${Tax_Amount_Local_Currency})),ifnull(CAST(`@{GCP_PROJECT}`.@{REPORTING_DATASET}.Currency_Decimal({% parameter Currency_Required %}) AS int),2)) ;;
+ }
+
+
+
+ dimension: sales_order_net_price_local_currency {
+ value_format: "0.00"
+ type: number
+ sql: ${TABLE}.SalesOrderNetPrice ;;
+ }
+
+ dimension: sales_order_net_price_Global_Currency {
+ value_format: "0.00"
+ type: number
+ sql: Round(if(${Local_Currency_Key}={% parameter Currency_Required %} ,${sales_order_net_price_local_currency},`@{GCP_PROJECT}`.@{REPORTING_DATASET}.Currency_Conversion( ${Client_ID},'M',${Local_Currency_Key},{% parameter Currency_Required %},${creation_date_date},${sales_order_net_price_local_currency})),ifnull(CAST(`@{GCP_PROJECT}`.@{REPORTING_DATASET}.Currency_Decimal({% parameter Currency_Required %}) AS int),2)) ;;
+ }
+
+
+
+ dimension: sales_order_net_value_Local_Currency {
+ value_format: "0.00"
+ type: number
+ sql: ${TABLE}.SalesOrderNetValue ;;
+ }
+
+ measure: sum_sales_order_net_value {
+ hidden: no
+ type: sum
+ sql: ${sales_order_net_value_Global_Currency} ;;
+ link: {
+ label: "Product"
+ url: "/dashboards/cortex_sap_operational::sales_performance_by_product?"
+ }
+ }
+
+ measure: sum_sales_order_net_value_1 {
+ hidden: no
+ type: sum
+ sql: ${sales_order_net_value_Global_Currency} ;;
+ link: {
+ label: "Sales Organization"
+ url: "/dashboards/cortex_sap_operational::sales_performance_by_sales_org?"
+ }
+ }
+
+ measure: sum_sales_order_net_value_2 {
+ hidden: no
+ type: sum
+ sql: ${sales_order_net_value_Global_Currency} ;;
+ link: {
+ label: "Distribution Channel"
+ url: "/dashboards/cortex_sap_operational::sales_performance_by_distribution_channel?"
+ }
+ }
+
+ measure: sum_sales_order_net_value_3 {
+ hidden: no
+ type: sum
+ sql: ${sales_order_net_value_Global_Currency} ;;
+ link: {
+ label: "Division"
+ url: "/dashboards/cortex_sap_operational::sales_performance_by_division?"
+ }
+ }
+
+ dimension: Exchange_Rate_Sales_Net_Value{
+ value_format: "0.00"
+ type: number
+ sql: ${sales_order_net_value_Local_Currency}/${sales_order_net_value_Global_Currency};;
+ }
+
+ dimension: sales_order_net_value_Global_Currency {
+ value_format: "0.00"
+ type: number
+ sql: Round(if(${Local_Currency_Key}={% parameter Currency_Required %} ,${sales_order_net_value_Local_Currency},`@{GCP_PROJECT}`.@{REPORTING_DATASET}.Currency_Conversion( ${Client_ID},'M',${Local_Currency_Key},{% parameter Currency_Required %},${creation_date_date},${sales_order_net_value_Local_Currency})),ifnull(CAST(`@{GCP_PROJECT}`.@{REPORTING_DATASET}.Currency_Decimal({% parameter Currency_Required %}) AS int),2)) ;;
+ }
+
+ dimension: delivery_sales_order {
+ type: string
+ sql: ${TABLE}.SalesOrderNumber ;;
+ }
+
+ dimension: sales_order_qty {
+ type: number
+ sql: ${TABLE}.SalesOrderQty ;;
+ }
+
+ measure: sum_sales_order_qty {
+ type: sum
+ sql: ${sales_order_qty};;
+ drill_fields: [sales_order,sales_order_line_item, material_number, sales_order_qty,
+ list_price_Local_Currency, adjusted_price_Local_Currency, discount_Local_currency]
+ }
+
+ dimension: sales_order_quantity {
+ type: number
+ sql: ${TABLE}.SalesOrderQuantity ;;
+ }
+
+ dimension: sales_order_value_Local_Currecny {
+ value_format: "0.00"
+ type: number
+ sql: ${TABLE}.SalesOrderValue ;;
+
+ }
+
+ dimension: Exchange_Rate_Sales_Value{
+ value_format: "0.00"
+ type: number
+ sql: ${sales_order_value_Local_Currecny}/${Sales_Order_Value_Global_Currency};;
+ }
+
+ dimension: Sales_Order_Value_Global_Currency {
+ value_format: "0.00"
+ type: number
+ sql: Round(if(${Local_Currency_Key}={% parameter Currency_Required %} ,${sales_order_value_Local_Currecny},`@{GCP_PROJECT}`.@{REPORTING_DATASET}.Currency_Conversion( ${Client_ID},'M',${Local_Currency_Key},{% parameter Currency_Required %},${creation_date_date},${sales_order_value_Local_Currecny})),ifnull(CAST(`@{GCP_PROJECT}`.@{REPORTING_DATASET}.Currency_Decimal({% parameter Currency_Required %}) AS int),2)) ;;
+ }
+
+ measure: sum_sales_order_value {
+ type: sum
+ sql: ${sales_order_value_Local_Currecny} ;;
+ drill_fields: [sales_order,sales_order_line_item, material_number, sales_order_qty,
+ list_price_Local_Currency, adjusted_price_Local_Currency, discount_Local_currency]
+ }
+
+ dimension: sales_orders_number {
+ type: string
+ sql: ${TABLE}.SalesOrderNumber ;;
+ }
+
+
+ dimension: sales_org_number {
+ type: string
+ sql: ${TABLE}.SalesOrganization ;;
+ }
+
+ dimension: sales_org {
+ type: string
+ sql: ${TABLE}.SalesOrganizationName ;;
+ }
+
+ dimension: list_price_Local_Currency {
+ value_format: "0.00"
+ type: number
+ sql: ${TABLE}.ListPrice ;;
+ }
+
+ dimension: variation_of_listprice_and_adjustedprice{
+ value_format: "0.00"
+ type: number
+ sql: ${list_price_Global_currency}-${adjusted_price_Global_currency} ;;
+ }
+
+ measure: average_variation_of_listprice_and_adjustedprice {
+ value_format: "0.00"
+ type: average
+ sql: ${list_price_Global_currency}-${adjusted_price_Global_currency} ;;
+ link: {
+ label: "Customer focused Price Variations"
+ url: "/dashboards/cortex_sap_operational::customer_based_pricing_variations?"
+ }
+ }
+
+ measure: average_list_price1{
+ value_format: "0.00"
+ type: average
+ sql: ${list_price_Global_currency} ;;
+ link: {
+ label: "Price Adjustments based on Customer Profiling"
+ url: "/dashboards/cortex_sap_operational::price_adjustments_based_on_customer_profiling?"
+ }
+
+ }
+
+ measure: average_adjusted_price{
+ value_format: "0.00"
+ type: average
+ sql: ${adjusted_price_Global_currency} ;;
+ link: {
+ label: "Price Adjustments based on Customer Profiling"
+ url: "/dashboards/cortex_sap_operational::price_adjustments_based_on_customer_profiling?"
+ }
+
+ }
+
+ measure: average_list_price2{
+ value_format: "0.00"
+ type: average
+ sql: ${list_price_Global_currency} ;;
+ link: {
+ label: "Price Adjustments based on Product Availability"
+ url: "/dashboards/cortex_sap_operational::price_adjustments_based_on_product_availability?"
+ }
+
+ }
+
+ measure: average_intercompany_price {
+ value_format: "0.00"
+ type: average
+ sql: ${intercompany_price_Global_currency} ;;
+ link: {
+ label: "Price Adjustments based on Product Availability"
+ url: "/dashboards/cortex_sap_operational::price_adjustments_based_on_product_availability?"
+ }
+ }
+
+ measure: average_discount{
+ value_format: "0.00"
+ type: average
+ sql: ${discount_Global_currency} ;;
+ link: {
+ label: "Price Adjustments based on Product Availability"
+ url: "/dashboards/cortex_sap_operational::product_based_pricing_variations?"
+ }
+
+ }
+
+ dimension: Exchange_Rate_Billing{
+ value_format: "0.00"
+ type: number
+ sql: if(${list_price_Global_currency}=0,0,${list_price_Local_Currency}/${list_price_Global_currency});;
+ }
+
+ dimension: list_price_Global_currency {
+ value_format: "0.00"
+ type: number
+ #sql: Round(if(${Local_Currency_Key}={% parameter Currency_Required %} ,${list_price_Local_Currency},`@{GCP_PROJECT}`.@{REPORTING_DATASET}.Currency_Conversion( ${Client_ID},${Exchange_Rate_Type} ,${Local_Currency_Key},{% parameter Currency_Required %},${billing_date},${list_price_Local_Currency})),ifnull(CAST(`@{GCP_PROJECT}`.@{REPORTING_DATASET}.Currency_Decimal({% parameter Currency_Required %}) AS int),2)) ;;
+ sql: Round(if(${Local_Currency_Key}={% parameter Currency_Required %} ,${list_price_Local_Currency},`@{GCP_PROJECT}`.@{REPORTING_DATASET}.Currency_Conversion( ${Client_ID},'M',${Local_Currency_Key},{% parameter Currency_Required %},${billing_date_for_billing_index_and_printout_date},cast(${list_price_Local_Currency} as numeric))),ifnull(CAST(`@{GCP_PROJECT}`.@{REPORTING_DATASET}.Currency_Decimal({% parameter Currency_Required %}) AS int),2)) ;;
+ }
+
+ dimension: adjusted_price_Local_Currency {
+ value_format: "0.00"
+ type: number
+ sql: ${TABLE}.AdjustedPrice ;;
+ }
+
+ dimension: adjusted_price_Global_currency {
+ value_format: "0.00"
+ type: number
+ #sql: Round(if(${Local_Currency_Key}={% parameter Currency_Required %} ,${adjusted_price_Local_Currency},`@{GCP_PROJECT}`.@{REPORTING_DATASET}.Currency_Conversion( ${Client_ID},${Exchange_Rate_Type} ,${Local_Currency_Key},{% parameter Currency_Required %},${billing_date},${adjusted_price_Local_Currency})),ifnull(CAST(`@{GCP_PROJECT}`.@{REPORTING_DATASET}.Currency_Decimal({% parameter Currency_Required %}) AS int),2)) ;;
+ sql: Round(if(${Local_Currency_Key}={% parameter Currency_Required %} ,${adjusted_price_Local_Currency},`@{GCP_PROJECT}`.@{REPORTING_DATASET}.Currency_Conversion( ${Client_ID},'M',${Local_Currency_Key},{% parameter Currency_Required %},${billing_date_for_billing_index_and_printout_date},cast(${adjusted_price_Local_Currency} as numeric))),ifnull(CAST(`@{GCP_PROJECT}`.@{REPORTING_DATASET}.Currency_Decimal({% parameter Currency_Required %}) AS int),2)) ;;
+ }
+
+ dimension: discount_Local_currency {
+ value_format: "0.00"
+ type: number
+ sql: ${TABLE}.Discount ;;
+ }
+
+ dimension: discount_Global_currency {
+ value_format: "0.00"
+ type: number
+ #sql: Round(if(${Local_Currency_Key}={% parameter Currency_Required %} ,${discount_Local_currency},`@{GCP_PROJECT}`.@{REPORTING_DATASET}.Currency_Conversion( ${Client_ID},${Exchange_Rate_Type} ,${Local_Currency_Key},{% parameter Currency_Required %},${billing_date},${discount_Local_currency})),ifnull(CAST(`@{GCP_PROJECT}`.@{REPORTING_DATASET}.Currency_Decimal({% parameter Currency_Required %}) AS int),2)) ;;
+ sql: Round(if(${Local_Currency_Key}={% parameter Currency_Required %} ,${discount_Local_currency},`@{GCP_PROJECT}`.@{REPORTING_DATASET}.Currency_Conversion( ${Client_ID},'M',${Local_Currency_Key},{% parameter Currency_Required %},${billing_date_for_billing_index_and_printout_date},cast(${discount_Local_currency} as numeric))),ifnull(CAST(`@{GCP_PROJECT}`.@{REPORTING_DATASET}.Currency_Decimal({% parameter Currency_Required %}) AS int),2)) ;;
+ }
+
+ dimension: delivery_date {
+ type: date
+ sql: ${TABLE}.DeliveryDate_LFDAT ;;
+ }
+
+ dimension: shipping_location {
+ type: string
+ sql: ${TABLE}.ShippingLocation ;;
+ }
+
+ dimension: Local_Currency_Key {
+ type: string
+ sql: ${TABLE}.SalesOrderDocumentCurrency_WAERK ;;
+ }
+
+ dimension:Local_Currency_Key_Billing{
+ type: string
+ sql: ${TABLE}.BillingDOcumentCurrency_WAERK ;;
+ }
+
+
+
+ dimension: Global_Currency {
+ type: string
+ sql: {% parameter Currency_Required %};;
+ }
+
+ dimension:Local_Currency_Key_Delivery{
+ type: string
+ sql: ${TABLE}.DeliveryDocumentCurrency_WAERK ;;
+ }
+
+
+ dimension: Exchange_Rate_Type {
+ type: string
+ sql: ${TABLE}.ExchangeRateType_KURST ;;
+ }
+
+ dimension:one_touch_order{
+ type: string
+ sql: ${TABLE}.OneTouchOrders ;;
+ }
+
+ measure: count_one_touch_order {
+ type: count_distinct
+ sql: ${one_touch_order} ;;
+ }
+
+ measure: percentage_one_touch_order {
+ type: number
+ sql: ${count_one_touch_order}/${count_incoming_order}*100 ;;
+ link: {
+ label: "One Touch Order"
+ url: "/dashboards/cortex_sap_operational::one_touch_order?"
+ }
+ }
+
+
+ dimension: One_Touch_Order_Count {
+ type: number
+ sql: ${TABLE}.OneTouchOrderCount ;;
+ link: {
+ label: "One Touch Order"
+ url: "/dashboards/cortex_sap_operational::one_touch_order?"
+ }
+ }
+
+ dimension: Client_ID {
+ type: string
+ sql: ${TABLE}.Client_MANDT ;;
+ }
+ measure: count {
+ type: count
+ drill_fields: []
+ }
+}
diff --git a/views/countries_md.view.lkml b/views/countries_md.view.lkml
index bd324926..7316784e 100644
--- a/views/countries_md.view.lkml
+++ b/views/countries_md.view.lkml
@@ -10,7 +10,7 @@ view: countries_md {
# Here's what a typical dimension looks like in LookML.
# A dimension is a groupable field that can be used to filter query results.
# This dimension will be called "Alternative Country Key Landa" in Explore.
- fields_hidden_by_default: yes
+
dimension: alternative_country_key_landa {
type: string
sql: ${TABLE}.AlternativeCountryKey_LANDA ;;
@@ -65,7 +65,6 @@ view: countries_md {
dimension: country_name_landx {
type: string
sql: ${TABLE}.CountryName_LANDX ;;
- hidden: no
}
dimension: country_version_flag_xland {
diff --git a/views/customers_md.view.lkml b/views/customers_md.view.lkml
index 1986e923..548c28d3 100644
--- a/views/customers_md.view.lkml
+++ b/views/customers_md.view.lkml
@@ -10,7 +10,7 @@ view: customers_md {
# Here's what a typical dimension looks like in LookML.
# A dimension is a groupable field that can be used to filter query results.
# This dimension will be called "Account Number Fiscal Address Fiskn" in Explore.
- fields_hidden_by_default: yes
+
dimension: account_number_fiscal_address_fiskn {
type: string
sql: ${TABLE}.AccountNumberFiscalAddress_FISKN ;;
@@ -253,8 +253,6 @@ view: customers_md {
dimension: client_mandt {
type: string
sql: ${TABLE}.Client_MANDT ;;
- primary_key: yes
- hidden: no
}
dimension: cnae_cnae {
@@ -386,7 +384,6 @@ view: customers_md {
type: string
sql: ${TABLE}.CustomerNumber_KUNNR ;;
primary_key: yes
- hidden: no
}
dimension: customer_region_regio {
@@ -740,7 +737,6 @@ view: customers_md {
dimension: name1_name1 {
type: string
sql: ${TABLE}.Name1_NAME1 ;;
- hidden: no
}
dimension: name1_pson1 {
@@ -751,7 +747,6 @@ view: customers_md {
dimension: name2_name2 {
type: string
sql: ${TABLE}.Name2_NAME2 ;;
- hidden: no
}
dimension: name2_pson2 {
@@ -762,7 +757,6 @@ view: customers_md {
dimension: name3_name3 {
type: string
sql: ${TABLE}.Name3_NAME3 ;;
- hidden: no
}
dimension: name3_pson3 {
diff --git a/views/deliveries.view.lkml b/views/deliveries.view.lkml
index 78d4fd32..94f0beb4 100644
--- a/views/deliveries.view.lkml
+++ b/views/deliveries.view.lkml
@@ -10,20 +10,18 @@ view: deliveries {
# Here's what a typical dimension looks like in LookML.
# A dimension is a groupable field that can be used to filter query results.
# This dimension will be called "Account Assignment Category Knttp" in Explore.
- fields_hidden_by_default: yes
+
dimension: OnTimeDelivery {
type: string
sql: IF( ${date__proof_of_delivery___podat_date}<=${delivery_date_lfdat_date},
'DeliveredOnTime',
'NotDeliveredOnTime') ;;
- hidden: no
}
dimension: InFullDelivery {
type: string
sql: IF(${sales_orders.cumulative_order_quantity_kwmeng}=${actual_quantity_delivered_in_sales_units_lfimg},
'DeliveredInFull',
'NotDeliverdInFull') ;;
- hidden: no
}
dimension: LateDeliveries {
@@ -31,113 +29,83 @@ view: deliveries {
sql: IF( ${date__proof_of_delivery___podat_date}>${delivery_date_lfdat_date},
'Delayed',
'NotDelayed') ;;
- hidden: no
}
dimension: OnTime {
type: yesno
sql: ${OnTimeDelivery}="DeliveredOnTime" ;;
- hidden: no
}
dimension: InFull{
type: yesno
sql: ${InFullDelivery}="DeliveredInFull" ;;
- hidden: no
}
dimension: Late_Delivery{
type: yesno
sql: ${LateDeliveries}="Delayed" ;;
- hidden: no
}
dimension: Delivery {
type: yesno
sql:${date__proof_of_delivery___podat_date} is not null ;;
- hidden: no
- }
-
- measure: count_of_delivery {
- type: count_distinct
- sql: ${delivery_vbeln} ;;
- hidden: no
}
-
measure: count_on_time_delivery {
type: count_distinct
- sql: ${delivery_vbeln};;
+ sql: ${delivery_vbeln} ;;
filters: [OnTime: "Yes",Delivery: "Yes"]
- hidden: no
}
measure: count_in_full_delivery {
type: count_distinct
- sql: ${delivery_vbeln} ;;
+ sql: ${delivery_vbeln} ;;
filters: [InFull:"Yes",Delivery: "Yes"]
- hidden: no
}
measure: count_otif {
type: count_distinct
sql: ${delivery_vbeln} ;;
filters: [OnTime: "Yes",InFull: "Yes",Delivery: "Yes"]
- hidden: no
}
measure: count_latedeliveries {
type: count_distinct
sql: ${delivery_vbeln} ;;
filters: [Late_Delivery: "Yes", Delivery: "Yes"]
- hidden: no
}
measure: count_of_deliveries {
type: count_distinct
- #sql: ${delivery_vbeln} || ${delivery_item_posnr};;
sql: ${delivery_vbeln} ;;
filters: [Delivery: "Yes"]
- hidden: no
}
measure: OnTimePercentage {
type: number
sql: if(${count_of_deliveries}=0,0,${count_on_time_delivery}/${count_of_deliveries});;
- hidden: no
- link: {
- label: "Delivery Performance"
- url: "/dashboards/cortex_sap_operational::sap_order_to_cash_o2c_01_a_delivery_performance_performance_tuning?Region={{ _filters['countries_md.country_name_landx']| url_encode }}&Year={{ _filters['sales_orders.creation_date_erdat_date']| url_encode }}&Sales+Org={{ _filters['sales_organizations_md.sales_org_name_vtext']| url_encode }}&Distribution+Channel={{ _filters['distribution_channels_md.distribution_channel_name_vtext']| url_encode }}&Product={{ _filters['materials_md.material_text_maktx']| url_encode }}&Division={{ _filters['divisions_md.division_name_vtext']| url_encode }}&Currency={{ _filters['currency_conversion_new.tcurr']| url_encode }}"
- }
+ #html:{{value}}% ;;
+ #html:{{value}}% ;;
}
measure: InFullPercentage {
type: number
sql: if(${count_of_deliveries}=0,0,${count_in_full_delivery}/${count_of_deliveries}) ;;
- hidden: no
- link: {
- label: "Delivery Performance"
- url: "/dashboards/cortex_sap_operational::sap_order_to_cash_o2c_01_a_delivery_performance_performance_tuning?Region={{ _filters['countries_md.country_name_landx']| url_encode }}&Year={{ _filters['sales_orders.creation_date_erdat_date']| url_encode }}&Sales+Org={{ _filters['sales_organizations_md.sales_org_name_vtext']| url_encode }}&Distribution+Channel={{ _filters['distribution_channels_md.distribution_channel_name_vtext']| url_encode }}&Product={{ _filters['materials_md.material_text_maktx']| url_encode }}&Division={{ _filters['divisions_md.division_name_vtext']| url_encode }}&Currency={{ _filters['currency_conversion_new.tcurr']| url_encode }}"
- }
+ #html:{{value}}% ;;
+ #html:{{value}}% ;;
}
measure: OTIFPercentage {
type: number
sql: if(${count_of_deliveries}=0,0,${count_otif}/${count_of_deliveries}) ;;
- hidden: no
- link: {
- label: "Delivery Performance"
- url: "/dashboards/cortex_sap_operational::sap_order_to_cash_o2c_01_a_delivery_performance_performance_tuning?Region={{ _filters['countries_md.country_name_landx']| url_encode }}&Year={{ _filters['sales_orders.creation_date_erdat_date']| url_encode }}&Sales+Org={{ _filters['sales_organizations_md.sales_org_name_vtext']| url_encode }}&Distribution+Channel={{ _filters['distribution_channels_md.distribution_channel_name_vtext']| url_encode }}&Product={{ _filters['materials_md.material_text_maktx']| url_encode }}&Division={{ _filters['divisions_md.division_name_vtext']| url_encode }}&Currency={{ _filters['currency_conversion_new.tcurr']| url_encode }}"
- }
+ #html:{{value}}% ;;
+ #html:{{value}}% ;;
}
measure: LateDeliveryPercentage {
type: number
sql: if(${count_of_deliveries}=0,0,${count_latedeliveries}/${count_of_deliveries}) ;;
- hidden: no
- link: {
- label: "Delivery Performance"
- url: "/dashboards/cortex_sap_operational::sap_order_to_cash_o2c_01_a_delivery_performance_performance_tuning?Region={{ _filters['countries_md.country_name_landx']| url_encode }}&Year={{ _filters['sales_orders.creation_date_erdat_date']| url_encode }}&Sales+Org={{ _filters['sales_organizations_md.sales_org_name_vtext']| url_encode }}&Distribution+Channel={{ _filters['distribution_channels_md.distribution_channel_name_vtext']| url_encode }}&Product={{ _filters['materials_md.material_text_maktx']| url_encode }}&Division={{ _filters['divisions_md.division_name_vtext']| url_encode }}&Currency={{ _filters['currency_conversion_new.tcurr']| url_encode }}"
- }
+ #html:{{value}}% ;;
+ #html:{{value}}% ;;
}
dimension: Order_Cycle_Time {
@@ -145,13 +113,6 @@ view: deliveries {
sql: IF(${actual_goods_movement_date_wadat_ist_date} IS NOT NULL,
TIMESTAMP_DIFF(CAST(CONCAT(${date__proof_of_delivery___podat_date}, " ", ${confirmation_time_potim}) AS TIMESTAMP),
CAST(CONCAT(${sales_orders.creation_date_erdat_date}, " ", ${sales_orders.creation_time_erzet}) AS TIMESTAMP), DAY), NULL) ;;
- hidden: no
- }
-
- dimension: delivered_value {
- type: number
- sql: ${actual_quantity_delivered_in_sales_units_lfimg}*${net_price_netpr} ;;
- hidden: no
}
dimension: account_assignment_category_knttp {
@@ -180,7 +141,6 @@ view: deliveries {
dimension: actual_quantity_delivered_in_sales_units_lfimg {
type: number
sql: ${TABLE}.ActualQuantityDelivered_InSalesUnits_LFIMG ;;
- hidden: no
}
dimension: actual_quantity_delivered_in_stock_keeping_units_lgmng {
@@ -695,7 +655,6 @@ view: deliveries {
convert_tz: no
datatype: date
sql: ${TABLE}.Date__proofOfDelivery___PODAT ;;
- hidden: no
}
dimension_group: date_created_erdat {
@@ -711,7 +670,6 @@ view: deliveries {
convert_tz: no
datatype: date
sql: ${TABLE}.DateCreated_ERDAT ;;
- hidden: no
}
dimension: date_for_inter_company_billing_pioiv {
@@ -827,7 +785,6 @@ view: deliveries {
convert_tz: no
datatype: date
sql: ${TABLE}.DeliveryDate_LFDAT ;;
- hidden: no
}
dimension: delivery_delay {
@@ -858,16 +815,8 @@ view: deliveries {
dimension: delivery_item_posnr {
type: string
sql: ${TABLE}.DeliveryItem_POSNR ;;
- hidden: no
}
-
- measure: count_delivery_item_posnr {
- type: number
- sql: count(${delivery_item_posnr}) ;;
- }
-
-
dimension: delivery_priority_lprio {
type: string
sql: ${TABLE}.DeliveryPriority_LPRIO ;;
@@ -897,7 +846,6 @@ view: deliveries {
type: string
sql: ${TABLE}.Delivery_VBELN ;;
primary_key: yes
- hidden: no
}
dimension: delivery_version_at_confirmation_spe_version {
@@ -2806,24 +2754,8 @@ view: deliveries {
sql: ${TABLE}.YearOfDeliveryDate_LFDAT ;;
}
- dimension: delivered_value_global_currency {
- value_format: "0.0"
- type: number
- sql: ${delivered_value} ;;
- hidden: no
- }
-
measure: count {
type: count
drill_fields: []
}
-
-################################### Blocked Orders ###############################################
-
- dimension: blocked_orders {
- type: string
- sql: if(${delivery_block_document_header_lifsk } IS NULL
- AND ${billing_block_in_sd_document_faksk} IS NULL,'NotBlocked','Blocked' ) ;;
- hidden: no
- }
}
diff --git a/views/distribution_channels_md.view.lkml b/views/distribution_channels_md.view.lkml
index b81dbb90..c9b7f91b 100644
--- a/views/distribution_channels_md.view.lkml
+++ b/views/distribution_channels_md.view.lkml
@@ -10,7 +10,7 @@ view: distribution_channels_md {
# Here's what a typical dimension looks like in LookML.
# A dimension is a groupable field that can be used to filter query results.
# This dimension will be called "Client Mandt" in Explore.
- fields_hidden_by_default: yes
+
dimension: client_mandt {
type: string
sql: ${TABLE}.Client_MANDT ;;
@@ -19,7 +19,6 @@ view: distribution_channels_md {
dimension: distribution_channel_name_vtext {
type: string
sql: ${TABLE}.DistributionChannelName_VTEXT ;;
- hidden: no
}
dimension: distribution_channel_vtweg {
diff --git a/views/divisions_md.view.lkml b/views/divisions_md.view.lkml
index 7ea63337..3f0201c2 100644
--- a/views/divisions_md.view.lkml
+++ b/views/divisions_md.view.lkml
@@ -10,7 +10,7 @@ view: divisions_md {
# Here's what a typical dimension looks like in LookML.
# A dimension is a groupable field that can be used to filter query results.
# This dimension will be called "Client Mandt" in Explore.
- fields_hidden_by_default: yes
+
dimension: client_mandt {
type: string
sql: ${TABLE}.Client_MANDT ;;
@@ -24,7 +24,6 @@ view: divisions_md {
dimension: division_name_vtext {
type: string
sql: ${TABLE}.DivisionName_VTEXT ;;
- hidden: no
}
dimension: division_spart {
diff --git a/views/language_map.view.lkml b/views/language_map.view.lkml
index b362e220..af80f054 100644
--- a/views/language_map.view.lkml
+++ b/views/language_map.view.lkml
@@ -49,4 +49,5 @@ view: language_map{
type: string
sql: ${TABLE}.Looker_Locale ;;
}
+
}
diff --git a/views/materials_md.view.lkml b/views/materials_md.view.lkml
index 84646232..3274c37c 100644
--- a/views/materials_md.view.lkml
+++ b/views/materials_md.view.lkml
@@ -10,7 +10,7 @@ view: materials_md {
# Here's what a typical dimension looks like in LookML.
# A dimension is a groupable field that can be used to filter query results.
# This dimension will be called "Acceptance At Origin Weora" in Explore.
- fields_hidden_by_default: yes
+
dimension: acceptance_at_origin_weora {
type: string
sql: ${TABLE}.AcceptanceAtOrigin_WEORA ;;
@@ -531,7 +531,6 @@ view: materials_md {
dimension: material_text_maktx {
type: string
sql: ${TABLE}.MaterialText_MAKTX ;;
- hidden: no
}
dimension: material_type_mtart {
diff --git a/views/sales_orders.view.lkml b/views/sales_orders.view.lkml
index f2b7c229..a034f0dc 100644
--- a/views/sales_orders.view.lkml
+++ b/views/sales_orders.view.lkml
@@ -10,7 +10,7 @@ view: sales_orders {
# Here's what a typical dimension looks like in LookML.
# A dimension is a groupable field that can be used to filter query results.
# This dimension will be called "Account Assignment Category Knttp" in Explore.
- fields_hidden_by_default: yes
+
dimension: account_assignment_category_knttp {
type: string
sql: ${TABLE}.AccountAssignmentCategory_KNTTP ;;
@@ -126,7 +126,6 @@ view: sales_orders {
dimension: base_unit_of_measure_meins {
type: string
sql: ${TABLE}.BaseUnitOfMeasure_MEINS ;;
- hidden: no
}
dimension: batch_management_indicator_xchar {
@@ -252,8 +251,6 @@ view: sales_orders {
dimension: client_mandt {
type: string
sql: ${TABLE}.Client_MANDT ;;
- primary_key: yes
- hidden:no
}
dimension: collective_number_submi {
@@ -399,26 +396,21 @@ view: sales_orders {
convert_tz: no
datatype: date
sql: ${TABLE}.CreationDate_ERDAT ;;
- hidden: no
}
dimension: creation_time_erzet {
type: string
sql: ${TABLE}.CreationTime_ERZET ;;
- hidden: yes
-
}
dimension: credit_block_cmtfg {
type: string
sql: ${TABLE}.CreditBlock_CMTFG ;;
- hidden: yes
}
dimension: credit_control_area_kkber {
type: string
sql: ${TABLE}.CreditControlArea_KKBER ;;
- hidden: yes
}
dimension: credit_representative_group_for_credit_management_sbgrp {
@@ -429,7 +421,6 @@ view: sales_orders {
dimension: cumulative_confirmed_quantity_in_base_uo_m_klmeng {
type: number
sql: ${TABLE}.CumulativeConfirmedQuantityInBASeUoM_KLMENG ;;
- hidden: no
}
dimension: cumulative_confirmed_quantity_kbmeng {
@@ -440,7 +431,6 @@ view: sales_orders {
dimension: cumulative_order_quantity_kwmeng {
type: number
sql: ${TABLE}.CumulativeOrderQuantity_KWMENG ;;
- hidden: no
}
dimension: cumulative_target_delivery_qty_lsmeng {
@@ -461,7 +451,6 @@ view: sales_orders {
dimension: currency_waerk {
type: string
sql: ${TABLE}.Currency_WAERK ;;
- hidden: no
}
dimension: customer_credit_group_grupp {
@@ -597,7 +586,6 @@ view: sales_orders {
dimension: distribution_channel_vtweg {
type: string
sql: ${TABLE}.DistributionChannel_VTWEG ;;
- primary_key: yes
}
dimension: division_hdr_spart {
@@ -608,7 +596,6 @@ view: sales_orders {
dimension: division_spart {
type: string
sql: ${TABLE}.Division_SPART ;;
- hidden: no
}
dimension: document_category_vbtyp {
@@ -784,14 +771,6 @@ view: sales_orders {
dimension: item_posnr {
type: string
sql: ${TABLE}.Item_POSNR ;;
- primary_key: yes
- hidden: no
- }
-
- measure: count_sales_orders_line_item{
- type: number
- sql: count(${item_posnr}) ;;
- hidden: no
}
dimension: item_type_posar {
@@ -912,8 +891,6 @@ view: sales_orders {
dimension: material_number_matnr {
type: string
sql: ${TABLE}.MaterialNumber_MATNR ;;
- primary_key: yes
- hidden: no
}
dimension: material_pricing_group_kondm {
@@ -956,24 +933,11 @@ view: sales_orders {
sql: ${TABLE}.NameOfOrderer_BNAME ;;
}
- dimension: sales_order_net_price_local_currency {
+ dimension: net_price_netpr {
type: number
sql: ${TABLE}.NetPrice_NETPR ;;
}
- dimension: sales_order_net_price_glob_curr {
- type: number
- sql: ${sales_order_net_price_local_currency} * ${currency_conversion_new.ukurs} ;;
- hidden: no
- }
-
- measure: sales_order_net_price_global_currency{
- type: number
- value_format_name: Greek_Number_Format
- sql: avg(${sales_order_net_price_glob_curr}) ;;
- hidden: no
- }
-
dimension: net_price_netwr {
type: number
sql: ${TABLE}.NetPrice_NETWR ;;
@@ -1412,8 +1376,6 @@ view: sales_orders {
dimension: sales_document_vbeln {
type: string
sql: ${TABLE}.SalesDocument_VBELN ;;
- primary_key: yes
- hidden: no
}
dimension: sales_group_vkgrp {
@@ -1429,18 +1391,6 @@ view: sales_orders {
dimension: sales_order_value_line_item_source_currency {
type: number
sql: ${TABLE}.SalesOrderValueLineItemSourceCurrency ;;
- hidden: no
- }
-
- dimension: sales_order_value_glob_curr {
- type: number
- sql: ${sales_order_value_line_item_source_currency} * ${currency_conversion_new.ukurs} ;;
- hidden: no
- }
-
- measure: sales_order_value_global_currency {
- type: sum
- sql: ${sales_order_value_glob_curr} ;;
}
dimension: sales_order_value_line_item_target_currency {
@@ -1451,7 +1401,6 @@ view: sales_orders {
dimension: sales_organization_vkorg {
type: string
sql: ${TABLE}.SalesOrganization_VKORG ;;
- primary_key: yes
}
dimension: sales_probability_awahr {
@@ -1502,68 +1451,8 @@ view: sales_orders {
dimension: sold_to_party_kunnr {
type: string
sql: ${TABLE}.SoldToParty_KUNNR ;;
- primary_key: yes
- }
-
- dimension: sold_to_party_name {
- type: string
- sql: if(${partner_function_parvw} = 'AG', ${customers_md_partner_function.name1_name1}, Null);;
- hidden: no
- }
-
- measure: max_sold_to_party_name {
- type: string
- sql: max(${sold_to_party_name}) ;;
- hidden: no
- }
-
- dimension: ship_to_party_name {
- type: string
- sql: if(${partner_function_parvw} = 'WE', ${customers_md_partner_function.name1_name1}, Null);;
- hidden: no
}
- measure: max_ship_to_party_name {
- type: string
- sql: max(${ship_to_party_name}) ;;
- hidden: no
- }
-
- dimension: bill_to_party_name {
- type: string
- sql: if(${partner_function_parvw} = 'RE', ${customers_md_partner_function.name1_name1}, Null);;
- hidden: no
- }
-
- measure: max_bill_to_party_name {
- type: string
- sql: max(${bill_to_party_name}) ;;
- hidden: no
- }
-
-
- dimension: customer_kunnr {
- type: string
- sql: if((${sales_order_partner_function.item_posnr} is Null
- OR ${sales_order_partner_function.item_posnr} = '000000'),
- ${sales_order_partner_function_header.customer_kunnr},
- ${sales_order_partner_function.customer_kunnr}) ;;
- primary_key: yes
- hidden: no
- }
-
-
-
- dimension: partner_function_parvw {
- type: string
- sql: if((${sales_order_partner_function.item_posnr} is Null
- OR ${sales_order_partner_function.item_posnr} = '000000'),
- ${sales_order_partner_function_header.partner_function_parvw},
- ${sales_order_partner_function.partner_function_parvw}) ;;
- hidden: no
- }
-
-
dimension: special_stock_indicator_sobkz {
type: string
sql: ${TABLE}.SpecialStockIndicator_SOBKZ ;;
@@ -1647,7 +1536,6 @@ view: sales_orders {
dimension: target_currency_tcurr {
type: string
sql: ${TABLE}.TargetCurrency_TCURR ;;
- hidden: no
}
dimension: target_quantity_uo_m_zieme {
@@ -1920,471 +1808,13 @@ view: sales_orders {
sql: ${TABLE}.YourReference_IHREZ ;;
}
- ##################################################### Total Orders ############################################################
- dimension: total_orders {
- type: string
- sql: if(${document_category_vbtyp}='C',${sales_document_vbeln},NULL) ;;
- hidden: no
- }
-
- measure: count_orders {
- type: number
- sql: count(${total_orders}) ;;
- hidden: no
- }
-
- ##################################################### Fill rate ############################################################
-
- dimension: confirmed_quantity_bmeng {
- type: number
- sql: ${sales_order_schedule_line_dt.sales_order_schedule_line_sum_confirmed_quantity_bmeng} ;;
- hidden: no
- }
-
- measure: sum_confirmed_quantity_bmeng {
- type: number
- sql: sum(${confirmed_quantity_bmeng}) ;;
- hidden: no
- }
-
- measure: sum_cumulative_order_quantity_kwmeng {
- type: number
- sql: sum(${cumulative_order_quantity_kwmeng}) ;;
- hidden: no
- }
-
- measure: fill_rate{
- type: number
- value_format: "0%"
- sql: avg(${confirmed_quantity_bmeng}/${cumulative_order_quantity_kwmeng}) ;;
- drill_fields: [sales_document_vbeln,item_posnr,materials_md.material_text_maktx,requested_delivery_date_vdatu_date,deliveries.date__proof_of_delivery___podat_date,customers_md.name1_name1,customers_md.name2_name2,customers_md.name3_name3,confirmed_quantity_bmeng,cumulative_order_quantity_kwmeng,base_unit_of_measure_meins,fill_rate]
- hidden: no
- }
-
- ##################################################### Return Orders ############################################################
- dimension: return_order {
- type: string
- sql: IF( ${document_category_vbtyp} = 'H',
- IF( ${preceding_doc_category_vgtyp} = 'C' AND ${reference_document_vgbel} = ${document_number_of_the_reference_document_vgbel}
- AND ${item_posnr} = ${reference_item_vgpos},
- 'Returned',
- 'NotReturned'),
- IF( ${preceding_doc_category_vgtyp} = 'M' AND ${reference_document_vgbel} = ${billing.document_number_of_the_reference_document_vgbel}
- AND ${reference_item_vgpos} = ${billing.item_number_of_the_reference_item_vgpos}
- AND ${billing.sales_document_aubel} = ${sales_document_vbeln}
- AND ${billing.sales_document_item_aupos} = ${item_posnr},
- 'Returned',
- 'NotReturned') ) ;;
- hidden: no
- }
-
- measure: count_return_order {
- type: count_distinct
- sql: ${sales_document_vbeln} || ${item_posnr} ;;
- filters: [return_order : "Returned"]
- hidden: no
- }
-
- measure: Return_Order_Percentage {
- type: number
- sql:if(${deliveries.count_of_delivery}=0,0,round(${count_return_order}/${deliveries.count_of_delivery}*100,2)) ;;
- link: {
- label: "Return Order Detailed Report"
- url: "/dashboards/cortex_sap_operational::sap_order_to_cash_o2c_02_c_returned_ordersperformance_tuning?Region={{ _filters['countries_md.country_name_landx']| url_encode }}&Year={{ _filters['sales_orders.creation_date_erdat_date']| url_encode }}&Sales+Org={{ _filters['sales_organizations_md.sales_org_name_vtext']| url_encode }}&Distribution+Channel={{ _filters['distribution_channels_md.distribution_channel_name_vtext']| url_encode }}&Product={{ _filters['materials_md.material_text_maktx']| url_encode }}&Division={{ _filters['divisions_md.division_name_vtext']| url_encode }}&Currency={{ _filters['currency_conversion_new.tcurr']| url_encode }}"
- }
- hidden: no
- }
-
- ##################################################### Canceled Orders ############################################################
- dimension: canceled_order {
- type: string
- sql: IF(${rejection_reason_abgru} IS NOT NULL,'Canceled','NotCanceled') ;;
- hidden: no
- }
-
- measure: count_canceled_order {
- type: count_distinct
- sql: ${sales_document_vbeln} || ${item_posnr} ;;
- filters: [canceled_order: "Canceled"]
- hidden: no
- }
-
- measure: canceled_order_percentage {
- type: number
- sql: if(${count_total_orders}=0,0,round(${count_canceled_order}/${count_total_orders}*100,2)) ;;
- link: {
- label: "Cancelled Order Detailed Report"
- url: "/dashboards/cortex_sap_operational::sap_order_to_cash_o2c_02_a_cancelled_ordersperformance_tuning?Region={{ _filters['countries_md.country_name_landx']| url_encode }}&Year={{ _filters['sales_orders.creation_date_erdat_date']| url_encode }}&Sales+Org={{ _filters['sales_organizations_md.sales_org_name_vtext']| url_encode }}&Distribution+Channel={{ _filters['distribution_channels_md.distribution_channel_name_vtext']| url_encode }}&Product={{ _filters['materials_md.material_text_maktx']| url_encode }}&Division={{ _filters['divisions_md.division_name_vtext']| url_encode }}&Currency={{ _filters['currency_conversion_new.tcurr']| url_encode }}"
- }
- hidden: no
- }
-
- ##################################################### Open Orders ############################################################
- dimension: open_orders {
- type: string
- sql: IF(${deliveries.actual_quantity_delivered_in_sales_units_lfimg} = ${cumulative_order_quantity_kwmeng}
- AND ${cumulative_order_quantity_kwmeng} = ${billing.actual_billed_quantity_fkimg},'NotOpenOrder','OpenOrder') ;;
- hidden: no
- }
-
- ##################################################### Sales Order Status ############################################################
- dimension: sales_order_status {
- type: string
- sql: if(${canceled_order}="Canceled","Canceled",if(${open_orders}="OpenOrder","Open","Closed")) ;;
- hidden: no
- }
-
- #################################################### One Touch Order ############################
- measure: count_one_touch_order {
- type: count_distinct
- sql: ${one_touch_order.vbapsales_document_vbeln} ;;
- hidden: no
- }
-
- measure: count_total_orders {
- type: count_distinct
- sql: ${sales_document_vbeln} ;;
- hidden: no
- }
-
- measure: one_touch_order_percentage {
- type: number
- sql: if(${count_total_orders}=0,0,round(${count_one_touch_order}/${count_total_orders}*100,2)) ;;
- hidden: no
- link: {
- label: "One Touch Order Detailed Report"
- url: "/dashboards/cortex_sap_operational::sap_order_to_cash_o2c_02_b_one_touch_orderperformance_tuning?Region={{ _filters['countries_md.country_name_landx']| url_encode }}&Year={{ _filters['sales_orders.creation_date_erdat_date']| url_encode }}&Sales+Org={{ _filters['sales_organizations_md.sales_org_name_vtext']| url_encode }}&Distribution+Channel={{ _filters['distribution_channels_md.distribution_channel_name_vtext']| url_encode }}&Product={{ _filters['materials_md.material_text_maktx']| url_encode }}&Division={{ _filters['divisions_md.division_name_vtext']| url_encode }}&Currency={{ _filters['currency_conversion_new.tcurr']| url_encode }}"
- }
- }
- #***************************************** Billing & Pricing (Sales Order Pricing view) *******************************************#
-
- # List Price Currency Conversion:
-
- dimension: list_price {
- type: number
- sql: ${sales_order_pricing.list_price} ;;
- hidden: no
- }
-
- measure: avg_list_price {
- type: average
- sql: ${list_price} ;;
- hidden: no
- }
-
- dimension: list_price_glob_curr {
- type: number
- sql: ${sales_order_pricing.list_price} * ${currency_conversion_pricing.ukurs};;
- hidden: no
- }
-
- measure: sum_list_price_glob_curr {
- type: sum
- value_format_name: Greek_Number_Format
- sql: ${list_price_glob_curr} ;;
- hidden: no
- }
-
- measure: avg_list_price_global_currency_customer{
- type: average
- value_format_name: Greek_Number_Format
- sql: ${list_price_glob_curr} ;;
- link: {
- label: "Price Adjustments based on Product Availability"
- url: "/dashboards/cortex_sap_operational::sap_order_to_cash_o2c_05_b_price_adjustments_based_on_product_availabilityperformance_tuning?Region={{ _filters['countries_md.country_name_landx']| url_encode }}&Year={{ _filters['sales_order_pricing.checkbox_kdatu_date']| url_encode }}&Sales+Org={{ _filters['sales_organizations_md.sales_org_name_vtext']| url_encode }}&Distribution+Channel={{ _filters['distribution_channels_md.distribution_channel_name_vtext']| url_encode }}&Product={{ _filters['materials_md.material_text_maktx']| url_encode }}&Division={{ _filters['divisions_md.division_name_vtext']| url_encode }}&Currency={{ _filters['currency_conversion_pricing.tcurr']| url_encode }}"
- }
- hidden: no
- }
-
- ## Adjusted Price Currency Conversion:
-
- dimension: adjusted_price {
- type: number
- sql: ${sales_order_pricing.adjusted_price} ;;
- hidden: no
- }
-
- measure: avg_adjusted_price {
- type: average
- sql: ${adjusted_price} ;;
- hidden: no
- }
- dimension: adjusted_price_glob_curr {
- type: number
- sql: ${sales_order_pricing.adjusted_price} * ${currency_conversion_pricing.ukurs};;
- hidden: no
- }
-
- measure: sum_adjusted_price_glob_curr {
- type: sum
- value_format_name: Greek_Number_Format
- sql: ${adjusted_price_glob_curr} ;;
- hidden: no
- }
-
- measure: avg_adjusted_price_global_currency {
- type: average
- value_format_name: Greek_Number_Format
- sql: ${adjusted_price_glob_curr} ;;
- link: {
- label: "Price Adjustments based on Product Availability"
- url: "/dashboards/cortex_sap_operational::sap_order_to_cash_o2c_05_b_price_adjustments_based_on_product_availabilityperformance_tuning?Region={{ _filters['countries_md.country_name_landx']| url_encode }}&Year={{ _filters['sales_order_pricing.checkbox_kdatu_date']| url_encode }}&Sales+Org={{ _filters['sales_organizations_md.sales_org_name_vtext']| url_encode }}&Distribution+Channel={{ _filters['distribution_channels_md.distribution_channel_name_vtext']| url_encode }}&Product={{ _filters['materials_md.material_text_maktx']| url_encode }}&Division={{ _filters['divisions_md.division_name_vtext']| url_encode }}&Currency={{ _filters['currency_conversion_pricing.tcurr']| url_encode }}"
- }
- hidden: no
- }
-
- ## Intercompany Price Currency Conversion:
-
- dimension: intercompany_price_glob_curr {
+ dimension: fill_rate {
type: number
- hidden: no
- sql: ${sales_order_pricing.inter_company_price} * ${currency_conversion_pricing.ukurs};;
- }
-
- measure: avg_list_price_global_currency_product{
- type: average
- value_format_name: Greek_Number_Format
- sql: ${list_price_glob_curr} ;;
- link: {
- label: "Price Adjustments based on Product Availability"
- url: "/dashboards/cortex_sap_operational::sap_order_to_cash_o2c_05_b_price_adjustments_based_on_product_availabilityperformance_tuning?Region={{ _filters['countries_md.country_name_landx']| url_encode }}&Year={{ _filters['sales_order_pricing.checkbox_kdatu_date']| url_encode }}&Sales+Org={{ _filters['sales_organizations_md.sales_org_name_vtext']| url_encode }}&Distribution+Channel={{ _filters['distribution_channels_md.distribution_channel_name_vtext']| url_encode }}&Product={{ _filters['materials_md.material_text_maktx']| url_encode }}&Division={{ _filters['divisions_md.division_name_vtext']| url_encode }}&Currency={{ _filters['currency_conversion_pricing.tcurr']| url_encode }}"
- }
- hidden: no
- }
-
- measure: intercompany_price_global_currency {
- type: sum
- value_format_name: Greek_Number_Format
- sql: ${intercompany_price_glob_curr} ;;
- hidden: no
- }
-
- measure: avg_intercompany_price_global_currency {
- type: average
- value_format_name: Greek_Number_Format
- sql: ${intercompany_price_glob_curr} ;;
- link: {
- label: "Price Adjustments based on Product Availability"
- url: "/dashboards/cortex_sap_operational::sap_order_to_cash_o2c_05_b_price_adjustments_based_on_product_availabilityperformance_tuning?Region={{ _filters['countries_md.country_name_landx']| url_encode }}&Year={{ _filters['sales_order_pricing.checkbox_kdatu_date']| url_encode }}&Sales+Org={{ _filters['sales_organizations_md.sales_org_name_vtext']| url_encode }}&Distribution+Channel={{ _filters['distribution_channels_md.distribution_channel_name_vtext']| url_encode }}&Product={{ _filters['materials_md.material_text_maktx']| url_encode }}&Division={{ _filters['divisions_md.division_name_vtext']| url_encode }}&Currency={{ _filters['currency_conversion_pricing.tcurr']| url_encode }}"
- }
- hidden: no
- }
-
- ## Discount Currency Conversion:
-
- dimension: discount_glob_curr {
- type: number
- hidden: no
- sql: ${sales_order_pricing.discount} * ${currency_conversion_pricing.ukurs};;
- }
-
- measure: discount_global_currency {
- type: sum
- sql: ${discount_glob_curr} ;;
- hidden: no
- }
-
- ## Variation of list price n adjusted price:
-
- dimension: variation_of_listprice_and_adjustedprice{
- value_format_name: Greek_Number_Format
- type: number
- sql: ${sales_order_pricing.list_price} - ${sales_order_pricing.adjusted_price} ;;
- hidden: no
- }
-
- measure: avg_variation_of_listprice_and_adjustedprice {
- type: average
- value_format_name: Greek_Number_Format
- sql: ${variation_of_listprice_and_adjustedprice} ;;
- hidden: no
- }
-
- #************************************************** End of Billing and Pricing *****************************************************#
-
- ##################################################### Sales Order NetValue ############################################################
- dimension: sales_order_netvalue_local_currency {
- type: number
- sql: ${cumulative_order_quantity_kwmeng} * ${sales_order_net_price_local_currency} ;;
- hidden: no
- }
-
- dimension: sales_order_netvalue_glob_curr {
- type: number
- sql: ${sales_order_netvalue_local_currency} * ${currency_conversion_new.ukurs} ;;
- hidden: no
- }
-
- measure: sales_order_netvalue_glob_curr_1 {
- type: sum_distinct
- sql_distinct_key: ${sales_document_vbeln} ;;
- sql: ${sales_order_netvalue_glob_curr} ;;
- value_format : "0.00"
- hidden: no
- }
-
-
- measure: sales_order_netvalue_global_currency_product {
- type: number
- value_format_name: "Greek_Number_Format"
- sql: sum(${sales_order_netvalue_glob_curr}) ;;
- link: {
- label: "Sales Performance by Product"
- url: "/dashboards/cortex_sap_operational::sap_order_to_cash_o2c_04_c_sales_performance_by_productperformance_tuning?Region={{ _filters['countries_md.country_name_landx']| url_encode }}&Year={{ _filters['sales_orders.creation_date_erdat_date']| url_encode }}&Sales+Org={{ _filters['sales_organizations_md.sales_org_name_vtext']| url_encode }}&Distribution+Channel={{ _filters['distribution_channels_md.distribution_channel_name_vtext']| url_encode }}&Product={{ _filters['materials_md.material_text_maktx']| url_encode }}&Division={{ _filters['divisions_md.division_name_vtext']| url_encode }}&Currency={{ _filters['currency_conversion_new.tcurr']| url_encode }}"
- }
- hidden: no
- }
-
- measure: sales_order_netvalue_global_currency_sales_org {
- type: number
- value_format_name: "Greek_Number_Format"
- sql: sum(${sales_order_netvalue_glob_curr});;
- link: {
- label: "Sales Performance by Sales_Org"
- url: "/dashboards/cortex_sap_operational::sap_order_to_cash_o2c_04_d_sales_performance_by_sales_orgperformance_tuning?Region={{ _filters['countries_md.country_name_landx']| url_encode }}&Year={{ _filters['sales_orders.creation_date_erdat_date']| url_encode }}&Sales+Org={{ _filters['sales_organizations_md.sales_org_name_vtext']| url_encode }}&Distribution+Channel={{ _filters['distribution_channels_md.distribution_channel_name_vtext']| url_encode }}&Product={{ _filters['materials_md.material_text_maktx']| url_encode }}&Division={{ _filters['divisions_md.division_name_vtext']| url_encode }}&Currency={{ _filters['currency_conversion_new.tcurr']| url_encode }}"
- }
- hidden: no
- }
- measure: sales_order_netvalue_global_currency_dist_channel {
- type: number
- value_format_name: "Greek_Number_Format"
- sql: sum(${sales_order_netvalue_glob_curr});;
- link: {
- label: "Sales Performance by Distribution Channel"
- url: "/dashboards/cortex_sap_operational::sap_order_to_cash_o2c_04_a_sales_performance_by_distribution_channelperformance_tuning?Region={{ _filters['countries_md.country_name_landx']| url_encode }}&Year={{ _filters['sales_orders.creation_date_erdat_date']| url_encode }}&Sales+Org={{ _filters['sales_organizations_md.sales_org_name_vtext']| url_encode }}&Distribution+Channel={{ _filters['distribution_channels_md.distribution_channel_name_vtext']| url_encode }}&Product={{ _filters['materials_md.material_text_maktx']| url_encode }}&Division={{ _filters['divisions_md.division_name_vtext']| url_encode }}&Currency={{ _filters['currency_conversion_new.tcurr']| url_encode }}"
- }
- hidden: no
- }
- measure: sales_order_netvalue_global_currency_division {
- type: number
- value_format_name: "Greek_Number_Format"
- sql: sum(${sales_order_netvalue_glob_curr});;
- link: {
- label: "Sales Performance by Division"
- url: "/dashboards/cortex_sap_operational::sap_order_to_cash_o2c_04_b_sales_performance_by_divisionperformance_tuning?Region={{ _filters['countries_md.country_name_landx']| url_encode }}&Year={{ _filters['sales_orders.creation_date_erdat_date']| url_encode }}&Sales+Org={{ _filters['sales_organizations_md.sales_org_name_vtext']| url_encode }}&Distribution+Channel={{ _filters['distribution_channels_md.distribution_channel_name_vtext']| url_encode }}&Product={{ _filters['materials_md.material_text_maktx']| url_encode }}&Division={{ _filters['divisions_md.division_name_vtext']| url_encode }}&Currency={{ _filters['currency_conversion_new.tcurr']| url_encode }}"
- }
- hidden: no
- }
- measure: sales_order_netvalue_global_currency_1 {
- type: number
- value_format_name: Greek_Number_Format
- sql: avg(${sales_order_netvalue_glob_curr}) ;;
+ sql: (${cumulative_confirmed_quantity_kbmeng}/${cumulative_order_quantity_kwmeng}) *100 ;;
}
measure: count {
type: count
- hidden: no
- }
- ##################################################### Blocked Orders ###############################################
-
- dimension: blocked_orders {
- type: string
- sql: if(${deliveries.delivery_block_document_header_lifsk} IS NULL
- AND ${deliveries.billing_block_in_sd_document_faksk} IS NULL,'NotBlocked','Blocked' ) ;;
- hidden: no
- }
-
- measure: count_blocked_orders {
- type: count_distinct
- sql: ${sales_document_vbeln} || ${item_posnr} ;;
- filters: [blocked_orders:"Blocked"]
- hidden: no
- }
-
- measure: average_list_price1{
- value_format_name: Greek_Number_Format
- type: average
- sql: ${TABLE}.Average_List_Price1 ;;
- hidden: no
- }
-
- measure: average_adjusted_price{
- value_format_name: Greek_Number_Format
- type: average
- sql: ${TABLE}.Average_Adjested_Price ;;
- hidden: no
- }
-
- parameter: Currency_Required{
- type: string
- allowed_value: {
- label: "USD"
- value: "USD"
- }
- allowed_value: {
- label: "EUR"
- value: "EUR"
- }
- allowed_value: {
- label: "CAD"
- value: "CAD"
- }
- allowed_value: {
- label: "JPY"
- value: "JPY"
- }
- hidden: no
+ drill_fields: [name_of_orderer_bname]
}
-
- dimension: Global_Currency {
- type: string
- sql: {% parameter Currency_Required %};;
- hidden: no
- }
-
- measure: dash_nav {
- hidden: no
- label: "Navigation Bar"
- type: string
- sql: "";;
- html:
-
-
- ;;
- }
-
- measure: Order_fulfillment{
- type: string
- hidden: no
- sql: "Home" ;;
- html: ;;
- }
-
- measure: order_snapshot{
- type: string
- hidden: no
- sql: "Home" ;;
- html: ;;
- }
-
- measure: Order_details{
- type: string
- hidden: no
- sql: "Home" ;;
- html: ;;
- }
-
- measure: Sales_performance{
- type: string
- sql: "Home" ;;
- html: ;;
- hidden: no
- }
-
- measure: billing_and_pricing{
- type: string
- hidden: no
- sql: "Home" ;;
- html: ;;
- }
-
}
diff --git a/views/sales_organizations_md.view.lkml b/views/sales_organizations_md.view.lkml
index 993ac53a..e02bd719 100644
--- a/views/sales_organizations_md.view.lkml
+++ b/views/sales_organizations_md.view.lkml
@@ -10,7 +10,7 @@ view: sales_organizations_md {
# Here's what a typical dimension looks like in LookML.
# A dimension is a groupable field that can be used to filter query results.
# This dimension will be called "Client Mandt" in Explore.
- fields_hidden_by_default: yes
+
dimension: client_mandt {
type: string
sql: ${TABLE}.Client_MANDT ;;
@@ -59,7 +59,6 @@ view: sales_organizations_md {
dimension: sales_org_name_vtext {
type: string
sql: ${TABLE}.SalesOrgName_VTEXT ;;
- hidden: no
}
dimension: sales_org_vkorg {