Added unique&sample
parent
e10e5da9f2
commit
5539bc9d79
|
|
@ -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 & Crafts</c>
|
||||||
|
<c>Art & Crafts & 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 & 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 & 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>
|
||||||
|
|
@ -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 & Crafts</c>
|
||||||
|
<c>Art & Crafts & 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 & 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 & 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>
|
||||||
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
File diff suppressed because it is too large
Load Diff
|
|
@ -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,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,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
|
||||||
|
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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&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&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&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&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&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&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&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&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>
|
||||||
|
|
@ -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&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>
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue