Added unique&sample

main
casey 2026-06-13 11:02:42 +10:00
parent e10e5da9f2
commit 5539bc9d79
30 changed files with 2737 additions and 884 deletions

View File

@ -0,0 +1,288 @@
<?xml version="1.0"?>
<AlteryxDocument yxmdVer="2022.3">
<Nodes>
<Node ToolID="1">
<GuiSettings Plugin="AlteryxBasePluginsGui.DbFileInput.DbFileInput">
<Position x="90" y="78" />
</GuiSettings>
<Properties>
<Configuration>
<Passwords />
<File RecordLimit="" SearchSubDirs="False" FileFormat="0" OutputFileName="">Z:\Pyteryx\Alteryx_TestWorkflows\Maven Toys Data\products.csv</File>
<FormatSpecificOptions>
<HeaderRow>True</HeaderRow>
<IgnoreErrors>False</IgnoreErrors>
<AllowShareWrite>False</AllowShareWrite>
<ImportLine>1</ImportLine>
<FieldLen>254</FieldLen>
<SingleThreadRead>False</SingleThreadRead>
<IgnoreQuotes>DoubleQuotes</IgnoreQuotes>
<Delimeter>,</Delimeter>
<QuoteRecordBreak>False</QuoteRecordBreak>
<CodePage>28591</CodePage>
</FormatSpecificOptions>
</Configuration>
<Annotation DisplayMode="0">
<Name />
<DefaultAnnotationText>products.csv</DefaultAnnotationText>
<Left value="False" />
</Annotation>
<Dependencies>
<Implicit />
</Dependencies>
<MetaInfo connection="Output">
<RecordInfo>
<Field name="Product_ID" size="254" source="File: Z:\Pyteryx\Alteryx_TestWorkflows\Maven Toys Data\products.csv" type="V_String" />
<Field name="Product_Name" size="254" source="File: Z:\Pyteryx\Alteryx_TestWorkflows\Maven Toys Data\products.csv" type="V_String" />
<Field name="Product_Category" size="254" source="File: Z:\Pyteryx\Alteryx_TestWorkflows\Maven Toys Data\products.csv" type="V_String" />
<Field name="Product_Cost" size="254" source="File: Z:\Pyteryx\Alteryx_TestWorkflows\Maven Toys Data\products.csv" type="V_String" />
<Field name="Product_Price" size="254" source="File: Z:\Pyteryx\Alteryx_TestWorkflows\Maven Toys Data\products.csv" type="V_String" />
</RecordInfo>
</MetaInfo>
</Properties>
<EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxDbFileInput" />
</Node>
<Node ToolID="2">
<GuiSettings Plugin="AlteryxBasePluginsGui.TextInput.TextInput">
<Position x="90" y="210" />
</GuiSettings>
<Properties>
<Configuration>
<NumRows value="1" />
<Fields>
<Field name="Product_Category" />
<Field name="New_Prod_Cat" />
</Fields>
<Data>
<r>
<c>Art &amp; Crafts</c>
<c>Art &amp; Crafts &amp; Hobbies</c>
</r>
</Data>
</Configuration>
<Annotation DisplayMode="0">
<Name />
<DefaultAnnotationText />
<Left value="False" />
</Annotation>
</Properties>
<EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxTextInput" />
</Node>
<Node ToolID="3">
<GuiSettings Plugin="AlteryxBasePluginsGui.FindReplace.FindReplace">
<Position x="354" y="78" />
</GuiSettings>
<Properties>
<Configuration>
<FieldFind>Product_Category</FieldFind>
<FieldSearch>Product_Category</FieldSearch>
<ReplaceFoundField>New_Prod_Cat</ReplaceFoundField>
<FindMode>FindAny</FindMode>
<NoCase value="False" />
<MatchWholeWord value="False" />
<ReplaceMode>Replace</ReplaceMode>
<ReplaceMultipleFound value="True" />
<ReplaceAppendFields />
</Configuration>
<Annotation DisplayMode="0">
<Name />
<DefaultAnnotationText />
<Left value="False" />
</Annotation>
</Properties>
<EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxFindReplace" />
</Node>
<Node ToolID="5">
<GuiSettings Plugin="AlteryxBasePluginsGui.DbFileOutput.DbFileOutput">
<Position x="522" y="78" />
</GuiSettings>
<Properties>
<Configuration>
<File MaxRecords="" FileFormat="0">Z:\Pyteryx\Alteryx_TestWorkflows\FindReplaceTesting\Output\FindReplace.csv</File>
<Passwords />
<Disable>False</Disable>
<FormatSpecificOptions>
<LineEndStyle>CRLF</LineEndStyle>
<Delimeter>,</Delimeter>
<ForceQuotes>False</ForceQuotes>
<HeaderRow>True</HeaderRow>
<CodePage>28591</CodePage>
<WriteBOM>True</WriteBOM>
</FormatSpecificOptions>
<MultiFile value="False" />
</Configuration>
<Annotation DisplayMode="0">
<Name />
<DefaultAnnotationText>FindReplace.csv</DefaultAnnotationText>
<Left value="False" />
</Annotation>
<Dependencies>
<Implicit />
</Dependencies>
</Properties>
<EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxDbFileOutput" />
</Node>
<Node ToolID="6">
<GuiSettings Plugin="AlteryxBasePluginsGui.Filter.Filter">
<Position x="198" y="78" />
</GuiSettings>
<Properties>
<Configuration>
<Mode>Simple</Mode>
<Simple>
<Operator>=</Operator>
<Field>Product_Category</Field>
<Operands>
<IgnoreTimeInDateTime>True</IgnoreTimeInDateTime>
<DateType>fixed</DateType>
<PeriodDate>2026-06-12 17:01:48</PeriodDate>
<PeriodType>
</PeriodType>
<PeriodCount>0</PeriodCount>
<Operand>Art &amp; Crafts</Operand>
<StartDate>2026-06-12 17:01:48</StartDate>
<EndDate>2026-06-12 17:01:48</EndDate>
</Operands>
</Simple>
</Configuration>
<Annotation DisplayMode="0">
<Name />
<DefaultAnnotationText>[Product_Category] = "Art &amp; Crafts"</DefaultAnnotationText>
<Left value="False" />
</Annotation>
</Properties>
<EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxFilter" />
</Node>
<Node ToolID="7">
<GuiSettings Plugin="AlteryxBasePluginsGui.FindReplace.FindReplace">
<Position x="354" y="198" />
</GuiSettings>
<Properties>
<Configuration>
<FieldFind>Product_Category</FieldFind>
<FieldSearch>Product_Category</FieldSearch>
<ReplaceFoundField>New_Prod_Cat</ReplaceFoundField>
<FindMode>FindAny</FindMode>
<NoCase value="False" />
<MatchWholeWord value="False" />
<ReplaceMode>Append</ReplaceMode>
<ReplaceMultipleFound value="True" />
<ReplaceAppendFields>
<Field field="New_Prod_Cat" />
</ReplaceAppendFields>
</Configuration>
<Annotation DisplayMode="0">
<Name />
<DefaultAnnotationText />
<Left value="False" />
</Annotation>
</Properties>
<EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxFindReplace" />
</Node>
<Node ToolID="8">
<GuiSettings Plugin="AlteryxBasePluginsGui.DbFileOutput.DbFileOutput">
<Position x="522" y="198" />
</GuiSettings>
<Properties>
<Configuration>
<File MaxRecords="" FileFormat="0">Z:\Pyteryx\Alteryx_TestWorkflows\FindReplaceTesting\Output\FindAppend.csv</File>
<Passwords />
<Disable>False</Disable>
<FormatSpecificOptions>
<LineEndStyle>CRLF</LineEndStyle>
<Delimeter>,</Delimeter>
<ForceQuotes>False</ForceQuotes>
<HeaderRow>True</HeaderRow>
<CodePage>28591</CodePage>
<WriteBOM>True</WriteBOM>
</FormatSpecificOptions>
<MultiFile value="False" />
</Configuration>
<Annotation DisplayMode="0">
<Name />
<DefaultAnnotationText>FindAppend.csv</DefaultAnnotationText>
<Left value="False" />
</Annotation>
<Dependencies>
<Implicit />
</Dependencies>
</Properties>
<EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxDbFileOutput" />
</Node>
</Nodes>
<Connections>
<Connection>
<Origin ToolID="1" Connection="Output" />
<Destination ToolID="6" Connection="Input" />
</Connection>
<Connection>
<Origin ToolID="2" Connection="Output" />
<Destination ToolID="3" Connection="Source" />
</Connection>
<Connection>
<Origin ToolID="6" Connection="True" />
<Destination ToolID="3" Connection="Targets" />
</Connection>
<Connection>
<Origin ToolID="2" Connection="Output" />
<Destination ToolID="7" Connection="Source" />
</Connection>
<Connection>
<Origin ToolID="6" Connection="True" />
<Destination ToolID="7" Connection="Targets" />
</Connection>
<Connection>
<Origin ToolID="3" Connection="Output" />
<Destination ToolID="5" Connection="Input" />
</Connection>
<Connection>
<Origin ToolID="7" Connection="Output" />
<Destination ToolID="8" Connection="Input" />
</Connection>
</Connections>
<Properties>
<Memory default="True" />
<GlobalRecordLimit value="0" />
<TempFiles default="True" />
<Annotation on="True" includeToolName="False" />
<ConvErrorLimit value="10" />
<ConvErrorLimit_Stop value="False" />
<CancelOnError value="False" />
<DisableBrowse value="False" />
<EnablePerformanceProfiling value="False" />
<RunWithE2 value="True" />
<PredictiveToolsCodePage value="1252" />
<DisableAllOutput value="False" />
<ShowAllMacroMessages value="False" />
<ShowConnectionStatusIsOn value="True" />
<ShowConnectionStatusOnlyWhenRunning value="True" />
<ZoomLevel value="0" />
<LayoutType>Horizontal</LayoutType>
<MetaInfo>
<NameIsFileName value="True" />
<Name>FIndReplaceTesting</Name>
<Description />
<RootToolName />
<ToolVersion />
<ToolInDb value="False" />
<CategoryName />
<SearchTags />
<Author />
<Company />
<Copyright />
<DescriptionLink actual="" displayed="" />
<Example>
<Description />
<File />
</Example>
<WorkflowId value="fed6038b-5e82-4378-95cd-1e383904b239" />
<Telemetry>
<PreviousWorkflowId value="bb332445-f260-4a2f-8b54-334ebfc7bd48" />
<OriginWorkflowId value="bb332445-f260-4a2f-8b54-334ebfc7bd48" />
</Telemetry>
</MetaInfo>
<Events>
<Enabled value="True" />
</Events>
</Properties>
</AlteryxDocument>

View File

@ -0,0 +1,288 @@
<?xml version="1.0"?>
<AlteryxDocument yxmdVer="2022.3">
<Nodes>
<Node ToolID="1">
<GuiSettings Plugin="AlteryxBasePluginsGui.DbFileInput.DbFileInput">
<Position x="90" y="78" />
</GuiSettings>
<Properties>
<Configuration>
<Passwords />
<File RecordLimit="" SearchSubDirs="False" FileFormat="0" OutputFileName="">..\Maven Toys Data\products.csv</File>
<FormatSpecificOptions>
<HeaderRow>True</HeaderRow>
<IgnoreErrors>False</IgnoreErrors>
<AllowShareWrite>False</AllowShareWrite>
<ImportLine>1</ImportLine>
<FieldLen>254</FieldLen>
<SingleThreadRead>False</SingleThreadRead>
<IgnoreQuotes>DoubleQuotes</IgnoreQuotes>
<Delimeter>,</Delimeter>
<QuoteRecordBreak>False</QuoteRecordBreak>
<CodePage>28591</CodePage>
</FormatSpecificOptions>
</Configuration>
<Annotation DisplayMode="0">
<Name />
<DefaultAnnotationText>products.csv</DefaultAnnotationText>
<Left value="False" />
</Annotation>
<Dependencies>
<Implicit />
</Dependencies>
<MetaInfo connection="Output">
<RecordInfo>
<Field name="Product_ID" size="254" source="File: Z:\Pyteryx\Alteryx_TestWorkflows\Maven Toys Data\products.csv" type="V_String" />
<Field name="Product_Name" size="254" source="File: Z:\Pyteryx\Alteryx_TestWorkflows\Maven Toys Data\products.csv" type="V_String" />
<Field name="Product_Category" size="254" source="File: Z:\Pyteryx\Alteryx_TestWorkflows\Maven Toys Data\products.csv" type="V_String" />
<Field name="Product_Cost" size="254" source="File: Z:\Pyteryx\Alteryx_TestWorkflows\Maven Toys Data\products.csv" type="V_String" />
<Field name="Product_Price" size="254" source="File: Z:\Pyteryx\Alteryx_TestWorkflows\Maven Toys Data\products.csv" type="V_String" />
</RecordInfo>
</MetaInfo>
</Properties>
<EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxDbFileInput" />
</Node>
<Node ToolID="2">
<GuiSettings Plugin="AlteryxBasePluginsGui.TextInput.TextInput">
<Position x="90" y="210" />
</GuiSettings>
<Properties>
<Configuration>
<NumRows value="1" />
<Fields>
<Field name="Product_Category" />
<Field name="New_Prod_Cat" />
</Fields>
<Data>
<r>
<c>Art &amp; Crafts</c>
<c>Art &amp; Crafts &amp; Hobbies</c>
</r>
</Data>
</Configuration>
<Annotation DisplayMode="0">
<Name />
<DefaultAnnotationText />
<Left value="False" />
</Annotation>
</Properties>
<EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxTextInput" />
</Node>
<Node ToolID="3">
<GuiSettings Plugin="AlteryxBasePluginsGui.FindReplace.FindReplace">
<Position x="354" y="78" />
</GuiSettings>
<Properties>
<Configuration>
<FieldFind>Product_Category</FieldFind>
<FieldSearch>Product_Category</FieldSearch>
<ReplaceFoundField>New_Prod_Cat</ReplaceFoundField>
<FindMode>FindAny</FindMode>
<NoCase value="False" />
<MatchWholeWord value="False" />
<ReplaceMode>Replace</ReplaceMode>
<ReplaceMultipleFound value="True" />
<ReplaceAppendFields />
</Configuration>
<Annotation DisplayMode="0">
<Name />
<DefaultAnnotationText />
<Left value="False" />
</Annotation>
</Properties>
<EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxFindReplace" />
</Node>
<Node ToolID="5">
<GuiSettings Plugin="AlteryxBasePluginsGui.DbFileOutput.DbFileOutput">
<Position x="522" y="78" />
</GuiSettings>
<Properties>
<Configuration>
<File MaxRecords="" FileFormat="0">.\Output\FindReplace.csv</File>
<Passwords />
<Disable>False</Disable>
<FormatSpecificOptions>
<LineEndStyle>CRLF</LineEndStyle>
<Delimeter>,</Delimeter>
<ForceQuotes>False</ForceQuotes>
<HeaderRow>True</HeaderRow>
<CodePage>28591</CodePage>
<WriteBOM>True</WriteBOM>
</FormatSpecificOptions>
<MultiFile value="False" />
</Configuration>
<Annotation DisplayMode="0">
<Name />
<DefaultAnnotationText>FindReplace.csv</DefaultAnnotationText>
<Left value="False" />
</Annotation>
<Dependencies>
<Implicit />
</Dependencies>
</Properties>
<EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxDbFileOutput" />
</Node>
<Node ToolID="6">
<GuiSettings Plugin="AlteryxBasePluginsGui.Filter.Filter">
<Position x="198" y="78" />
</GuiSettings>
<Properties>
<Configuration>
<Mode>Simple</Mode>
<Simple>
<Operator>=</Operator>
<Field>Product_Category</Field>
<Operands>
<IgnoreTimeInDateTime>True</IgnoreTimeInDateTime>
<DateType>fixed</DateType>
<PeriodDate>2026-06-12 17:01:48</PeriodDate>
<PeriodType>
</PeriodType>
<PeriodCount>0</PeriodCount>
<Operand>Art &amp; Crafts</Operand>
<StartDate>2026-06-12 17:01:48</StartDate>
<EndDate>2026-06-12 17:01:48</EndDate>
</Operands>
</Simple>
</Configuration>
<Annotation DisplayMode="0">
<Name />
<DefaultAnnotationText>[Product_Category] = "Art &amp; Crafts"</DefaultAnnotationText>
<Left value="False" />
</Annotation>
</Properties>
<EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxFilter" />
</Node>
<Node ToolID="7">
<GuiSettings Plugin="AlteryxBasePluginsGui.FindReplace.FindReplace">
<Position x="354" y="198" />
</GuiSettings>
<Properties>
<Configuration>
<FieldFind>Product_Category</FieldFind>
<FieldSearch>Product_Category</FieldSearch>
<ReplaceFoundField>New_Prod_Cat</ReplaceFoundField>
<FindMode>FindAny</FindMode>
<NoCase value="False" />
<MatchWholeWord value="False" />
<ReplaceMode>Append</ReplaceMode>
<ReplaceMultipleFound value="True" />
<ReplaceAppendFields>
<Field field="New_Prod_Cat" />
</ReplaceAppendFields>
</Configuration>
<Annotation DisplayMode="0">
<Name />
<DefaultAnnotationText />
<Left value="False" />
</Annotation>
</Properties>
<EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxFindReplace" />
</Node>
<Node ToolID="8">
<GuiSettings Plugin="AlteryxBasePluginsGui.DbFileOutput.DbFileOutput">
<Position x="522" y="198" />
</GuiSettings>
<Properties>
<Configuration>
<File MaxRecords="" FileFormat="0">.\Output\FindAppend.csv</File>
<Passwords />
<Disable>False</Disable>
<FormatSpecificOptions>
<LineEndStyle>CRLF</LineEndStyle>
<Delimeter>,</Delimeter>
<ForceQuotes>False</ForceQuotes>
<HeaderRow>True</HeaderRow>
<CodePage>28591</CodePage>
<WriteBOM>True</WriteBOM>
</FormatSpecificOptions>
<MultiFile value="False" />
</Configuration>
<Annotation DisplayMode="0">
<Name />
<DefaultAnnotationText>FindAppend.csv</DefaultAnnotationText>
<Left value="False" />
</Annotation>
<Dependencies>
<Implicit />
</Dependencies>
</Properties>
<EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxDbFileOutput" />
</Node>
</Nodes>
<Connections>
<Connection>
<Origin ToolID="1" Connection="Output" />
<Destination ToolID="6" Connection="Input" />
</Connection>
<Connection>
<Origin ToolID="2" Connection="Output" />
<Destination ToolID="3" Connection="Source" />
</Connection>
<Connection>
<Origin ToolID="6" Connection="True" />
<Destination ToolID="3" Connection="Targets" />
</Connection>
<Connection>
<Origin ToolID="2" Connection="Output" />
<Destination ToolID="7" Connection="Source" />
</Connection>
<Connection>
<Origin ToolID="6" Connection="True" />
<Destination ToolID="7" Connection="Targets" />
</Connection>
<Connection>
<Origin ToolID="3" Connection="Output" />
<Destination ToolID="5" Connection="Input" />
</Connection>
<Connection>
<Origin ToolID="7" Connection="Output" />
<Destination ToolID="8" Connection="Input" />
</Connection>
</Connections>
<Properties>
<Memory default="True" />
<GlobalRecordLimit value="0" />
<TempFiles default="True" />
<Annotation on="True" includeToolName="False" />
<ConvErrorLimit value="10" />
<ConvErrorLimit_Stop value="False" />
<CancelOnError value="False" />
<DisableBrowse value="False" />
<EnablePerformanceProfiling value="False" />
<RunWithE2 value="True" />
<PredictiveToolsCodePage value="1252" />
<DisableAllOutput value="False" />
<ShowAllMacroMessages value="False" />
<ShowConnectionStatusIsOn value="True" />
<ShowConnectionStatusOnlyWhenRunning value="True" />
<ZoomLevel value="0" />
<LayoutType>Horizontal</LayoutType>
<MetaInfo>
<NameIsFileName value="True" />
<Name>FIndReplaceTesting</Name>
<Description />
<RootToolName />
<ToolVersion />
<ToolInDb value="False" />
<CategoryName />
<SearchTags />
<Author />
<Company />
<Copyright />
<DescriptionLink actual="" displayed="" />
<Example>
<Description />
<File />
</Example>
<WorkflowId value="fed6038b-5e82-4378-95cd-1e383904b239" />
<Telemetry>
<PreviousWorkflowId value="bb332445-f260-4a2f-8b54-334ebfc7bd48" />
<OriginWorkflowId value="bb332445-f260-4a2f-8b54-334ebfc7bd48" />
</Telemetry>
</MetaInfo>
<Events>
<Enabled value="True" />
</Events>
</Properties>
</AlteryxDocument>

View File

@ -0,0 +1,9 @@
Product_ID,Product_Name,Product_Category,Product_Cost,Product_Price,New_Prod_Cat
3,"Barrel O' Slime",Art & Crafts,$1.99,$3.99,Art & Crafts & Hobbies
11,Etch A Sketch,Art & Crafts,$10.99,$20.99,Art & Crafts & Hobbies
17,Kids Makeup Kit,Art & Crafts,$13.99,$19.99,Art & Crafts & Hobbies
19,Magic Sand,Art & Crafts,$13.99,$15.99,Art & Crafts & Hobbies
25,PlayDoh Can,Art & Crafts,$1.99,$2.99,Art & Crafts & Hobbies
26,PlayDoh Playset,Art & Crafts,$20.99,$24.99,Art & Crafts & Hobbies
27,PlayDoh Toolkit,Art & Crafts,$3.99,$4.99,Art & Crafts & Hobbies
28,Playfoam,Art & Crafts,$3.99,$10.99,Art & Crafts & Hobbies
1 Product_ID Product_Name Product_Category Product_Cost Product_Price New_Prod_Cat
2 3 Barrel O' Slime Art & Crafts $1.99 $3.99 Art & Crafts & Hobbies
3 11 Etch A Sketch Art & Crafts $10.99 $20.99 Art & Crafts & Hobbies
4 17 Kids Makeup Kit Art & Crafts $13.99 $19.99 Art & Crafts & Hobbies
5 19 Magic Sand Art & Crafts $13.99 $15.99 Art & Crafts & Hobbies
6 25 PlayDoh Can Art & Crafts $1.99 $2.99 Art & Crafts & Hobbies
7 26 PlayDoh Playset Art & Crafts $20.99 $24.99 Art & Crafts & Hobbies
8 27 PlayDoh Toolkit Art & Crafts $3.99 $4.99 Art & Crafts & Hobbies
9 28 Playfoam Art & Crafts $3.99 $10.99 Art & Crafts & Hobbies

View File

@ -0,0 +1,9 @@
Product_ID,Product_Name,Product_Category,Product_Cost,Product_Price
3,"Barrel O' Slime",Art & Crafts & Hobbies,$1.99,$3.99
11,Etch A Sketch,Art & Crafts & Hobbies,$10.99,$20.99
17,Kids Makeup Kit,Art & Crafts & Hobbies,$13.99,$19.99
19,Magic Sand,Art & Crafts & Hobbies,$13.99,$15.99
25,PlayDoh Can,Art & Crafts & Hobbies,$1.99,$2.99
26,PlayDoh Playset,Art & Crafts & Hobbies,$20.99,$24.99
27,PlayDoh Toolkit,Art & Crafts & Hobbies,$3.99,$4.99
28,Playfoam,Art & Crafts & Hobbies,$3.99,$10.99
1 Product_ID Product_Name Product_Category Product_Cost Product_Price
2 3 Barrel O' Slime Art & Crafts & Hobbies $1.99 $3.99
3 11 Etch A Sketch Art & Crafts & Hobbies $10.99 $20.99
4 17 Kids Makeup Kit Art & Crafts & Hobbies $13.99 $19.99
5 19 Magic Sand Art & Crafts & Hobbies $13.99 $15.99
6 25 PlayDoh Can Art & Crafts & Hobbies $1.99 $2.99
7 26 PlayDoh Playset Art & Crafts & Hobbies $20.99 $24.99
8 27 PlayDoh Toolkit Art & Crafts & Hobbies $3.99 $4.99
9 28 Playfoam Art & Crafts & Hobbies $3.99 $10.99

View File

@ -0,0 +1,9 @@
Product_ID,Product_Name,Product_Category,Product_Cost,Product_Price,New_Prod_Cat
3,"Barrel O' Slime",Art & Crafts,$1.99,$3.99,Art & Crafts & Hobbies
11,Etch A Sketch,Art & Crafts,$10.99,$20.99,Art & Crafts & Hobbies
17,Kids Makeup Kit,Art & Crafts,$13.99,$19.99,Art & Crafts & Hobbies
19,Magic Sand,Art & Crafts,$13.99,$15.99,Art & Crafts & Hobbies
25,PlayDoh Can,Art & Crafts,$1.99,$2.99,Art & Crafts & Hobbies
26,PlayDoh Playset,Art & Crafts,$20.99,$24.99,Art & Crafts & Hobbies
27,PlayDoh Toolkit,Art & Crafts,$3.99,$4.99,Art & Crafts & Hobbies
28,Playfoam,Art & Crafts,$3.99,$10.99,Art & Crafts & Hobbies
1 Product_ID Product_Name Product_Category Product_Cost Product_Price New_Prod_Cat
2 3 Barrel O' Slime Art & Crafts $1.99 $3.99 Art & Crafts & Hobbies
3 11 Etch A Sketch Art & Crafts $10.99 $20.99 Art & Crafts & Hobbies
4 17 Kids Makeup Kit Art & Crafts $13.99 $19.99 Art & Crafts & Hobbies
5 19 Magic Sand Art & Crafts $13.99 $15.99 Art & Crafts & Hobbies
6 25 PlayDoh Can Art & Crafts $1.99 $2.99 Art & Crafts & Hobbies
7 26 PlayDoh Playset Art & Crafts $20.99 $24.99 Art & Crafts & Hobbies
8 27 PlayDoh Toolkit Art & Crafts $3.99 $4.99 Art & Crafts & Hobbies
9 28 Playfoam Art & Crafts $3.99 $10.99 Art & Crafts & Hobbies

View File

@ -0,0 +1,9 @@
Product_ID,Product_Name,Product_Category,Product_Cost,Product_Price
3,"Barrel O' Slime",Art & Crafts & Hobbies,$1.99,$3.99
11,Etch A Sketch,Art & Crafts & Hobbies,$10.99,$20.99
17,Kids Makeup Kit,Art & Crafts & Hobbies,$13.99,$19.99
19,Magic Sand,Art & Crafts & Hobbies,$13.99,$15.99
25,PlayDoh Can,Art & Crafts & Hobbies,$1.99,$2.99
26,PlayDoh Playset,Art & Crafts & Hobbies,$20.99,$24.99
27,PlayDoh Toolkit,Art & Crafts & Hobbies,$3.99,$4.99
28,Playfoam,Art & Crafts & Hobbies,$3.99,$10.99
1 Product_ID Product_Name Product_Category Product_Cost Product_Price
2 3 Barrel O' Slime Art & Crafts & Hobbies $1.99 $3.99
3 11 Etch A Sketch Art & Crafts & Hobbies $10.99 $20.99
4 17 Kids Makeup Kit Art & Crafts & Hobbies $13.99 $19.99
5 19 Magic Sand Art & Crafts & Hobbies $13.99 $15.99
6 25 PlayDoh Can Art & Crafts & Hobbies $1.99 $2.99
7 26 PlayDoh Playset Art & Crafts & Hobbies $20.99 $24.99
8 27 PlayDoh Toolkit Art & Crafts & Hobbies $3.99 $4.99
9 28 Playfoam Art & Crafts & Hobbies $3.99 $10.99

File diff suppressed because it is too large Load Diff

View File

@ -1,165 +1,4 @@
Store_ID,Product_ID,Stock_On_Hand Store_ID,Product_ID,Stock_On_Hand
15,31,4
15,32,16
15,33,8
15,34,7
16,31,14
16,32,7
16,33,6
16,34,2
16,35,6
17,31,20
17,32,15
17,33,27
17,34,11
18,31,4
18,32,9
18,33,9
18,34,8
18,35,10
19,31,4
19,32,5
19,33,0
19,34,15
19,35,14
20,31,10
20,32,9
20,33,28
20,34,19
21,31,19
21,32,3
21,33,16
21,34,16
22,31,34
22,32,38
22,33,8
22,34,6
22,35,2
23,31,19
23,32,11
23,33,6
23,34,18
23,35,4
24,31,10
24,32,10
24,33,4
24,34,17
24,35,19
25,31,0
25,32,10
25,33,4
25,34,23
26,31,4
26,32,2
26,33,2
26,34,17
26,35,8
27,31,13
27,32,6
27,33,7
27,34,9
28,31,18
28,32,3
28,33,9
28,34,19
42,31,11
42,32,4
42,33,18
42,34,34
42,35,13
43,31,18
43,32,38
43,33,5
43,34,7
44,31,8
44,32,29
44,33,0
44,34,22
45,31,6
45,32,6
45,33,7
45,34,3
46,31,13
46,32,8
46,33,11
46,34,24
47,31,48
47,32,6
47,33,13
47,34,3
48,31,41
48,32,7
48,33,0
48,34,39
48,35,3
49,31,51
49,32,11
49,33,15
49,34,2
49,35,19
50,31,18
50,32,9
50,33,1
50,34,17
50,35,8
29,31,3
29,32,7
29,33,6
29,34,16
30,31,20
30,32,13
30,33,10
30,34,18
31,31,39
31,32,12
31,33,20
31,34,20
32,31,4
32,32,8
32,33,13
32,34,20
33,31,7
33,32,15
33,33,9
33,34,14
33,35,18
34,31,30
34,32,19
34,33,9
34,34,17
34,35,20
35,31,74
35,32,20
35,33,14
35,34,9
36,31,6
36,32,7
36,33,21
36,34,2
36,35,12
37,31,14
37,32,0
37,33,10
37,34,13
37,35,14
38,31,17
38,32,20
38,33,9
38,34,18
38,35,2
39,31,15
39,32,5
39,33,14
39,34,4
40,31,5
40,32,7
40,33,16
40,34,5
41,31,18
41,32,29
41,33,13
41,34,15
41,35,10
1,31,7 1,31,7
1,32,4 1,32,4
1,33,2 1,33,2
@ -224,3 +63,164 @@ Store_ID,Product_ID,Stock_On_Hand
14,32,2 14,32,2
14,33,2 14,33,2
14,34,8 14,34,8
29,31,3
29,32,7
29,33,6
29,34,16
30,31,20
30,32,13
30,33,10
30,34,18
31,31,39
31,32,12
31,33,20
31,34,20
32,31,4
32,32,8
32,33,13
32,34,20
33,31,7
33,32,15
33,33,9
33,34,14
33,35,18
34,31,30
34,32,19
34,33,9
34,34,17
34,35,20
35,31,74
35,32,20
35,33,14
35,34,9
36,31,6
36,32,7
36,33,21
36,34,2
36,35,12
37,31,14
37,32,0
37,33,10
37,34,13
37,35,14
38,31,17
38,32,20
38,33,9
38,34,18
38,35,2
39,31,15
39,32,5
39,33,14
39,34,4
40,31,5
40,32,7
40,33,16
40,34,5
41,31,18
41,32,29
41,33,13
41,34,15
41,35,10
42,31,11
42,32,4
42,33,18
42,34,34
42,35,13
43,31,18
43,32,38
43,33,5
43,34,7
44,31,8
44,32,29
44,33,0
44,34,22
45,31,6
45,32,6
45,33,7
45,34,3
46,31,13
46,32,8
46,33,11
46,34,24
47,31,48
47,32,6
47,33,13
47,34,3
48,31,41
48,32,7
48,33,0
48,34,39
48,35,3
49,31,51
49,32,11
49,33,15
49,34,2
49,35,19
50,31,18
50,32,9
50,33,1
50,34,17
50,35,8
15,31,4
15,32,16
15,33,8
15,34,7
16,31,14
16,32,7
16,33,6
16,34,2
16,35,6
17,31,20
17,32,15
17,33,27
17,34,11
18,31,4
18,32,9
18,33,9
18,34,8
18,35,10
19,31,4
19,32,5
19,33,0
19,34,15
19,35,14
20,31,10
20,32,9
20,33,28
20,34,19
21,31,19
21,32,3
21,33,16
21,34,16
22,31,34
22,32,38
22,33,8
22,34,6
22,35,2
23,31,19
23,32,11
23,33,6
23,34,18
23,35,4
24,31,10
24,32,10
24,33,4
24,34,17
24,35,19
25,31,0
25,32,10
25,33,4
25,34,23
26,31,4
26,32,2
26,33,2
26,34,17
26,35,8
27,31,13
27,32,6
27,33,7
27,34,9
28,31,18
28,32,3
28,33,9
28,34,19

1 Store_ID Product_ID Stock_On_Hand
15 31 4
15 32 16
15 33 8
15 34 7
16 31 14
16 32 7
16 33 6
16 34 2
16 35 6
17 31 20
17 32 15
17 33 27
17 34 11
18 31 4
18 32 9
18 33 9
18 34 8
18 35 10
19 31 4
19 32 5
19 33 0
19 34 15
19 35 14
20 31 10
20 32 9
20 33 28
20 34 19
21 31 19
21 32 3
21 33 16
21 34 16
22 31 34
22 32 38
22 33 8
22 34 6
22 35 2
23 31 19
23 32 11
23 33 6
23 34 18
23 35 4
24 31 10
24 32 10
24 33 4
24 34 17
24 35 19
25 31 0
25 32 10
25 33 4
25 34 23
26 31 4
26 32 2
26 33 2
26 34 17
26 35 8
27 31 13
27 32 6
27 33 7
27 34 9
28 31 18
28 32 3
28 33 9
28 34 19
42 31 11
42 32 4
42 33 18
42 34 34
42 35 13
43 31 18
43 32 38
43 33 5
43 34 7
44 31 8
44 32 29
44 33 0
44 34 22
45 31 6
45 32 6
45 33 7
45 34 3
46 31 13
46 32 8
46 33 11
46 34 24
47 31 48
47 32 6
47 33 13
47 34 3
48 31 41
48 32 7
48 33 0
48 34 39
48 35 3
49 31 51
49 32 11
49 33 15
49 34 2
49 35 19
50 31 18
50 32 9
50 33 1
50 34 17
50 35 8
29 31 3
29 32 7
29 33 6
29 34 16
30 31 20
30 32 13
30 33 10
30 34 18
31 31 39
31 32 12
31 33 20
31 34 20
32 31 4
32 32 8
32 33 13
32 34 20
33 31 7
33 32 15
33 33 9
33 34 14
33 35 18
34 31 30
34 32 19
34 33 9
34 34 17
34 35 20
35 31 74
35 32 20
35 33 14
35 34 9
36 31 6
36 32 7
36 33 21
36 34 2
36 35 12
37 31 14
37 32 0
37 33 10
37 34 13
37 35 14
38 31 17
38 32 20
38 33 9
38 34 18
38 35 2
39 31 15
39 32 5
39 33 14
39 34 4
40 31 5
40 32 7
40 33 16
40 34 5
41 31 18
41 32 29
41 33 13
41 34 15
41 35 10
2 1 31 7
3 1 32 4
4 1 33 2
63 14 32 2
64 14 33 2
65 14 34 8
66 29 31 3
67 29 32 7
68 29 33 6
69 29 34 16
70 30 31 20
71 30 32 13
72 30 33 10
73 30 34 18
74 31 31 39
75 31 32 12
76 31 33 20
77 31 34 20
78 32 31 4
79 32 32 8
80 32 33 13
81 32 34 20
82 33 31 7
83 33 32 15
84 33 33 9
85 33 34 14
86 33 35 18
87 34 31 30
88 34 32 19
89 34 33 9
90 34 34 17
91 34 35 20
92 35 31 74
93 35 32 20
94 35 33 14
95 35 34 9
96 36 31 6
97 36 32 7
98 36 33 21
99 36 34 2
100 36 35 12
101 37 31 14
102 37 32 0
103 37 33 10
104 37 34 13
105 37 35 14
106 38 31 17
107 38 32 20
108 38 33 9
109 38 34 18
110 38 35 2
111 39 31 15
112 39 32 5
113 39 33 14
114 39 34 4
115 40 31 5
116 40 32 7
117 40 33 16
118 40 34 5
119 41 31 18
120 41 32 29
121 41 33 13
122 41 34 15
123 41 35 10
124 42 31 11
125 42 32 4
126 42 33 18
127 42 34 34
128 42 35 13
129 43 31 18
130 43 32 38
131 43 33 5
132 43 34 7
133 44 31 8
134 44 32 29
135 44 33 0
136 44 34 22
137 45 31 6
138 45 32 6
139 45 33 7
140 45 34 3
141 46 31 13
142 46 32 8
143 46 33 11
144 46 34 24
145 47 31 48
146 47 32 6
147 47 33 13
148 47 34 3
149 48 31 41
150 48 32 7
151 48 33 0
152 48 34 39
153 48 35 3
154 49 31 51
155 49 32 11
156 49 33 15
157 49 34 2
158 49 35 19
159 50 31 18
160 50 32 9
161 50 33 1
162 50 34 17
163 50 35 8
164 15 31 4
165 15 32 16
166 15 33 8
167 15 34 7
168 16 31 14
169 16 32 7
170 16 33 6
171 16 34 2
172 16 35 6
173 17 31 20
174 17 32 15
175 17 33 27
176 17 34 11
177 18 31 4
178 18 32 9
179 18 33 9
180 18 34 8
181 18 35 10
182 19 31 4
183 19 32 5
184 19 33 0
185 19 34 15
186 19 35 14
187 20 31 10
188 20 32 9
189 20 33 28
190 20 34 19
191 21 31 19
192 21 32 3
193 21 33 16
194 21 34 16
195 22 31 34
196 22 32 38
197 22 33 8
198 22 34 6
199 22 35 2
200 23 31 19
201 23 32 11
202 23 33 6
203 23 34 18
204 23 35 4
205 24 31 10
206 24 32 10
207 24 33 4
208 24 34 17
209 24 35 19
210 25 31 0
211 25 32 10
212 25 33 4
213 25 34 23
214 26 31 4
215 26 32 2
216 26 33 2
217 26 34 17
218 26 35 8
219 27 31 13
220 27 32 6
221 27 33 7
222 27 34 9
223 28 31 18
224 28 32 3
225 28 33 9
226 28 34 19

View File

@ -1,7 +1,7 @@
Product_ID,Product_Name,Product_Category,Product_Cost,Product_Price Product_ID,Product_Name,Product_Category,Product_Cost,Product_Price
1,Action Figure,Toys,$9.99,$15.99 1,Action Figure,Toys,$9.99,$15.99
2,Animal Figures,Toys,$9.99,$12.99 2,Animal Figures,Toys,$9.99,$12.99
3,Barrel O' Slime,Art & Crafts,$1.99,$3.99 3,"Barrel O' Slime",Art & Crafts,$1.99,$3.99
4,Chutes & Ladders,Games,$9.99,$12.99 4,Chutes & Ladders,Games,$9.99,$12.99
5,Classic Dominoes,Games,$7.99,$9.99 5,Classic Dominoes,Games,$7.99,$9.99
6,Colorbuds,Electronics,$6.99,$14.99 6,Colorbuds,Electronics,$6.99,$14.99
@ -28,5 +28,5 @@ Product_ID,Product_Name,Product_Category,Product_Cost,Product_Price
27,PlayDoh Toolkit,Art & Crafts,$3.99,$4.99 27,PlayDoh Toolkit,Art & Crafts,$3.99,$4.99
28,Playfoam,Art & Crafts,$3.99,$10.99 28,Playfoam,Art & Crafts,$3.99,$10.99
29,Plush Pony,Toys,$8.99,$19.99 29,Plush Pony,Toys,$8.99,$19.99
30,Rubik's Cube,Games,$17.99,$19.99 30,"Rubik's Cube",Games,$17.99,$19.99
100,Non-product,NoCat,$1,$1 100,Non-product,NoCat,$1,$1

1 Product_ID Product_Name Product_Category Product_Cost Product_Price
2 1 Action Figure Toys $9.99 $15.99
3 2 Animal Figures Toys $9.99 $12.99
4 3 Barrel O' Slime Art & Crafts $1.99 $3.99
5 4 Chutes & Ladders Games $9.99 $12.99
6 5 Classic Dominoes Games $7.99 $9.99
7 6 Colorbuds Electronics $6.99 $14.99
28 27 PlayDoh Toolkit Art & Crafts $3.99 $4.99
29 28 Playfoam Art & Crafts $3.99 $10.99
30 29 Plush Pony Toys $8.99 $19.99
31 30 Rubik's Cube Games $17.99 $19.99
32 100 Non-product NoCat $1 $1

View File

@ -1,6 +1,6 @@
Product_Category,Last_Product_Cost,Last_Product_Name Product_Category,Last_Product_Cost,Last_Product_Name
Art & Crafts,20.99,PlayDoh Playset Art & Crafts,20.99,PlayDoh Playset
Electronics,20.99,Toy Robot Electronics,20.99,Toy Robot
Games,17.99,Rubik's Cube Games,17.99,"Rubik's Cube"
Sports & Outdoors,14.99,Nerf Gun Sports & Outdoors,14.99,Nerf Gun
Toys,34.99,Lego Bricks Toys,34.99,Lego Bricks

1 Product_Category Last_Product_Cost Last_Product_Name
2 Art & Crafts 20.99 PlayDoh Playset
3 Electronics 20.99 Toy Robot
4 Games 17.99 Rubik's Cube
5 Sports & Outdoors 14.99 Nerf Gun
6 Toys 34.99 Lego Bricks

View File

@ -0,0 +1,31 @@
Product_ID,Product_Name,Product_Category,Product_Cost,Product_Price
11,Etch A Sketch,Art & Crafts,$10.99,$20.99
17,Kids Makeup Kit,Art & Crafts,$13.99,$19.99
19,Magic Sand,Art & Crafts,$13.99,$15.99
25,PlayDoh Can,Art & Crafts,$1.99,$2.99
26,PlayDoh Playset,Art & Crafts,$20.99,$24.99
27,PlayDoh Toolkit,Art & Crafts,$3.99,$4.99
28,Playfoam,Art & Crafts,$3.99,$10.99
13,Gamer Headphones,Electronics,$14.99,$20.99
34,Toy Robot,Electronics,$20.99,$25.99
5,Classic Dominoes,Games,$7.99,$9.99
8,Deck Of Cards,Games,$3.99,$6.99
14,Glass Marbles,Games,$5.99,$10.99
16,Jenga,Games,$2.99,$9.99
22,Monopoly,Games,$13.99,$19.99
30,"Rubik's Cube",Games,$17.99,$19.99
35,Uno Card Game,Games,$3.99,$7.99
12,Foam Disk Launcher,Sports & Outdoors,$8.99,$11.99
20,Mini Basketball Hoop,Sports & Outdoors,$8.99,$24.99
21,Mini Ping Pong Set,Sports & Outdoors,$6.99,$9.99
24,Nerf Gun,Sports & Outdoors,$14.99,$19.99
31,Splash Balls,Sports & Outdoors,$7.99,$8.99
32,Supersoaker Water Gun,Sports & Outdoors,$11.99,$14.99
2,Animal Figures,Toys,$9.99,$12.99
9,Dino Egg,Toys,$9.99,$10.99
10,Dinosaur Figures,Toys,$10.99,$14.99
15,Hot Wheels 5-Pack,Toys,$3.99,$5.99
18,Lego Bricks,Toys,$34.99,$39.99
23,Mr. Potatohead,Toys,$4.99,$9.99
29,Plush Pony,Toys,$8.99,$19.99
33,Teddy Bear,Toys,$10.99,$12.99
1 Product_ID Product_Name Product_Category Product_Cost Product_Price
2 11 Etch A Sketch Art & Crafts $10.99 $20.99
3 17 Kids Makeup Kit Art & Crafts $13.99 $19.99
4 19 Magic Sand Art & Crafts $13.99 $15.99
5 25 PlayDoh Can Art & Crafts $1.99 $2.99
6 26 PlayDoh Playset Art & Crafts $20.99 $24.99
7 27 PlayDoh Toolkit Art & Crafts $3.99 $4.99
8 28 Playfoam Art & Crafts $3.99 $10.99
9 13 Gamer Headphones Electronics $14.99 $20.99
10 34 Toy Robot Electronics $20.99 $25.99
11 5 Classic Dominoes Games $7.99 $9.99
12 8 Deck Of Cards Games $3.99 $6.99
13 14 Glass Marbles Games $5.99 $10.99
14 16 Jenga Games $2.99 $9.99
15 22 Monopoly Games $13.99 $19.99
16 30 Rubik's Cube Games $17.99 $19.99
17 35 Uno Card Game Games $3.99 $7.99
18 12 Foam Disk Launcher Sports & Outdoors $8.99 $11.99
19 20 Mini Basketball Hoop Sports & Outdoors $8.99 $24.99
20 21 Mini Ping Pong Set Sports & Outdoors $6.99 $9.99
21 24 Nerf Gun Sports & Outdoors $14.99 $19.99
22 31 Splash Balls Sports & Outdoors $7.99 $8.99
23 32 Supersoaker Water Gun Sports & Outdoors $11.99 $14.99
24 2 Animal Figures Toys $9.99 $12.99
25 9 Dino Egg Toys $9.99 $10.99
26 10 Dinosaur Figures Toys $10.99 $14.99
27 15 Hot Wheels 5-Pack Toys $3.99 $5.99
28 18 Lego Bricks Toys $34.99 $39.99
29 23 Mr. Potatohead Toys $4.99 $9.99
30 29 Plush Pony Toys $8.99 $19.99
31 33 Teddy Bear Toys $10.99 $12.99

View File

@ -0,0 +1,10 @@
Product_ID,Product_Name,Product_Category,Product_Cost,Product_Price
25,PlayDoh Can,Art & Crafts,$1.99,$2.99
19,Magic Sand,Art & Crafts,$13.99,$15.99
28,Playfoam,Art & Crafts,$3.99,$10.99
35,Uno Card Game,Games,$3.99,$7.99
32,Supersoaker Water Gun,Sports & Outdoors,$11.99,$14.99
20,Mini Basketball Hoop,Sports & Outdoors,$8.99,$24.99
33,Teddy Bear,Toys,$10.99,$12.99
2,Animal Figures,Toys,$9.99,$12.99
9,Dino Egg,Toys,$9.99,$10.99
1 Product_ID Product_Name Product_Category Product_Cost Product_Price
2 25 PlayDoh Can Art & Crafts $1.99 $2.99
3 19 Magic Sand Art & Crafts $13.99 $15.99
4 28 Playfoam Art & Crafts $3.99 $10.99
5 35 Uno Card Game Games $3.99 $7.99
6 32 Supersoaker Water Gun Sports & Outdoors $11.99 $14.99
7 20 Mini Basketball Hoop Sports & Outdoors $8.99 $24.99
8 33 Teddy Bear Toys $10.99 $12.99
9 2 Animal Figures Toys $9.99 $12.99
10 9 Dino Egg Toys $9.99 $10.99

View File

@ -0,0 +1,6 @@
Product_ID,Product_Name,Product_Category,Product_Cost,Product_Price
1,Action Figure,Toys,$9.99,$15.99
2,Animal Figures,Toys,$9.99,$12.99
3,"Barrel O' Slime",Art & Crafts,$1.99,$3.99
4,Chutes & Ladders,Games,$9.99,$12.99
5,Classic Dominoes,Games,$7.99,$9.99
1 Product_ID Product_Name Product_Category Product_Cost Product_Price
2 1 Action Figure Toys $9.99 $15.99
3 2 Animal Figures Toys $9.99 $12.99
4 3 Barrel O' Slime Art & Crafts $1.99 $3.99
5 4 Chutes & Ladders Games $9.99 $12.99
6 5 Classic Dominoes Games $7.99 $9.99

View File

@ -0,0 +1,6 @@
Product_ID,Product_Name,Product_Category,Product_Cost,Product_Price
31,Splash Balls,Sports & Outdoors,$7.99,$8.99
32,Supersoaker Water Gun,Sports & Outdoors,$11.99,$14.99
33,Teddy Bear,Toys,$10.99,$12.99
34,Toy Robot,Electronics,$20.99,$25.99
35,Uno Card Game,Games,$3.99,$7.99
1 Product_ID Product_Name Product_Category Product_Cost Product_Price
2 31 Splash Balls Sports & Outdoors $7.99 $8.99
3 32 Supersoaker Water Gun Sports & Outdoors $11.99 $14.99
4 33 Teddy Bear Toys $10.99 $12.99
5 34 Toy Robot Electronics $20.99 $25.99
6 35 Uno Card Game Games $3.99 $7.99

View File

@ -0,0 +1,11 @@
Product_ID,Product_Name,Product_Category,Product_Cost,Product_Price
26,PlayDoh Playset,Art & Crafts,$20.99,$24.99
27,PlayDoh Toolkit,Art & Crafts,$3.99,$4.99
28,Playfoam,Art & Crafts,$3.99,$10.99
29,Plush Pony,Toys,$8.99,$19.99
30,"Rubik's Cube",Games,$17.99,$19.99
31,Splash Balls,Sports & Outdoors,$7.99,$8.99
32,Supersoaker Water Gun,Sports & Outdoors,$11.99,$14.99
33,Teddy Bear,Toys,$10.99,$12.99
34,Toy Robot,Electronics,$20.99,$25.99
35,Uno Card Game,Games,$3.99,$7.99
1 Product_ID Product_Name Product_Category Product_Cost Product_Price
2 26 PlayDoh Playset Art & Crafts $20.99 $24.99
3 27 PlayDoh Toolkit Art & Crafts $3.99 $4.99
4 28 Playfoam Art & Crafts $3.99 $10.99
5 29 Plush Pony Toys $8.99 $19.99
6 30 Rubik's Cube Games $17.99 $19.99
7 31 Splash Balls Sports & Outdoors $7.99 $8.99
8 32 Supersoaker Water Gun Sports & Outdoors $11.99 $14.99
9 33 Teddy Bear Toys $10.99 $12.99
10 34 Toy Robot Electronics $20.99 $25.99
11 35 Uno Card Game Games $3.99 $7.99

View File

@ -0,0 +1,6 @@
Product_ID,Product_Name,Product_Category,Product_Cost,Product_Price
3,"Barrel O' Slime",Art & Crafts,$1.99,$3.99
6,Colorbuds,Electronics,$6.99,$14.99
4,Chutes & Ladders,Games,$9.99,$12.99
7,Dart Gun,Sports & Outdoors,$11.99,$15.99
1,Action Figure,Toys,$9.99,$15.99
1 Product_ID Product_Name Product_Category Product_Cost Product_Price
2 3 Barrel O' Slime Art & Crafts $1.99 $3.99
3 6 Colorbuds Electronics $6.99 $14.99
4 4 Chutes & Ladders Games $9.99 $12.99
5 7 Dart Gun Sports & Outdoors $11.99 $15.99
6 1 Action Figure Toys $9.99 $15.99

View File

@ -0,0 +1,27 @@
Product_ID,Product_Name,Product_Category,Product_Cost,Product_Price
3,"Barrel O' Slime",Art & Crafts,$1.99,$3.99
11,Etch A Sketch,Art & Crafts,$10.99,$20.99
17,Kids Makeup Kit,Art & Crafts,$13.99,$19.99
26,PlayDoh Playset,Art & Crafts,$20.99,$24.99
27,PlayDoh Toolkit,Art & Crafts,$3.99,$4.99
13,Gamer Headphones,Electronics,$14.99,$20.99
34,Toy Robot,Electronics,$20.99,$25.99
6,Colorbuds,Electronics,$6.99,$14.99
22,Monopoly,Games,$13.99,$19.99
30,"Rubik's Cube",Games,$17.99,$19.99
16,Jenga,Games,$2.99,$9.99
8,Deck Of Cards,Games,$3.99,$6.99
14,Glass Marbles,Games,$5.99,$10.99
5,Classic Dominoes,Games,$7.99,$9.99
4,Chutes & Ladders,Games,$9.99,$12.99
7,Dart Gun,Sports & Outdoors,$11.99,$15.99
24,Nerf Gun,Sports & Outdoors,$14.99,$19.99
21,Mini Ping Pong Set,Sports & Outdoors,$6.99,$9.99
31,Splash Balls,Sports & Outdoors,$7.99,$8.99
12,Foam Disk Launcher,Sports & Outdoors,$8.99,$11.99
10,Dinosaur Figures,Toys,$10.99,$14.99
15,Hot Wheels 5-Pack,Toys,$3.99,$5.99
18,Lego Bricks,Toys,$34.99,$39.99
23,Mr. Potatohead,Toys,$4.99,$9.99
29,Plush Pony,Toys,$8.99,$19.99
1,Action Figure,Toys,$9.99,$15.99
1 Product_ID Product_Name Product_Category Product_Cost Product_Price
2 3 Barrel O' Slime Art & Crafts $1.99 $3.99
3 11 Etch A Sketch Art & Crafts $10.99 $20.99
4 17 Kids Makeup Kit Art & Crafts $13.99 $19.99
5 26 PlayDoh Playset Art & Crafts $20.99 $24.99
6 27 PlayDoh Toolkit Art & Crafts $3.99 $4.99
7 13 Gamer Headphones Electronics $14.99 $20.99
8 34 Toy Robot Electronics $20.99 $25.99
9 6 Colorbuds Electronics $6.99 $14.99
10 22 Monopoly Games $13.99 $19.99
11 30 Rubik's Cube Games $17.99 $19.99
12 16 Jenga Games $2.99 $9.99
13 8 Deck Of Cards Games $3.99 $6.99
14 14 Glass Marbles Games $5.99 $10.99
15 5 Classic Dominoes Games $7.99 $9.99
16 4 Chutes & Ladders Games $9.99 $12.99
17 7 Dart Gun Sports & Outdoors $11.99 $15.99
18 24 Nerf Gun Sports & Outdoors $14.99 $19.99
19 21 Mini Ping Pong Set Sports & Outdoors $6.99 $9.99
20 31 Splash Balls Sports & Outdoors $7.99 $8.99
21 12 Foam Disk Launcher Sports & Outdoors $8.99 $11.99
22 10 Dinosaur Figures Toys $10.99 $14.99
23 15 Hot Wheels 5-Pack Toys $3.99 $5.99
24 18 Lego Bricks Toys $34.99 $39.99
25 23 Mr. Potatohead Toys $4.99 $9.99
26 29 Plush Pony Toys $8.99 $19.99
27 1 Action Figure Toys $9.99 $15.99

View File

@ -0,0 +1,31 @@
Product_ID,Product_Name,Product_Category,Product_Cost,Product_Price
11,Etch A Sketch,Art & Crafts,$10.99,$20.99
17,Kids Makeup Kit,Art & Crafts,$13.99,$19.99
19,Magic Sand,Art & Crafts,$13.99,$15.99
25,PlayDoh Can,Art & Crafts,$1.99,$2.99
26,PlayDoh Playset,Art & Crafts,$20.99,$24.99
27,PlayDoh Toolkit,Art & Crafts,$3.99,$4.99
28,Playfoam,Art & Crafts,$3.99,$10.99
13,Gamer Headphones,Electronics,$14.99,$20.99
34,Toy Robot,Electronics,$20.99,$25.99
5,Classic Dominoes,Games,$7.99,$9.99
8,Deck Of Cards,Games,$3.99,$6.99
14,Glass Marbles,Games,$5.99,$10.99
16,Jenga,Games,$2.99,$9.99
22,Monopoly,Games,$13.99,$19.99
30,"Rubik's Cube",Games,$17.99,$19.99
35,Uno Card Game,Games,$3.99,$7.99
12,Foam Disk Launcher,Sports & Outdoors,$8.99,$11.99
20,Mini Basketball Hoop,Sports & Outdoors,$8.99,$24.99
21,Mini Ping Pong Set,Sports & Outdoors,$6.99,$9.99
24,Nerf Gun,Sports & Outdoors,$14.99,$19.99
31,Splash Balls,Sports & Outdoors,$7.99,$8.99
32,Supersoaker Water Gun,Sports & Outdoors,$11.99,$14.99
2,Animal Figures,Toys,$9.99,$12.99
9,Dino Egg,Toys,$9.99,$10.99
10,Dinosaur Figures,Toys,$10.99,$14.99
15,Hot Wheels 5-Pack,Toys,$3.99,$5.99
18,Lego Bricks,Toys,$34.99,$39.99
23,Mr. Potatohead,Toys,$4.99,$9.99
29,Plush Pony,Toys,$8.99,$19.99
33,Teddy Bear,Toys,$10.99,$12.99
1 Product_ID Product_Name Product_Category Product_Cost Product_Price
2 11 Etch A Sketch Art & Crafts $10.99 $20.99
3 17 Kids Makeup Kit Art & Crafts $13.99 $19.99
4 19 Magic Sand Art & Crafts $13.99 $15.99
5 25 PlayDoh Can Art & Crafts $1.99 $2.99
6 26 PlayDoh Playset Art & Crafts $20.99 $24.99
7 27 PlayDoh Toolkit Art & Crafts $3.99 $4.99
8 28 Playfoam Art & Crafts $3.99 $10.99
9 13 Gamer Headphones Electronics $14.99 $20.99
10 34 Toy Robot Electronics $20.99 $25.99
11 5 Classic Dominoes Games $7.99 $9.99
12 8 Deck Of Cards Games $3.99 $6.99
13 14 Glass Marbles Games $5.99 $10.99
14 16 Jenga Games $2.99 $9.99
15 22 Monopoly Games $13.99 $19.99
16 30 Rubik's Cube Games $17.99 $19.99
17 35 Uno Card Game Games $3.99 $7.99
18 12 Foam Disk Launcher Sports & Outdoors $8.99 $11.99
19 20 Mini Basketball Hoop Sports & Outdoors $8.99 $24.99
20 21 Mini Ping Pong Set Sports & Outdoors $6.99 $9.99
21 24 Nerf Gun Sports & Outdoors $14.99 $19.99
22 31 Splash Balls Sports & Outdoors $7.99 $8.99
23 32 Supersoaker Water Gun Sports & Outdoors $11.99 $14.99
24 2 Animal Figures Toys $9.99 $12.99
25 9 Dino Egg Toys $9.99 $10.99
26 10 Dinosaur Figures Toys $10.99 $14.99
27 15 Hot Wheels 5-Pack Toys $3.99 $5.99
28 18 Lego Bricks Toys $34.99 $39.99
29 23 Mr. Potatohead Toys $4.99 $9.99
30 29 Plush Pony Toys $8.99 $19.99
31 33 Teddy Bear Toys $10.99 $12.99

View File

@ -0,0 +1,10 @@
Product_ID,Product_Name,Product_Category,Product_Cost,Product_Price
25,PlayDoh Can,Art & Crafts,$1.99,$2.99
19,Magic Sand,Art & Crafts,$13.99,$15.99
28,Playfoam,Art & Crafts,$3.99,$10.99
35,Uno Card Game,Games,$3.99,$7.99
32,Supersoaker Water Gun,Sports & Outdoors,$11.99,$14.99
20,Mini Basketball Hoop,Sports & Outdoors,$8.99,$24.99
33,Teddy Bear,Toys,$10.99,$12.99
2,Animal Figures,Toys,$9.99,$12.99
9,Dino Egg,Toys,$9.99,$10.99
1 Product_ID Product_Name Product_Category Product_Cost Product_Price
2 25 PlayDoh Can Art & Crafts $1.99 $2.99
3 19 Magic Sand Art & Crafts $13.99 $15.99
4 28 Playfoam Art & Crafts $3.99 $10.99
5 35 Uno Card Game Games $3.99 $7.99
6 32 Supersoaker Water Gun Sports & Outdoors $11.99 $14.99
7 20 Mini Basketball Hoop Sports & Outdoors $8.99 $24.99
8 33 Teddy Bear Toys $10.99 $12.99
9 2 Animal Figures Toys $9.99 $12.99
10 9 Dino Egg Toys $9.99 $10.99

View File

@ -0,0 +1,6 @@
Product_ID,Product_Name,Product_Category,Product_Cost,Product_Price
1,Action Figure,Toys,$9.99,$15.99
2,Animal Figures,Toys,$9.99,$12.99
3,"Barrel O' Slime",Art & Crafts,$1.99,$3.99
4,Chutes & Ladders,Games,$9.99,$12.99
5,Classic Dominoes,Games,$7.99,$9.99
1 Product_ID Product_Name Product_Category Product_Cost Product_Price
2 1 Action Figure Toys $9.99 $15.99
3 2 Animal Figures Toys $9.99 $12.99
4 3 Barrel O' Slime Art & Crafts $1.99 $3.99
5 4 Chutes & Ladders Games $9.99 $12.99
6 5 Classic Dominoes Games $7.99 $9.99

View File

@ -0,0 +1,6 @@
Product_ID,Product_Name,Product_Category,Product_Cost,Product_Price
31,Splash Balls,Sports & Outdoors,$7.99,$8.99
32,Supersoaker Water Gun,Sports & Outdoors,$11.99,$14.99
33,Teddy Bear,Toys,$10.99,$12.99
34,Toy Robot,Electronics,$20.99,$25.99
35,Uno Card Game,Games,$3.99,$7.99
1 Product_ID Product_Name Product_Category Product_Cost Product_Price
2 31 Splash Balls Sports & Outdoors $7.99 $8.99
3 32 Supersoaker Water Gun Sports & Outdoors $11.99 $14.99
4 33 Teddy Bear Toys $10.99 $12.99
5 34 Toy Robot Electronics $20.99 $25.99
6 35 Uno Card Game Games $3.99 $7.99

View File

@ -0,0 +1,11 @@
Product_ID,Product_Name,Product_Category,Product_Cost,Product_Price
26,PlayDoh Playset,Art & Crafts,$20.99,$24.99
27,PlayDoh Toolkit,Art & Crafts,$3.99,$4.99
28,Playfoam,Art & Crafts,$3.99,$10.99
29,Plush Pony,Toys,$8.99,$19.99
30,"Rubik's Cube",Games,$17.99,$19.99
31,Splash Balls,Sports & Outdoors,$7.99,$8.99
32,Supersoaker Water Gun,Sports & Outdoors,$11.99,$14.99
33,Teddy Bear,Toys,$10.99,$12.99
34,Toy Robot,Electronics,$20.99,$25.99
35,Uno Card Game,Games,$3.99,$7.99
1 Product_ID Product_Name Product_Category Product_Cost Product_Price
2 26 PlayDoh Playset Art & Crafts $20.99 $24.99
3 27 PlayDoh Toolkit Art & Crafts $3.99 $4.99
4 28 Playfoam Art & Crafts $3.99 $10.99
5 29 Plush Pony Toys $8.99 $19.99
6 30 Rubik's Cube Games $17.99 $19.99
7 31 Splash Balls Sports & Outdoors $7.99 $8.99
8 32 Supersoaker Water Gun Sports & Outdoors $11.99 $14.99
9 33 Teddy Bear Toys $10.99 $12.99
10 34 Toy Robot Electronics $20.99 $25.99
11 35 Uno Card Game Games $3.99 $7.99

View File

@ -0,0 +1,6 @@
Product_ID,Product_Name,Product_Category,Product_Cost,Product_Price
3,"Barrel O' Slime",Art & Crafts,$1.99,$3.99
6,Colorbuds,Electronics,$6.99,$14.99
4,Chutes & Ladders,Games,$9.99,$12.99
7,Dart Gun,Sports & Outdoors,$11.99,$15.99
1,Action Figure,Toys,$9.99,$15.99
1 Product_ID Product_Name Product_Category Product_Cost Product_Price
2 3 Barrel O' Slime Art & Crafts $1.99 $3.99
3 6 Colorbuds Electronics $6.99 $14.99
4 4 Chutes & Ladders Games $9.99 $12.99
5 7 Dart Gun Sports & Outdoors $11.99 $15.99
6 1 Action Figure Toys $9.99 $15.99

View File

@ -0,0 +1,27 @@
Product_ID,Product_Name,Product_Category,Product_Cost,Product_Price
3,"Barrel O' Slime",Art & Crafts,$1.99,$3.99
11,Etch A Sketch,Art & Crafts,$10.99,$20.99
17,Kids Makeup Kit,Art & Crafts,$13.99,$19.99
26,PlayDoh Playset,Art & Crafts,$20.99,$24.99
27,PlayDoh Toolkit,Art & Crafts,$3.99,$4.99
13,Gamer Headphones,Electronics,$14.99,$20.99
34,Toy Robot,Electronics,$20.99,$25.99
6,Colorbuds,Electronics,$6.99,$14.99
22,Monopoly,Games,$13.99,$19.99
30,"Rubik's Cube",Games,$17.99,$19.99
16,Jenga,Games,$2.99,$9.99
8,Deck Of Cards,Games,$3.99,$6.99
14,Glass Marbles,Games,$5.99,$10.99
5,Classic Dominoes,Games,$7.99,$9.99
4,Chutes & Ladders,Games,$9.99,$12.99
7,Dart Gun,Sports & Outdoors,$11.99,$15.99
24,Nerf Gun,Sports & Outdoors,$14.99,$19.99
21,Mini Ping Pong Set,Sports & Outdoors,$6.99,$9.99
31,Splash Balls,Sports & Outdoors,$7.99,$8.99
12,Foam Disk Launcher,Sports & Outdoors,$8.99,$11.99
10,Dinosaur Figures,Toys,$10.99,$14.99
15,Hot Wheels 5-Pack,Toys,$3.99,$5.99
18,Lego Bricks,Toys,$34.99,$39.99
23,Mr. Potatohead,Toys,$4.99,$9.99
29,Plush Pony,Toys,$8.99,$19.99
1,Action Figure,Toys,$9.99,$15.99
1 Product_ID Product_Name Product_Category Product_Cost Product_Price
2 3 Barrel O' Slime Art & Crafts $1.99 $3.99
3 11 Etch A Sketch Art & Crafts $10.99 $20.99
4 17 Kids Makeup Kit Art & Crafts $13.99 $19.99
5 26 PlayDoh Playset Art & Crafts $20.99 $24.99
6 27 PlayDoh Toolkit Art & Crafts $3.99 $4.99
7 13 Gamer Headphones Electronics $14.99 $20.99
8 34 Toy Robot Electronics $20.99 $25.99
9 6 Colorbuds Electronics $6.99 $14.99
10 22 Monopoly Games $13.99 $19.99
11 30 Rubik's Cube Games $17.99 $19.99
12 16 Jenga Games $2.99 $9.99
13 8 Deck Of Cards Games $3.99 $6.99
14 14 Glass Marbles Games $5.99 $10.99
15 5 Classic Dominoes Games $7.99 $9.99
16 4 Chutes & Ladders Games $9.99 $12.99
17 7 Dart Gun Sports & Outdoors $11.99 $15.99
18 24 Nerf Gun Sports & Outdoors $14.99 $19.99
19 21 Mini Ping Pong Set Sports & Outdoors $6.99 $9.99
20 31 Splash Balls Sports & Outdoors $7.99 $8.99
21 12 Foam Disk Launcher Sports & Outdoors $8.99 $11.99
22 10 Dinosaur Figures Toys $10.99 $14.99
23 15 Hot Wheels 5-Pack Toys $3.99 $5.99
24 18 Lego Bricks Toys $34.99 $39.99
25 23 Mr. Potatohead Toys $4.99 $9.99
26 29 Plush Pony Toys $8.99 $19.99
27 1 Action Figure Toys $9.99 $15.99

View File

@ -0,0 +1,439 @@
<?xml version="1.0"?>
<AlteryxDocument yxmdVer="2022.3">
<Nodes>
<Node ToolID="1">
<GuiSettings Plugin="AlteryxBasePluginsGui.DbFileInput.DbFileInput">
<Position x="102" y="90" />
</GuiSettings>
<Properties>
<Configuration>
<Passwords />
<File RecordLimit="" SearchSubDirs="False" FileFormat="0" OutputFileName="">..\Maven Toys Data\products.csv</File>
<FormatSpecificOptions>
<HeaderRow>True</HeaderRow>
<IgnoreErrors>False</IgnoreErrors>
<AllowShareWrite>False</AllowShareWrite>
<ImportLine>1</ImportLine>
<FieldLen>254</FieldLen>
<SingleThreadRead>False</SingleThreadRead>
<IgnoreQuotes>DoubleQuotes</IgnoreQuotes>
<Delimeter>,</Delimeter>
<QuoteRecordBreak>False</QuoteRecordBreak>
<CodePage>28591</CodePage>
</FormatSpecificOptions>
</Configuration>
<Annotation DisplayMode="0">
<Name />
<DefaultAnnotationText>products.csv</DefaultAnnotationText>
<Left value="False" />
</Annotation>
<MetaInfo connection="Output">
<RecordInfo>
<Field name="Product_ID" size="254" source="File: Z:\Pyteryx\Alteryx_TestWorkflows\Maven Toys Data\products.csv" type="V_String" />
<Field name="Product_Name" size="254" source="File: Z:\Pyteryx\Alteryx_TestWorkflows\Maven Toys Data\products.csv" type="V_String" />
<Field name="Product_Category" size="254" source="File: Z:\Pyteryx\Alteryx_TestWorkflows\Maven Toys Data\products.csv" type="V_String" />
<Field name="Product_Cost" size="254" source="File: Z:\Pyteryx\Alteryx_TestWorkflows\Maven Toys Data\products.csv" type="V_String" />
<Field name="Product_Price" size="254" source="File: Z:\Pyteryx\Alteryx_TestWorkflows\Maven Toys Data\products.csv" type="V_String" />
</RecordInfo>
</MetaInfo>
</Properties>
<EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxDbFileInput" />
</Node>
<Node ToolID="2">
<GuiSettings Plugin="AlteryxBasePluginsGui.Unique.Unique">
<Position x="246" y="90" />
</GuiSettings>
<Properties>
<Configuration>
<UniqueFields>
<Field field="Product_Category" />
</UniqueFields>
</Configuration>
<Annotation DisplayMode="0">
<Name />
<DefaultAnnotationText />
<Left value="False" />
</Annotation>
</Properties>
<EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxUnique" />
</Node>
<Node ToolID="3">
<GuiSettings Plugin="AlteryxBasePluginsGui.Unique.Unique">
<Position x="246" y="330" />
</GuiSettings>
<Properties>
<Configuration>
<UniqueFields>
<Field field="Product_Category" />
<Field field="Product_Cost" />
</UniqueFields>
</Configuration>
<Annotation DisplayMode="0">
<Name />
<DefaultAnnotationText />
<Left value="False" />
</Annotation>
</Properties>
<EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxUnique" />
</Node>
<Node ToolID="4">
<GuiSettings Plugin="AlteryxBasePluginsGui.Sample.Sample">
<Position x="246" y="570" />
</GuiSettings>
<Properties>
<Configuration>
<Mode>First</Mode>
<N>5</N>
<GroupFields orderChanged="False" />
</Configuration>
<Annotation DisplayMode="0">
<Name />
<DefaultAnnotationText>First 5 rows</DefaultAnnotationText>
<Left value="False" />
</Annotation>
</Properties>
<EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxSample" />
</Node>
<Node ToolID="5">
<GuiSettings Plugin="AlteryxBasePluginsGui.Sample.Sample">
<Position x="246" y="678" />
</GuiSettings>
<Properties>
<Configuration>
<Mode>Last</Mode>
<N>5</N>
<GroupFields orderChanged="False" />
</Configuration>
<Annotation DisplayMode="0">
<Name />
<DefaultAnnotationText>Last 5 rows</DefaultAnnotationText>
<Left value="False" />
</Annotation>
</Properties>
<EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxSample" />
</Node>
<Node ToolID="6">
<GuiSettings Plugin="AlteryxBasePluginsGui.Sample.Sample">
<Position x="246" y="786" />
</GuiSettings>
<Properties>
<Configuration>
<Mode>Skip</Mode>
<N>25</N>
<GroupFields orderChanged="False" />
</Configuration>
<Annotation DisplayMode="0">
<Name />
<DefaultAnnotationText>Skip 1st 25 rows</DefaultAnnotationText>
<Left value="False" />
</Annotation>
</Properties>
<EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxSample" />
</Node>
<Node ToolID="7">
<GuiSettings Plugin="AlteryxBasePluginsGui.DbFileOutput.DbFileOutput">
<Position x="450" y="78" />
</GuiSettings>
<Properties>
<Configuration>
<File MaxRecords="" FileFormat="0">Z:\Pyteryx\Alteryx_TestWorkflows\Unique&amp;Sample\Output\expected\UniqueByProductCat.csv</File>
<Passwords />
<Disable>False</Disable>
<FormatSpecificOptions>
<LineEndStyle>CRLF</LineEndStyle>
<Delimeter>,</Delimeter>
<ForceQuotes>False</ForceQuotes>
<HeaderRow>True</HeaderRow>
<CodePage>28591</CodePage>
<WriteBOM>True</WriteBOM>
</FormatSpecificOptions>
<MultiFile value="False" />
</Configuration>
<Annotation DisplayMode="0">
<Name />
<DefaultAnnotationText>UniqueByProductCat.csv</DefaultAnnotationText>
<Left value="False" />
</Annotation>
<Dependencies>
<Implicit />
</Dependencies>
</Properties>
<EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxDbFileOutput" />
</Node>
<Node ToolID="8">
<GuiSettings Plugin="AlteryxBasePluginsGui.DbFileOutput.DbFileOutput">
<Position x="450" y="186" />
</GuiSettings>
<Properties>
<Configuration>
<File MaxRecords="" FileFormat="0">Z:\Pyteryx\Alteryx_TestWorkflows\Unique&amp;Sample\Output\expected\DupeByProductCat.csv</File>
<Passwords />
<Disable>False</Disable>
<FormatSpecificOptions>
<LineEndStyle>CRLF</LineEndStyle>
<Delimeter>,</Delimeter>
<ForceQuotes>False</ForceQuotes>
<HeaderRow>True</HeaderRow>
<CodePage>28591</CodePage>
<WriteBOM>True</WriteBOM>
</FormatSpecificOptions>
<MultiFile value="False" />
</Configuration>
<Annotation DisplayMode="0">
<Name />
<DefaultAnnotationText>DupeByProductCat.csv</DefaultAnnotationText>
<Left value="False" />
</Annotation>
<Dependencies>
<Implicit />
</Dependencies>
</Properties>
<EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxDbFileOutput" />
</Node>
<Node ToolID="9">
<GuiSettings Plugin="AlteryxBasePluginsGui.DbFileOutput.DbFileOutput">
<Position x="450" y="318" />
</GuiSettings>
<Properties>
<Configuration>
<File MaxRecords="" FileFormat="0">Z:\Pyteryx\Alteryx_TestWorkflows\Unique&amp;Sample\Output\expected\UniqueByProductCatandCost.csv</File>
<Passwords />
<Disable>False</Disable>
<FormatSpecificOptions>
<LineEndStyle>CRLF</LineEndStyle>
<Delimeter>,</Delimeter>
<ForceQuotes>False</ForceQuotes>
<HeaderRow>True</HeaderRow>
<CodePage>28591</CodePage>
<WriteBOM>True</WriteBOM>
</FormatSpecificOptions>
<MultiFile value="False" />
</Configuration>
<Annotation DisplayMode="0">
<Name />
<DefaultAnnotationText>UniqueByProductCatandCost.csv</DefaultAnnotationText>
<Left value="False" />
</Annotation>
<Dependencies>
<Implicit />
</Dependencies>
</Properties>
<EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxDbFileOutput" />
</Node>
<Node ToolID="10">
<GuiSettings Plugin="AlteryxBasePluginsGui.DbFileOutput.DbFileOutput">
<Position x="450" y="426" />
</GuiSettings>
<Properties>
<Configuration>
<File MaxRecords="" FileFormat="0">Z:\Pyteryx\Alteryx_TestWorkflows\Unique&amp;Sample\Output\expected\DupeByProductCatandCost.csv</File>
<Passwords />
<Disable>False</Disable>
<FormatSpecificOptions>
<LineEndStyle>CRLF</LineEndStyle>
<Delimeter>,</Delimeter>
<ForceQuotes>False</ForceQuotes>
<HeaderRow>True</HeaderRow>
<CodePage>28591</CodePage>
<WriteBOM>True</WriteBOM>
</FormatSpecificOptions>
<MultiFile value="False" />
</Configuration>
<Annotation DisplayMode="0">
<Name />
<DefaultAnnotationText>DupeByProductCatandCost.csv</DefaultAnnotationText>
<Left value="False" />
</Annotation>
<Dependencies>
<Implicit />
</Dependencies>
</Properties>
<EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxDbFileOutput" />
</Node>
<Node ToolID="11">
<GuiSettings Plugin="AlteryxBasePluginsGui.DbFileOutput.DbFileOutput">
<Position x="450" y="570" />
</GuiSettings>
<Properties>
<Configuration>
<File MaxRecords="" FileFormat="0">Z:\Pyteryx\Alteryx_TestWorkflows\Unique&amp;Sample\Output\expected\ProductsFirst5.csv</File>
<Passwords />
<Disable>False</Disable>
<FormatSpecificOptions>
<LineEndStyle>CRLF</LineEndStyle>
<Delimeter>,</Delimeter>
<ForceQuotes>False</ForceQuotes>
<HeaderRow>True</HeaderRow>
<CodePage>28591</CodePage>
<WriteBOM>True</WriteBOM>
</FormatSpecificOptions>
<MultiFile value="False" />
</Configuration>
<Annotation DisplayMode="0">
<Name />
<DefaultAnnotationText>ProductsFirst5.csv</DefaultAnnotationText>
<Left value="False" />
</Annotation>
<Dependencies>
<Implicit />
</Dependencies>
</Properties>
<EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxDbFileOutput" />
</Node>
<Node ToolID="12">
<GuiSettings Plugin="AlteryxBasePluginsGui.DbFileOutput.DbFileOutput">
<Position x="450" y="678" />
</GuiSettings>
<Properties>
<Configuration>
<File MaxRecords="" FileFormat="0">Z:\Pyteryx\Alteryx_TestWorkflows\Unique&amp;Sample\Output\expected\ProductsLast5.csv</File>
<Passwords />
<Disable>False</Disable>
<FormatSpecificOptions>
<LineEndStyle>CRLF</LineEndStyle>
<Delimeter>,</Delimeter>
<ForceQuotes>False</ForceQuotes>
<HeaderRow>True</HeaderRow>
<CodePage>28591</CodePage>
<WriteBOM>True</WriteBOM>
</FormatSpecificOptions>
<MultiFile value="False" />
</Configuration>
<Annotation DisplayMode="0">
<Name />
<DefaultAnnotationText>ProductsLast5.csv</DefaultAnnotationText>
<Left value="False" />
</Annotation>
<Dependencies>
<Implicit />
</Dependencies>
</Properties>
<EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxDbFileOutput" />
</Node>
<Node ToolID="13">
<GuiSettings Plugin="AlteryxBasePluginsGui.DbFileOutput.DbFileOutput">
<Position x="450" y="786" />
</GuiSettings>
<Properties>
<Configuration>
<File MaxRecords="" FileFormat="0">Z:\Pyteryx\Alteryx_TestWorkflows\Unique&amp;Sample\Output\expected\ProductsSkipFirst25.csv</File>
<Passwords />
<Disable>False</Disable>
<FormatSpecificOptions>
<LineEndStyle>CRLF</LineEndStyle>
<Delimeter>,</Delimeter>
<ForceQuotes>False</ForceQuotes>
<HeaderRow>True</HeaderRow>
<CodePage>28591</CodePage>
<WriteBOM>True</WriteBOM>
</FormatSpecificOptions>
<MultiFile value="False" />
</Configuration>
<Annotation DisplayMode="0">
<Name />
<DefaultAnnotationText>ProductsSkipFirst25.csv</DefaultAnnotationText>
<Left value="False" />
</Annotation>
<Dependencies>
<Implicit />
</Dependencies>
</Properties>
<EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxDbFileOutput" />
</Node>
</Nodes>
<Connections>
<Connection>
<Origin ToolID="1" Connection="Output" />
<Destination ToolID="2" Connection="Input" />
</Connection>
<Connection>
<Origin ToolID="1" Connection="Output" />
<Destination ToolID="3" Connection="Input" />
</Connection>
<Connection>
<Origin ToolID="1" Connection="Output" />
<Destination ToolID="4" Connection="Input" />
</Connection>
<Connection>
<Origin ToolID="1" Connection="Output" />
<Destination ToolID="5" Connection="Input" />
</Connection>
<Connection>
<Origin ToolID="1" Connection="Output" />
<Destination ToolID="6" Connection="Input" />
</Connection>
<Connection>
<Origin ToolID="2" Connection="Unique" />
<Destination ToolID="7" Connection="Input" />
</Connection>
<Connection>
<Origin ToolID="2" Connection="Duplicates" />
<Destination ToolID="8" Connection="Input" />
</Connection>
<Connection>
<Origin ToolID="3" Connection="Unique" />
<Destination ToolID="9" Connection="Input" />
</Connection>
<Connection>
<Origin ToolID="3" Connection="Duplicates" />
<Destination ToolID="10" Connection="Input" />
</Connection>
<Connection>
<Origin ToolID="4" Connection="Output" />
<Destination ToolID="11" Connection="Input" />
</Connection>
<Connection>
<Origin ToolID="5" Connection="Output" />
<Destination ToolID="12" Connection="Input" />
</Connection>
<Connection>
<Origin ToolID="6" Connection="Output" />
<Destination ToolID="13" Connection="Input" />
</Connection>
</Connections>
<Properties>
<Memory default="True" />
<GlobalRecordLimit value="0" />
<TempFiles default="True" />
<Annotation on="True" includeToolName="False" />
<ConvErrorLimit value="10" />
<ConvErrorLimit_Stop value="False" />
<CancelOnError value="False" />
<DisableBrowse value="False" />
<EnablePerformanceProfiling value="False" />
<RunWithE2 value="True" />
<PredictiveToolsCodePage value="1252" />
<DisableAllOutput value="False" />
<ShowAllMacroMessages value="False" />
<ShowConnectionStatusIsOn value="True" />
<ShowConnectionStatusOnlyWhenRunning value="True" />
<ZoomLevel value="0" />
<LayoutType>Horizontal</LayoutType>
<MetaInfo>
<NameIsFileName value="True" />
<Name>Unique&amp;Sample</Name>
<Description />
<RootToolName />
<ToolVersion />
<ToolInDb value="False" />
<CategoryName />
<SearchTags />
<Author />
<Company />
<Copyright />
<DescriptionLink actual="" displayed="" />
<Example>
<Description />
<File />
</Example>
<WorkflowId value="5f6574f2-33dc-4332-859c-8822ddf7eda2" />
<Telemetry>
<PreviousWorkflowId value="dab73b8e-2c9a-4fbc-865d-a67630a34d04" />
<OriginWorkflowId value="dab73b8e-2c9a-4fbc-865d-a67630a34d04" />
</Telemetry>
</MetaInfo>
<Events>
<Enabled value="True" />
</Events>
</Properties>
</AlteryxDocument>

View File

@ -0,0 +1,439 @@
<?xml version="1.0"?>
<AlteryxDocument yxmdVer="2022.3">
<Nodes>
<Node ToolID="1">
<GuiSettings Plugin="AlteryxBasePluginsGui.DbFileInput.DbFileInput">
<Position x="102" y="90" />
</GuiSettings>
<Properties>
<Configuration>
<Passwords />
<File RecordLimit="" SearchSubDirs="False" FileFormat="0" OutputFileName="">..\Maven Toys Data\products.csv</File>
<FormatSpecificOptions>
<HeaderRow>True</HeaderRow>
<IgnoreErrors>False</IgnoreErrors>
<AllowShareWrite>False</AllowShareWrite>
<ImportLine>1</ImportLine>
<FieldLen>254</FieldLen>
<SingleThreadRead>False</SingleThreadRead>
<IgnoreQuotes>DoubleQuotes</IgnoreQuotes>
<Delimeter>,</Delimeter>
<QuoteRecordBreak>False</QuoteRecordBreak>
<CodePage>28591</CodePage>
</FormatSpecificOptions>
</Configuration>
<Annotation DisplayMode="0">
<Name />
<DefaultAnnotationText>products.csv</DefaultAnnotationText>
<Left value="False" />
</Annotation>
<MetaInfo connection="Output">
<RecordInfo>
<Field name="Product_ID" size="254" source="File: Z:\Pyteryx\Alteryx_TestWorkflows\Maven Toys Data\products.csv" type="V_String" />
<Field name="Product_Name" size="254" source="File: Z:\Pyteryx\Alteryx_TestWorkflows\Maven Toys Data\products.csv" type="V_String" />
<Field name="Product_Category" size="254" source="File: Z:\Pyteryx\Alteryx_TestWorkflows\Maven Toys Data\products.csv" type="V_String" />
<Field name="Product_Cost" size="254" source="File: Z:\Pyteryx\Alteryx_TestWorkflows\Maven Toys Data\products.csv" type="V_String" />
<Field name="Product_Price" size="254" source="File: Z:\Pyteryx\Alteryx_TestWorkflows\Maven Toys Data\products.csv" type="V_String" />
</RecordInfo>
</MetaInfo>
</Properties>
<EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxDbFileInput" />
</Node>
<Node ToolID="2">
<GuiSettings Plugin="AlteryxBasePluginsGui.Unique.Unique">
<Position x="246" y="90" />
</GuiSettings>
<Properties>
<Configuration>
<UniqueFields>
<Field field="Product_Category" />
</UniqueFields>
</Configuration>
<Annotation DisplayMode="0">
<Name />
<DefaultAnnotationText />
<Left value="False" />
</Annotation>
</Properties>
<EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxUnique" />
</Node>
<Node ToolID="3">
<GuiSettings Plugin="AlteryxBasePluginsGui.Unique.Unique">
<Position x="246" y="330" />
</GuiSettings>
<Properties>
<Configuration>
<UniqueFields>
<Field field="Product_Category" />
<Field field="Product_Cost" />
</UniqueFields>
</Configuration>
<Annotation DisplayMode="0">
<Name />
<DefaultAnnotationText />
<Left value="False" />
</Annotation>
</Properties>
<EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxUnique" />
</Node>
<Node ToolID="4">
<GuiSettings Plugin="AlteryxBasePluginsGui.Sample.Sample">
<Position x="246" y="570" />
</GuiSettings>
<Properties>
<Configuration>
<Mode>First</Mode>
<N>5</N>
<GroupFields orderChanged="False" />
</Configuration>
<Annotation DisplayMode="0">
<Name />
<DefaultAnnotationText>First 5 rows</DefaultAnnotationText>
<Left value="False" />
</Annotation>
</Properties>
<EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxSample" />
</Node>
<Node ToolID="5">
<GuiSettings Plugin="AlteryxBasePluginsGui.Sample.Sample">
<Position x="246" y="678" />
</GuiSettings>
<Properties>
<Configuration>
<Mode>Last</Mode>
<N>5</N>
<GroupFields orderChanged="False" />
</Configuration>
<Annotation DisplayMode="0">
<Name />
<DefaultAnnotationText>Last 5 rows</DefaultAnnotationText>
<Left value="False" />
</Annotation>
</Properties>
<EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxSample" />
</Node>
<Node ToolID="6">
<GuiSettings Plugin="AlteryxBasePluginsGui.Sample.Sample">
<Position x="246" y="786" />
</GuiSettings>
<Properties>
<Configuration>
<Mode>Skip</Mode>
<N>25</N>
<GroupFields orderChanged="False" />
</Configuration>
<Annotation DisplayMode="0">
<Name />
<DefaultAnnotationText>Skip 1st 25 rows</DefaultAnnotationText>
<Left value="False" />
</Annotation>
</Properties>
<EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxSample" />
</Node>
<Node ToolID="7">
<GuiSettings Plugin="AlteryxBasePluginsGui.DbFileOutput.DbFileOutput">
<Position x="450" y="78" />
</GuiSettings>
<Properties>
<Configuration>
<File MaxRecords="" FileFormat="0">.\Output\expected\UniqueByProductCat.csv</File>
<Passwords />
<Disable>False</Disable>
<FormatSpecificOptions>
<LineEndStyle>CRLF</LineEndStyle>
<Delimeter>,</Delimeter>
<ForceQuotes>False</ForceQuotes>
<HeaderRow>True</HeaderRow>
<CodePage>28591</CodePage>
<WriteBOM>True</WriteBOM>
</FormatSpecificOptions>
<MultiFile value="False" />
</Configuration>
<Annotation DisplayMode="0">
<Name />
<DefaultAnnotationText>UniqueByProductCat.csv</DefaultAnnotationText>
<Left value="False" />
</Annotation>
<Dependencies>
<Implicit />
</Dependencies>
</Properties>
<EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxDbFileOutput" />
</Node>
<Node ToolID="8">
<GuiSettings Plugin="AlteryxBasePluginsGui.DbFileOutput.DbFileOutput">
<Position x="450" y="186" />
</GuiSettings>
<Properties>
<Configuration>
<File MaxRecords="" FileFormat="0">.\Output\expected\DupeByProductCat.csv</File>
<Passwords />
<Disable>False</Disable>
<FormatSpecificOptions>
<LineEndStyle>CRLF</LineEndStyle>
<Delimeter>,</Delimeter>
<ForceQuotes>False</ForceQuotes>
<HeaderRow>True</HeaderRow>
<CodePage>28591</CodePage>
<WriteBOM>True</WriteBOM>
</FormatSpecificOptions>
<MultiFile value="False" />
</Configuration>
<Annotation DisplayMode="0">
<Name />
<DefaultAnnotationText>DupeByProductCat.csv</DefaultAnnotationText>
<Left value="False" />
</Annotation>
<Dependencies>
<Implicit />
</Dependencies>
</Properties>
<EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxDbFileOutput" />
</Node>
<Node ToolID="9">
<GuiSettings Plugin="AlteryxBasePluginsGui.DbFileOutput.DbFileOutput">
<Position x="450" y="318" />
</GuiSettings>
<Properties>
<Configuration>
<File MaxRecords="" FileFormat="0">.\Output\expected\UniqueByProductCatandCost.csv</File>
<Passwords />
<Disable>False</Disable>
<FormatSpecificOptions>
<LineEndStyle>CRLF</LineEndStyle>
<Delimeter>,</Delimeter>
<ForceQuotes>False</ForceQuotes>
<HeaderRow>True</HeaderRow>
<CodePage>28591</CodePage>
<WriteBOM>True</WriteBOM>
</FormatSpecificOptions>
<MultiFile value="False" />
</Configuration>
<Annotation DisplayMode="0">
<Name />
<DefaultAnnotationText>UniqueByProductCatandCost.csv</DefaultAnnotationText>
<Left value="False" />
</Annotation>
<Dependencies>
<Implicit />
</Dependencies>
</Properties>
<EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxDbFileOutput" />
</Node>
<Node ToolID="10">
<GuiSettings Plugin="AlteryxBasePluginsGui.DbFileOutput.DbFileOutput">
<Position x="450" y="426" />
</GuiSettings>
<Properties>
<Configuration>
<File MaxRecords="" FileFormat="0">.\Output\expected\DupeByProductCatandCost.csv</File>
<Passwords />
<Disable>False</Disable>
<FormatSpecificOptions>
<LineEndStyle>CRLF</LineEndStyle>
<Delimeter>,</Delimeter>
<ForceQuotes>False</ForceQuotes>
<HeaderRow>True</HeaderRow>
<CodePage>28591</CodePage>
<WriteBOM>True</WriteBOM>
</FormatSpecificOptions>
<MultiFile value="False" />
</Configuration>
<Annotation DisplayMode="0">
<Name />
<DefaultAnnotationText>DupeByProductCatandCost.csv</DefaultAnnotationText>
<Left value="False" />
</Annotation>
<Dependencies>
<Implicit />
</Dependencies>
</Properties>
<EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxDbFileOutput" />
</Node>
<Node ToolID="11">
<GuiSettings Plugin="AlteryxBasePluginsGui.DbFileOutput.DbFileOutput">
<Position x="450" y="570" />
</GuiSettings>
<Properties>
<Configuration>
<File MaxRecords="" FileFormat="0">.\Output\expected\ProductsFirst5.csv</File>
<Passwords />
<Disable>False</Disable>
<FormatSpecificOptions>
<LineEndStyle>CRLF</LineEndStyle>
<Delimeter>,</Delimeter>
<ForceQuotes>False</ForceQuotes>
<HeaderRow>True</HeaderRow>
<CodePage>28591</CodePage>
<WriteBOM>True</WriteBOM>
</FormatSpecificOptions>
<MultiFile value="False" />
</Configuration>
<Annotation DisplayMode="0">
<Name />
<DefaultAnnotationText>ProductsFirst5.csv</DefaultAnnotationText>
<Left value="False" />
</Annotation>
<Dependencies>
<Implicit />
</Dependencies>
</Properties>
<EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxDbFileOutput" />
</Node>
<Node ToolID="12">
<GuiSettings Plugin="AlteryxBasePluginsGui.DbFileOutput.DbFileOutput">
<Position x="450" y="678" />
</GuiSettings>
<Properties>
<Configuration>
<File MaxRecords="" FileFormat="0">.\Output\expected\ProductsLast5.csv</File>
<Passwords />
<Disable>False</Disable>
<FormatSpecificOptions>
<LineEndStyle>CRLF</LineEndStyle>
<Delimeter>,</Delimeter>
<ForceQuotes>False</ForceQuotes>
<HeaderRow>True</HeaderRow>
<CodePage>28591</CodePage>
<WriteBOM>True</WriteBOM>
</FormatSpecificOptions>
<MultiFile value="False" />
</Configuration>
<Annotation DisplayMode="0">
<Name />
<DefaultAnnotationText>ProductsLast5.csv</DefaultAnnotationText>
<Left value="False" />
</Annotation>
<Dependencies>
<Implicit />
</Dependencies>
</Properties>
<EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxDbFileOutput" />
</Node>
<Node ToolID="13">
<GuiSettings Plugin="AlteryxBasePluginsGui.DbFileOutput.DbFileOutput">
<Position x="450" y="786" />
</GuiSettings>
<Properties>
<Configuration>
<File MaxRecords="" FileFormat="0">.\Output\expected\ProductsSkipFirst25.csv</File>
<Passwords />
<Disable>False</Disable>
<FormatSpecificOptions>
<LineEndStyle>CRLF</LineEndStyle>
<Delimeter>,</Delimeter>
<ForceQuotes>False</ForceQuotes>
<HeaderRow>True</HeaderRow>
<CodePage>28591</CodePage>
<WriteBOM>True</WriteBOM>
</FormatSpecificOptions>
<MultiFile value="False" />
</Configuration>
<Annotation DisplayMode="0">
<Name />
<DefaultAnnotationText>ProductsSkipFirst25.csv</DefaultAnnotationText>
<Left value="False" />
</Annotation>
<Dependencies>
<Implicit />
</Dependencies>
</Properties>
<EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxDbFileOutput" />
</Node>
</Nodes>
<Connections>
<Connection>
<Origin ToolID="1" Connection="Output" />
<Destination ToolID="2" Connection="Input" />
</Connection>
<Connection>
<Origin ToolID="1" Connection="Output" />
<Destination ToolID="3" Connection="Input" />
</Connection>
<Connection>
<Origin ToolID="1" Connection="Output" />
<Destination ToolID="4" Connection="Input" />
</Connection>
<Connection>
<Origin ToolID="1" Connection="Output" />
<Destination ToolID="5" Connection="Input" />
</Connection>
<Connection>
<Origin ToolID="1" Connection="Output" />
<Destination ToolID="6" Connection="Input" />
</Connection>
<Connection>
<Origin ToolID="2" Connection="Unique" />
<Destination ToolID="7" Connection="Input" />
</Connection>
<Connection>
<Origin ToolID="2" Connection="Duplicates" />
<Destination ToolID="8" Connection="Input" />
</Connection>
<Connection>
<Origin ToolID="3" Connection="Unique" />
<Destination ToolID="9" Connection="Input" />
</Connection>
<Connection>
<Origin ToolID="3" Connection="Duplicates" />
<Destination ToolID="10" Connection="Input" />
</Connection>
<Connection>
<Origin ToolID="4" Connection="Output" />
<Destination ToolID="11" Connection="Input" />
</Connection>
<Connection>
<Origin ToolID="5" Connection="Output" />
<Destination ToolID="12" Connection="Input" />
</Connection>
<Connection>
<Origin ToolID="6" Connection="Output" />
<Destination ToolID="13" Connection="Input" />
</Connection>
</Connections>
<Properties>
<Memory default="True" />
<GlobalRecordLimit value="0" />
<TempFiles default="True" />
<Annotation on="True" includeToolName="False" />
<ConvErrorLimit value="10" />
<ConvErrorLimit_Stop value="False" />
<CancelOnError value="False" />
<DisableBrowse value="False" />
<EnablePerformanceProfiling value="False" />
<RunWithE2 value="True" />
<PredictiveToolsCodePage value="1252" />
<DisableAllOutput value="False" />
<ShowAllMacroMessages value="False" />
<ShowConnectionStatusIsOn value="True" />
<ShowConnectionStatusOnlyWhenRunning value="True" />
<ZoomLevel value="0" />
<LayoutType>Horizontal</LayoutType>
<MetaInfo>
<NameIsFileName value="True" />
<Name>Unique&amp;Sample</Name>
<Description />
<RootToolName />
<ToolVersion />
<ToolInDb value="False" />
<CategoryName />
<SearchTags />
<Author />
<Company />
<Copyright />
<DescriptionLink actual="" displayed="" />
<Example>
<Description />
<File />
</Example>
<WorkflowId value="5f6574f2-33dc-4332-859c-8822ddf7eda2" />
<Telemetry>
<PreviousWorkflowId value="dab73b8e-2c9a-4fbc-865d-a67630a34d04" />
<OriginWorkflowId value="dab73b8e-2c9a-4fbc-865d-a67630a34d04" />
</Telemetry>
</MetaInfo>
<Events>
<Enabled value="True" />
</Events>
</Properties>
</AlteryxDocument>

View File

@ -1,4 +1,6 @@
from __future__ import annotations from __future__ import annotations
import csv
import io
from pathlib import Path from pathlib import Path
from typing import Dict from typing import Dict
import xml.etree.ElementTree as ET import xml.etree.ElementTree as ET
@ -76,8 +78,8 @@ class OutputDataTool(BaseTool):
header = header_val.lower() != "false" header = header_val.lower() != "false"
line_end = (opts.findtext("LineEndStyle") or "LF").strip().upper() line_end = (opts.findtext("LineEndStyle") or "LF").strip().upper()
eol = "\r\n" if line_end == "CRLF" else "\n" eol = "\r\n" if line_end == "CRLF" else "\n"
df.write_csv(str(path), separator=delim, include_header=header, force_quotes = (opts.findtext("ForceQuotes") or "False").lower() == "true"
line_terminator=eol) self._write_csv_alteryx(df, path, delim, header, eol, force_quotes)
elif fmt == 25: # Excel elif fmt == 25: # Excel
df.write_excel(str(path)) df.write_excel(str(path))
elif fmt == 2: # Parquet elif fmt == 2: # Parquet
@ -89,3 +91,40 @@ class OutputDataTool(BaseTool):
print(f"[Output] YXDB write not supported; wrote Parquet to {fallback}") print(f"[Output] YXDB write not supported; wrote Parquet to {fallback}")
else: else:
df.write_csv(str(path)) df.write_csv(str(path))
@staticmethod
def _write_csv_alteryx(
df: pl.DataFrame,
path: Path,
delim: str,
header: bool,
eol: str,
force_quotes: bool,
) -> None:
"""Write CSV matching Alteryx quoting behaviour.
Alteryx quotes a field when it contains the delimiter, a newline,
a double-quote, or a single-quote (apostrophe). We replicate that
by using Python's csv module with a custom quoting function.
"""
# Characters that trigger quoting (beyond csv.QUOTE_MINIMAL's default set)
_needs_quote_chars = frozenset({delim, '"', "'", '\n', '\r'})
def _needs_quoting(val: str) -> bool:
return force_quotes or any(c in _needs_quote_chars for c in val)
with open(path, "w", newline="", encoding="utf-8") as f:
if header:
f.write(delim.join(df.columns) + eol)
for row in df.iter_rows():
parts: list[str] = []
for val in row:
if val is None:
parts.append("")
else:
s = str(val)
if _needs_quoting(s):
# Escape embedded double-quotes by doubling them
s = '"' + s.replace('"', '""') + '"'
parts.append(s)
f.write(delim.join(parts) + eol)

View File

@ -5,37 +5,163 @@ from tools.base import BaseTool
class FindReplaceTool(BaseTool): class FindReplaceTool(BaseTool):
"""Look up values in a Find/Replace table and replace matching fields.""" """Look up values in a Find/Replace table and replace or append matching fields.
Alteryx FindReplace connections:
- "Targets" (dest anchor) = the data to search in
- "Source" (dest anchor) = the find/replace lookup table
Key XML config elements:
- FieldSearch : field in Target data to search
- FieldFind : field in Source data with the find values
- ReplaceFoundField : field in Source data with the replacement values
- ReplaceMode : "Replace" (overwrite searched field) or "Append" (add new columns)
- ReplaceAppendFields: which fields from Source to append (Append mode)
- FindMode : "FindAny" (substring), "FindAll" (all occurrences)
- NoCase : case-insensitive matching
- MatchWholeWord : whole-word matching
"""
def execute(self, inputs: Dict[str, pl.DataFrame]) -> Dict[str, pl.DataFrame]: def execute(self, inputs: Dict[str, pl.DataFrame]) -> Dict[str, pl.DataFrame]:
target = inputs.get("Target", inputs.get("Input", pl.DataFrame())) # Targets = the data being searched; Source = the lookup table
find_df = inputs.get("Find", inputs.get("Replace", pl.DataFrame())) target = inputs.get("Targets", inputs.get("Target", inputs.get("Input", pl.DataFrame())))
source = inputs.get("Source", inputs.get("Find", inputs.get("Replace", pl.DataFrame())))
if target.is_empty() or find_df.is_empty() or self.config is None: if target.is_empty() or source.is_empty() or self.config is None:
return {"Output": target} return {"Output": target}
field = self._cfg("Field", "") or "" # Read config (support both old and new XML element names)
find_field = self._cfg("FindField", "") or "" search_field = self._cfg("FieldSearch", "") or self._cfg("Field", "") or ""
replace_field = self._cfg("ReplaceField", "") or "" find_field = self._cfg("FieldFind", "") or self._cfg("FindField", "") or ""
whole_word = (self._cfg("WholeWord", "False") or "False").lower() == "true" replace_field = self._cfg("ReplaceFoundField", "") or self._cfg("ReplaceField", "") or ""
replace_mode = (self._cfg("ReplaceMode", "Replace") or "Replace").strip()
no_case = (self._cfg_attr("NoCase", "value", "False") or "False").lower() == "true"
whole_word = (self._cfg_attr("MatchWholeWord", "value", "False") or "False").lower() == "true"
if not (field and find_field and replace_field): if not (search_field and find_field and replace_field):
return {"Output": target} return {"Output": target}
find_values = find_df[find_field].cast(pl.String).to_list() # Build the lookup mapping: find_value → replace_value
replace_values = find_df[replace_field].cast(pl.String).to_list() find_values = source[find_field].cast(pl.String).to_list()
replace_values = source[replace_field].cast(pl.String).to_list()
lookup = dict(zip(find_values, replace_values)) lookup = dict(zip(find_values, replace_values))
if replace_mode == "Append":
return self._do_append(target, source, search_field, find_field,
replace_field, lookup, no_case, whole_word)
else:
return self._do_replace(target, search_field, lookup, no_case, whole_word)
def _do_replace(
self,
target: pl.DataFrame,
search_field: str,
lookup: dict,
no_case: bool,
whole_word: bool,
) -> Dict[str, pl.DataFrame]:
"""Replace mode: overwrite the searched field in-place with replacement values."""
def _replace_fn(val: str | None) -> str | None: def _replace_fn(val: str | None) -> str | None:
if val is None: if val is None:
return None return None
for find, rep in lookup.items(): for find, rep in lookup.items():
if whole_word: if whole_word:
import re import re
val = re.sub(r"\b" + re.escape(find) + r"\b", rep, val) flags = re.IGNORECASE if no_case else 0
val = re.sub(r"\b" + re.escape(find) + r"\b", rep, val, flags=flags)
elif no_case:
# Case-insensitive substring replace
import re
val = re.sub(re.escape(find), rep, val, flags=re.IGNORECASE)
else: else:
val = val.replace(find, rep) val = val.replace(find, rep)
return val return val
series = target[field].cast(pl.String).map_elements(_replace_fn, return_dtype=pl.String) series = target[search_field].cast(pl.String).map_elements(_replace_fn, return_dtype=pl.String)
return {"Output": target.with_columns(series.alias(field))} return {"Output": target.with_columns(series.alias(search_field))}
def _do_append(
self,
target: pl.DataFrame,
source: pl.DataFrame,
search_field: str,
find_field: str,
replace_field: str,
lookup: dict,
no_case: bool,
whole_word: bool,
) -> Dict[str, pl.DataFrame]:
"""Append mode: keep the original target field unchanged;
add columns from the Source table for matching rows."""
# Determine which fields from Source to append
append_fields: list[str] = []
append_el = self.config.find("ReplaceAppendFields") if self.config is not None else None
if append_el is not None:
for field_el in append_el.findall("Field"):
fname = field_el.attrib.get("field", "")
if fname:
append_fields.append(fname)
# Default: if no explicit append fields, append the replace field
if not append_fields:
append_fields = [replace_field]
def _match_fn(val: str | None) -> str | None:
"""Return the replacement value if the find pattern matches, else None."""
if val is None:
return None
for find, rep in lookup.items():
if whole_word:
import re
flags = re.IGNORECASE if no_case else 0
if re.search(r"\b" + re.escape(find) + r"\b", val, flags=flags):
return rep
elif no_case:
if find.lower() in val.lower():
return rep
else:
if find in val:
return rep
return None
# For each append field, compute the matched value
result = target
for af in append_fields:
if af == replace_field:
# The replacement value from the lookup
matched = target[search_field].cast(pl.String).map_elements(
_match_fn, return_dtype=pl.String
)
result = result.with_columns(matched.alias(af))
elif af in source.columns:
# For other Source columns, do a similar lookup
af_lookup = dict(zip(
source[find_field].cast(pl.String).to_list(),
source[af].cast(pl.String).to_list(),
))
def _af_match(val: str | None, _lookup=af_lookup) -> str | None:
if val is None:
return None
for find, rep in _lookup.items():
if whole_word:
import re
flags = re.IGNORECASE if no_case else 0
if re.search(r"\b" + re.escape(find) + r"\b", val, flags=flags):
return rep
elif no_case:
if find.lower() in val.lower():
return rep
else:
if find in val:
return rep
return None
matched = target[search_field].cast(pl.String).map_elements(
_af_match, return_dtype=pl.String
)
result = result.with_columns(matched.alias(af))
return {"Output": result}

View File

@ -32,6 +32,8 @@ class SampleTool(BaseTool):
return df.head(n) return df.head(n)
if mode == "Last": if mode == "Last":
return df.tail(n) return df.tail(n)
if mode == "Skip":
return df.slice(n, len(df) - n) if n < len(df) else pl.DataFrame(schema=df.schema)
if mode == "Sample": if mode == "Sample":
if n <= 0: if n <= 0:
return df return df

View File

@ -11,9 +11,9 @@ class UniqueTool(BaseTool):
return {"Unique": df, "Duplicate": pl.DataFrame()} return {"Unique": df, "Duplicate": pl.DataFrame()}
key_fields = [ key_fields = [
f.attrib["name"] f.attrib["field"]
for f in self.config.findall("UniqueFields/Field") for f in self.config.findall("UniqueFields/Field")
if f.attrib["name"] in df.columns if f.attrib.get("field", "") in df.columns
] ]
if not key_fields: if not key_fields:
key_fields = df.columns key_fields = df.columns
@ -29,9 +29,11 @@ class UniqueTool(BaseTool):
unique_df = ( unique_df = (
df.filter(pl.col("__row_idx__").is_in(first_idx_list)) df.filter(pl.col("__row_idx__").is_in(first_idx_list))
.drop("__row_idx__") .drop("__row_idx__")
.sort(key_fields)
) )
dup_df = ( dup_df = (
df.filter(~pl.col("__row_idx__").is_in(first_idx_list)) df.filter(~pl.col("__row_idx__").is_in(first_idx_list))
.drop("__row_idx__") .drop("__row_idx__")
.sort(key_fields)
) )
return {"Unique": unique_df, "Duplicate": dup_df} return {"Unique": unique_df, "Duplicates": dup_df}